aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid <dbphillipsnz@gmail.com>2013-07-19 11:47:17 +1200
committerDavid <dbphillipsnz@gmail.com>2013-07-19 11:47:17 +1200
commit3155f0ec7fb015225c6ae42f782b8c25f2d79f88 (patch)
tree318f786dee38947393dfc4cf602923603dac8cb9
parenta7b1b157fc118a6e7d4f88f9a057101ca9c54e1a (diff)
downloadjaspos-3155f0ec7fb015225c6ae42f782b8c25f2d79f88.tar.xz
Committed
-rw-r--r--Makefile13
-rw-r--r--apijmps.asm23
-rw-r--r--bochsout.txt159
-rw-r--r--bootbanner.asm48
-rw-r--r--disasm1054
-rw-r--r--diskio.asm147
-rw-r--r--emergencyshell.asm68
-rw-r--r--kernel.asm83
-rw-r--r--keyb.asm68
-rw-r--r--monitor.asm243
-rw-r--r--panic.asm91
-rw-r--r--power.asm56
-rw-r--r--strings.asm120
-rw-r--r--strutils.asm344
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
diff --git a/disasm b/disasm
new file mode 100644
index 0000000..3b9c99f
--- /dev/null
+++ b/disasm
@@ -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