diff options
-rw-r--r-- | Makefile | 13 | ||||
-rw-r--r-- | apijmps.asm | 23 | ||||
-rw-r--r-- | bochsout.txt | 159 | ||||
-rw-r--r-- | bootbanner.asm | 48 | ||||
-rw-r--r-- | disasm | 1054 | ||||
-rw-r--r-- | diskio.asm | 147 | ||||
-rw-r--r-- | emergencyshell.asm | 68 | ||||
-rw-r--r-- | kernel.asm | 83 | ||||
-rw-r--r-- | keyb.asm | 68 | ||||
-rw-r--r-- | monitor.asm | 243 | ||||
-rw-r--r-- | panic.asm | 91 | ||||
-rw-r--r-- | power.asm | 56 | ||||
-rw-r--r-- | strings.asm | 120 | ||||
-rw-r--r-- | strutils.asm | 344 |
14 files changed, 2453 insertions, 64 deletions
diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..dfde908 --- /dev/null +++ b/Makefile @@ -0,0 +1,13 @@ +SOURCES = kernel.asm +MOUNT_POINT = /home/david/jaspos/floppy/ +TARGET = $(MOUNT_POINT)kernel.run + +all: + - sudo mount ../floppy.img $(MOUNT_POINT) + - sudo nasm $(SOURCES) -o $(TARGET) + - sudo umount $(MOUNT_POINT) + - ./lines.pl + - make run + +run: + - bochs -f ../bochsrc -q diff --git a/apijmps.asm b/apijmps.asm new file mode 100644 index 0000000..a7dfc2e --- /dev/null +++ b/apijmps.asm @@ -0,0 +1,23 @@ +apijmps: + jmp word jaspos + jmp word jaspos_monitor_clear + jmp word jaspos_monitor_dispstring + jmp word jaspos_monitor_dispchar + jmp word jaspos_monitor_getcursorxy + jmp word jaspos_monitor_init + jmp word jaspos_keyb_getkey + jmp word jaspos_keyb_getstring + jmp word jaspos_strutils_d2str + jmp word jaspos_strutils_compare + jmp word jaspos_strutils_hex2str + jmp word jaspos_strutils_instr + jmp word jaspos_strutils_strlen + jmp word jaspos_strutils_tolower + jmp word jaspos_strutils_toupper + jmp word jaspos_strutils_trimleading + jmp word jaspos_strutils_trimtrailing + jmp word jaspos_strutils_trim + jmp word jaspos_disk_readsector + jmp word jaspos_disk_reset + jmp word jaspos_power_connect + jmp word jaspos_power_shutdown
\ No newline at end of file diff --git a/bochsout.txt b/bochsout.txt new file mode 100644 index 0000000..ea62b6a --- /dev/null +++ b/bochsout.txt @@ -0,0 +1,159 @@ +00000000000i[ ] Bochs x86 Emulator 2.6 +00000000000i[ ] Built from SVN snapshot on September 2nd, 2012 +00000000000i[ ] Compiled on Sep 11 2012 at 22:31:23 +00000000000i[ ] System configuration +00000000000i[ ] processors: 1 (cores=1, HT threads=1) +00000000000i[ ] A20 line support: yes +00000000000i[ ] IPS is set to 4000000 +00000000000i[ ] CPU configuration +00000000000i[ ] level: 6 +00000000000i[ ] SMP support: no +00000000000i[ ] APIC support: xapic +00000000000i[ ] FPU support: yes +00000000000i[ ] MMX support: yes +00000000000i[ ] 3dnow! support: yes +00000000000i[ ] SEP support: yes +00000000000i[ ] SSE support: sse2 +00000000000i[ ] XSAVE support: no +00000000000i[ ] AES support: no +00000000000i[ ] MOVBE support: no +00000000000i[ ] ADX support: no +00000000000i[ ] x86-64 support: no +00000000000i[ ] MWAIT support: yes +00000000000i[ ] Optimization configuration +00000000000i[ ] RepeatSpeedups support: no +00000000000i[ ] Fast function calls: no +00000000000i[ ] Handlers Chaining speedups: no +00000000000i[ ] Devices configuration +00000000000i[ ] NE2000 support: no +00000000000i[ ] PCI support: no, enabled=yes +00000000000i[ ] SB16 support: no +00000000000i[ ] USB support: no +00000000000i[ ] VGA extension support: vbe +00000000000i[MEM0 ] allocated memory at 0xb64ff008. after alignment, vector=0xb6500000 +00000000000i[MEM0 ] 8.00MB +00000000000i[MEM0 ] mem block size = 0x00100000, blocks=8 +00000000000i[MEM0 ] rom at 0xfffe0000/131072 ('/usr/share/bochs/BIOS-bochs-latest') +00000000000e[DEV ] Bochs is not compiled with PCI support +00000000000i[ ] init_dev of 'cmos' plugin device by virtual method +00000000000i[CMOS ] Using local time for initial clock +00000000000i[CMOS ] Setting initial clock to: Wed May 29 13:52:39 2013 (time0=1369792359) +00000000000i[ ] init_dev of 'dma' plugin device by virtual method +00000000000i[DMA ] channel 4 used by cascade +00000000000i[ ] init_dev of 'pic' plugin device by virtual method +00000000000i[ ] init_dev of 'pit' plugin device by virtual method +00000000000i[ ] init_dev of 'floppy' plugin device by virtual method +00000000000i[DMA ] channel 2 used by Floppy Drive +00000000000i[FDD ] tried to open '/home/david/jaspos/floppy.img' read/write: Permission denied +00000000000i[FDD ] fd0: '/home/david/jaspos/floppy.img' ro=1, h=2,t=80,spt=18 +00000000000i[ ] init_dev of 'vga' plugin device by virtual method +00000000000i[MEM0 ] Register memory access handlers: 0x00000000000a0000 - 0x00000000000bffff +00000000000i[VGA ] interval=200000 +00000000000i[MEM0 ] Register memory access handlers: 0x00000000e0000000 - 0x00000000e0ffffff +00000000000i[BXVGA] VBE Bochs Display Extension Enabled +00000000000i[XGUI ] test_alloc_colors: 16 colors available out of 16 colors tried +00000000000i[XGUI ] font 8 wide x 16 high, display depth = 24 +00000000000i[MEM0 ] rom at 0xc0000/41472 ('/usr/share/bochs/VGABIOS-lgpl-latest') +00000000000i[ ] init_dev of 'ioapic' plugin device by virtual method +00000000000i[IOAP ] initializing I/O APIC +00000000000i[MEM0 ] Register memory access handlers: 0x00000000fec00000 - 0x00000000fec00fff +00000000000i[ ] init_dev of 'keyboard' plugin device by virtual method +00000000000i[KBD ] will paste characters every 1000 keyboard ticks +00000000000i[ ] init_dev of 'harddrv' plugin device by virtual method +00000000000i[HD ] Using boot sequence floppy, none, none +00000000000i[HD ] Floppy boot signature check is enabled +00000000000i[ ] init_dev of 'unmapped' plugin device by virtual method +00000000000i[ ] init_dev of 'biosdev' plugin device by virtual method +00000000000i[ ] init_dev of 'speaker' plugin device by virtual method +00000000000i[ ] init_dev of 'extfpuirq' plugin device by virtual method +00000000000i[ ] init_dev of 'parallel' plugin device by virtual method +00000000000i[PAR ] parallel port 1 at 0x0378 irq 7 +00000000000i[ ] init_dev of 'serial' plugin device by virtual method +00000000000i[SER ] com1 at 0x03f8 irq 4 +00000000000i[ ] register state of 'cmos' plugin device by virtual method +00000000000i[ ] register state of 'dma' plugin device by virtual method +00000000000i[ ] register state of 'pic' plugin device by virtual method +00000000000i[ ] register state of 'pit' plugin device by virtual method +00000000000i[ ] register state of 'floppy' plugin device by virtual method +00000000000i[ ] register state of 'vga' plugin device by virtual method +00000000000i[ ] register state of 'unmapped' plugin device by virtual method +00000000000i[ ] register state of 'biosdev' plugin device by virtual method +00000000000i[ ] register state of 'speaker' plugin device by virtual method +00000000000i[ ] register state of 'extfpuirq' plugin device by virtual method +00000000000i[ ] register state of 'parallel' plugin device by virtual method +00000000000i[ ] register state of 'serial' plugin device by virtual method +00000000000i[ ] register state of 'ioapic' plugin device by virtual method +00000000000i[ ] register state of 'keyboard' plugin device by virtual method +00000000000i[ ] register state of 'harddrv' plugin device by virtual method +00000000000i[SYS ] bx_pc_system_c::Reset(HARDWARE) called +00000000000i[CPU0 ] cpu hardware reset +00000000000i[APIC0] allocate APIC id=0 (MMIO enabled) to 0x00000000fee00000 +00000000000i[CPU0 ] CPUID[0x00000000]: 00000002 68747541 444d4163 69746e65 +00000000000i[CPU0 ] CPUID[0x00000001]: 00000633 00010800 00000008 17cbfbff +00000000000i[CPU0 ] CPUID[0x00000002]: 00000000 00000000 00000000 00000000 +00000000000i[CPU0 ] CPUID[0x80000000]: 80000008 68747541 444d4163 69746e65 +00000000000i[CPU0 ] CPUID[0x80000001]: 00000633 00000000 00000000 c1c3f3ff +00000000000i[CPU0 ] CPUID[0x80000002]: 20444d41 6c687441 74286e6f 7020296d +00000000000i[CPU0 ] CPUID[0x80000003]: 65636f72 726f7373 00000000 00000000 +00000000000i[CPU0 ] CPUID[0x80000004]: 00000000 00000000 00000000 00000000 +00000000000i[CPU0 ] CPUID[0x80000005]: 01ff01ff 01ff01ff 40020140 40020140 +00000000000i[CPU0 ] CPUID[0x80000006]: 00000000 42004200 02008140 00000000 +00000000000i[CPU0 ] CPUID[0x80000007]: 00000000 00000000 00000000 00000000 +00000000000i[CPU0 ] CPUID[0x80000008]: 00002028 00000000 00000000 00000000 +00000000000i[ ] reset of 'cmos' plugin device by virtual method +00000000000i[ ] reset of 'dma' plugin device by virtual method +00000000000i[ ] reset of 'pic' plugin device by virtual method +00000000000i[ ] reset of 'pit' plugin device by virtual method +00000000000i[ ] reset of 'floppy' plugin device by virtual method +00000000000i[ ] reset of 'vga' plugin device by virtual method +00000000000i[ ] reset of 'ioapic' plugin device by virtual method +00000000000i[ ] reset of 'keyboard' plugin device by virtual method +00000000000i[ ] reset of 'harddrv' plugin device by virtual method +00000000000i[ ] reset of 'unmapped' plugin device by virtual method +00000000000i[ ] reset of 'biosdev' plugin device by virtual method +00000000000i[ ] reset of 'speaker' plugin device by virtual method +00000000000e[SPEAK] Failed to open /dev/console: Permission denied +00000000000e[SPEAK] Deactivating beep on console +00000000000i[ ] reset of 'extfpuirq' plugin device by virtual method +00000000000i[ ] reset of 'parallel' plugin device by virtual method +00000000000i[ ] reset of 'serial' plugin device by virtual method +00000000000i[XGUI ] Mouse capture off +00000000025i[MEM0 ] allocate_block: block=0x0 used 0x1 of 0x8 +00000004661i[BIOS ] $Revision: 11318 $ $Date: 2012-08-06 19:59:54 +0200 (Mo, 06. Aug 2012) $ +00000317668i[KBD ] reset-disable command received +00000318806i[BIOS ] Starting rombios32 +00000319240i[BIOS ] Shutdown flag 0 +00000319823i[BIOS ] ram_size=0x00800000 +00000320221i[BIOS ] ram_end=8MB +00000360726i[BIOS ] Found 1 cpu(s) +00000374908i[BIOS ] bios_table_addr: 0x000fa438 end=0x000fcc00 +00000393368i[BIOS ] bios_table_cur_addr: 0x000fa438 +00000520985i[VBIOS] VGABios $Id: vgabios.c,v 1.75 2011/10/15 14:07:21 vruppert Exp $
+00000521056i[BXVGA] VBE known Display Interface b0c0 +00000521088i[BXVGA] VBE known Display Interface b0c5 +00000524013i[VBIOS] VBE Bios $Id: vbe.c,v 1.64 2011/07/19 18:25:05 vruppert Exp $ +00000800002i[XGUI ] charmap update. Font Height is 16 +00012942446i[BIOS ] Booting from 0000:7c00 +00156380000p[XGUI ] >>PANIC<< POWER button turned off. +00156380000i[CPU0 ] CPU is in real mode (active) +00156380000i[CPU0 ] CS.mode = 16 bit +00156380000i[CPU0 ] SS.mode = 16 bit +00156380000i[CPU0 ] EFER = 0x00000000 +00156380000i[CPU0 ] | EAX=00000028 EBX=00000941 ECX=0009001f EDX=00000042 +00156380000i[CPU0 ] | ESP=0000ffdf EBP=00000184 ESI=000e0946 EDI=00000941 +00156380000i[CPU0 ] | IOPL=0 id vip vif ac vm rf nt of df if tf sf ZF af PF cf +00156380000i[CPU0 ] | SEG sltr(index|ti|rpl) base limit G D +00156380000i[CPU0 ] | CS:f000( 0004| 0| 0) 000f0000 0000ffff 0 0 +00156380000i[CPU0 ] | DS:0040( 0005| 0| 0) 00000400 0000ffff 0 0 +00156380000i[CPU0 ] | SS:2000( 0005| 0| 0) 00020000 0000ffff 0 0 +00156380000i[CPU0 ] | ES:1000( 0005| 0| 0) 00010000 0000ffff 0 0 +00156380000i[CPU0 ] | FS:0000( 0005| 0| 0) 00000000 0000ffff 0 0 +00156380000i[CPU0 ] | GS:0000( 0005| 0| 0) 00000000 0000ffff 0 0 +00156380000i[CPU0 ] | EIP=0000e86d (0000e86d) +00156380000i[CPU0 ] | CR0=0x60000010 CR2=0x00000000 +00156380000i[CPU0 ] | CR3=0x00000000 CR4=0x00000000 +00156380000i[CPU0 ] 0x0000e86d>> cmp ax, word ptr ds:0x1c : 3B061C00 +00156380000i[CMOS ] Last time is 1369792398 (Wed May 29 13:53:18 2013) +00156380000i[XGUI ] Exit +00156380000i[ ] restoring default signal behavior +00156380000i[CTRL ] quit_sim called with exit code 1 diff --git a/bootbanner.asm b/bootbanner.asm new file mode 100644 index 0000000..d6abd25 --- /dev/null +++ b/bootbanner.asm @@ -0,0 +1,48 @@ +;####################################### +; BOOT BANNER +; Displays a nice info banner on boot +jaspos_bootbanner: + ; Print nice horizontal line + push msgHLine + call jaspos_monitor_dispstring + + ; Show version + push msgVersion + call jaspos_monitor_dispstring + + ; Show compile date + push msgCompileDate + call jaspos_monitor_dispstring + + ; Print disk label + push msgDiskLabel + call jaspos_monitor_dispstring + + ; Convert and print Drive number + mov [free_ram+5], byte 0 + push free_ram + 4 ; Convert drive number to a string. + push word [Drive] ; This code preps the buffer ready for the banner, in case a slow processor's + call jaspos_strutils_d2str ; running the code - just to make the display as smooth as possible + push msgDrive + call jaspos_monitor_dispstring + push free_ram + call jaspos_monitor_dispstring + push msgNewLine + call jaspos_monitor_dispstring + + push msgStackSize + call jaspos_monitor_dispstring + mov [free_ram+4], byte 0 + push free_ram + 3 + push STACK_SIZE + call jaspos_strutils_hex2str + push free_ram + call jaspos_monitor_dispstring + push msgNewLine + call jaspos_monitor_dispstring + + ; Print nice horizontal line + push msgHLine + call jaspos_monitor_dispstring + ret +;#######################################
\ No newline at end of file @@ -0,0 +1,1054 @@ +00000000 E93900 jmp word 0x3c +00000003 E96D02 jmp word 0x273 +00000006 E9BE01 jmp word 0x1c7 +00000009 E9E801 jmp word 0x1f4 +0000000C E9A102 jmp word 0x2b0 +0000000F E95502 jmp word 0x267 +00000012 E97803 jmp word 0x38d +00000015 E97A03 jmp word 0x392 +00000018 E9E103 jmp word 0x3fc +0000001B E9BE03 jmp word 0x3dc +0000001E E9A703 jmp word 0x3c8 +00000021 E9F103 jmp word 0x415 +00000024 E9F502 jmp word 0x31c +00000027 E9FF02 jmp word 0x329 +0000002A E9A502 jmp word 0x2d2 +0000002D E9C702 jmp word 0x2f7 +00000030 E90904 jmp word 0x43c +00000033 E92004 jmp word 0x456 +00000036 E93904 jmp word 0x472 +00000039 E95304 jmp word 0x48f +0000003C 8CC8 mov ax,cs +0000003E 8ED8 mov ds,ax +00000040 8EC0 mov es,ax +00000042 050010 add ax,0x1000 +00000045 8ED0 mov ss,ax +00000047 30F6 xor dh,dh +00000049 89161A08 mov [0x81a],dx +0000004D BCFFFF mov sp,0xffff +00000050 E82002 call word 0x273 +00000053 E80803 call word 0x35e +00000056 68E904 push word 0x4e9 +00000059 E86B01 call word 0x1c7 +0000005C 680030 push word 0x3000 +0000005F E83502 call word 0x297 +00000062 E85802 call word 0x2bd +00000065 688805 push word 0x588 +00000068 E85C01 call word 0x1c7 +0000006B E80401 call word 0x172 +0000006E 68D007 push word 0x7d0 +00000071 E85301 call word 0x1c7 +00000074 681B08 push word 0x81b +00000077 6A20 push byte +0x20 +00000079 E81603 call word 0x392 +0000007C 682407 push word 0x724 +0000007F E84501 call word 0x1c7 +00000082 681B08 push word 0x81b +00000085 E8B403 call word 0x43c +00000088 68E707 push word 0x7e7 +0000008B 681B08 push word 0x81b +0000008E E88403 call word 0x415 +00000091 7428 jz 0xbb +00000093 68EC07 push word 0x7ec +00000096 681B08 push word 0x81b +00000099 E87903 call word 0x415 +0000009C 740D jz 0xab +0000009E 68F407 push word 0x7f4 +000000A1 681B08 push word 0x81b +000000A4 E86E03 call word 0x415 +000000A7 740A jz 0xb3 +000000A9 EBC3 jmp short 0x6e +000000AB 68BF06 push word 0x6bf +000000AE E81601 call word 0x1c7 +000000B1 EBBB jmp short 0x6e +000000B3 687906 push word 0x679 +000000B6 E80E01 call word 0x1c7 +000000B9 EBB3 jmp short 0x6e +000000BB 68C907 push word 0x7c9 +000000BE E80601 call word 0x1c7 +000000C1 682407 push word 0x724 +000000C4 E80001 call word 0x1c7 +000000C7 54 push sp +000000C8 55 push bp +000000C9 57 push di +000000CA 56 push si +000000CB 0FA8 push gs +000000CD 16 push ss +000000CE 06 push es +000000CF 1E push ds +000000D0 0E push cs +000000D1 52 push dx +000000D2 51 push cx +000000D3 53 push bx +000000D4 50 push ax +000000D5 680F06 push word 0x60f +000000D8 E8EC00 call word 0x1c7 +000000DB 682405 push word 0x524 +000000DE E8E600 call word 0x1c7 +000000E1 58 pop ax +000000E2 E87A00 call word 0x15f +000000E5 682B05 push word 0x52b +000000E8 E8DC00 call word 0x1c7 +000000EB 58 pop ax +000000EC E87000 call word 0x15f +000000EF 683305 push word 0x533 +000000F2 E8D200 call word 0x1c7 +000000F5 58 pop ax +000000F6 E86600 call word 0x15f +000000F9 683B05 push word 0x53b +000000FC E8C800 call word 0x1c7 +000000FF 58 pop ax +00000100 E85C00 call word 0x15f +00000103 684305 push word 0x543 +00000106 E8BE00 call word 0x1c7 +00000109 58 pop ax +0000010A E85200 call word 0x15f +0000010D 684A05 push word 0x54a +00000110 E8B400 call word 0x1c7 +00000113 58 pop ax +00000114 E84800 call word 0x15f +00000117 685205 push word 0x552 +0000011A E8AA00 call word 0x1c7 +0000011D 58 pop ax +0000011E E83E00 call word 0x15f +00000121 685A05 push word 0x55a +00000124 E8A000 call word 0x1c7 +00000127 58 pop ax +00000128 E83400 call word 0x15f +0000012B 686205 push word 0x562 +0000012E E89600 call word 0x1c7 +00000131 58 pop ax +00000132 E82A00 call word 0x15f +00000135 686905 push word 0x569 +00000138 E88C00 call word 0x1c7 +0000013B 58 pop ax +0000013C E82000 call word 0x15f +0000013F 687105 push word 0x571 +00000142 E88200 call word 0x1c7 +00000145 58 pop ax +00000146 E81600 call word 0x15f +00000149 688105 push word 0x581 +0000014C E87800 call word 0x1c7 +0000014F 58 pop ax +00000150 E80C00 call word 0x15f +00000153 687905 push word 0x579 +00000156 E86E00 call word 0x1c7 +00000159 58 pop ax +0000015A E80200 call word 0x15f +0000015D EB0E jmp short 0x16d +0000015F 683307 push word 0x733 +00000162 50 push ax +00000163 E87602 call word 0x3dc +00000166 682E07 push word 0x72e +00000169 E85B00 call word 0x1c7 +0000016C C3 ret +0000016D E81D02 call word 0x38d +00000170 EBFB jmp short 0x16d +00000172 68B105 push word 0x5b1 +00000175 E84F00 call word 0x1c7 +00000178 68BF06 push word 0x6bf +0000017B E84900 call word 0x1c7 +0000017E 687906 push word 0x679 +00000181 E84300 call word 0x1c7 +00000184 68A306 push word 0x6a3 +00000187 E83D00 call word 0x1c7 +0000018A 682C07 push word 0x72c +0000018D FF361A08 push word [0x81a] +00000191 E86802 call word 0x3fc +00000194 68DD06 push word 0x6dd +00000197 E82D00 call word 0x1c7 +0000019A 682807 push word 0x728 +0000019D E82700 call word 0x1c7 +000001A0 682407 push word 0x724 +000001A3 E82100 call word 0x1c7 +000001A6 680206 push word 0x602 +000001A9 E81B00 call word 0x1c7 +000001AC 683307 push word 0x733 +000001AF 6AFF push byte -0x1 +000001B1 E82802 call word 0x3dc +000001B4 682E07 push word 0x72e +000001B7 E80D00 call word 0x1c7 +000001BA 682407 push word 0x724 +000001BD E80700 call word 0x1c7 +000001C0 68B105 push word 0x5b1 +000001C3 E80100 call word 0x1c7 +000001C6 C3 ret +000001C7 58 pop ax +000001C8 5E pop si +000001C9 50 push ax +000001CA 06 push es +000001CB 51 push cx +000001CC 52 push dx +000001CD E89700 call word 0x267 +000001D0 AC lodsb +000001D1 3C00 cmp al,0x0 +000001D3 7414 jz 0x1e9 +000001D5 3C01 cmp al,0x1 +000001D7 740A jz 0x1e3 +000001D9 50 push ax +000001DA E81700 call word 0x1f4 +000001DD 8B3E3507 mov di,[0x735] +000001E1 EBED jmp short 0x1d0 +000001E3 AC lodsb +000001E4 A22707 mov [0x727],al +000001E7 EBE7 jmp short 0x1d0 +000001E9 893E3507 mov [0x735],di +000001ED E8CD00 call word 0x2bd +000001F0 59 pop cx +000001F1 5A pop dx +000001F2 07 pop es +000001F3 C3 ret +000001F4 5A pop dx +000001F5 58 pop ax +000001F6 52 push dx +000001F7 06 push es +000001F8 57 push di +000001F9 E86B00 call word 0x267 +000001FC 81FFA00F cmp di,0xfa0 +00000200 7D3E jnl 0x240 +00000202 3C08 cmp al,0x8 +00000204 7414 jz 0x21a +00000206 3C0D cmp al,0xd +00000208 741F jz 0x229 +0000020A 3C0A cmp al,0xa +0000020C 7421 jz 0x22f +0000020E AA stosb +0000020F A02707 mov al,[0x727] +00000212 AA stosb +00000213 893E3507 mov [0x735],di +00000217 5F pop di +00000218 07 pop es +00000219 C3 ret +0000021A 83EF02 sub di,byte +0x2 +0000021D B020 mov al,0x20 +0000021F AA stosb +00000220 83EF02 sub di,byte +0x2 +00000223 A02707 mov al,[0x727] +00000226 AA stosb +00000227 EBEA jmp short 0x213 +00000229 81C7A000 add di,0xa0 +0000022D EBE4 jmp short 0x213 +0000022F 89F8 mov ax,di +00000231 31D2 xor dx,dx +00000233 BFA000 mov di,0xa0 +00000236 F7F7 div di +00000238 F7E7 mul di +0000023A 89C7 mov di,ax +0000023C 31C0 xor ax,ax +0000023E EBD3 jmp short 0x213 +00000240 1E push ds +00000241 50 push ax +00000242 57 push di +00000243 56 push si +00000244 B900B8 mov cx,0xb800 +00000247 8ED9 mov ds,cx +00000249 BEA000 mov si,0xa0 +0000024C 31FF xor di,di +0000024E B9000F mov cx,0xf00 +00000251 F3A4 rep movsb +00000253 30C0 xor al,al +00000255 B9A000 mov cx,0xa0 +00000258 BF000F mov di,0xf00 +0000025B F3AA rep stosb +0000025D 5E pop si +0000025E 5F pop di +0000025F 81EFA000 sub di,0xa0 +00000263 58 pop ax +00000264 1F pop ds +00000265 EB9B jmp short 0x202 +00000267 50 push ax +00000268 B800B8 mov ax,0xb800 +0000026B 8EC0 mov es,ax +0000026D 8B3E3507 mov di,[0x735] +00000271 58 pop ax +00000272 C3 ret +00000273 50 push ax +00000274 51 push cx +00000275 57 push di +00000276 06 push es +00000277 6A00 push byte +0x0 +00000279 E81B00 call word 0x297 +0000027C E8E8FF call word 0x267 +0000027F 31FF xor di,di +00000281 B9D007 mov cx,0x7d0 +00000284 B020 mov al,0x20 +00000286 AA stosb +00000287 A02707 mov al,[0x727] +0000028A AA stosb +0000028B E2F7 loop 0x284 +0000028D 31C0 xor ax,ax +0000028F A33507 mov [0x735],ax +00000292 07 pop es +00000293 5F pop di +00000294 59 pop cx +00000295 58 pop ax +00000296 C3 ret +00000297 5B pop bx +00000298 58 pop ax +00000299 53 push bx +0000029A 51 push cx +0000029B 89C1 mov cx,ax +0000029D 30E4 xor ah,ah +0000029F BBA000 mov bx,0xa0 +000002A2 F7E3 mul bx +000002A4 C1E908 shr cx,byte 0x8 +000002A7 D0E1 shl cl,1 +000002A9 01C8 add ax,cx +000002AB A33507 mov [0x735],ax +000002AE 59 pop cx +000002AF C3 ret +000002B0 52 push dx +000002B1 A13507 mov ax,[0x735] +000002B4 BAA000 mov dx,0xa0 +000002B7 F6F2 div dl +000002B9 D0EC shr ah,1 +000002BB 5A pop dx +000002BC C3 ret +000002BD 50 push ax +000002BE 53 push bx +000002BF 52 push dx +000002C0 E8EDFF call word 0x2b0 +000002C3 88C6 mov dh,al +000002C5 88E2 mov dl,ah +000002C7 B80002 mov ax,0x200 +000002CA 30FF xor bh,bh +000002CC CD10 int 0x10 +000002CE 5A pop dx +000002CF 5B pop bx +000002D0 58 pop ax +000002D1 C3 ret +000002D2 683707 push word 0x737 +000002D5 E8EFFE call word 0x1c7 +000002D8 B80153 mov ax,0x5301 +000002DB 31DB xor bx,bx +000002DD CD15 int 0x15 +000002DF 7201 jc 0x2e2 +000002E1 C3 ret +000002E2 680707 push word 0x707 +000002E5 E8DFFE call word 0x1c7 +000002E8 682807 push word 0x728 +000002EB 50 push ax +000002EC E80D01 call word 0x3fc +000002EF 682807 push word 0x728 +000002F2 E8D2FE call word 0x1c7 +000002F5 EBEA jmp short 0x2e1 +000002F7 B80753 mov ax,0x5307 +000002FA BB0100 mov bx,0x1 +000002FD B90300 mov cx,0x3 +00000300 CD15 int 0x15 +00000302 7201 jc 0x305 +00000304 C3 ret +00000305 680707 push word 0x707 +00000308 E8BCFE call word 0x1c7 +0000030B 682807 push word 0x728 +0000030E 50 push ax +0000030F E8EA00 call word 0x3fc +00000312 682807 push word 0x728 +00000315 E8AFFE call word 0x1c7 +00000318 E9ACFD jmp word 0xc7 +0000031B C3 ret +0000031C 52 push dx +0000031D 50 push ax +0000031E 8A161A08 mov dl,[0x81a] +00000322 30E4 xor ah,ah +00000324 CD13 int 0x13 +00000326 58 pop ax +00000327 5A pop dx +00000328 C3 ret +00000329 58 pop ax +0000032A 59 pop cx +0000032B 5B pop bx +0000032C 50 push ax +0000032D 51 push cx +0000032E E80900 call word 0x33a +00000331 30ED xor ch,ch +00000333 B001 mov al,0x1 +00000335 B402 mov ah,0x2 +00000337 CD13 int 0x13 +00000339 C3 ret +0000033A 5A pop dx +0000033B 58 pop ax +0000033C 52 push dx +0000033D 31D2 xor dx,dx +0000033F F7360E08 div word [0x80e] +00000343 FEC2 inc dl +00000345 88D1 mov cl,dl +00000347 89D8 mov ax,bx +00000349 31D2 xor dx,dx +0000034B F7360E08 div word [0x80e] +0000034F 31D2 xor dx,dx +00000351 F7361008 div word [0x810] +00000355 88D6 mov dh,dl +00000357 88C5 mov ch,al +00000359 8A161A08 mov dl,[0x81a] +0000035D C3 ret +0000035E E8BBFF call word 0x31c +00000361 0F8262FD jc word 0xc7 +00000365 BB1B08 mov bx,0x81b +00000368 8A161A08 mov dl,[0x81a] +0000036C 30F6 xor dh,dh +0000036E 30ED xor ch,ch +00000370 B001 mov al,0x1 +00000372 B402 mov ah,0x2 +00000374 CD13 int 0x13 +00000376 BFB006 mov di,0x6b0 +00000379 BE4608 mov si,0x846 +0000037C B90B00 mov cx,0xb +0000037F F3A4 rep movsb +00000381 B91900 mov cx,0x19 +00000384 BE2608 mov si,0x826 +00000387 BF0108 mov di,0x801 +0000038A F3A4 rep movsb +0000038C C3 ret +0000038D 31C0 xor ax,ax +0000038F CD16 int 0x16 +00000391 C3 ret +00000392 58 pop ax +00000393 59 pop cx +00000394 5F pop di +00000395 50 push ax +00000396 89FB mov bx,di +00000398 49 dec cx +00000399 51 push cx +0000039A E8F0FF call word 0x38d +0000039D 3C0D cmp al,0xd +0000039F 7420 jz 0x3c1 +000003A1 3C08 cmp al,0x8 +000003A3 7413 jz 0x3b8 +000003A5 3C20 cmp al,0x20 +000003A7 7C0C jl 0x3b5 +000003A9 AA stosb +000003AA 50 push ax +000003AB E846FE call word 0x1f4 +000003AE E80CFF call word 0x2bd +000003B1 E2E7 loop 0x39a +000003B3 EB0C jmp short 0x3c1 +000003B5 41 inc cx +000003B6 E2E2 loop 0x39a +000003B8 41 inc cx +000003B9 39DF cmp di,bx +000003BB 74DD jz 0x39a +000003BD 41 inc cx +000003BE 4F dec di +000003BF EBE9 jmp short 0x3aa +000003C1 30C0 xor al,al +000003C3 AA stosb +000003C4 58 pop ax +000003C5 29C8 sub ax,cx +000003C7 C3 ret +000003C8 58 pop ax +000003C9 5E pop si +000003CA 50 push ax +000003CB 51 push cx +000003CC 31C9 xor cx,cx +000003CE AC lodsb +000003CF 3C00 cmp al,0x0 +000003D1 7403 jz 0x3d6 +000003D3 41 inc cx +000003D4 EBF8 jmp short 0x3ce +000003D6 48 dec ax +000003D7 4E dec si +000003D8 89C8 mov ax,cx +000003DA 59 pop cx +000003DB C3 ret +000003DC 5D pop bp +000003DD 58 pop ax +000003DE 5F pop di +000003DF 55 push bp +000003E0 BBB907 mov bx,0x7b9 +000003E3 FD std +000003E4 B90200 mov cx,0x2 +000003E7 50 push ax +000003E8 C0E004 shl al,byte 0x4 +000003EB C0E804 shr al,byte 0x4 +000003EE D7 xlatb +000003EF AA stosb +000003F0 58 pop ax +000003F1 C0E804 shr al,byte 0x4 +000003F4 D7 xlatb +000003F5 AA stosb +000003F6 86E0 xchg ah,al +000003F8 E2ED loop 0x3e7 +000003FA FC cld +000003FB C3 ret +000003FC FD std +000003FD 5D pop bp +000003FE 5A pop dx +000003FF 5F pop di +00000400 55 push bp +00000401 B90500 mov cx,0x5 +00000404 89D0 mov ax,dx +00000406 31D2 xor dx,dx +00000408 BB0A00 mov bx,0xa +0000040B F7F3 div bx +0000040D 92 xchg ax,dx +0000040E 0C30 or al,0x30 +00000410 AA stosb +00000411 E2F1 loop 0x404 +00000413 FC cld +00000414 C3 ret +00000415 5D pop bp +00000416 5E pop si +00000417 5F pop di +00000418 55 push bp +00000419 87F7 xchg si,di +0000041B AC lodsb +0000041C 88C3 mov bl,al +0000041E 87F7 xchg si,di +00000420 AC lodsb +00000421 38D8 cmp al,bl +00000423 7510 jnz 0x435 +00000425 3C00 cmp al,0x0 +00000427 7407 jz 0x430 +00000429 80FB00 cmp bl,0x0 +0000042C 7402 jz 0x430 +0000042E EBE9 jmp short 0x419 +00000430 31C0 xor ax,ax +00000432 39C0 cmp ax,ax +00000434 C3 ret +00000435 B80100 mov ax,0x1 +00000438 83F802 cmp ax,byte +0x2 +0000043B C3 ret +0000043C 5D pop bp +0000043D 5E pop si +0000043E 50 push ax +0000043F 55 push bp +00000440 89F7 mov di,si +00000442 AC lodsb +00000443 3C00 cmp al,0x0 +00000445 740D jz 0x454 +00000447 3C41 cmp al,0x41 +00000449 7C06 jl 0x451 +0000044B 3C5A cmp al,0x5a +0000044D 7F02 jg 0x451 +0000044F 0C20 or al,0x20 +00000451 AA stosb +00000452 EBEE jmp short 0x442 +00000454 5F pop di +00000455 C3 ret +00000456 5D pop bp +00000457 5E pop si +00000458 55 push bp +00000459 57 push di +0000045A 50 push ax +0000045B 89F7 mov di,si +0000045D AC lodsb +0000045E 3C00 cmp al,0x0 +00000460 740D jz 0x46f +00000462 3C61 cmp al,0x61 +00000464 7C06 jl 0x46c +00000466 3C7A cmp al,0x7a +00000468 7F02 jg 0x46c +0000046A 24DF and al,0xdf +0000046C AA stosb +0000046D EBEE jmp short 0x45d +0000046F 58 pop ax +00000470 5F pop di +00000471 C3 ret +00000472 5D pop bp +00000473 5E pop si +00000474 55 push bp +00000475 57 push di +00000476 89F7 mov di,si +00000478 56 push si +00000479 E84CFF call word 0x3c8 +0000047C 89C1 mov cx,ax +0000047E 89FE mov si,di +00000480 51 push cx +00000481 AC lodsb +00000482 3C20 cmp al,0x20 +00000484 7502 jnz 0x488 +00000486 E2F9 loop 0x481 +00000488 59 pop cx +00000489 4E dec si +0000048A 41 inc cx +0000048B F3A4 rep movsb +0000048D 5F pop di +0000048E C3 ret +0000048F 5D pop bp +00000490 5E pop si +00000491 55 push bp +00000492 57 push di +00000493 56 push si +00000494 E831FF call word 0x3c8 +00000497 89C1 mov cx,ax +00000499 FD std +0000049A 4E dec si +0000049B AC lodsb +0000049C 3C20 cmp al,0x20 +0000049E 74FB jz 0x49b +000004A0 FC cld +000004A1 83C602 add si,byte +0x2 +000004A4 89F7 mov di,si +000004A6 31C0 xor ax,ax +000004A8 AA stosb +000004A9 5F pop di +000004AA C3 ret +000004AB 5D pop bp +000004AC 5E pop si +000004AD 5F pop di +000004AE 55 push bp +000004AF 51 push cx +000004B0 52 push dx +000004B1 89F1 mov cx,si +000004B3 89FA mov dx,di +000004B5 87F7 xchg si,di +000004B7 AC lodsb +000004B8 3C00 cmp al,0x0 +000004BA 7414 jz 0x4d0 +000004BC 88C3 mov bl,al +000004BE 87F7 xchg si,di < |