From: Christoffer Bubach Date: Tue, 6 Jan 2015 20:57:50 +0000 (+0100) Subject: initial commit X-Git-Url: https://git.wirehaze.ovh/BOS.git/commitdiff_plain/cad3370c4c7b9dc7ae521851f7462802e6d88ba1 initial commit --- cad3370c4c7b9dc7ae521851f7462802e6d88ba1 diff --git a/boot/BOS_boot.asm b/boot/BOS_boot.asm new file mode 100755 index 0000000..c77b7e3 --- /dev/null +++ b/boot/BOS_boot.asm @@ -0,0 +1,282 @@ +;------------------------------------------------------------; +; BOS - FAT12 bootsector ; +;------------------------------------------------------------; +; - FAT12 compatible. ; +; - Loads a binary file from the floppy. ; +; ; +;------------------------------------------------------------; + +; TODO: +; as i moved some 16-bit stuff to the kernel, i now got +; space to do proper testing (for data-area etc), +; fix that... +; +; TODO2: +; find out why this crap takes ages to load the kernel.. :S + + +; +; 16-bit mem map (seg:off) +; 0x0000:0x0000 -> 0x0000:0x0500 BIOS stuff +; 0x0000:0x0500 -> 0x0000:0x2100 FAT12 rootdir +; 0x0000:0x2100 -> 0x0000:0x3300 FAT for FAT12 +; 0x0000:0x3300 -> 0x0000:0x6c00 14,25kb free space +; 0x0000:0x6c00 -> 0x0000:0x7400 IDT, 256 descriptors +; 0x0000:0x7400 -> 0x0000:0x7c00 GDT, 256 descriptors +; 0x0000:0x7c00 -> 0x0000:0x7e00 bootsector +; 0x0000:0x7e00 <- 0x0000:0xffff ~32,5kb stack for boot +; 0x1000:0x0000 -> 0x9000:0xffff 576kb kernel/free space +; 0xa000:0x0000 -> ............. VGA mem etc. + +use16 +org 0x7C00 + +boot: jmp near start + nop + +;------------------------------------------; +; Standard BIOS Parameter Block, "BPB". ; +;------------------------------------------; + bpbOEM db 'BOS 0.04' + bpbSectSize dw 512 + bpbClustSize db 1 + bpbReservedSec dw 1 + bpbFats db 2 + bpbRootSize dw 224 + bpbTotalSect dw 2880 + bpbMedia db 240 + bpbFatSize dw 9 + bpbTrackSect dw 18 + bpbHeads dw 2 + bpbHiddenSect dd 0 + bpbLargeSect dd 0 + ;---------------------------------; + ; extended BPB for FAT12/FAT16 ; + ;---------------------------------; + bpbDriveNo db 0 + bpbReserved db 0 + bpbSignature db 41 ; 0 = nothing more. 41 = three more (below).. + bpbID dd 1 + bpbVolumeLabel db 'BOOT FLOPPY' + bpbFileSystem db 'FAT12 ' + + +;----------------------------------------; +; starting point of bootsector code ; +;----------------------------------------; +start: + cli + + xor ax, ax ; initialize all the necessary + mov ds, ax ; registers. + mov es, ax + mov ss, ax + mov sp, 0xFFFF ; Stack.. + + mov [bpbDriveNo], dl + + sti + + +;----------------------------------; +; clear screen and print some ; +;----------------------------------; + mov ax, 3 ; Set mode 0x03 + int 0x10 + + mov bp, loading ; Print loading message. + mov ax, 0x1301 + mov bx, 7 + mov cx, 12 + mov dx, 0x0102 + int 0x10 + + mov bl, 2 ; Set cursor. + mov ah, 2 + mov dx, 0x0201 + int 0x10 + + mov ah, 9 ; Print 14 green dots. + mov al, '.' + mov cx, 14 + int 0x10 + + +;---------------------------; +; load FAT and root ; +;---------------------------; + mov di, 0x0050 ; Load the root to + mov ax, 19 ; 0x0000:0x0500 (0x500/0x10) + mov cx, 14 + call read_sectors + + mov di, 0x0210 ; Load the fat to + mov ax, 1 ; 0x0000:0x2100 + mov cx, 9 + call read_sectors + + + ;------------------------; + ; search for the file ; + ;------------------------; + mov dx, [bpbRootSize] + mov bx, 0x0500 + filesearch: + cld + mov si, filename + mov cx, 11 + mov di, bx + repe cmpsb + je found + add bx, 32 + dec dx + jz error + jmp filesearch + + +;-----------------------------------; +; variables & functions ; +;-----------------------------------; + loading db 'Starting BOS' + filename db 'KERNEL SYS' + failure db 'Read error!' + + + ;-----------------------------------------------; + ; read a number of sectors (one at a time) ; + ;-----------------------------------------------; + ; in: ; + ; di = segment to save at ; + ; ax = sector to read ; + ; cx = number of sectors ; + ; out: ; + ; di = updated (added for next read) ; + ; ax = updated (added for next read) ; + ;-----------------------------------------------; + read_sectors: + pusha + mov bl, byte [bpbTrackSect] ; bl = number of sectors per track + div bl ; al = ax / bl + mov cl, ah ; cl = real sector number + add cl, 1 + + xor ah, ah ; del the rest of the div before + mov bl, byte [bpbHeads] ; bl = number of heads + div bl ; ah = rest of ( ax / bx ), al = ax / bx + mov ch, al ; ch = number of track + mov dh, ah ; dh = the head number + + mov ax, cx ; save cx in ax + mov cx, 6 ; try it 6 times + .next_try: + push es + push cx + mov cx, ax ; restore cx + push cx + + xor ax, ax + mov dl, [bpbDriveNo] ; reset drive + push dx + int 0x13 + jc .failed + + pop dx + pop cx + xor bx, bx + mov es, di + mov ax, 0x0201 ; function 2, 1 sector + int 0x13 + jnc .ok ; if it was ok, check next.. + + .failed: + pop dx + pop ax + + pop cx + pop es + loop .next_try ; else try once again if there is an error + jmp error ; if cx = 0 and the read operation failed, halt + .ok: + pop cx ; from the next_try loop + pop es + popa + add di, 32 ; add 32 (512/16) to segment + inc ax ; add sector counter + loop read_sectors + ret + + + ;----------------------------------------------------; + ; show a message and wait for a key before reboot ; + ;----------------------------------------------------; + error: + mov bp, failure + mov ax, 0x1301 + mov bx, 4 + mov cx, 11 + mov dx, 0x0401 + int 0x10 + + mov ah, 0 + int 0x16 + int 0x19 + + +;-----------------------------------; +; the file is found, load it. ; +;-----------------------------------; +found: + mov bp, [bx+26] ; bp=cluster number from directory entry + mov di, 0x1000 ; 1000 (segment) + + .next_block: + xor cx, cx + mov cl, [bpbClustSize] ; reset sector count to 1 cluster + mov si, bp ; si=next should-be cluster for + ; contiguous reads + .next_contiguous: + mov ax, 3 ; 3 + mul si ; multiply cluster number by 3 + shr ax, 1 ; divide by two + mov bx, ax + mov ax, word [(0x2100+bx)] ; ax=FAT element with junk + jc .odd_cluster ; jump if the value was odd + and ax, 0x0FFF ; leave only lower 12 bits + jmp .got_cluster ; got it + .odd_cluster: + shr ax, 4 ; (leave only bits 4-15) + + .got_cluster: + inc si ; si=current cluster+1 + cmp ax, si ; next cluster=current cluster+1? + jne .force_read ; is it still contiguous? + + add cl, [bpbClustSize] ; increase sector count by 1 cluster + adc ch, 0 ; add cf+0 to ch + jmp .next_contiguous + + .force_read: + xchg bp, ax ; ax=bp (base cluster), bp=new cluster + dec ax ; decrease by 2 to get the actual... + dec ax ; ...cluster number + + movzx dx, byte [bpbClustSize] + mul dx ; multiply by sectors per cluster + add ax, 33 ; add data-area location (33) + call read_sectors + + cmp bp, 0x0FF8 ; is the new cluster EOF (FF8-FFF)? + jb .next_block ; if not, read next block + +;-----------------------; +; the file is loaded ; +;-----------------------; +quit: + jmp 0x1000:0x0000 ; jump to loaded file (64kb in mem) + + +;-------------------------------------; +; set the BOOT-signature at byte 510. ; +;-------------------------------------; + rb boot+512-2-$ + dw 0xAA55 \ No newline at end of file diff --git a/boot/BOS_boot.bin b/boot/BOS_boot.bin new file mode 100755 index 0000000..b196cc4 Binary files /dev/null and b/boot/BOS_boot.bin differ diff --git a/doc/bochsrc.txt b/doc/bochsrc.txt new file mode 100755 index 0000000..982486f --- /dev/null +++ b/doc/bochsrc.txt @@ -0,0 +1,26 @@ +####################################### +# # +# BOCHS config file for BOS # +# # +####################################### + +romimage: file=BIOS-bochs-latest, address=0xf0000 +megs: 32 +vgaromimage: VGABIOS-elpin-2.40 +floppya: 1_44=a:, status=inserted +boot: a +floppy_bootsig_check: disabled=0 +log: bochsout.txt +panic: action=ask +error: action=report +info: action=report +debug: action=ignore +debugger_log: debugger.out +vga_update_interval: 300000 +keyboard_serial_delay: 250 +keyboard_paste_delay: 100000 +floppy_command_delay: 50000 +ips: 1000000 +mouse: enabled=0 +keyboard_mapping: enabled=0, map= +user_shortcut: keys=ctrlaltdel diff --git a/doc/design.txt b/doc/design.txt new file mode 100644 index 0000000..c885068 --- /dev/null +++ b/doc/design.txt @@ -0,0 +1,226 @@ +BOS design +---------- + +The kernel will load internal system modules like STDIO, +VFS and so on, by calling a dd list in "init.inc". +STDIO should be the first to load, as to be able to print +loading status of other parts. + + + +STDIO will use internal buffer/debug console as STDOUT at +first, until textmode, VESA or serial output driver is +activated, at which point the internal buffer/debug console +will be flushed to new STDOUT. + +Module for STDOUT could even include a file handle for +systems with no normal output device, so that debugging +information can be read out from file. All drivers +for STDIO will have to follow a common STDIO interface +and can be dynamically loaded and unloaded at runtime. + +Keyboard/mouse drivers for PS/2 and later USB also needs +to register itself to STDIO as STDIN devices in the system. + + + +Other primary services tightly connected to the BOS kernel +is the VFS for all storage devices and filesystems, the +interrupt and system call interface for adding new calls +and groups of calls within the standard int 0x32 interrupt. + +Groups of calls is for primary system services to be +accessed from within the same interrupt, 0x32. For +example the VFS, could use AL = 0x05 for it's "group-ID" +and AH = 0x?? for a specific function-call. STDIO, could +have AL = 0x01 with AH = 0x?? for the function number. + + + +Another primary systemcall group will be the "loader", +for applications and modules/drivers not present inside +the kernel image file - kernel.sys + +It will initially support 2 types of applications, +normal programs and drivers/modules/TSR. + +Loading will be handled by means of segmentation at first, +as the simpler format with less overhead. Similar to +DOS .COM files. Another format for relocatable programs +is planned but will require modifications to fasm for +native output. This will be similar to .EXE files in +DOS. No limitations will be made to the formats, +except the segmentated one will not have base set to zero +in RAM, and will not have program headers and relocation- +tables as overhead. + +This makes it somewhat trickier to preform certain RAM +operations in higher level languages but also ideal for +space constrained applications, such as scene demos - which +often has very low size limits. + +File format exstensions is not yet decided, but might +differ for the two formats. Maybe .APP for the simpler +segmentated format and .PRG for the relocatable? + + + +The kernel image file will need to include some loadable +drivers at the end for further access to media such as +the floppy disk, and the FAT12 filesystem. With this it's +possible that the file on a fat12 formatted floppy will +be named kernel.img while internally it might be visible +as kernel.sys, floppy.drv, fat12.drv and so on. + +Initially the VFS will have internal drivers for parsing +this image format and deploying it as a RAM-drive with +SBFS - static BOS filesystem. A very simple read-only FS +in linked-list style. As simple as it gets. + +So the VFS needs RAM-drive and SBFS support built-in for +it to be able to load additional drivers for floppy, fat12, +harddrives and other media. System drive will always +be this RAM-drive. Any drivers loaded at a later stage can +be on any other media or drive, such as the floppy. + +There should be commands to load a driver like "LOAD" +for one time use and "LOADPERM" for it to be permanetly +inserted into the kernel image file for loading at boot. +"UNLOAD" and "UNLOADPERM" could be used for unloading +and removing drivers from the kernel image. + + + +Memory managment and allocation in BOS will be another +primary system service with it's own group-ID in AL, +for access with int 0x32. It will provide one allocation +and freeing service for memory above 1mb and another +service for memory below 1mb. + +Memory below 1mb should only be used in applications that +needs to run 16-bit code or allocate DMA buffer space. It +will be possible to demand 64kb align on allocations made +in low memory - to properly support DMA transfers. + +The memory managment service group will also have functions +to get RAM size, and maybe system location/size or others. + + + +Running custom 16-bit code will be possible by allocating +low memory space, relocating any 16-bit code to that area +and then calling a BOS system service to start execution +in realmode at that address. This will allow for greater +flexibility in utilizing BIOS services than a direct +bridge call to for example interrupt 0x10 or 0x13. + +All (segment) registers can be used and BIOS interrupts +demanding buffer space pointers will easily be supported by +pre-allocating the necessary low memory before executing +the real mode code. + +Direct execution of a native 16-bit executable file format +is not planned, but could be supported by a third party +loader written in 32-bit to take 16-bit binary filename as +input, allocate low memory for it, relocate it, execute +and clean up at exit. Such a program could be extended to +contain interrupt 0x21 services for basic DOS compability. + +BOS kernel is loaded at the 64kb mark right now, but should +be moved sufficently below that for internal 16-bit code +to work without address fixes. The ORG offset should be +below 0xFFFF for all internal 16-bit code. Now it starts +at 0x10000, which means this offset has to be substracted +from all 16-bit code that deals with variables. + +For external 16-bit code, relocated and runned by the kernel, +this is no issue. + + + +BOS should include a scripting language, similar to DOS batch +files for scripting and "autoexec" usage. If the extension +is .RUN - the file to autostart drivers and customize the +system at boot could be called "auto.run". + +The scripting language needs some internal commands not tied +to any shell, for program control - and also for the auto.run +file to be able to load the shell at boot, the LOADSH command +is needed. This could be directly tied to the VFS for +selecting which shell to load. The shell needs to set some +system vars like %SHELLNAME% and %SHELLVERSION% for the +scripts to know what other commands are available from it. + +Basic commands, independent of shell could be: +LOADSH = "fd0:/path/shell.app" +GOTO LABEL +:LABEL +REM comment +IF [NOT] %xxx%==something GOTO LABEL +ECHO %1 is first command line parameter +ECHO. +ECHO %SHELLNAME% is env. var for shell used. +SET ENV_VARIBEL=Hi +SETLOCAL LOCAL_VAR=Bye +LOOP %var% +ENDLOOP +CALL filename.run + +Nothing is set in stone, but DOS batch file similarity could +be good for those that know it well. It should be as easy to +parse as possible. + + + +Graphics in BOS will probably be tied to the STDIO services +with many additional function calls for drawing shapes and +outputing sprites. Text output will be possible as in any +textmode, but the cursor will be hidden by default, and if +enabled, simulated with blinking and all - by BOS. + +With text output options even in VESA modes, a system crash +will still be able to print out some facts about it with +the same STDOUT functions as in textmode. Font&size will be +optional, but optimized for best look and usability as default. + +Other graphics function will include anything that helps +and eases the development of games, added as I port and +develops my own game clones. + + + +The sound service group will have a unified function interface +no matter what device is installed, only PC speaker, AC'97, +SoundBlaster/AdLib compatible or Intel HD audio. + +It will be possible for the programs to detect capability of +the installed driver for best utilization. + + + +A driver will be loaded in the exact same way as any other +application but will install itself with the service group +it belongs to, or as a new interrupt itself before quitting +in a TSR way. + +The interrupt handling code will have functionality for drivers +not only to install a completly new interrupt, but also to add +itself as a new service group in the system interrupt 0x32. +It will then be given a free service number (AL=0x??) for calls +made to that group. It could also request to take over an +existing service number. What internal function to be called is +decided with the value in AH and could go to external drivers +that has been loaded and added itself to the service group. + +A driver might use .DRV extension or something to distinguish +itself from a normal executable. It's not decided how to tell +if it's a .APP type segmented driver or .PRG relocatable driver +with just one .DRV extension. Could probe for relocatble format +header for .PRG and assume .APP format if not found. This could +be done for programs as well, if I choose to use one extension +on both executable formats. + + + +The End + - for now. \ No newline at end of file diff --git a/install.bat b/install.bat new file mode 100755 index 0000000..6f44ae5 --- /dev/null +++ b/install.bat @@ -0,0 +1,16 @@ +@echo off +echo Put an empty floppy in drive a: and +pause +echo. +cd kernel +..\utils\fasm kernel.asm kernel.sys +cd ..\boot +..\utils\fasm BOS_boot.asm BOS_boot.bin +cd.. +.\utils\partcopy .\boot\BOS_boot.bin 0 200 -f0 +copy .\kernel\kernel.sys a: +echo. +echo Complete. Thank you for using my crappy +echo installer.. (and for testing BOS 0.04) +echo. +pause \ No newline at end of file diff --git a/install.sh b/install.sh new file mode 100755 index 0000000..9e65ecc --- /dev/null +++ b/install.sh @@ -0,0 +1,75 @@ +#! /bin/sh + +# BOS Linux Installer version 0.2 +# You must be root to run this script because of the floppy/loopback device + +echo +echo -e "\E[33;1mBOS\E[0m - \E[32;1mLinux installer\E[0m" +echo + +if [ `id -u` != "0" ]; then + echo -e "\E[31;1mYou must be root to use this installer!\E[0m" + echo +fi + +if [ -z "$1" ]; then + echo "Usage is:" + echo -e "\E[31m$0 image\E[0m - Creates a floppy image called bos.img" + echo -e "\E[31m$0 floppy\E[0m - Install BOS into a floppy ( must be inserted )" + echo + echo "Note: this installer will create a bootable image/floppy." + echo "Floppy creation is not tested ( I don't have a floppy reader ) and it should be already formatted" + exit +fi + +echo -e "\E[32mCompiling BOS...\E[0m" +./utils/fasm kernel/kernel.asm kernel/kernel.sys +./utils/fasm boot/BOS_boot.asm boot/BOS_boot.bin + +if [ "$1" = "floppy" ]; then + echo -e "\E[32mStarting floppy installation...\E[0m" + + #Install BOS_boot.bin as bootsector into bos.img + dd if=boot/BOS_boot.bin of=/dev/fd0 bs=1 count=512 + mount /mnt/floppy + + #Insert kernel.sys into image + cp kernel/kernel.sys /mnt/floppy + + #Umount & cleanup + umount /mnt/floppy + + echo -e "\E[33mBOS installed.\E[0m" + +else + echo -e "\E[32mStarting image creation...\E[0m" + + #Create empty image + if [ -e bos.img ]; then + rm -f bos.img + fi + dd if=/dev/zero of=bos.img bs=1k count=1440 + + #Format image in MSDOS format and mount it + mkdosfs bos.img + losetup /dev/loop3 bos.img + + #Install BOS_boot.bin as bootsector into bos.img + dd if=boot/BOS_boot.bin of=/dev/loop3 bs=1 count=512 + if [ ! -e tmpmnt ]; then + mkdir tmpmnt + fi + mount -tmsdos /dev/loop3 tmpmnt + + #Insert kernel.sys into image + cp kernel/kernel.sys tmpmnt + + #Umount & cleanup + umount /dev/loop3 + if [ -e tmpmnt ]; then + rm -rf tmpmnt + fi + losetup -d /dev/loop3 + + echo -e "\E[33mBOS image created! ( better do a chown on it now ;) )\E[0m" +fi \ No newline at end of file diff --git a/kernel/kernel.asm b/kernel/kernel.asm new file mode 100755 index 0000000..40c2225 --- /dev/null +++ b/kernel/kernel.asm @@ -0,0 +1,120 @@ +;-------------------------------------------------------; +; BOS kernel ; +;-------------------------------------------------------; +; BOS 32-bit kernel, expects to be loaded at 64kb ; +; in mem. Small amount of 16-bit code included. ; +; ; +; For any comments on this code, mail me. ; +; http://bos.asmhackers.net/ asmhacker@gmail.com ; +; ; +; by: Christoffer Bubach, 2003-2005 ; +;-------------------------------------------------------; +use16 +org 0x10000 + +;---------------------------; +; jump to starting point ; +;---------------------------; + jmp start + +;----------------------------------------; +; 16-bit include files ; +;----------------------------------------; + include 'realmode/a20.inc' ; Function to set the a20-gate. + include 'realmode/gdt.inc' ; Global Description Table. + include 'realmode/idt.inc' ; The Interrupt Description Table. + include 'realmode/mem.inc' ; Get memory size. + include 'realmode/variables.inc' ; For/from realmode. + include 'realmode/do_all_16bit.inc' ; Save "go back to 16-bit"-info. + + + +;--------------------------; +; 16-bit entry point ; +;--------------------------; +start: + cli + mov ax, cs + mov ds, ax + ; fasm is more strict about + xor eax, eax ; "org 0x10000" then nasm, so + mov es, ax ; i have to do -0x10000 from + mov fs, ax ; all variable addresses while + mov gs, ax ; in realmode. + sti + + call enable_a20 + call do_all_16bit ; ... :P + + cli + mov ax, cs ; save cs + mov [realmode_cs - 0x10000], ax ; in variables.inc + + lgdt [gdtr - 0x10000] ; Load the GDT descriptor + lidt [idtr - 0x10000] ; Load the IDT descriptor + + mov eax, cr0 + or al, 1 + mov cr0, eax + + jmp pword 0x08:flush ; dword in nasm + + + +;--------------------------; +; 32-bit entry point ; +;--------------------------; +use32 +flush: + mov ax, 0x10 ; refresh all segment registers + mov ds, ax + mov es, ax + mov fs, ax + mov gs, ax + mov ss, ax + mov esp, 0xFFFC + + call bos_init ; fix everything + + mov bx, 0x04B1 ; start the shell + call setcursor + mov esi, bos_shell + mov bl, 0x07 + call print + call init_cmd + jmp shell + + ;int 0x32 + + .hang: + cli + hlt + jmp .hang ; hang, just in case.. + + +;----------------------------------------; +; 32-bit include files ; +;----------------------------------------; + include 'krl_incs/idt.inc' ; The Interrupt Description Table. + include 'krl_incs/text.inc' ; The default textmode functions. + include 'krl_incs/bos_init.inc' ; Function that starts up BOS + include 'krl_incs/en_mess.inc' ; All strings in english (soon). + include 'krl_incs/rmode_int.inc' ; Get back to realmode and do an INT. + include 'krl_incs/pic.inc' ; PIC rutines. + include 'krl_incs/sys_ints.inc' ; System specific interrupts. + include 'krl_incs/keyboard.inc' ; Keyboard ISR. + include 'krl_incs/keymap.inc' ; Keymap(s). + include 'krl_incs/shell.inc' ; File with shell/kernel monitor functions. + include 'krl_incs/commands.inc' ; Command table, for valid shell commands. + include 'krl_incs/isr.inc' ; Interrupt Service Rutines. + include 'krl_incs/debug.inc' ; Print contents of all regs and hang. + include 'krl_incs/cmos.inc' ; To get CMOS data. + include 'krl_incs/time_date.inc' ; Print time and date. + include 'krl_incs/timer.inc' ; Timer IRQ. + include 'krl_incs/vga.inc' ; VGA functions. + ; include 'krl_incs/font8x16.inc' ; Standard font. + include 'krl_incs/dma.inc' ; DMA code. + include 'krl_incs/fdc.inc' ; Floppy code. + include 'krl_incs/mario.inc' ; Mario sprite. + include 'krl_incs/pc_speaker.inc' ; PC speaker. + include 'krl_incs/mem.inc' ; Memory allocation and freeing. \ No newline at end of file diff --git a/kernel/kernel.sys b/kernel/kernel.sys new file mode 100755 index 0000000..d553f80 Binary files /dev/null and b/kernel/kernel.sys differ diff --git a/kernel/krl_incs/bos_init.inc b/kernel/krl_incs/bos_init.inc new file mode 100755 index 0000000..73e1354 --- /dev/null +++ b/kernel/krl_incs/bos_init.inc @@ -0,0 +1,128 @@ +;----------------------------------------------------------; +; BOS kernel Christoffer Bubach, 2003-2005. ; +;----------------------------------------------------------; +; ; +; Initiation function for BOS ; +; ; +;----------------------------------------------------------; + + +bos_init: + + ;----------------------; + ; we are in pmode.. ; + ;----------------------; + mov bx, 0x0193 + call setcursor + mov esi, pmode_load + mov bl, 0x07 + call print + + mov bx, 0x01C5 + call setcursor + mov esi, pmode_load_ok + mov bl, 0x02 + call print + + ;----------------------; + ; kernel loaded.. ; + ;----------------------; + mov bx, 0x01E3 + call setcursor + mov esi, kernel_load + mov bl, 0x07 + call print + + mov bx, 0x0215 + call setcursor + mov esi, kernel_load_ok + mov bl, 0x02 + call print + + ;----------------; + ; remap PICs ; + ;----------------; + mov cl, 0x20 ; PIC 1, irq0-irq7 -> int 0x20-27. + mov ch, 0x28 ; PIC 2, irq8-irq15 -> int 0x28-30. + call remap_pics + call disable_irqs + + mov bx, 0x0233 + call setcursor + mov esi, pic_irq + mov bl, 0x07 + call print + + mov bx, 0x0265 + call setcursor + mov esi, pic_irq_ok + mov bl, 0x02 + call print + + ;--------------; + ; setup IDT ; + ;--------------; + mov edi, u_isr ; isr.inc + call init_idt ; idt.inc + mov esi, idt_list ; idt.inc + call set_idt_list ; idt.inc + + sti ; Interrupts back.. + + mov bx, 0x0283 + call setcursor + mov esi, idt_mess + mov bl, 0x07 + call print + + mov bx, 0x02B5 + call setcursor + mov esi, idt_ok + mov bl, 0x02 + call print + + + ;---------------------------------------------; + ; enable IRQs (one after one as i code it) ; + ;---------------------------------------------; + mov cl, 1 + call enable_irq ; Enable IRQ 1. + + mov bx, 0x02D3 + call setcursor + mov esi, kbd_load + mov bl, 0x07 + call print + + mov bx, 0x0305 + call setcursor + mov esi, kbd_ok + mov bl, 0x02 + call print + + ;------------------------------------; + ; get CMOS data, set PIT to 100Hz ; + ; and start timer. ; + ;------------------------------------; + call get_cmos_data ; cmos.inc + call set_pit_freq ; timer.inc + mov cl, 0 + call enable_irq ; Enable IRQ 0. + + ;-------------------; + ; init simple MM ; + ;-------------------; + mov ebx, 0x100000 ; address of first free + mov ecx, [ram_amount] ; RAM. everything before + call init_mem ; that is reserved. + + ;--------------------; + ; init fdc driver ; + ;--------------------; + call fdc_init ; fdc.inc + + + ;-------------------------; + ; return to kernel.asm ; + ;-------------------------; + ret \ No newline at end of file diff --git a/kernel/krl_incs/cmos.inc b/kernel/krl_incs/cmos.inc new file mode 100755 index 0000000..032a95c --- /dev/null +++ b/kernel/krl_incs/cmos.inc @@ -0,0 +1,96 @@ +;----------------------------------------------------------; +; BOS kernel Christoffer Bubach, 2005. ; +;----------------------------------------------------------; +; ; +; To get stuff ( time & date ) from CMOS memory. ; +; ; +;----------------------------------------------------------; + + +;-----------------------------------; +; variables containing CMOS data ; +;-----------------------------------; + century db 0 ; latest century, + year db 0 ; year, + month db 0 ; month, + day db 0 ; day (1 = sunday), + hour db 0 ; hour, + minute db 0 ; minute and + second db 0 ; second read in from CMOS. + + +;-------------------------; +; save info from CMOS ; +;-------------------------; +get_cmos_data: + push ax + + mov al, 0x00 ; get the "second" byte + out 0x70, al + in al, 0x71 + mov [second], al ; save it. + + mov al, 0x02 ; get the "minute" byte + out 0x70, al + in al, 0x71 + mov [minute], al + + mov al, 0x04 ; get the "hour" byte + out 0x70, al + in al, 0x71 + mov [hour], al + + mov al, 0x07 ; get the "day" byte + out 0x70, al + in al, 0x71 + mov [day], al + + mov al, 0x08 ; get the "month" byte + out 0x70, al + in al, 0x71 + mov [month], al + + mov al, 0x09 ; get the "year" byte + out 0x70, al + in al, 0x71 + mov [year], al + + mov al, 0x32 ; get the "century" byte + out 0x70, al + in al, 0x71 + mov [century], al + + pop ax + ret + +;------------------------------------------------; +; calculate binary from BCD ; +; in: al = BCD ; +; out: al = bin ; +;------------------------------------------------; +BCD2bin: + push ebx + mov bl, al ; bl = al mod 16 + and bl, 0x0F + shr al, 4 ; al = al / 16 + mov bh, 10 + mul bh ; multiply by 10 + add al, bl ; add in low nib + pop ebx + ret + + +;------------------------------------------------; +; calculate ASCII from BCD ; +; in: al = BCD ; +; out: ax = ASCII ; +;------------------------------------------------; +BCD2ascii: + push ecx + mov ah, al + and ax, 0xF00F ; mask bits + shr ah, 4 ; right shift ah to get unpacked BCD + or ax, 0x3030 ; combine with 30 to get ASCII + xchg ah, al ; swap for ASCII storage convention + pop ecx + ret \ No newline at end of file diff --git a/kernel/krl_incs/commands.inc b/kernel/krl_incs/commands.inc new file mode 100755 index 0000000..1c66dc7 --- /dev/null +++ b/kernel/krl_incs/commands.inc @@ -0,0 +1,551 @@ +;----------------------------------------------------------; +; BOS kernel Christoffer Bubach, 2003-2005. ; +;----------------------------------------------------------; +; ; +; Command table and some commands for the shell. ; +; ; +;----------------------------------------------------------; + +; I should really do something about this file, divide it into +; smaller ones or something. I'm just too lazy. Next version.. + + + commands: db 'ver', 0 + db 'help', 0 + db '?', 0 + db 'about', 0 + db 'cls', 0 + db 'clrscr', 0 + db 'reboot', 0 + db 'regdump', 0 + db 'time', 0 + db 'date', 0 + db 'delay', 0 + db 'vgatest', 0 + db 'memtest', 0 + db 'fddtest', 0 + db 0xFF ; end of command table + + + call_table: dd show_ver ; commands.inc + dd show_help ; commands.inc + dd show_help ; commands.inc + dd show_about ; commands.inc + dd clrscr ; commands.inc + dd clrscr ; comamnds.inc + dd reboot ; commands.inc + dd dump_regs ; debug.inc + dd print_time ; time_date.inc + dd print_date ; time_date.inc + dd delay_test ; commands.inc + dd vga_test ; commands.inc + dd mem_test ; commands.inc + dd fdd_test ; commands.inc + + + + ;--------------------------; + ; not a valid command ; + ;--------------------------; + not_a_valid_cmd db 13,10,'No such command or program exists.', 0 + + no_such_cmd: + push esi + push bx + + mov esi, not_a_valid_cmd + mov bl, 0x04 + call print + + pop bx + pop esi + ret + + + ;-------------------; + ; show version ; + ;-------------------; + bos_ver_str db 13,10,'BOS version 0.04 by Christoffer Bubach, 2003-2005.', 0 + show_ver: + push esi + push bx + + mov esi, bos_ver_str + mov bl, 0x07 + call print + + pop bx + pop esi + ret + + + ;--------------------; + ; show BOS help ; + ;--------------------; + bos_help_str db 13,10,13,10,' BOS 0.04 by Christoffer Bubach, 2003-2005.',13,10,\ + '--------------------------------------------',13,10,\ + 'Type a command and press ENTER to execute it.',13,10,13,10,\ + '"help" or "?" - Displays this text.',13,10,\ + '"ver" - Shows version information.',13,10,\ + '"about" - Shows information about the OS.',13,10,\ + '"cls" or "clrscr" - Clears the screen.',13,10,\ + '"memtest" - Shows memory info (and allocates/frees some, to test).',13,10,\ + '"vgatest" - Test some VGA stuff.',13,10,\ + '"fddtest" - Read and print bootsector from A:',13,10,\ + '"delay" - Tests the delay function for 5 s.',13,10,\ + '"time" - Prints current time.',13,10,\ + '"date" - Prints current date.',13,10,\ + '"regdump" - Dump some standard registers.',13,10,\ + '"reboot" - Restarts the computer.',0 + show_help: + push esi + push bx + + mov esi, bos_help_str + mov bl, 0x07 + call print + + pop bx + pop esi + ret + + + ;-----------------; + ; show about ; + ;-----------------; + bos_about_str db 13,10,'About BOS',13,10,\ + 'Hmm.. I started with OS-dev in late 2003.. Anyway..',13,10,13,10,\ + 'Thanks for helping me get this far goes to:',13,10,\ + 'all people at mega-tokyo.com, osdever.net and flatassembler.net',13,10,\ + 'Robert ',153,'stling for Primula, http://ostling.no-ip.com/',13,10,\ + 'J.Thim for EelOS, http://www.ludd.luth.se/~ivileel/',13,10,\ + 'Tomasz Grysztar for fasm and fasmw, http://flatassembler.net/',13,10,\ + 'ASHLEY4, Candy, John S. Fine and Petroff Heroj.',0 + show_about: + push esi + push bx + + mov esi, bos_about_str + mov bl, 0x07 + call print + + pop bx + pop esi + ret + + + ;-----------------------; + ; clear the screen ; + ;-----------------------; + clrscr: + call cls ; text.inc + mov esi, prompt + mov bl, 0x0E + call print + mov edi, cmd_buffer + jmp shell ; no normal return, as it gives an extra line feed + + + + ;-------------; + ; reboot ; + ;-------------; + reboot: + call kbd_wait + mov al, 0xFE + out 0x64, al + jmp $ + ret + + + ;-----------------; + ; delay test ; + ;-----------------; + bos_delay_str db 13,10,'~1 second has passed.', 0 + delay_test: + mov ecx, 5 + .loop: + push ecx + mov ecx, 100 + call delay + pop ecx + mov esi, bos_delay_str + mov bl, 0x07 + call print + loop .loop + ret + + + ;----------------; + ; VGA test ; + ;----------------; + bos_vga_str db 13,10,'It works..! :-D', 0 + vga_test: + + mov ax, 1 ; clear the screen + call set_mode_0x13 ; set mode 0x13 + + mov cx, 256 ; loop out some pixels + .l1: + mov bx, cx ; x value + mov al, cl + push cx + mov cx, 50 ; y value + call put_0x13_pixel + pop cx + loop .l1 + + ; draw mario and some ground + mov esi, mario + mov ax, 260 ; x + mov bx, 168 ; y + mov cx, 20 ; height + mov dx, 18 ; width + call put_0x13_sprite ; in vga.inc + mov esi, grass_l + mov ax, 250 + mov bx, 186 + mov cx, 20 + mov dx, 14 + call put_0x13_sprite + mov esi, grass_f + mov ax, 265 + mov bx, 186 + mov cx, 20 + mov dx, 14 + call put_0x13_sprite + mov esi, grass_ul + mov ax, 280 + mov bx, 186 + mov cx, 20 + mov dx, 14 + call put_0x13_sprite + mov esi, g_lefts + mov ax, 280 + mov bx, 172 + mov cx, 20 + mov dx, 14 + call put_0x13_sprite + mov esi, grass_l + mov ax, 280 + mov bx, 158 + mov cx, 20 + mov dx, 14 + call put_0x13_sprite + mov esi, g_earth + mov ax, 300 + mov bx, 186 + mov cx, 20 + mov dx, 14 + call put_0x13_sprite + mov esi, g_earth + mov ax, 300 + mov bx, 172 + mov cx, 20 + mov dx, 14 + call put_0x13_sprite + mov esi, grass_f + mov ax, 300 + mov bx, 158 + mov cx, 20 + mov dx, 14 + call put_0x13_sprite + + call wait_key + + mov ax, 1 ; clear the screen + call set_mode_0x03 ; set mode 0x03 + + mov esi, bos_vga_str ; print that it worked! + mov bl, 1 + call print + ret + + + + + ;--------------------------; + ; fdd test ; + ;--------------------------; + fdd_test: + mov bl, 13 + mov bh, 7 ; make newline + call print_char + + mov ecx, 512 + mov edi, 0x80000 + .loop511: + mov dword [edi], 'shit' ; set DMA buffer to shit, as a test + add edi, 4 + sub ecx, 4 + cmp ecx, 0 + jne .loop511 + + mov dh, 0x00 ; side + mov dl, 0x00 ; drive + mov ch, 0x00 ; track + mov cl, 0x01 ; sector + mov bl, 0x00 ; 1 = write + call fdd_read_write + jc .error + + mov esi, 0x80000 ; dma buffer + mov ecx, 512 + .print: + lodsb + mov bl, al + mov bh, 7 + call print_char ; print it. is it still + dec ecx ; "shit" ? + cmp ecx, 0 + jne .print + jmp .end + + .error: + mov bl, 13 + call print_char + mov bl, 10 + call print_char + mov bh, 0x40 + mov bl, 'E' ; error sign... :'( + call print_char + + call fdd_reset + call fdd_recalibrate ; do somthing about the error.. :P + + .end: + ret + + + + + + ;------------------------------; + ; memory test ; + ;------------------------------; + + bos_mem_str1 db 13,10,'Performing memory test. (debugging allocs assume 32mb RAM)', 0 + bos_mem_str2 db 13,10,'Total installed memory (in bytes): ',0 + bos_mem_str3 db 13,10,13,10,'Memory chunks:',0 + bos_mem_str4 db 13,10,'Address Size Type Previous Next',0 + bos_mem_str5 db 13,10,'-------------------------------------------------------',0 + bos_mem_str6 db '0x',0 + bos_mem_str7 db 'Free ',0 + bos_mem_str8 db 'Used ',0 + bos_mem_str9 db 'None ',0 + bos_mem_str0 db ' ',0 + bos_mem_crlf db 13,10,0 + current_mem_pos dd 0 + next_free dd 0 + + ;---------DEBUG--------- + test1_or_2 db 1 + test_address dd 0 + test_size dd 0 + test_address2 dd 0 + test_size2 dd 0 + ;---------END DEBUG--------- + + mem_test: + push eax + push ebx + push ecx + push edx + + ;---------DEBUG--------- + cmp [test1_or_2],0 + je .free_the_test_block + + mov ebx, 0x1000000 ;first test + mov [test_size2], ebx + call allocate_mem + mov [test_address2], ebx + + mov ebx, 0xE00000 ; second test + mov ecx, ebx + call allocate_mem + push ebx + push ecx + + mov ebx, 0x10000 ; third test + mov [test_size], ebx + call allocate_mem + mov [test_address], ebx ; test allocation + + pop ecx + pop ebx + call free_mem + + mov [test1_or_2], 0 + jmp .end_test + .free_the_test_block: + mov ebx, [test_address] + mov ecx, [test_size] ; and freeing + call free_mem + mov ebx, [test_address2] + mov ecx, [test_size2] ; and freeing + call free_mem + mov [test1_or_2], 1 + .end_test: + ;---------END DEBUG--------- + + mov esi, bos_mem_str1 + mov bl, 0x07 + call print + mov esi, bos_mem_str2 + mov bl, 0x07 + call print + mov esi, bos_mem_str6 + mov bl, 0x04 + call print + mov ebx, [ram_amount] + mov cl, 0x04 + call print_hex32 + + mov esi, bos_mem_str3 + mov bl, 0x07 + call print + mov esi, bos_mem_str4 + mov bl, 0x07 + call print + mov esi, bos_mem_str5 + mov bl, 0x07 + call print + + mov [current_mem_pos], 0 + mov eax, [first_free] + mov [next_free], eax + + ;-------------------------; + ; this is a used block ; + ;-------------------------; + .used: + mov eax, [current_mem_pos] + mov ebx, [next_free] + cmp eax, [ram_amount] ; .free will always let us + jae .end ; decide if we are to quit or not. + + cmp [next_free], 0 + jne .more_blocks + mov ebx, [ram_amount] ; no next block, use ram size + sub ebx, eax ; get size in ebx + mov edi, 1 + call .print_mem_info + jmp .end + + .more_blocks: + sub ebx, eax + mov edi, 1 + call .print_mem_info + + mov eax, [next_free] + cmp eax, 0 + je .end + mov ebx, [eax+8] + mov [current_mem_pos], eax + mov [next_free], ebx + + ;-------------------------; + ; this is a free block ; + ;-------------------------; + .free: + mov eax, [current_mem_pos] ; current pos. in eax + mov ebx, [eax+4] ; current size in ebx + mov ecx, [eax] ; prev pointer in ecx + mov edx, [eax+8] ; next pointer in edx + xor edi, edi + call .print_mem_info + + add eax, ebx + mov [current_mem_pos], eax + jmp .used + + .end: + pop eax + pop ebx + pop ecx + pop edx + ret + + ;-------------------------; + ; print mem block info ; + ;-------------------------; + .print_mem_info: + push eax ; current pos + push ebx ; current size + push ecx ; prev pointer + push edx ; next pointer + push edi ; 1 = used + + push ebx ; push size + mov esi, bos_mem_crlf + mov bl, 0x07 + call print + mov esi, bos_mem_str6 + mov bl, 0x04 + call print + + push ecx ; push prev + mov ebx, eax + mov cl, 0x04 + call print_hex32 + + mov esi, bos_mem_str0 + mov bl, 0x07 + call print + mov esi, bos_mem_str6 + mov bl, 0x04 + call print + + pop ecx ; pop prev + pop ebx ; pop size + push ecx ; push prev + mov cl, 0x04 + call print_hex32 + mov esi, bos_mem_str0 + mov bl, 0x07 + call print + + cmp edi, 1 + jne .print_free + pop ecx ; pop prev + + mov esi, bos_mem_str8 ; it's used + mov bl, 0x07 + call print + mov esi, bos_mem_str9 + mov bl, 0x07 + call print + mov esi, bos_mem_str9 + mov bl, 0x07 + call print + jmp .print_end + + .print_free: + mov esi, bos_mem_str7 ; it's free + mov bl, 0x07 + call print + mov esi, bos_mem_str6 + mov bl, 0x04 + call print + + pop ebx ; pop the pushed ecx + mov cl, 0x04 ; into ebx instead.. ;) + call print_hex32 + mov esi, bos_mem_str0 + mov bl, 0x07 + call print + mov esi, bos_mem_str6 + mov bl, 0x04 + call print + mov ebx, edx + mov cl, 0x04 + call print_hex32 + + .print_end: + pop edi + pop edx + pop ecx + pop ebx + pop eax + ret \ No newline at end of file diff --git a/kernel/krl_incs/debug.inc b/kernel/krl_incs/debug.inc new file mode 100755 index 0000000..4c1fe19 --- /dev/null +++ b/kernel/krl_incs/debug.inc @@ -0,0 +1,385 @@ +;----------------------------------------------------------; +; BOS kernel Christoffer Bubach, 2004-2005. ; +;----------------------------------------------------------; +; ; +; BOS mighty debugging service, dump some regs.. ; +; ; +;----------------------------------------------------------; + +;----------------; +; variables ; +;----------------; + dbg_head db 'ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»',0 + dbg_head2 db 'º BOS 0.04 - ERROR: ',0 + dbg_head3 db 'º º',0 + dbg_press db 'º Press any key to continue... º',0 + dbg_restart db 'º Press a key to restart the PC... º',0 + dbg_footer db 'ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ',0 + dbg_close_row db ' º',0 + dbg_keypress db 1 ; 0 = restart, 1 = wait for key + dbg_error db ' none. ',0 ; error msg to show, max 14 chars + + ;--------------------------------------; + ; I'll start with the common regs.. ; + ;--------------------------------------; + debug_eax db 'º EAX: 0x', 0 + debug_ebx db ' EBX: 0x', 0 + debug_ecx db 'º ECX: 0x', 0 + debug_edx db ' EDX: 0x', 0 + debug_esp db 'º ESP: 0x', 0 + debug_ebp db ' EBP: 0x', 0 + debug_esi db 'º ESI: 0x', 0 + debug_edi db ' EDI: 0x', 0 + + ;-------------------; + ; state to print ; + ;-------------------; + state_eax dd 0 + state_ebx dd 0 + state_ecx dd 0 + state_edx dd 0 + state_esp dd 0 + state_ebp dd 0 + state_esi dd 0 + state_edi dd 0 + + ;-----------------------------------; + ; "fake stack" to save regs on.. ; + ;-----------------------------------; + stack_eax dd 0 + stack_eax2 dd 0 + stack_ebx dd 0 + stack_edx dd 0 + + ;-------------------------------; + ; original cursor placment.. ; + ;-------------------------------; + state_cursor dw 0 + + ;-------------------------------------------------; + ; mostly in debug purpose, and in lack of MM.. ; + ;-------------------------------------------------; + scr_buffer: times 180 dd 0 ; 720 = box buffer size (char+attrib) + + +;--------------------------------------------; +; dump regs.. does not use the stack. ; +;--------------------------------------------; +dump_regs: + mov [state_eax], eax + mov [state_ebx], ebx + mov [state_ecx], ecx + mov [state_edx], edx + mov [state_esp], esp + mov [state_ebp], ebp + mov [state_esi], esi + mov [state_edi], edi + + call .get_cur + mov [state_cursor], bx + + mov dx, 0 ; row counter + mov esi, (0xB8000+840) + mov edi, scr_buffer + .big_loop: + mov cx, 0 ; col counter + .small_loop: + movsb ; copy creen content + inc cx ; increase counter + cmp cx, 72 ; have we copied 72 bytes? + je .end_small ; if we have, end small loop + jmp .small_loop ; if not continue with next byte + .end_small: + inc dx ; increase row count + cmp dx, 10 ; check if all ten is copied + je .end_big ; if it is, end. + add esi, 88 ; else continue with next row + jmp .big_loop + .end_big: + + mov bx, 420 ; row 5 char 20 + call .set_cur + mov ebp, dbg_head + call .print + mov bx, 500 ; row 6 char 20 + call .set_cur + mov ebp, dbg_head2 + call .print + mov ebp, dbg_error + call .print + mov ebp, dbg_close_row + call .print + mov bx, 580 ; row 7 char 20 + call .set_cur + mov ebp, dbg_head3 + call .print + + + mov bx, 660 ; row 8 char 20 + call .set_cur + mov ebp, debug_eax + call .print + mov eax, [state_eax] ; eax + call .print_hex32 + mov ebp, debug_ebx + call .print + mov eax, [state_ebx] ; ebx + call .print_hex32 + mov ebp, dbg_close_row + call .print + + mov bx, 740 ; row 9 char 20 + call .set_cur + mov ebp, debug_ecx + call .print + mov eax, [state_ecx] ; ecx + call .print_hex32 + mov ebp, debug_edx + call .print + mov eax, [state_edx] ; edx + call .print_hex32 + mov ebp, dbg_close_row + call .print + + mov bx, 820 ; row 10 char 20 + call .set_cur + mov ebp, debug_esp + call .print + mov eax, [state_esp] ; esp + call .print_hex32 + mov ebp, debug_ebp + call .print + mov eax, [state_ebp] ; ebp + call .print_hex32 + mov ebp, dbg_close_row + call .print + + mov bx, 900 ; row 11 char 20 + call .set_cur + mov ebp, debug_esi + call .print + mov eax, [state_esi] ; esi + call .print_hex32 + mov ebp, debug_edi + call .print + mov eax, [state_edi] ; edi + call .print_hex32 + mov ebp, dbg_close_row + call .print + + mov bx, 980 ; row 12 char 20 + call .set_cur + mov ebp, dbg_head3 + call .print + mov bx, 1140 ; row 14 char 20 + call .set_cur + mov ebp, dbg_footer + call .print + mov bx, 1060 ; row 13 char 20 + call .set_cur + + cmp [dbg_keypress], 1 + je .wait_key + + ;----------------------------------; + ; wait for scancode and restart ; + ;----------------------------------; + mov ebp, dbg_restart + call .print + mov bx, 1093 ; row 13 char 46 + call .set_cur + + .no_new1: + mov al, [kbd_head] + mov ah, [kbd_tail] + cmp ah, 63 + jne .check1 + cmp al, 0 + je .no_new1 + mov [kbd_tail], 0 + jmp .done_check1 + .check1: + mov bl, ah + inc bl + cmp bl, al + je .no_new1 + inc [kbd_tail] + .done_check1: + + mov esi, kbd_buffer + movzx eax, [kbd_tail] + add esi, eax + mov ah, byte [esi] ; ah = scancode + cmp ah, 0xFA ; check for some stuff.. + je .no_new1 + cmp ah, 0xE0 + je .no_new1 + cmp ah, 0xE1 + je .no_new1 + test ah, 0x80 + jnz .no_new1 + + call reboot ; in commands.inc + + ;--------------------------; + ; wait for key and quit ; + ;--------------------------; + .wait_key: + mov ebp, dbg_press + call .print + mov bx, 1091 ; row 13 char 51 + call .set_cur + + .no_new2: + mov al, [kbd_head] + mov ah, [kbd_tail] + cmp ah, 63 ; if we are at the buffer end, + jne .check2 ; we must check that head != 0 + cmp al, 0 + je .no_new2 ; we don't have new keys to read + mov [kbd_tail], 0 ; "increase" to 0 (loop buffer) + jmp .done_check2 + .check2: + mov bl, ah + inc bl ; head should be +1 compared to tail + cmp bl, al + je .no_new2 + inc [kbd_tail] ; increase + .done_check2: + mov esi, kbd_buffer + movzx eax, [kbd_tail] + add esi, eax + mov ah, byte [esi] ; ah = scancode + cmp ah, 0xFA ; check for some stuff.. + je .no_new2 + cmp ah, 0xE0 + je .no_new2 + cmp ah, 0xE1 + je .no_new2 + test ah, 0x80 + jnz .no_new2 + + mov dx, 0 ; restore screen as + mov edi, (0xB8000+840) ; it was before. + mov esi, scr_buffer ; same loops as above + .big_loop2: ; but exchanged esi and edi + mov cx, 0 + .small_loop2: + movsb + inc cx + cmp cx, 72 + je .end_small2 + jmp .small_loop2 + .end_small2: + inc dx + cmp dx, 10 + je .end_big2 + add edi, 88 + jmp .big_loop2 + .end_big2: + + mov bx, [state_cursor] + call .set_cur + mov [dbg_keypress], 1 + mov [dbg_error], ' ' ; restore variables. + mov [dbg_error+1], 'n' ; ugly.. + mov [dbg_error+2], 'o' + mov [dbg_error+3], 'n' + mov [dbg_error+4], 'e' + mov [dbg_error+5], '.' + mov [dbg_error+6], ' ' + mov [dbg_error+7], ' ' + mov [dbg_error+8], ' ' + mov [dbg_error+9], ' ' + mov [dbg_error+10], ' ' + mov [dbg_error+11], ' ' + mov [dbg_error+12], ' ' + mov [dbg_error+13], ' ' + mov [dbg_error+14], 0 + ret + + ;-------------------------------; + ; subfunctions to inc cursor ; + ;-------------------------------; + .set_cur: + mov [stack_eax2], eax + mov [stack_edx], edx ; can it get any uglier? + mov al, 0x0E + mov ah, bh + mov dx, 0x3D4 + out dx, ax + inc ax + mov ah, bl + out dx, ax + mov edx, [stack_edx] + mov eax, [stack_eax2] + ret + .get_cur: + mov [stack_eax2], eax + mov [stack_edx], edx + mov dx, 0x3D4 + mov al, 0x0E + out dx, al + inc dx + in al, dx + mov bh, al + mov al, 0x0F + dec dx + out dx, al + inc dx + in al, dx + mov bl, al + mov edx, [stack_edx] + mov eax, [stack_eax2] + ret + ;--------------------------------; + ; subfunction to print a char ; + ; bl = char, bh = attrib ; + ;--------------------------------; + .print_char: + mov [stack_eax], eax + mov [stack_ebx], ebx + call .get_cur + mov eax, ebx + mov ebx, [stack_ebx] + mov [es:(eax*2 + 0xB8000)], bx + mov ebx, eax + inc bx + call .set_cur + mov ebx, [stack_ebx] + mov eax, [stack_eax] + ret + ;------------------------------------------; + ; subfunction to print 32-bit hex value ; + ; IN: eax = value, bh = color. ; + ;------------------------------------------; + .print_hex32: + mov ecx, 8 + .print_it: + rol eax, 4 + movzx edx, al + and edx, 0x0F + or edx, 0x30 + cmp edx, 0x39 + jna .cont + add edx, 7 + .cont: + mov bl, dl + call .print_char + loop .print_it + ret + ;-----------------------------------------; + ; subfunction to display asciiz string ; + ; Input: ebp = string ; + ;-----------------------------------------; + .print: + mov al, byte [ebp] + or al, al + jz .done + mov bl, al + mov bh, 0x40 ; standard color for this... + call .print_char + inc ebp + jmp .print + .done: + ret \ No newline at end of file diff --git a/kernel/krl_incs/dma.inc b/kernel/krl_incs/dma.inc new file mode 100755 index 0000000..39f3a84 --- /dev/null +++ b/kernel/krl_incs/dma.inc @@ -0,0 +1,93 @@ +;----------------------------------------------------------; +; BOS kernel Christoffer Bubach, 2004-2005. ; +;----------------------------------------------------------; +; ; +; DMA transfer code. ; +; ; +;----------------------------------------------------------; + + +;------------------------------------------; +; Lookup table for DMA controller ports ; +;------------------------------------------; + dma_mask_reg dw 0x0A, 0x0A, 0x0A, 0x0A, 0xD4, 0xD4, 0xD4, 0xD4 + dma_mode_reg dw 0x0B, 0x0B, 0x0B, 0x0B, 0xD6, 0xD6, 0xD6, 0xD6 + dma_clear_reg dw 0x0C, 0x0C, 0x0C, 0x0C, 0xD8, 0xD8, 0xD8, 0xD8 + dma_page_port dw 0x87, 0x83, 0x81, 0x82, 0x8F, 0x8B, 0x89, 0x8A + dma_addr_port dw 0x00, 0x02, 0x04, 0x06, 0xC0, 0xC4, 0xC8, 0xCC + dma_count_port dw 0x01, 0x03, 0x05, 0x07, 0xC2, 0xC6, 0xCA, 0xCE + + +;-----------------------------------; +; dma transfer ; +; ; +; in: ecx = page:offset ; +; bl = channel ; +; bh = 1=read, 0=write ; +; esi = count ; +; ; +; out: nothing. ; +;-----------------------------------; +dma_transfer: + push eax + push edx + push esi + cli + or bh, bh + jz .dont_read + + mov bh, bl + add bh, 0x48 + jmp .read + .dont_read: + mov bh, bl + add bh, 0x44 + .read: + dec esi + + movzx eax, bl + mov dx, word [(eax*2)+dma_mask_reg] + mov al, bl + or al, 0x04 + out dx, al ; disable the channel + + movzx eax, bl + mov dx, word [(eax*2)+dma_clear_reg] + mov al, 0 + out dx, al ; initialize flip-flop + + movzx eax, bl + mov dx, word [(eax*2)+dma_mode_reg] + mov al, bh + out dx, al ; set DMA mode + + movzx eax, bl + mov dx, word [(eax*2)+dma_addr_port] + mov al, cl + out dx, al ; write low offset part + mov al, ch + out dx, al ; and high offset part + + movzx eax, bl + mov dx, word [(eax*2)+dma_page_port] + mov eax, ecx + shr eax, 16 + out dx, al ; write page. + + movzx eax, bl + mov dx, word [(eax*2)+dma_count_port] + mov eax, esi + out dx, al ; low count + mov al, ah + out dx, al ; high count + + movzx eax, bl + mov dx, word [(eax*2)+dma_mask_reg] + mov al, bl + out dx, al ; enable channel + + sti + pop esi + pop edx + pop eax + ret \ No newline at end of file diff --git a/kernel/krl_incs/en_mess.inc b/kernel/krl_incs/en_mess.inc new file mode 100755 index 0000000..d088c49 --- /dev/null +++ b/kernel/krl_incs/en_mess.inc @@ -0,0 +1,29 @@ +;----------------------------------------------------------; +; BOS 0.04 Christoffer Bubach, 2004-2005. ; +;----------------------------------------------------------; +; ; +; English strings used in BOS. ; +; I should collect them all here, just too lazy... ; +;----------------------------------------------------------; + + +;---------------; +; strings ; +;---------------; + + pmode_load db 'Setting up protected mode...', 0 + pmode_load_ok db '[ 32-bits OK ]', 0 + + kernel_load db 'Loading kernel...', 0 + kernel_load_ok db '[ OK ]', 0 + + pic_irq db 'Fixing PIC and IRQs...', 0 + pic_irq_ok db '[ Done ]', 0 + + idt_mess db 'Setting up IDT...', 0 + idt_ok db '[ IDT OK ]', 0 + + kbd_load db 'Enables IRQ1...', 0 + kbd_ok db '[ Keyboard OK ]', 0 + + bos_shell db 'BOS shell. Type "help" for more info.', 13, 10, 0 diff --git a/kernel/krl_incs/fdc.inc b/kernel/krl_incs/fdc.inc new file mode 100755 index 0000000..d90218d --- /dev/null +++ b/kernel/krl_incs/fdc.inc @@ -0,0 +1,501 @@ +;----------------------------------------------------------; +; BOS kernel Christoffer Bubach, 2004-2005. ; +;----------------------------------------------------------; +; ; +; floppy disk driver originally by Craig Bamford, Dex4u. ; +; adjustments and for BOS by bubach. ; +; ; +;----------------------------------------------------------; + +; NOTE: I'm almost finished with a much improved version of +; this code, that supports 2 drives of multiple types. +; I'll wait with that until next version, so you won't +; have to see a half finished mess here. + +;---------------------------; +; variables and contants ; +;---------------------------; + fdd_int_done dw 0 ; is the IRQ done? + fdd_motor_on db 0 ; fdd motor on=1, off=0 + fdd_head db 0 + fdd_driveno db 0 + fdd_track db 0 + fdd_sector db 0 + + fdd_errorcode db 0 ; this the error code 00 = no error + fdd_tries db 0 ; no. of times to try, before error. + + ResultST0 db 0 + ResultST1 db 0 ; or pcn + ResultST2 db 0 + ResultST3 db 0 + ResultC db 0 + ResultH db 0 + ResultR db 0 + ResultN db 0 + ResultExtra db 0 + + + +;------------------------------------------------------; +; initializes the floppy disk driver ; +; ; +;------------------------------------------------------; +fdc_init: + push ecx + push edi + + mov cl, 0x26 ; hook interrupt 0x26 (IRQ6) + mov edi, floppy_irq + call set_int + + mov cl, 6 ; enable IRQ6 + call enable_irq + + call fdd_reset ; reset FDC + call fdd_recalibrate + + pop edi + pop ecx + ret + + + +;------------------------------------------------------; +; floppy IRQ ; +; ; +;------------------------------------------------------; +floppy_irq: + pusha + push gs + push fs + push ds + push es + push esi + + or [fdd_int_done], 1 + mov al, 0x20 + out 0x20, al + + pop esi + pop es + pop ds + pop fs + pop gs + popa + iret + + + +;------------------------------------------------------; +; wait for a floppy int ; +; out: cf = 1 if timeout ; +;------------------------------------------------------; +wait_int: + push eax + push ecx + + mov ecx, 150 ; 150 = 1.5 seconds. + call active_delay ; timer.inc + .l1: + cmp dword [ecx], 0 ; timeup? + je .error + mov ax, [fdd_int_done] ; if not we check for int. + or ax, ax + jz .l1 + pop ecx + pop eax + clc + ret + .error: + pop ecx + pop eax + stc + ret + + + +;------------------------------------------------------; +; fdd motor off ; +; out: nothing ; +;------------------------------------------------------; +fdd_off: + push eax + push edx + + mov dx, 0x3F2 + mov al, 0 ; all motors off.. + out dx, al + mov [fdd_motor_on], 0 + + pop edx + pop eax + ret + + + + +;------------------------------------------------------; +; fdd motor on ; +; out: nothing ; +;------------------------------------------------------; +fdd_on: + push eax + push edx + + mov dx, 0x3F2 ; motor 0 on.. + mov al, 0x1C + out dx, al + + mov ecx, 20 ; 1/5 of a sec. to speed up + call delay ; in timer.inc + mov [fdd_motor_on], 1 + + pop edx + pop eax + ret + + + +;------------------------------------------------------; +; send a data byte to the FDC ; +; ; +; in: al = data byte ; +;------------------------------------------------------; +fdc_sendbyte: + push edx + push ecx + push eax + + mov ecx, 150 ; 150 = 1.5 seconds. + call active_delay ; timer.inc + .l1: + cmp dword [ecx], 0 ; timeup? + je .error + mov dx, 0x3f4 ; check status reg + in al, dx + and al, 11000000b + cmp al, 10000000b ; are we ok to write + jnz .l1 + + pop eax + pop ecx + mov dx, 0x3F5 ; send byte + out dx, al + pop edx + clc + ret + .error: + pop eax + pop ecx + pop edx + stc + ret + + +;------------------------------------------------------; +; read a data byte from the FDC ; +; ; +; out: al = data byte ; +;------------------------------------------------------; +fdc_getbyte: + push edx + push ecx + push eax + + mov ecx, 150 ; 150 = 1.5 seconds. + call active_delay ; timer.inc + .l1: + cmp dword [ecx], 0 ; timeup? + je .error + mov dx, 0x3f4 ; check status reg + in al, dx + and al, 11000000b + cmp al, 11000000b ; are we ok to read + jnz .l1 + + pop eax + pop ecx + mov dx, 0x3F5 ; get the byte + in al, dx + pop edx + clc + ret + .error: + pop eax + pop ecx + pop edx + stc + ret + + + + +;------------------------------------------------------; +; reset controller ; +; ; +;------------------------------------------------------; +fdd_reset: + push eax + push ecx + push edx + + mov dx, 0x3F2 + mov al, 00001000b ; no motors enabled, DMA Enabled, held FDC at reset + out dx, al ; drive A selected. + + mov ecx, 5 + call delay ; in timer.inc + + mov dx, 0x3F7 + mov al, 00000000b ; 500Kb/sec mode + out dx, al + + mov dx, 0x3F2 + or al, 00001100b ; FDC completed reset, al =0x0c. + out dx, al + + mov [fdd_int_done], 0 ; we need to wait + call wait_int ; for floppy int. + jc .error ; jump to error exit, if timeout. + + mov cx, 0x04 ; after a reset, the interrupts must be + .status: ; cleared by (four) dummy-reads. + mov al, 0x08 ; sense interrupt status command + call fdc_sendbyte + call fdc_getbyte + call fdc_getbyte + loop .status + + mov al, 0x03 ; specify command (includes next two bytes sent) + call fdc_sendbyte + mov al, 0xDF ; SRT = 3ms, HUT = 240ms + call fdc_sendbyte + mov al, 0x02 ; HLT = 16ms, ND = 0 + call fdc_sendbyte + .ok: + pop edx + pop ecx + pop eax + clc + ret + .error: + pop edx + pop ecx + pop eax + stc + ret + + + + +;------------------------------------------------------; +; fdd seek ; +; ; +;------------------------------------------------------; +fdd_seek: + push eax + + mov al, [ResultC] ; put what track/cylinder we are at in al + cmp [fdd_track], al ; is it the same as we want + je .ok ; yes, then leave. + + mov al, 0x0F ; seek command + call fdc_sendbyte + mov al, [fdd_driveno] ; drive # (00 = A) + call fdc_sendbyte + mov al, [fdd_track] ; cylinder # + call fdc_sendbyte + + mov [fdd_int_done], 0 + call wait_int + jc .error + + mov al, 0x08 ; sense interrupt status command + call fdc_sendbyte + call fdc_getbyte + mov ah, al ; save ST0 in ah + call fdc_getbyte ; should read PCN + + test ah, 00100000b ; test sr0 is 0x20 + jz .error ; if not we have a error :-(. + test ah,10000000b ; test sr0 is 0x80 + jnz .error ; if not we have a error :-(. + .ok: ; succsess.. :-) + pop eax + clc + ret + .error: + pop eax + stc + ret + + +;------------------------------------------------------; +; fdd recalibrate ; +; ; +;------------------------------------------------------; +fdd_recalibrate: + push eax + + test [fdd_motor_on], 1 + jnz .l1 + call fdd_on + .l1: + mov al, 0x07 ; recalibrate command + call fdc_sendbyte + mov al, 0x00 ; selects drive a: + call fdc_sendbyte + + mov [fdd_int_done], 0 + call wait_int + jc .error + + mov al, 0x08 ; sense interrupt status command + call fdc_sendbyte + call fdc_getbyte ; read STO + mov ah, al ; save ST0 in ah + call fdc_getbyte + + test ah, 00100000b ; test sr0 is 0x20 + jz .error + test ah, 00010000b ; test sr0 is 0x80 + jnz .error + .ok: + mov [ResultC], 0 + pop eax + clc + ret + .error: + pop eax + stc + ret + + + +;------------------------------------------------------; +; fdd read/write ; +; input: bl = 0 read, 1 write ; +; ch = track/cylinder ; +; cl = sector ; +; dh = head ; +; dl = drive (only A: drive used, 00 ) ; +; output: ah = status ; +; al = sector number read ; +; cf = 0 if ok, 1 if error ; +;------------------------------------------------------; +fdd_read_write: + pushad + and dh, 00000001b ; is it set to fdd_head 0 or 1? + mov [fdd_head], dh ; store it. + shl dh, 2 ; make the first 2 bits = 00 for A:. + mov [fdd_driveno], dh ; store it. + + mov [fdd_errorcode], 0x04 ; put error code in ah, just incase + cmp ch, 0x51 ; cmp if track number, is above 80 decimal (51 hex)? + jae .error ; if above jump error. + mov [fdd_track], ch ; if not above,store it. + + cmp cl, 0x13 ; cmp if fdd_sector number, is above 18 decimal (12 hex) ?. + jae .error ; if above jump error. + mov [fdd_sector], cl ; if not above,store it. + + test [fdd_motor_on], 1 + jnz .l1 + call fdd_on + .l1: + mov dx, 0x3F7 + mov al, 00000000b ; 500Kb/sec mode + out dx, al + mov [fdd_errorcode], 0x80 ; put basic error code, just in case. + + xor ecx, ecx + mov cx, 3 ; we want to try seek 3 times + .l2: + call fdd_seek ; we need to move to the right track. + jnc .l3 ; we should be on the right track. + loop .l2 + jmp .error ; timeout. + .l3: + mov dx, 0x3f4 ; check status reg (to see if DMA bit set) + in al, dx + test al, 00100000b ; test sr0 is 0x80 + jnz .error + + cmp bl, 0 + je .read_fdd + + .write_fdd: + mov bl, 2 ; channel 2 + mov esi, 512 ; bytes to write + mov ecx, 0x80000 ; page & offset + mov bh, 1 ; write floppy, "read DMA" + call dma_transfer + + mov al, 0xC5 ; write fdd_sector command + call fdc_sendbyte + jmp .cont + + .read_fdd: + mov bl, 2 ; channel 2 + mov esi, 512 ; bytes to read + mov ecx, 0x80000 ; page & offset + mov bh, 0 ; read floppy, "write DMA" + call dma_transfer + + mov al, 0xE6 ; read fdd_sector command + call fdc_sendbyte + + .cont: + mov al, [fdd_driveno] ; fdd_head no. 0, drive A: + call fdc_sendbyte + mov al, [fdd_track] ; cylinder + call fdc_sendbyte + + mov al, [fdd_head] ; head/side 0 or 1 + call fdc_sendbyte + mov al, [fdd_sector] ; sector number,starts at 1 + call fdc_sendbyte + mov al, 0x02 ; sector size - 512 bytes + call fdc_sendbyte + + mov al, 0x12 ; 18 decimal sectors to a track + call fdc_sendbyte + mov al, 0x1B ; 27 should be the gap length for a 3.5" 1.44Mb + call fdc_sendbyte + mov al, 0xFF ; not used data length, because sector size has been filled + call fdc_sendbyte + + mov [fdd_int_done], 0 + call wait_int + jc .error + + call fdc_getbyte + mov [ResultST0], al ; save result of ST0 in var + call fdc_getbyte + mov [ResultST1], al ; save result of ST1 in var + call fdc_getbyte + mov [ResultST2], al ; save result of ST2 in var + call fdc_getbyte + mov [ResultC], al ; save result of cylinder + call fdc_getbyte + mov [ResultH], al ; save result of head + call fdc_getbyte + mov [ResultR], al ; save result of sector number. + call fdc_getbyte + mov [ResultN], al ; save result of sector size + + test [ResultST0], 11000000b ; test sr0 is 0xC0 + jnz .error + mov [fdd_errorcode], 0x00 + .ok: + popad + mov ah, [fdd_errorcode] ; move error status into ah + mov al, [ResultR] + clc + ret + .error: + popad + mov ah, [fdd_errorcode] ; move error status into ah + stc + ret \ No newline at end of file diff --git a/kernel/krl_incs/idt.inc b/kernel/krl_incs/idt.inc new file mode 100755 index 0000000..a899cbc --- /dev/null +++ b/kernel/krl_incs/idt.inc @@ -0,0 +1,147 @@ +;----------------------------------------------------------; +; BOS kernel Christoffer Bubach, 2003-2005. ; +;----------------------------------------------------------; +; ; +; set/modify IDT entries ; +; ; +;----------------------------------------------------------; + + + +;--------------------------------------------------; +; set up IDT ; +; in: edi = pointer to "unhandled int"-function. ; +;--------------------------------------------------; +init_idt: + push eax + push ecx + + mov ecx, 0 + .loop: ; loop + mov eax, edi ; and + mov [(0x6c00+ecx)], ax ; set whole IDT + add ecx, 2 ; to one ISR + + mov dword [(0x6c00+ecx)], 0x8E000008 ; 0x6c00 is where + add ecx, 4 ; we put the IDT + + mov eax, edi + shr eax, 16 + mov [(0x6c00+ecx)], ax + add ecx, 2 + + cmp ecx, 0x800 ; 256 ints + jb .loop ; * 8 bytes each + + pop ecx + pop eax + ret + + + +;--------------------------------------; +; modify IDT, set any int ; +; in: cl = int number ; +; edi = int function pointer ; +;--------------------------------------; +set_int: + push eax + push ecx + + mov al, 8 ; 8 bytes for each int + mul cl ; cl * al = ax + movzx ecx, ax ; ecx = offset in IDT (1/2 for dword list) + mov [(idt_list+ecx/2)], edi ; add new int to idt entry list + + mov eax, edi + mov [(0x6c00+ecx)], ax + add ecx, 2 + + mov dword [(0x6c00+ecx)], 0x8E000008 + add ecx, 4 + + mov eax, edi + shr eax, 16 + mov [(0x6c00+ecx)], ax + + pop ecx + pop eax + ret + + + +;------------------------------------------------; +; get int address ; +; in: cl = int number ; +; out: esi = address or 0 if none present ; +;------------------------------------------------; +get_int: + push eax + + mov eax, 4 ; 4 bytes for each address + mul cl ; cl * al = ax + mov esi, idt_list + add esi, eax + + pop eax + ret + + + + +;----------------------------------------; +; sets ints from list ; +; in: esi = pointer to int list ; +;----------------------------------------; +set_idt_list: + push eax + push edi + + mov ecx, 0 + .loop: + lodsd + or eax, eax + jz .next + mov edi, eax + call set_int + .next: + inc ecx + cmp ecx, 0x100 + jb .loop + + pop edi + pop eax + ret + + + +;------------------------------; +; list of idt entries. ; +; 0 = not handled ; +;------------------------------; +idt_list: dd isr00 + dd isr01 + dd isr02 + dd isr03 + dd isr04 + dd isr05 + dd isr06 + dd isr07 + dd isr08 + dd isr09 + dd isr0A + dd isr0B + dd isr0C + dd isr0D + dd isr0E + dd 0 + dd isr10 + dd isr11 + dd isr12 + dd isr13 + times 12 dd 0 ; 12 unused ints + dd isr20 + dd isr21 + times 16 dd 0 ; 16 unused ints + dd isr32 ; First free and BOS system interrupt. + times 205 dd 0 ; 205 unused ints \ No newline at end of file diff --git a/kernel/krl_incs/isr.inc b/kernel/krl_incs/isr.inc new file mode 100755 index 0000000..f45357d --- /dev/null +++ b/kernel/krl_incs/isr.inc @@ -0,0 +1,529 @@ +;----------------------------------------------------------; +; BOS 0.04 Christoffer Bubach, 2004. ; +;----------------------------------------------------------; +; ; +; ISR (Interrupt Service Rutines). ; +; ; +;----------------------------------------------------------; + + + +;------------------------; +; Unhandled Interrupt ; +;------------------------; +u_isr: + mov [dbg_keypress], 0 ; in debug.inc + mov [dbg_error], 'U' + mov [dbg_error+1], 'n' + mov [dbg_error+2], 'h' + mov [dbg_error+3], 'a' + mov [dbg_error+4], 'n' + mov [dbg_error+5], 'd' + mov [dbg_error+6], 'l' + mov [dbg_error+7], 'e' + mov [dbg_error+8], 'd' + mov [dbg_error+9], ' ' + mov [dbg_error+10], 'I' + mov [dbg_error+11], 'n' + mov [dbg_error+12], 't' + mov [dbg_error+13], ' ' + mov [dbg_error+14], 0 + call dump_regs + + +;-------------------------------; +; Exception Interrupt no. 00 ; +;-------------------------------; +isr00: + mov [dbg_keypress], 0 + mov [dbg_error], 'D' + mov [dbg_error+1], 'i' + mov [dbg_error+2], 'v' + mov [dbg_error+3], 'i' + mov [dbg_error+4], 'd' + mov [dbg_error+5], 'e' + mov [dbg_error+6], ' ' + mov [dbg_error+7], 'e' + mov [dbg_error+8], 'r' + mov [dbg_error+9], 'r' + mov [dbg_error+10], 'o' + mov [dbg_error+11], 'r' + mov [dbg_error+12], ' ' + mov [dbg_error+13], ' ' + mov [dbg_error+14], 0 + call dump_regs + + +;-------------------------------; +; Exception Interrupt no. 01 ; +;-------------------------------; +isr01: + mov [dbg_keypress], 0 + mov [dbg_error], 'D' + mov [dbg_error+1], 'e' + mov [dbg_error+2], 'b' + mov [dbg_error+3], 'u' + mov [dbg_error+4], 'g' + mov [dbg_error+5], ' ' + mov [dbg_error+6], 'f' + mov [dbg_error+7], 'a' + mov [dbg_error+8], 'u' + mov [dbg_error+9], 'l' + mov [dbg_error+10], 't' + mov [dbg_error+11], ' ' + mov [dbg_error+12], ' ' + mov [dbg_error+13], ' ' + mov [dbg_error+14], 0 + call dump_regs + + +;-------------------------------; +; Exception Interrupt no. 02 ; +;-------------------------------; +isr02: + mov [dbg_keypress], 0 + mov [dbg_error], 'N' + mov [dbg_error+1], 'M' + mov [dbg_error+2], 'I' + mov [dbg_error+3], ' ' + mov [dbg_error+4], 'i' + mov [dbg_error+5], 'n' + mov [dbg_error+6], 't' + mov [dbg_error+7], 'e' + mov [dbg_error+8], 'r' + mov [dbg_error+9], 'r' + mov [dbg_error+10], 'u' + mov [dbg_error+11], 'p' + mov [dbg_error+12], 't' + mov [dbg_error+13], ' ' + mov [dbg_error+14], 0 + call dump_regs + + +;-------------------------------; +; Exception Interrupt no. 03 ; +;-------------------------------; +isr03: + mov [dbg_keypress], 0 + mov [dbg_error], 'B' + mov [dbg_error+1], 'r' + mov [dbg_error+2], 'e' + mov [dbg_error+3], 'a' + mov [dbg_error+4], 'k' + mov [dbg_error+5], 'p' + mov [dbg_error+6], 'o' + mov [dbg_error+7], 'i' + mov [dbg_error+8], 'n' + mov [dbg_error+9], 't' + mov [dbg_error+10], ' ' + mov [dbg_error+11], ' ' + mov [dbg_error+12], ' ' + mov [dbg_error+13], ' ' + mov [dbg_error+14], 0 + call dump_regs + + +;-------------------------------; +; Exception Interrupt no. 04 ; +;-------------------------------; +isr04: + mov [dbg_keypress], 0 + mov [dbg_error], 'O' + mov [dbg_error+1], 'v' + mov [dbg_error+2], 'e' + mov [dbg_error+3], 'r' + mov [dbg_error+4], 'f' + mov [dbg_error+5], 'l' + mov [dbg_error+6], 'o' + mov [dbg_error+7], 'w' + mov [dbg_error+8], ' ' + mov [dbg_error+9], 'f' + mov [dbg_error+10], 'a' + mov [dbg_error+11], 'u' + mov [dbg_error+12], 'l' + mov [dbg_error+13], 't' + mov [dbg_error+14], 0 + call dump_regs + + +;-------------------------------; +; Exception Interrupt no. 05 ; +;-------------------------------; +isr05: + mov [dbg_keypress], 0 + mov [dbg_error], 'B' + mov [dbg_error+1], 'o' + mov [dbg_error+2], 'u' + mov [dbg_error+3], 'n' + mov [dbg_error+4], 'd' + mov [dbg_error+5], 's' + mov [dbg_error+6], ' ' + mov [dbg_error+7], 'c' + mov [dbg_error+8], 'h' + mov [dbg_error+9], 'e' + mov [dbg_error+10], 'c' + mov [dbg_error+11], 'k' + mov [dbg_error+12], ' ' + mov [dbg_error+13], ' ' + mov [dbg_error+14], 0 + call dump_regs + + +;-------------------------------; +; Exception Interrupt no. 06 ; +;-------------------------------; +isr06: + mov [dbg_keypress], 0 + mov [dbg_error], 'I' + mov [dbg_error+1], 'n' + mov [dbg_error+2], 'v' + mov [dbg_error+3], 'a' + mov [dbg_error+4], 'l' + mov [dbg_error+5], 'i' + mov [dbg_error+6], 'd' + mov [dbg_error+7], ' ' + mov [dbg_error+8], 'o' + mov [dbg_error+9], 'p' + mov [dbg_error+10], 'c' + mov [dbg_error+11], 'o' + mov [dbg_error+12], 'd' + mov [dbg_error+13], 'e' + mov [dbg_error+14], 0 + call dump_regs + + +;-------------------------------; +; Exception Interrupt no. 07 ; +;-------------------------------; +isr07: + mov [dbg_keypress], 0 + mov [dbg_error], 'N' + mov [dbg_error+1], 'o' + mov [dbg_error+2], ' ' + mov [dbg_error+3], 'c' + mov [dbg_error+4], 'o' + mov [dbg_error+5], 'p' + mov [dbg_error+6], '.' + mov [dbg_error+7], ' ' + mov [dbg_error+8], 'a' + mov [dbg_error+9], 'v' + mov [dbg_error+10], 'a' + mov [dbg_error+11], 'i' + mov [dbg_error+12], 'l' + mov [dbg_error+13], '.' + mov [dbg_error+14], 0 + call dump_regs + + +;-------------------------------; +; Exception Interrupt no. 08 ; +;-------------------------------; +isr08: + mov [dbg_keypress], 0 + mov [dbg_error], 'D' + mov [dbg_error+1], 'o' + mov [dbg_error+2], 'u' + mov [dbg_error+3], 'b' + mov [dbg_error+4], 'l' + mov [dbg_error+5], 'e' + mov [dbg_error+6], ' ' + mov [dbg_error+7], 'f' + mov [dbg_error+8], 'a' + mov [dbg_error+9], 'u' + mov [dbg_error+10], 'l' + mov [dbg_error+11], 't' + mov [dbg_error+12], ' ' + mov [dbg_error+13], ' ' + mov [dbg_error+14], 0 + call dump_regs + + +;-------------------------------; +; Exception Interrupt no. 09 ; +;-------------------------------; +isr09: + mov [dbg_keypress], 0 + mov [dbg_error], 'C' + mov [dbg_error+1], 'o' + mov [dbg_error+2], 'p' + mov [dbg_error+3], 'r' + mov [dbg_error+4], 'o' + mov [dbg_error+5], '.' + mov [dbg_error+6], ' ' + mov [dbg_error+7], 's' + mov [dbg_error+8], 'e' + mov [dbg_error+9], 'g' + mov [dbg_error+10], 'm' + mov [dbg_error+11], 'e' + mov [dbg_error+12], 'n' + mov [dbg_error+13], 't' + mov [dbg_error+14], 0 + call dump_regs + + +;-------------------------------; +; Exception Interrupt no. 10 ; +;-------------------------------; +isr0A: + mov [dbg_keypress], 0 + mov [dbg_error], 'I' + mov [dbg_error+1], 'n' + mov [dbg_error+2], 'v' + mov [dbg_error+3], 'a' + mov [dbg_error+4], 'l' + mov [dbg_error+5], 'i' + mov [dbg_error+6], 'd' + mov [dbg_error+7], ' ' + mov [dbg_error+8], 'T' + mov [dbg_error+9], 'S' + mov [dbg_error+10], 'S' + mov [dbg_error+11], '!' + mov [dbg_error+12], ' ' + mov [dbg_error+13], ' ' + mov [dbg_error+14], 0 + call dump_regs + + +;-------------------------------; +; Exception Interrupt no. 11 ; +;-------------------------------; +isr0B: + mov [dbg_keypress], 0 + mov [dbg_error], 'N' + mov [dbg_error+1], 'o' + mov [dbg_error+2], ' ' + mov [dbg_error+3], 's' + mov [dbg_error+4], 'e' + mov [dbg_error+5], 'g' + mov [dbg_error+6], 'm' + mov [dbg_error+7], 'e' + mov [dbg_error+8], 'n' + mov [dbg_error+9], 't' + mov [dbg_error+10], '!' + mov [dbg_error+11], ' ' + mov [dbg_error+12], ' ' + mov [dbg_error+13], ' ' + mov [dbg_error+14], 0 + call dump_regs + + +;-------------------------------; +; Exception Interrupt no. 12 ; +;-------------------------------; +isr0C: + mov [dbg_keypress], 0 + mov [dbg_error], 'S' + mov [dbg_error+1], 't' + mov [dbg_error+2], 'a' + mov [dbg_error+3], 'c' + mov [dbg_error+4], 'k' + mov [dbg_error+5], ' ' + mov [dbg_error+6], 'f' + mov [dbg_error+7], 'a' + mov [dbg_error+8], 'u' + mov [dbg_error+9], 'l' + mov [dbg_error+10], 't' + mov [dbg_error+11], '!' + mov [dbg_error+12], ' ' + mov [dbg_error+13], ' ' + mov [dbg_error+14], 0 + call dump_regs + + +;-------------------------------; +; Exception Interrupt no. 13 ; +;-------------------------------; +isr0D: + mov [dbg_keypress], 0 + mov [dbg_error], 'T' + mov [dbg_error+1], 'r' + mov [dbg_error+2], 'i' + mov [dbg_error+3], 'p' + mov [dbg_error+4], 'l' + mov [dbg_error+5], 'e' + mov [dbg_error+6], ' ' + mov [dbg_error+7], 'f' + mov [dbg_error+8], 'a' + mov [dbg_error+9], 'u' + mov [dbg_error+10], 'l' + mov [dbg_error+11], 't' + mov [dbg_error+12], '!' + mov [dbg_error+13], ' ' + mov [dbg_error+14], 0 + call dump_regs + + +;-------------------------------; +; Exception Interrupt no. 14 ; +;-------------------------------; +isr0E: + mov [dbg_keypress], 0 + mov [dbg_error], 'P' + mov [dbg_error+1], 'a' + mov [dbg_error+2], 'g' + mov [dbg_error+3], 'e' + mov [dbg_error+4], ' ' + mov [dbg_error+5], 'f' + mov [dbg_error+6], 'a' + mov [dbg_error+7], 'u' + mov [dbg_error+8], 'l' + mov [dbg_error+9], 't' + mov [dbg_error+10], '!' + mov [dbg_error+11], ' ' + mov [dbg_error+12], ' ' + mov [dbg_error+13], ' ' + mov [dbg_error+14], 0 + call dump_regs + + +;-------------------------------; +; Exception Interrupt no. 16 ; +;-------------------------------; +isr10: + mov [dbg_keypress], 0 + mov [dbg_error], 'C' + mov [dbg_error+1], 'o' + mov [dbg_error+2], 'p' + mov [dbg_error+3], 'r' + mov [dbg_error+4], 'o' + mov [dbg_error+5], 'c' + mov [dbg_error+6], 'e' + mov [dbg_error+7], 's' + mov [dbg_error+8], 's' + mov [dbg_error+9], 'o' + mov [dbg_error+10], 'r' + mov [dbg_error+11], '!' + mov [dbg_error+12], ' ' + mov [dbg_error+13], ' ' + mov [dbg_error+14], 0 + call dump_regs + + +;-------------------------------; +; Exception Interrupt no. 17 ; +;-------------------------------; +isr11: + mov [dbg_keypress], 0 + mov [dbg_error], 'A' + mov [dbg_error+1], 'l' + mov [dbg_error+2], 'i' + mov [dbg_error+3], 'g' + mov [dbg_error+4], 'n' + mov [dbg_error+5], 'm' + mov [dbg_error+6], 'e' + mov [dbg_error+7], 'n' + mov [dbg_error+8], 't' + mov [dbg_error+9], ' ' + mov [dbg_error+10], 'c' + mov [dbg_error+11], 'h' + mov [dbg_error+12], 'k' + mov [dbg_error+13], '.' + mov [dbg_error+14], 0 + call dump_regs + + +;-------------------------------; +; Exception Interrupt no. 18 ; +;-------------------------------; +isr12: + mov [dbg_keypress], 0 + mov [dbg_error], 'M' + mov [dbg_error+1], 'a' + mov [dbg_error+2], 'c' + mov [dbg_error+3], 'h' + mov [dbg_error+4], 'i' + mov [dbg_error+5], 'n' + mov [dbg_error+6], 'e' + mov [dbg_error+7], ' ' + mov [dbg_error+8], 'c' + mov [dbg_error+9], 'h' + mov [dbg_error+10], 'e' + mov [dbg_error+11], 'c' + mov [dbg_error+12], 'k' + mov [dbg_error+13], '!' + mov [dbg_error+14], 0 + call dump_regs + + +;-------------------------------; +; Exception Interrupt no. 19 ; +;-------------------------------; +isr13: + mov [dbg_keypress], 0 + mov [dbg_error], 'S' + mov [dbg_error+1], 'I' + mov [dbg_error+2], 'M' + mov [dbg_error+3], 'D' + mov [dbg_error+4], ' ' + mov [dbg_error+5], 'f' + mov [dbg_error+6], 'l' + mov [dbg_error+7], 'o' + mov [dbg_error+8], 'a' + mov [dbg_error+9], 't' + mov [dbg_error+10], '.' + mov [dbg_error+11], '-' + mov [dbg_error+12], 'p' + mov [dbg_error+13], '.' + mov [dbg_error+14], 0 + call dump_regs + + + +;--------------------------; +; ISR 20. The timer. ; +;--------------------------; +isr20: + pusha + push gs + push fs + push ds + push es + + call timer ; in timer.inc + + pop es + pop ds + pop fs + pop gs + popa + iret + + +;--------------------------; +; Keyboard IRQ. ISR 21. ; +;--------------------------; +isr21: + pusha + push gs + push fs + push ds + push es + push esi + + call keyboard_isr ; Located in keyboard.inc + + pop esi + pop es + pop ds + pop fs + pop gs + popa + iret + + +;---------------------; +; Interrupt no. 50 ; +;---------------------; +isr32: + push gs + push fs + push ds + push es + + call interrupt_32 ; Located in sys_ints.inc + + pop es + pop ds + pop fs + pop gs + iret \ No newline at end of file diff --git a/kernel/krl_incs/keyboard.inc b/kernel/krl_incs/keyboard.inc new file mode 100755 index 0000000..282bbe2 --- /dev/null +++ b/kernel/krl_incs/keyboard.inc @@ -0,0 +1,380 @@ +;----------------------------------------------------------; +; BOS 0.04 Christoffer Bubach, 2004-2005. ; +;----------------------------------------------------------; +; ; +; Keyboard functions. IRQ, INT's and more. ; +; ; +;----------------------------------------------------------; + + +;--------------; +; Variabels ; +;--------------; + + ;--------------------------------------------------------------------------------; + ; _______________________ Keyboard buffer system ; + ; | | | | | | | | | | | | ; + ; +---------------------+ ; + ; | +----------> kbd_head, here is where we put new scan-codes. ; + ; +--------------------> kbd_tail, where we last read a key. this means ; + ; that we have 4 new scan-codes to read before we catch up. ; + ;--------------------------------------------------------------------------------; + kbd_buffer db ' A 64-byte ' + db ' keyboard buffer ' + kbd_head db 1 ; head must be +1 from tail + kbd_tail db 0 + + ;-------------------------------------------------------------------------; + ; _________________ Flag byte: ; + ; |1|1|0|0|0|1|1|1| ; + ; +---------------+ 1 = True 0 = False ; + ; | | | | | | | +---> shift key ; + ; | | | | | | +-----> ctrl key ; + ; | | | | | +-------> alt key ; + ; | | | | +---------> reserved bit ; + ; | | | +-----------> reserved bit ; + ; | | +-------------> reserved bit ; + ; | +---------------> ctrl + alt + del ; + ; +-----------------> key released ; + ;-------------------------------------------------------------------------; + kbd_flags db 0 ; flag byte + + ;-------------------------------------------------------------------------; + ; _________________ LED status byte: ; + ; |0|0|0|0|0|1|1|1| ; + ; +---------------+ 1 = True 0 = False ; + ; | | +---> scroll lock ; + ; | +-----> num lock ; + ; +-------> caps lock ; + ;-------------------------------------------------------------------------; + kbd_status db 0 ; LED statusbyte + + +;----------------------; +; Keyboard IRQ ; +;----------------------; +keyboard_isr: + push eax + + ;-------------------------; + ; get the scancode ; + ;-------------------------; + xor eax, eax + in al, 0x60 + + ;------------------------------; + ; check if key was released ; + ;------------------------------; + test al, 0x80 + jz .key_down + and byte [kbd_flags], 01111111b ; key up.. + + cmp al, 42+128 ; left shift up? + je .shift_up + cmp al, 54+128 ; right shift up? + je .shift_up + + cmp al, 29+128 ; ctrl up? + je .ctrl_up + + cmp al, 83+128 ; del up? + je .del_up + + cmp al, 56+128 ; alt up? + je .alt_up + jmp .end + + ;--------------------; + ; it was released ; + ;--------------------; + .shift_up: + and byte [kbd_flags], 11111110b + jmp .end + + .del_up: + jmp .CAD_off + + .ctrl_up: + and byte [kbd_flags], 11111101b ; ctrl off. + jmp .CAD_off + + .alt_up: + and byte [kbd_flags], 11111011b ; alt off. + jmp .CAD_off + + .CAD_off: + test byte [kbd_flags], 01000000b + jz .CAD_is_off + and byte [kbd_flags], 10111111b ; ctrl+alt+del bit off. + .CAD_is_off: + jmp .end + + ;----------------------------------------------; + ; a key was pressed, check for special keys ; + ;----------------------------------------------; + .key_down: + or byte [kbd_flags], 10000000b + + .shift: + cmp al, 42 + jnz .check_rshift + or byte [kbd_flags], 00000001b + jmp .end + + .check_rshift: + cmp al, 54 + jnz .check_ctrl + or byte [kbd_flags], 00000001b + jmp .end + + .check_ctrl: + cmp al, 29 + jnz .check_alt + or byte [kbd_flags], 00000010b + jmp .end + + .check_alt: + cmp al, 56 + jnz .ctrl_alt_del + or byte [kbd_flags], 00000100b + jmp .end + + .ctrl_alt_del: + test byte [kbd_flags], 00000110b ; check for ctrl+alt + jz .check_caps + cmp al, 83 ; check for delete + jne .check_caps + or byte [kbd_flags], 01000000b ; ctrl+alt+del bit on. + + ;-------------------------------------; + ; toggle caps, num and scroll lock ; + ;-------------------------------------; + .check_caps: + cmp al, 58 + jnz .check_num + xor byte [kbd_status], 4 + call update_leds + jmp .end + + .check_num: + cmp al, 69 + jnz .check_scroll + xor byte [kbd_status], 2 + call update_leds + jmp .end + + .check_scroll: + cmp al, 70 + jnz .end + xor byte [kbd_status], 1 + call update_leds + jmp .end + + ;-----------------------------------; + ; put the scancode in the buffer ; + ;-----------------------------------; + .end: + push eax + mov edi, kbd_buffer + xor eax, eax + mov al, [kbd_head] + add edi, eax + pop eax + stosb + cmp [kbd_head], 63 ; if we reach the buffer + jne .cont1 ; end, go back to 0. + cmp [kbd_tail], 0 + je .error + mov [kbd_head], 0 + jmp .quit + .cont1: + mov ah, [kbd_tail] + mov al, [kbd_head] + add al, 1 + cmp ah, al + je .error + inc [kbd_head] + jmp .quit + .error: + call beep ; pc_speaker.inc + mov [kbd_head], 1 ; fix it as good + mov [kbd_tail], 0 ; as possible.. :S + .quit: + mov al, 0x20 + out 0x20, al + pop eax + ret + + + +;------------------------------; +; Update the keyboard LED's ; +;------------------------------; +update_leds: + push ax + + call kbd_wait + mov al, 0xED + out 0x60, al + call kbd_wait + mov al, [kbd_status] + out 0x60, al + call kbd_wait + + pop ax + ret + + + +;------------------; +; keyboard wait ; +;------------------; +kbd_wait: + jmp $+2 + in al, 0x64 + test al, 1 + jz .ok + jmp $+2 + in al, 0x60 + jmp kbd_wait + .ok: + test al, 2 + jnz kbd_wait + ret + + + +;-------------------------------------------------------; +; BOS INT to get a char. ; +; out: ah = scan code, al = ascii ; +; bh = flag-byte, bl = led-byte ; +;-------------------------------------------------------; +getc: + push esi + + .no_new: + mov al, [kbd_head] + mov ah, [kbd_tail] + cmp ah, 63 + jne .check2 + cmp al, 0 + je .no_new + mov [kbd_tail], 0 + jmp .done_check + .check2: + mov bl, ah + inc bl + cmp bl, al + je .no_new + inc [kbd_tail] + .done_check: + + mov esi, kbd_buffer + movzx eax, [kbd_tail] + add esi, eax + mov ah, byte [esi] ; ah = scancode + movzx esi, byte [esi] ; esi = scancode + + ;------------------; + ; some checks.. ; + ;------------------; + cmp ah, 0xFA + je .no_new + cmp ah, 0xE0 + je .no_new + cmp ah, 0xE1 + je .no_new + test ah, 0x80 + jnz .no_new + + ;--------------------------------; + ; check for caps, shift & alt ; + ;--------------------------------; + test [kbd_status], 00000100b + jnz .caps + test [kbd_flags], 00000001b + jnz .shift + + ;------------------; + ; normal keymap ; + ;------------------; + mov al, [esi+keymap] ; scancode + keymap = ascii + jmp .end + + ;--------------------; + ; capslock keymap ; + ;--------------------; + .caps: + test [kbd_flags], 00000001b + jnz .caps_and_shift + + mov al, [esi+keymap_caps] + jmp .end + + ;--------------------------; + ; caps and shift keymap ; + ;--------------------------; + .caps_and_shift: + mov al, [esi+keymap_caps_shift] + jmp .end + + ;-----------------; + ; shift keymap ; + ;-----------------; + .shift: + mov al, [esi+keymap_shift] + jmp .end + + ;---------------------------; + ; set registers and exit ; + ;---------------------------; + .end: + mov bl, [kbd_status] + mov bh, [kbd_flags] + + pop esi + ret + + +;------------------------------; +; "press any key to..." ; +;------------------------------; +wait_key: + push eax + push ebx + push esi + + .no_new: + mov al, [kbd_head] + mov ah, [kbd_tail] + cmp ah, 63 + jne .check2 + cmp al, 0 + je .no_new + mov [kbd_tail], 0 + jmp .done_check + .check2: + mov bl, ah + inc bl + cmp bl, al + je .no_new + inc [kbd_tail] + .done_check: + + mov esi, kbd_buffer + movzx eax, [kbd_tail] + add esi, eax + mov ah, byte [esi] ; ah = scancode + cmp ah, 0xFA ; check for some stuff.. + je .no_new + cmp ah, 0xE0 + je .no_new + cmp ah, 0xE1 + je .no_new + test ah, 0x80 + jnz .no_new + + pop esi + pop ebx + pop eax + ret \ No newline at end of file diff --git a/kernel/krl_incs/keymap.inc b/kernel/krl_incs/keymap.inc new file mode 100755 index 0000000..ccd7b4f --- /dev/null +++ b/kernel/krl_incs/keymap.inc @@ -0,0 +1,85 @@ +;----------------------------------------------------------; +; BOS 0.04 Christoffer Bubach, 2004. ; +;----------------------------------------------------------; +; Keymap. ; +; Only USA-type are supported so far. (poor åäö...) ; +; ; +;----------------------------------------------------------; + +keymap: + db 0 + db '1234567890-=', bspace + db tab,'qwertyuiop[]',enter_key + db ctrl_key,'asdfghjkl;',39,'`',lshift + db '\','zxcvbnm,./',rshift,prnscr,alt_key,' ' + db caps,f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,numlock + db scroll,home,arrowup,pgup,num_sub,arrowleft,center5,arrowright + db num_plus,_end,arrowdown,pgdn,_ins,del + +keymap_caps: + db 0 + db '1234567890-=', bspace + db tab,'QWERTYUIOP[]',enter_key + db ctrl_key,'ASDFGHJKL;',39,'`',lshift + db '\','ZXCVBNM,./',rshift,prnscr,alt_key,' ' + db caps,f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,numlock + db scroll,home,arrowup,pgup,num_sub,arrowleft,center5,arrowright + db num_plus,_end,arrowdown,pgdn,_ins,del + +keymap_caps_shift: + db 0 + db '!@#$%^&*()_+', bspace + db tab,'qwertyuiop{}',enter_key + db ctrl_key,'asdfghjkl:"~',lshift + db '|zxcvbnm<>?',rshift,prnscr,alt_key,' ' + db caps,f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,numlock + db scroll,home,arrowup,pgup,num_sub,arrowleft,center5,arrowright + db num_plus,_end,arrowdown,pgdn,_ins,del + +keymap_shift: + db 0 + db '!@#$%^&*()_+', bspace + db tab,'QWERTYUIOP{}',enter_key + db ctrl_key,'ASDFGHJKL:"~',lshift + db '|ZXCVBNM<>?',rshift,prnscr,alt_key,' ' + db caps,f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,numlock + db scroll,home,arrowup,pgup,num_sub,arrowleft,center5,arrowright + db num_plus,_end,arrowdown,pgdn,_ins,del + + +enter_key = 0 +bspace = 0 +tab = 0 +ctrl_key = 0 +lshift = 0 +rshift = 0 +prnscr = 0 +alt_key = 0 +caps = 0 +f1 = 0 +f2 = 0 +f3 = 0 +f4 = 0 +f5 = 0 +f6 = 0 +f7 = 0 +f8 = 0 +f9 = 0 +f10 = 0 +f11 = 0 +f12 = 0 +numlock = 0 +scroll = 0 +home = 0 +arrowup = 0 +pgup = 0 +num_sub = 0 +arrowleft = 0 +center5 = 0 +arrowright = 0 +num_plus = 0 +_end = 0 +arrowdown = 0 +pgdn = 0 +_ins = 0 +del = 0 \ No newline at end of file diff --git a/kernel/krl_incs/mario.inc b/kernel/krl_incs/mario.inc new file mode 100755 index 0000000..e9a48b8 --- /dev/null +++ b/kernel/krl_incs/mario.inc @@ -0,0 +1,119 @@ +mario: db 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x32, 0x05, 0x36, 0x36, 0x05, 0x05, 0x05, 0x10 + db 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x05, 0x36, 0x1F, 0x37 + db 0x36, 0x05, 0x05, 0x05, 0x05, 0x05, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x10 + db 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x32, 0x05, 0x05, 0x05, 0x05, 0x05, 0x10, 0x00, 0x00, 0x00 + db 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x32, 0x05, 0x05 + db 0x05, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x10, 0x33, 0x10, 0x33, 0x32, 0x10 + db 0x10, 0x10, 0x10, 0x32, 0x34, 0x05, 0x00, 0x00, 0x00, 0x00, 0x34, 0x34, 0x34, 0x36, 0x10, 0x35 + db 0x10, 0x35, 0x35, 0x34, 0x32, 0x10, 0x32, 0x34, 0x37, 0x34, 0x32, 0x00, 0x00, 0x34, 0x37, 0x37 + db 0x37, 0x37, 0x37, 0x36, 0x36, 0x36, 0x35, 0x32, 0x10, 0x10, 0x34, 0x36, 0x36, 0x34, 0x32, 0x00 + db 0x00, 0x32, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x10, 0x36, 0x36, 0x32, 0x10, 0x36, 0x34 + db 0x34, 0x32, 0x10, 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x36 + db 0x36, 0x36, 0x36, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x10 + db 0x10, 0x32, 0x34, 0x34, 0x34, 0x34, 0x32, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x6B, 0x8B, 0x8B, 0x8B, 0x8B, 0x6B, 0x32, 0x05, 0x05, 0x32, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x6A, 0x8C, 0x8D, 0x8D, 0x8C, 0x8B, 0x8B, 0x6B, 0x05, 0x05, 0x05 + db 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x8C, 0x8E, 0x8E, 0x8D, 0x8C, 0x8C, 0x8B + db 0x6E, 0x1F, 0x1F, 0x6E, 0x6B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x8C, 0x8D, 0x8E + db 0x8C, 0x8B, 0x8B, 0x8B, 0x10, 0x6E, 0x1F, 0x6E, 0x6B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x10, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x10, 0x6D, 0x6E, 0x6D, 0x6B, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x32, 0x4B, 0x4B, 0x32 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x4E, 0x4C, 0x32, 0x4E, 0x4E, 0x4C + db 0x4C, 0x4C, 0x4B, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x32, 0x32 + db 0x10, 0x4B, 0x4B, 0x32, 0x32, 0x32, 0x32, 0x10, 0x00, 0x00, 0x00, 0x00 + +grass_l: db 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10 + db 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x10, 0x10, 0x10, 0x29, 0x2C, 0x2B, 0x2C, 0x2C + db 0x2B, 0x2B, 0x2D, 0x2D, 0x2C, 0x2C, 0x2B, 0x2C, 0x2C, 0x2C, 0x00, 0x10, 0x29, 0x2A, 0x2A, 0x2C + db 0x2D, 0x2A, 0x2C, 0x2B, 0x2C, 0x2D, 0x2B, 0x2C, 0x2C, 0x2D, 0x2D, 0x2C, 0x2C, 0x2B, 0x10, 0x29 + db 0x2B, 0x2A, 0x2B, 0x2B, 0x2B, 0x2C, 0x2B, 0x2B, 0x2A, 0x2A, 0x2B, 0x2A, 0x2B, 0x2B, 0x2A, 0x2C + db 0x2B, 0x2A, 0x10, 0x29, 0x2A, 0x2A, 0x2A, 0x2B, 0x2A, 0x2B, 0x2A, 0x2B, 0x2A, 0x2A, 0x2A, 0x2B + db 0x2A, 0x2A, 0x2A, 0x2B, 0x2A, 0x2B, 0x10, 0x28, 0x29, 0x2A, 0x2C, 0x29, 0x2B, 0x2A, 0x29, 0x2A + db 0x2B, 0x2C, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x28, 0x10, 0x29, 0x2A, 0x2A, 0x2D, 0x29 + db 0x2A, 0x29, 0x2A, 0x29, 0x2A, 0x2A, 0x29, 0x2A, 0x2A, 0x2C, 0x2A, 0x28, 0x29, 0x2A, 0x10, 0x28 + db 0x29, 0x2A, 0x2B, 0x2A, 0x2A, 0x28, 0x2A, 0x10, 0x29, 0x2A, 0x2A, 0x29, 0x10, 0x2B, 0x2A, 0x10 + db 0x29, 0x28, 0x10, 0x29, 0x29, 0x2B, 0x2A, 0x29, 0x2B, 0x29, 0x2B, 0x10, 0x28, 0x29, 0x10, 0x2B + db 0x10, 0x29, 0x28, 0x2A, 0x28, 0x2B, 0x00, 0x28, 0x2A, 0x29, 0x10, 0x10, 0x2A, 0x10, 0x10, 0x41 + db 0x10, 0x10, 0x41, 0x10, 0x28, 0x10, 0x29, 0x2B, 0x29, 0x28, 0x00, 0x10, 0x28, 0x10, 0x10, 0x41 + db 0x10, 0x41, 0x50, 0x50, 0x41, 0x50, 0x50, 0x41, 0x10, 0x41, 0x10, 0x29, 0x28, 0x41, 0x00, 0x00 + db 0x10, 0x10, 0x41, 0x10, 0x50, 0x50, 0x51, 0x51, 0x51, 0x52, 0x50, 0x50, 0x51, 0x51, 0x41, 0x41 + db 0x10, 0x50, 0x00, 0x00, 0x10, 0x41, 0x50, 0x41, 0x51, 0x52, 0x52, 0x52, 0x52, 0x53, 0x53, 0x53 + db 0x54, 0x53, 0x52, 0x50, 0x50, 0x51, 0x00, 0x00, 0x10, 0x41, 0x41, 0x51, 0x52, 0x53, 0x54, 0x53 + db 0x53, 0x54, 0x55, 0x55, 0x55, 0x54, 0x54, 0x52, 0x52, 0x54 + +grass_f: db 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10 + db 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x2C, 0x2B, 0x2C, 0x2C, 0x2D, 0x2D, 0x2D, 0x2C, 0x2D, 0x2B + db 0x2B, 0x2C, 0x2D, 0x2C, 0x2D, 0x2B, 0x2C, 0x2B, 0x2C, 0x2D, 0x2B, 0x2D, 0x2C, 0x2C, 0x2B, 0x2A + db 0x2C, 0x2A, 0x2C, 0x2D, 0x2C, 0x2C, 0x2B, 0x2C, 0x2A, 0x2C, 0x2D, 0x2D, 0x2B, 0x2B, 0x2A, 0x2B + db 0x2C, 0x2B, 0x2A, 0x2C, 0x2A, 0x2B, 0x2B, 0x2B, 0x2A, 0x2A, 0x2B, 0x2A, 0x2B, 0x2B, 0x2A, 0x2C + db 0x2B, 0x2A, 0x2A, 0x2A, 0x2A, 0x2B, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2B, 0x2A, 0x2A, 0x2A, 0x2B + db 0x2A, 0x2A, 0x2A, 0x2B, 0x2A, 0x2B, 0x2A, 0x2B, 0x2A, 0x2A, 0x2A, 0x29, 0x2B, 0x2A, 0x29, 0x2A + db 0x2A, 0x2B, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x28, 0x2A, 0x29, 0x28, 0x29, 0x2A, 0x29 + db 0x2A, 0x29, 0x2A, 0x29, 0x2A, 0x2A, 0x29, 0x2A, 0x2A, 0x2B, 0x2A, 0x28, 0x29, 0x2A, 0x29, 0x29 + db 0x28, 0x2A, 0x29, 0x29, 0x2A, 0x28, 0x2A, 0x10, 0x29, 0x2A, 0x2A, 0x29, 0x10, 0x2B, 0x2A, 0x10 + db 0x29, 0x28, 0x2A, 0x28, 0x2A, 0x2B, 0x10, 0x29, 0x2B, 0x29, 0x2B, 0x10, 0x28, 0x29, 0x10, 0x2B + db 0x10, 0x29, 0x28, 0x2A, 0x28, 0x2B, 0x28, 0x29, 0x2A, 0x2B, 0x10, 0x10, 0x2A, 0x10, 0x10, 0x41 + db 0x10, 0x10, 0x41, 0x10, 0x28, 0x10, 0x29, 0x2B, 0x29, 0x28, 0x41, 0x10, 0x28, 0x10, 0x10, 0x41 + db 0x10, 0x41, 0x50, 0x50, 0x41, 0x50, 0x50, 0x41, 0x10, 0x41, 0x10, 0x29, 0x28, 0x41, 0x50, 0x41 + db 0x10, 0x41, 0x41, 0x50, 0x51, 0x50, 0x51, 0x51, 0x51, 0x52, 0x50, 0x50, 0x51, 0x51, 0x41, 0x41 + db 0x10, 0x50, 0x51, 0x51, 0x50, 0x50, 0x51, 0x51, 0x52, 0x51, 0x52, 0x52, 0x52, 0x53, 0x53, 0x53 + db 0x54, 0x53, 0x52, 0x50, 0x50, 0x51, 0x53, 0x52, 0x51, 0x51, 0x53, 0x53, 0x52, 0x53, 0x54, 0x53 + db 0x53, 0x54, 0x55, 0x55, 0x55, 0x54, 0x54, 0x52, 0x52, 0x54 + +grass_ul: db 0x10, 0x10, 0x10, 0x31, 0x51, 0x51, 0x52, 0x52, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54 + db 0x55, 0x55, 0x54, 0x54, 0x54, 0x54, 0x2C, 0x2C, 0x29, 0x2A, 0x31, 0x10, 0x51, 0x52, 0x52, 0x55 + db 0x53, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x55, 0x2B, 0x2D, 0x2D, 0x29, 0x2B, 0x2A + db 0x31, 0x28, 0x53, 0x52, 0x52, 0x54, 0x54, 0x54, 0x55, 0x54, 0x54, 0x54, 0x54, 0x54, 0x2A, 0x2B + db 0x2B, 0x2A, 0x2D, 0x2C, 0x2B, 0x2A, 0x42, 0x52, 0x54, 0x55, 0x54, 0x54, 0x54, 0x54, 0x55, 0x54 + db 0x54, 0x54, 0x2A, 0x2B, 0x2C, 0x2B, 0x2B, 0x2B, 0x2A, 0x2B, 0x28, 0x28, 0x52, 0x52, 0x54, 0x54 + db 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x2A, 0x2A, 0x2B, 0x2B, 0x2A, 0x2D, 0x2B, 0x2A, 0x2B, 0x28 + db 0x28, 0x53, 0x53, 0x54, 0x54, 0x54, 0x54, 0x55, 0x55, 0x54, 0x2B, 0x2A, 0x2B, 0x2A, 0x2A, 0x2B + db 0x2A, 0x28, 0x29, 0x2A, 0x10, 0x41, 0x53, 0x53, 0x54, 0x54, 0x55, 0x55, 0x55, 0x55, 0x2C, 0x28 + db 0x29, 0x2A, 0x2A, 0x2A, 0x2B, 0x29, 0x28, 0x10, 0x42, 0x53, 0x53, 0x54, 0x55, 0x54, 0x55, 0x55 + db 0x55, 0x55, 0x28, 0x29, 0x28, 0x28, 0x10, 0x28, 0x2A, 0x28, 0x51, 0x42, 0x53, 0x52, 0x54, 0x54 + db 0x54, 0x54, 0x54, 0x55, 0x54, 0x54, 0x28, 0x29, 0x41, 0x41, 0x51, 0x10, 0x28, 0x41, 0x42, 0x52 + db 0x51, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x41, 0x10, 0x41, 0x51, 0x41, 0x51 + db 0x42, 0x53, 0x53, 0x54, 0x53, 0x55, 0x54, 0x54, 0x54, 0x54, 0x54, 0x55, 0x54, 0x54, 0x51, 0x41 + db 0x53, 0x41, 0x52, 0x52, 0x53, 0x54, 0x53, 0x53, 0x54, 0x54, 0x54, 0x54, 0x55, 0x55, 0x54, 0x54 + db 0x54, 0x54, 0x52, 0x52, 0x52, 0x53, 0x55, 0x53, 0x53, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x55 + db 0x55, 0x55, 0x55, 0x54, 0x54, 0x54, 0x54, 0x53, 0x55, 0x54, 0x53, 0x53, 0x54, 0x54, 0x55, 0x54 + db 0x54, 0x54, 0x54, 0x55, 0x55, 0x55, 0x55, 0x54, 0x54, 0x55 + +g_lefts: db 0x00, 0x00, 0x10, 0x41, 0x51, 0x52, 0x52, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54 + db 0x55, 0x55, 0x54, 0x54, 0x54, 0x54, 0x00, 0x00, 0x10, 0x50, 0x51, 0x53, 0x54, 0x55, 0x54, 0x53 + db 0x54, 0x55, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x55, 0x00, 0x00, 0x10, 0x50, 0x41, 0x52 + db 0x54, 0x54, 0x55, 0x54, 0x53, 0x54, 0x55, 0x54, 0x55, 0x54, 0x54, 0x54, 0x54, 0x54, 0x00, 0x00 + db 0x10, 0x41, 0x52, 0x52, 0x54, 0x53, 0x54, 0x54, 0x54, 0x54, 0x55, 0x54, 0x54, 0x54, 0x55, 0x54 + db 0x54, 0x54, 0x00, 0x00, 0x10, 0x50, 0x51, 0x52, 0x52, 0x54, 0x53, 0x53, 0x54, 0x54, 0x54, 0x54 + db 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x00, 0x00, 0x10, 0x41, 0x51, 0x41, 0x54, 0x53, 0x54, 0x54 + db 0x54, 0x55, 0x54, 0x54, 0x54, 0x54, 0x55, 0x55, 0x54, 0x54, 0x00, 0x00, 0x10, 0x41, 0x51, 0x52 + db 0x52, 0x53, 0x54, 0x55, 0x54, 0x54, 0x54, 0x54, 0x54, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x00 + db 0x10, 0x41, 0x50, 0x51, 0x53, 0x54, 0x54, 0x55, 0x55, 0x54, 0x55, 0x54, 0x54, 0x55, 0x55, 0x55 + db 0x55, 0x54, 0x00, 0x00, 0x10, 0x41, 0x50, 0x51, 0x53, 0x54, 0x54, 0x54, 0x55, 0x54, 0x54, 0x54 + db 0x54, 0x54, 0x55, 0x55, 0x54, 0x54, 0x00, 0x00, 0x10, 0x41, 0x50, 0x52, 0x52, 0x53, 0x54, 0x55 + db 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x00, 0x00, 0x10, 0x50, 0x51, 0x52 + db 0x50, 0x52, 0x53, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x55, 0x54, 0x54, 0x00, 0x00 + db 0x10, 0x41, 0x52, 0x52, 0x52, 0x55, 0x55, 0x54, 0x54, 0x54, 0x54, 0x54, 0x55, 0x55, 0x54, 0x54 + db 0x54, 0x54, 0x00, 0x00, 0x10, 0x41, 0x50, 0x52, 0x52, 0x53, 0x54, 0x54, 0x54, 0x54, 0x54, 0x55 + db 0x55, 0x55, 0x55, 0x54, 0x54, 0x54, 0x00, 0x00, 0x10, 0x50, 0x52, 0x52, 0x54, 0x53, 0x54, 0x54 + db 0x55, 0x54, 0x54, 0x55, 0x55, 0x55, 0x55, 0x54, 0x54, 0x55 + +g_earth: db 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54 + db 0x55, 0x55, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x55, 0x55, 0x54, 0x54, 0x54, 0x54, 0x54, 0x55 + db 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x55, 0x54, 0x55, 0x55, 0x55, 0x55, 0x54 + db 0x55, 0x54, 0x54, 0x54, 0x55, 0x55, 0x54, 0x54, 0x55, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x55 + db 0x55, 0x55, 0x55, 0x54, 0x54, 0x54, 0x54, 0x54, 0x55, 0x55, 0x54, 0x54, 0x54, 0x54, 0x55, 0x54 + db 0x54, 0x54, 0x54, 0x54, 0x55, 0x55, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54 + db 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x55 + db 0x54, 0x54, 0x54, 0x55, 0x54, 0x54, 0x55, 0x55, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54 + db 0x55, 0x55, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x55, 0x55, 0x55, 0x55, 0x54, 0x54, 0x54 + db 0x54, 0x54, 0x54, 0x55, 0x55, 0x55, 0x55, 0x54, 0x55, 0x54, 0x54, 0x54, 0x54, 0x55, 0x55, 0x55 + db 0x55, 0x54, 0x54, 0x54, 0x55, 0x54, 0x54, 0x55, 0x55, 0x55, 0x55, 0x54, 0x54, 0x54, 0x54, 0x54 + db 0x54, 0x54, 0x55, 0x55, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x55, 0x55, 0x54, 0x54 + db 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x55, 0x54, 0x54, 0x54, 0x54 + db 0x54, 0x54, 0x54, 0x54, 0x54, 0x55, 0x54, 0x54, 0x54, 0x54, 0x54, 0x55, 0x54, 0x54, 0x54, 0x55 + db 0x55, 0x54, 0x54, 0x54, 0x55, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x55, 0x55, 0x54, 0x54 + db 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x55, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x55 + db 0x55, 0x55, 0x55, 0x54, 0x54, 0x54, 0x54, 0x54, 0x55, 0x54, 0x54, 0x54, 0x54, 0x54, 0x55, 0x54 + db 0x54, 0x54, 0x54, 0x55, 0x55, 0x55, 0x55, 0x54, 0x54, 0x55 \ No newline at end of file diff --git a/kernel/krl_incs/mem.inc b/kernel/krl_incs/mem.inc new file mode 100755 index 0000000..534387c --- /dev/null +++ b/kernel/krl_incs/mem.inc @@ -0,0 +1,388 @@ +;----------------------------------------------------------; +; BOS kernel Christoffer Bubach, 2003-2005. ; +;----------------------------------------------------------; +; ; +; functions to allocate/free mem. ; +; ; +;----------------------------------------------------------; + +;----------------; +; variables ; +;----------------; + first_free dd 0 + prev_pointer dd 0 + size dd 0 + next_pointer dd 0 + + +;------------------------------------------------------; +; init mem ; +; in: ebx = first free memory ; +; ecx = total memory size ; +;------------------------------------------------------; +init_mem: + push ecx + + mov [first_free], ebx + sub ecx, ebx + mov [size], ecx + mov [prev_pointer], 0 + mov [next_pointer], 0 + mov ecx, [prev_pointer] + mov [ebx], ecx + mov ecx, [size] + mov [ebx+4], ecx + mov ecx, [next_pointer] + mov [ebx+8], ecx + + pop ecx + ret + + + +;------------------------------------------------------; +; allocate memory ; +; in: ebx = wanted size in bytes ; +; out: eax = 0 if failed ; +; ebx = pointer to memory ; +;------------------------------------------------------; +allocate_mem: + push ecx + push edx + + mov eax, [first_free] + + .loop: + mov ecx, [eax] + mov [prev_pointer], ecx + + mov ecx, [eax+4] + mov [size], ecx + + mov ecx, [eax+8] + mov [next_pointer], ecx + + cmp [size], ebx + jae .found + cmp [next_pointer], 0 + je .error + mov eax, [next_pointer] + jmp .loop + + .error: + xor eax, eax + jmp .end + + .found: + mov ecx, [size] + sub ecx, ebx + jz .equal + + cmp [next_pointer], 0 + jne .next_exists + cmp [prev_pointer], 0 + jne .prev_but_no_next + + + ;----------------------------------------------; + ; no other block exists; add new free block ; + ; with the reminding space as free, and move ; + ; "first free" to that block.. ; + ;----------------------------------------------; + mov ecx, eax ; move address to ecx and + add ecx, ebx ; add size. ecx=end requested + mov dword [ecx], 0 ; set new header's prev to 0 + mov edx, [size] + sub edx, ebx ; remaining space in edx + mov [ecx+4], edx ; save it to new header + mov dword [ecx+8], 0 ; no next pointer.. + + mov [first_free], ecx + mov ebx, eax ; eax is unchanged from loop + jmp .end + + ;----------------------------------------------; + ; no next block exists, make a new header at ; + ; the end of the requested size with the ; + ; reminder of the free space, and update the ; + ; prev header's next pointer.. ; + ;----------------------------------------------; + .prev_but_no_next: + mov ecx, eax ; move address to ecx and + add ecx, ebx ; add size. ecx=end requested + mov edx, [prev_pointer] ; set prev for new header + mov [ecx], edx ; set new header's prev to 0 + mov edx, [size] + sub edx, ebx ; remaining space in edx + mov [ecx+4], edx ; save it to new header + mov dword [ecx+8], 0 ; no next pointer.. + + mov [prev_pointer+8], ecx + mov ebx, eax ; eax is unchanged from loop + jmp .end + + + ;----------------------------------------------; + ; both next and previous blocks exists, make a ; + ; new header at the end of the requested size ; + ; with the reminder of the free space, move ; + ; data from next block to the new one but add ; + ; size so it gets right, then update all prev/ ; + ; next pointers for total 3 blocks.. puh.. ; + ;----------------------------------------------; + .next_exists: + cmp [prev_pointer], 0 + je .next_but_no_prev + + mov ecx, eax ; move address to ecx and + add ecx, ebx ; add size. ecx=end requested + mov edx, [prev_pointer] ; set prev for new header + mov [ecx], edx ; set new header's prev + mov edx, [size] + sub edx, ebx + mov ebx, [next_pointer+4] + add edx, ebx ; remaining space in edx + mov [ecx+4], edx ; save it to new header + mov edx, [next_pointer] ; address to next block + cmp dword [edx], 0 + je .no_next_next + mov dword [edx], ecx ; update next-next's prev.. + mov dword [ecx+8], edx ; address to next pointer. + + mov [prev_pointer+8], ecx + mov ebx, eax ; eax is unchanged from loop + jmp .end + .no_next_next: + mov dword [edx], 0 + mov dword [ecx+8], 0 + mov [prev_pointer+8], ecx + mov ebx, eax ; eax is unchanged from loop + jmp .end + + + ;----------------------------------------------; + ; we allocated the first free block, do the ; + ; same as above, except ignore the prev block ; + ; part, and move the "first free". ; + ;----------------------------------------------; + .next_but_no_prev: + mov ecx, eax ; move address to ecx and + add ecx, ebx ; add size. ecx=end requested + mov dword [ecx], 0 ; set new header's prev to 0 + mov edx, [size] + sub edx, ebx + mov ebx, [next_pointer+4] + add edx, ebx ; remaining space in edx + mov [ecx+4], edx ; save it to new header + mov edx, [next_pointer] ; address to next block + cmp dword [edx], 0 + je .no_next_next2 + mov dword [edx], ecx ; update next-next's prev.. + mov dword [ecx+8], edx ; address to next pointer. + + mov [first_free], ecx ; zero and update first free. + mov ebx, eax ; eax is unchanged from loop + jmp .end + .no_next_next2: + mov dword [edx], 0 + mov ecx, [ecx+8] + mov dword [ecx], 0 + mov [prev_pointer+8], ecx + mov ebx, eax ; eax is unchanged from loop + jmp .end + + + ;-----------------------------------------; + ; requested == size ; + ; I prefered coding this one.. ;) ; + ;-----------------------------------------; + .equal: + cmp [next_pointer], 0 + jne .next_exists2 + cmp [prev_pointer], 0 + jne .prev_but_no_next2 + mov [first_free], 0 + mov ebx, eax ; eax is unchanged from loop + jmp .end + + .prev_but_no_next2: + mov dword [prev_pointer+8], 0 + mov ebx, eax ; eax is unchanged from loop + jmp .end + + .next_exists2: + cmp [prev_pointer], 0 + je .next_but_no_prev2 + mov ecx, [prev_pointer] ; update prev and next's + mov edx, [next_pointer] ; headers to bypass this + mov [ecx+8], edx ; chunk. + mov [edx], ecx + mov ebx, eax ; eax is unchanged from loop + jmp .end + + .next_but_no_prev2: + mov ecx, [eax+8] ; get address of next header + mov dword [ecx], 0 ; set prev in next header to + mov [first_free], ecx ; zero and update first free. + mov ebx, eax ; eax is unchanged from loop + + .end: + pop edx + pop ecx + ret + + + + +;------------------------------------------------------; +; free memory ; +; in: ebx = pointer to mem ; +; ecx = size in bytes ; +;------------------------------------------------------; +free_mem: + push eax + push ebx + push ecx + push edx + + cmp ebx, [first_free] + jb .new_first_free + cmp [first_free], 0 + je .new_first_free + + ;-----------------------------------------------------------; + ; the block we want to free is somewhere in between ; + ; two other free blocks or after the last free block. ; + ; search for the "ebx"-address, so we know where the new ; + ; prev/next pointers are, and then can check if we should ; + ; merge blocks.. ; + ;-----------------------------------------------------------; + mov eax, [first_free] ; "current" free block + mov edx, [eax+8] ; next free block + + .find_pos_loop: + cmp edx, 0 ; check if the "next" + je .found_end_of_ram ; free exists.. + + cmp ebx, edx ; is ebx "below" edx? + jb .found_between ; found ebx in between + + mov eax, edx ; update pointers for + mov edx, [eax+8] ; another loop. + jmp .find_pos_loop + + ;------------------------------------------; + ; the block is between two other blocks ; + ;------------------------------------------; + .found_between: + mov [ebx], eax ; create header + mov [ebx+4], ecx + mov [ebx+8], edx + + mov [eax+8], ebx ; update prev header + mov [edx], ebx ; update next header + + ; now check if we can merge blocks.... + add ecx, ebx + cmp edx, ecx + jne .merge_only_first + push eax + add eax, [eax+4] + cmp ebx, eax + pop eax + jne .merge_only_last + + ; we can merge with both prev & next + mov ecx, [ebx+4] ; get size from "current" + add [eax+4], ecx ; and add it to "prev". + mov ecx, [edx+4] ; get size from "next" + add [eax+4], ecx ; and add it to "prev". + mov ecx, [edx+8] ; get the new next + mov [eax+8], ecx ; pointer, and store it. + cmp ecx, 0 + je .end + mov [ecx], eax + jmp .end + + .merge_only_first: + cmp ebx, eax + jne .end + mov ecx, [ebx+4] ; get size from "current" + add [eax+4], ecx ; and add it to "prev". + mov [edx], eax ; update prev and next + mov [eax+8], edx ; pointers for the two.. + jmp .end + + .merge_only_last: + cmp edx, ecx + jne .end + mov ecx, [edx+4] + add [ebx+4], ecx + mov ecx, [edx+8] + mov [ebx+8], ecx + cmp ecx, 0 + je .end + mov [ecx], ebx + jmp .end + + ;----------------------------------------------; + ; the block is after all existing free ones ; + ;----------------------------------------------; + .found_end_of_ram: + mov [ebx], eax ; create header + mov [ebx+4], ecx + mov [ebx+8], edx + + mov [eax+8], ebx ; update prev header + + ; now check if we can merge the blocks.... + mov ecx, eax + add ecx, [eax+4] + cmp ebx, ecx + jne .end + mov ecx, [ebx+4] + add [eax+4], ecx + mov ecx, [ebx+8] + mov [eax+8], ecx + jmp .end + + ;--------------------------------------------; + ; the block is before any other free ones ; + ;--------------------------------------------; + .new_first_free: + mov dword [ebx], 0 + mov [ebx+4], ecx ; create the + mov edx, [first_free] ; new header + mov [ebx+8], edx + + mov edx, ebx ; check if the + add edx, [ebx+4] ; first_free matches + cmp edx, [first_free] ; current pos + size? + je .merge_first_free ; if so, merge the two + + cmp [first_free], 0 ; else check if + je .cont1 ; first_free exists + mov edx, [ebx+8] ; if it does, update + mov [edx], ebx ; it's prev pointer. + .cont1: + mov [first_free], ebx ; else/and set new + jmp .end ; first free and quit + + .merge_first_free: ; merge the two first + mov edx, [ebx+8] ; add the size of the + mov ecx, [edx+4] ; second block to the + add [ebx+4], ecx ; new one. + mov ecx, [edx+8] ; get the next pointer + mov [ebx+8], ecx ; from the old block, + cmp ecx, 0 + je .cont2 + mov [ecx], ebx ; update this + next.. + .cont2: + mov [first_free], ebx ; update first_free + + .end: + pop edx + pop ecx + pop ebx + pop eax + ret \ No newline at end of file diff --git a/kernel/krl_incs/pc_speaker.inc b/kernel/krl_incs/pc_speaker.inc new file mode 100755 index 0000000..667f3ee --- /dev/null +++ b/kernel/krl_incs/pc_speaker.inc @@ -0,0 +1,56 @@ +;----------------------------------------------------------; +; BOS kernel Christoffer Bubach, 2004-2005. ; +;----------------------------------------------------------; +; ; +; Internal speaker functions... ; +; ; +;----------------------------------------------------------; + +;-----------------------; +; turn on PC speaker ; +; bx = frequency ; +;-----------------------; +speaker_on: + mov dx, 0x12 + mov ax, 0x34DC + div bx + mov bl, al + mov al, 0xB6 + out 0x43, al + mov al, bl + out 0x42, al + mov al, ah + out 0x42, al + in al, 0x61 + or al, 3 + out 0x61, al + ret + + +;----------------------; +; turn speaker off ; +;----------------------; +speaker_off: + push ax + in al, 0x61 + and al, 0xFC ; some do 0xFD, some 0xFC... :/ + out 0x61, al + pop ax + ret + + +;----------------------------------; +; PC-speaker; beep ; +;----------------------------------; +beep: + push eax + push ecx + in al, 0x61 ; turn the speaker on. + or al, 3 + out 0x61, al + mov ecx, 50 + call delay ; timer.inc + call speaker_off + pop ecx + pop eax + ret \ No newline at end of file diff --git a/kernel/krl_incs/pic.inc b/kernel/krl_incs/pic.inc new file mode 100755 index 0000000..6076213 --- /dev/null +++ b/kernel/krl_incs/pic.inc @@ -0,0 +1,135 @@ +;----------------------------------------------------------; +; BOS 0.04 Christoffer Bubach, 2004. ; +;----------------------------------------------------------; +; ; +; PIC/IRQ handling. ; +; ; +;----------------------------------------------------------; + + +;-------------------------------------------; +; remap PICs to: cl = pic1 ch = pic2 ; +;-------------------------------------------; +remap_pics: + push ax + push dx + + mov al, 0x11 ; IWC1 + out 0x20, al + out 0xA0, al + + mov al, cl ; IWC2 + out 0x21, al + mov al, ch + out 0xA1, al + + mov al, 0x04 ; IWC3 + out 0x21, al + mov al, 0x02 + out 0xA1, al + + mov al, 0x01 ; IWC4 + out 0x21, al + out 0xA1, al + + pop dx + pop ax + ret + + +;----------------------; +; disable all IRQs. ; +;----------------------; +disable_irqs: + push ax + + mov al, 0xFF + out 0x21, al + out 0xA1, al + + pop ax + ret + + +;---------------------; +; enable all IRQs. ; +;---------------------; +enable_irqs: + push ax + + mov al, 0x00 + out 0x21, al + out 0xA1, al + + pop ax + ret + + +;-----------------------------; +; enable an IRQ. cl = irq ; +;-----------------------------; +enable_irq: + push ax + push cx + + cmp cl, 8 + jb .master + + sub cl, 8 + mov ah, 1 + shl ah, cl + xor ah, 0xFF + + in al, 0xA1 + and al, ah + out 0xA1, al + + pop cx + pop ax + ret + .master: + mov ah, 1 + shl ah, cl + xor ah, 0xFF + + in al, 0x21 + and al, ah + out 0x21, al + + pop cx + pop ax + ret + + +;------------------------------; +; disable an IRQ. cl = irq ; +;------------------------------; +disable_irq: + push ax + push cx + + cmp cl, 8 + jb .master + + sub cl, 8 + mov ah, 1 + shl ah, cl + + in al, 0xA1 + or al, ah + out 0xA1, al + + pop cx + pop ax + ret + .master: + mov ah, 1 + shl ah, cl + + in al, 0x21 + or al, ah + out 0x21, al + + pop cx + pop ax + ret \ No newline at end of file diff --git a/kernel/krl_incs/rmode_int.inc b/kernel/krl_incs/rmode_int.inc new file mode 100755 index 0000000..bd2dbe2 --- /dev/null +++ b/kernel/krl_incs/rmode_int.inc @@ -0,0 +1,107 @@ +;----------------------------------------------------------; +; BOS kernel Christoffer Bubach, 2003-2005. ; +;----------------------------------------------------------; +; ; +; Goes back to realmode to do an INT. ; +; ; +;----------------------------------------------------------; + + +rmode_int: + pushad + push eax + shr eax, 16 ; move high bits to ax + mov word [realmode_ax], ax ; save new ax value + pop eax ; restore + + push ebx + shr ebx, 16 ; move high bits to bx + mov byte [int_number], bl ; save int number to call + pop ebx + + mov byte [realmode_error], 0 ; all variables is in the + mov word [realmode_bx], bx ; realmode/variables.inc file + mov word [realmode_cx], cx + mov word [realmode_dx], dx + call disable_irqs + jmp pword 0x18:do_16pmode-0x10000 ; must substract 0x10000 from + ; data addresses becasue of + ; fasm strict "org" behavior +use16 +do_16pmode: + mov ax, 0x20 + mov ds, ax + mov es, ax + mov fs, ax + mov gs, ax + mov ss, ax + + cli + mov eax, cr0 + and al, 0xFE + mov cr0, eax + + jmp 0x1000:(do_realm-0x10000) + +do_realm: + mov ax, cs + mov ds, ax + + xor ax, ax + mov es, ax + mov fs, ax + mov gs, ax + mov ss, ax + + lidt [ridtr - 0x10000] ; realmode/variables.inc + sti + + mov ax, word [realmode_ax - 0x10000] + mov bx, word [realmode_bx - 0x10000] + mov cx, word [realmode_cx - 0x10000] + mov dx, word [realmode_dx - 0x10000] + + push ax ; this is some cool shit.. ;) + mov al, [int_number - 0x10000] ; interrupt to preform + mov [$+5 - 0x10000], al ; move it to right pos. + pop ax + db 0xCD ; opcode for int. + db 0x00 ; move int_number here + + jnc .no_error + mov byte [realmode_error - 0x10000], 1 + + .no_error: + mov word [realmode_ax - 0x10000], ax + mov word [realmode_bx - 0x10000], bx + mov word [realmode_cx - 0x10000], cx + mov word [realmode_dx - 0x10000], dx + + cli + + lgdt [gdtr - 0x10000] + lidt [idtr - 0x10000] + mov eax, cr0 + or al, 1 + mov cr0, eax + + jmp pword 0x08:gobackto_pm + + +use32 +gobackto_pm: + mov ax, 0x10 ; refresh all segment registers + mov ds, ax + mov es, ax + mov fs, ax + mov gs, ax + mov ss, ax + call enable_irqs + sti + popad + clc ; clear carry. + cmp [realmode_error], 1 ; if error, then + jne .end + stc ; set carry. + .end: + ret \ No newline at end of file diff --git a/kernel/krl_incs/shell.inc b/kernel/krl_incs/shell.inc new file mode 100755 index 0000000..25e7686 --- /dev/null +++ b/kernel/krl_incs/shell.inc @@ -0,0 +1,190 @@ +;----------------------------------------------------------; +; BOS 0.04 Christoffer Bubach, 2004-2005. ; +;----------------------------------------------------------; +; ; +; Basic shell. ; +; ; +;----------------------------------------------------------; + + +;--------------; +; Variabels ; +;--------------; + +prompt db 'BOS kernel>', 0 +cmd_buffer: times 255 db 0 ; 255 char command buffer + + + +;----------------------------------------------; +; print the prompt for the first time.. :-) ; +;----------------------------------------------; +init_cmd: + mov byte [kbd_status], 0 ; reset LEDs to 0.. + call update_leds + + mov esi, prompt + mov bl, 0x0E + call print + + mov edi, cmd_buffer + + ret + + + +;-------------------------------; +; Main shell function & loop ; +;-------------------------------; +shell: + mov cx, 0 ; max 254 chars in command + .loop: ; no. 255 is always a 0 + + push cx ; better be sure it´s safe.. + push edi + + call getc ; keyboard.inc + + pop edi + pop cx + + cmp ah, 28 ; enter + je .enter + + cmp ah, 14 ; backspace + je .backspace + + cmp al, 0 ; no normal key + je .loop ; exceptions above.. + + cmp cx, 254 + jae .loop + + stosb ; store char in buffer + inc cx + + mov bl, al ; print it.. + mov bh, 0x07 + call print_char + + jmp .loop + + .enter: + mov al, 0 ; the command buffer is + stosb ; in ASCIIZ format.. + jmp chk_cmd + + .backspace: + cmp cx, 0 ; can´t delete the prompt.. ;-) + je .loop + dec edi ; "remove" one char from buffer + call backspace ; do backspace on screen + dec cx ; decrease buffer counter + jmp .loop + jmp $ + ret + + + +;---------------------------------; +; check for valid cmd ; +;---------------------------------; +chk_cmd: + + mov esi, commands + mov edi, cmd_buffer + mov ebp, 0 ; command-table counter + + ;------------------------------------------; + ; big loop, for each command in table ; + ;------------------------------------------; + .l1: + mov ecx, 0 ; char counter + + cmp byte [esi], 0xFF + je .no_valid_cmd + + ;------------------------------------------; + ; smaller loop for each char in command ; + ;------------------------------------------; + .l2: + cmp byte [edi], ' ' ; space or zero + je .l_chk ; both indicate + cmp byte [edi], 0 ; "end of command" + je .l_chk + jmp .l_cont + + .l_chk: + cmp byte [esi], 0 ; commands are equal, but + jne .new_cmd ; do not match in size.. + jmp .done + + .l_cont: + cmp byte [esi], 0 ; commands are equal, but + je .new_cmd ; do not match in size.. + + mov al, [esi] + cmp al, [edi] + jne .new_cmd + + inc esi + inc edi + inc ecx ; inc char counter + jmp .l2 + ;----------------------; + ; end of small loop ; + ;----------------------; + + .new_cmd: + inc ebp ; inc command counter + mov edi, cmd_buffer ; remember to point to the right place.. ;-) + .l3: + inc esi + cmp byte [esi], 0 ; loop until end of command + jne .l3 + + inc esi + jmp .l1 + ;----------------------; + ; end of big loop ; + ;----------------------; + + + + ;--------------------------; + ; done. command found ; + ;--------------------------; + .done: + cmp ecx, 0 ; make sure it´s more + je .d_quit ; then 0 chars.. + + shl ebp, 2 + call dword [ebp+call_table] + + .d_quit: + jmp .cont ; then go back to the shell + + + ;--------------------------; + ; command not found ; + ;--------------------------; + .no_valid_cmd: + + ; call search_current_directory_for_file.... :-) + + call no_such_cmd ; print error.. + jmp .cont ; then go back to the shell + + ;---------------------------------; + ; make the prompt appear again ; + ;---------------------------------; + .cont: + call new_line + call new_line + mov esi, prompt + mov bl, 0x0E + call print + mov edi, cmd_buffer + jmp shell + + ret diff --git a/kernel/krl_incs/sys_ints.inc b/kernel/krl_incs/sys_ints.inc new file mode 100755 index 0000000..3f57ddd --- /dev/null +++ b/kernel/krl_incs/sys_ints.inc @@ -0,0 +1,112 @@ +;----------------------------------------------------------; +; BOS 0.04 Christoffer Bubach, 2004-2005. ; +;----------------------------------------------------------; +; ; +; System interrupts.. ; +; ; +;----------------------------------------------------------; + + ;----------------------------------------------------; + ; TODO: A lot, when user programs can be runned.. ; + ;----------------------------------------------------; + +;--------------------------; +; System interrupt 0x32 ; +;--------------------------; + + isr32_str_1 db "ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»", 0 + isr32_str_2 db "º  INT 32 CALLED!! º", 0 + isr32_str_3 db "º   º", 0 + isr32_str_4 db "ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ", 0 + + isr32_str_5 db "CTRL+ALT+DEL was pressed!", 0 + +interrupt_32: + + ;-----------------; + ; get char ; + ;-----------------; + cmp ax, 0x0001 ; get character int.. + jne .cade + + call getc + + jmp .end + + ;-----------------------------; + ; ctrl+alt+delete function ; + ;-----------------------------; + .cade: + cmp ax, 0xCADE ; CTRL+ALT+DEL was pressed + jne .ordinary + + push bx + push cx + push dx + + call getcursor + mov cx, bx + + mov dl, 0x0C + mov dh, 0x1B + call setcursorxy + + mov esi, isr32_str_5 + mov al, 0x40 + call print + + mov bx, cx + call setcursor + + pop dx + pop cx + pop bx + + jmp .end + + ;-----------------------------; + ; no selected function.. ; + ;-----------------------------; + .ordinary: ; print that int 0x32 was called... + push bx + push cx + push dx + + mov dl, 0x0B + mov dh, 0x1A + call setcursorxy + + mov esi, isr32_str_1 + mov bl, 0x40 + call print + + mov dl, 0x0C + mov dh, 0x1A + call setcursorxy + + mov esi, isr32_str_2 + mov bl, 0x40 + call print + + mov dl, 0x0D + mov dh, 0x1A + call setcursorxy + + mov esi, isr32_str_3 + mov bl, 0x40 + call print + + mov dl, 0x0E + mov dh, 0x1A + call setcursorxy + + mov esi, isr32_str_4 + mov bl, 0x40 + call print + + pop dx + pop cx + pop bx + + .end: + ret diff --git a/kernel/krl_incs/text.inc b/kernel/krl_incs/text.inc new file mode 100755 index 0000000..847acfc --- /dev/null +++ b/kernel/krl_incs/text.inc @@ -0,0 +1,411 @@ +;----------------------------------------------------------; +; BOS kernel Christoffer Bubach, 2003-2005. ; +;----------------------------------------------------------; +; ; +; Textmode screen functions. ; +; ; +;----------------------------------------------------------; + +;-----------------; +; variables ; +;-----------------; + screen_rows db 25 ; all comments assume + screen_cols db 80 ; that this is 25 & 80 + cursor_pos dw 0 + + +;--------------------------------------; +; change cursor attribs ; +; in: bx = cursor attribs ; +;--------------------------------------; +changecursor: + push ax + push dx + + mov dx, 0x3D4 + mov al, 0x0A + mov ah, bh + out dx, ax + inc ax + mov ah, bl + out dx, ax + + pop dx + pop ax + ret + + +;----------------------; +; clear the screen ; +;----------------------; +cls: + push bx + push cx + + movzx cx, [screen_rows] + .loop: + call _scroll_up + loop .loop + + mov bx, 0 + call setcursor + + pop cx + pop bx + ret + + +;-----------------------------------; +; get the cursor pos ; +; out: bh = x bl = y ; +;-----------------------------------; +getcursorxy: + push ax + + call getcursor + mov ax, bx + mov bl, [screen_cols] + div bl + mov bl, al + mov bh, ah + + pop ax + ret + + +;-------------------------------; +; get the cursor pos ; +; out: bx = offset ; +;-------------------------------; +getcursor: + push ax + push dx + + mov dx, 0x3D4 + mov al, 0x0E + out dx, al + inc dx + in al, dx + mov bh, al + mov al, 0x0F + dec dx + out dx, al + inc dx + in al, dx + mov bl, al + + pop dx + pop ax + ret + + +;------------------------------; +; set the cursor to: ; +; bh = x bl = y ; +;------------------------------; +setcursorxy: + push ax + push bx + + xor ax, ax + mov al, [screen_cols] + mul bl ; bl * al = ax + movzx bx, bh + add bx, ax + call setcursor + + pop bx + pop ax + ret + + +;--------------------------; +; set the cursor to: ; +; bx = offset ; +;--------------------------; +setcursor: + push ax + push bx + push dx + + mov al, 0x0E + mov ah, bh + mov dx, 0x3D4 + out dx, ax + inc ax + mov ah, bl + out dx, ax + + pop dx + pop bx + pop ax + ret + + +;-----------------------; +; cursor position +1 ; +;-----------------------; +inccursor: + push ax + push bx + + mov al, [screen_cols] + mov bl, [screen_rows] + mul bl + dec ax + + call getcursor + cmp bx, ax ; 0x7CF = (80*25)-1 + jne .cont + call scroll_up + jmp .end + + .cont: + inc bx + call setcursor + + .end: + pop bx + pop ax + ret + + +;-----------------------; +; cursor position -1 ; +;-----------------------; +deccursor: + push bx + + call getcursor + cmp bx, 0 + je .end + + dec bx + call setcursor + + .end: + pop bx + ret + + + +;---------------------------------------; +; backspace - delete last typed char ; +;---------------------------------------; +backspace: + push bx + + call getcursor + cmp bx, 0 + je .end + + call deccursor + + mov bh, 0x07 + mov bl, 0 + call print_char + + call deccursor + + .end: + pop bx + ret + + + +;-----------------------------------------; +; print char ; +; in: bl = char, bh = attrib ; +;-----------------------------------------; +print_char: + push eax + push bx + + cmp bl, 13 + jne .cont + call new_line + jmp .done + + .cont: + cmp bl, 10 ; ignore + je .done + + push bx + call getcursor + movzx eax, bx + pop bx + + mov [es:(eax*2 + 0xB8000)], bx + + call inccursor + .done: + pop bx + pop eax + ret + + + +;------------------------------------------; +; print 32-bit hex value ; +; in: ebx = value, cl = color ; +;------------------------------------------; +print_hex32: + push eax + push ebx + push ecx + push edx + + mov eax, ebx ; quick & dirty fix so + mov bh, cl ; input reg != eax + mov ecx, 8 + + .print_it: + rol eax, 4 + movzx edx, al + and edx, 0x0F + or edx, 0x30 + cmp edx, 0x39 + jna .cont + add edx, 7 + .cont: + mov bl, dl + call print_char + loop .print_it + + pop edx + pop ecx + pop ebx + pop eax + ret + + + +;-------------------------------------------------; +; display a asciiz message on the screen ; +; in: esi = message, bl = color ; +;-------------------------------------------------; +print: + push eax + push bx + + mov ah, bl + call getcursor + mov [cursor_pos], bx + + .displaychar: + lodsb + or al, al + jz .done + + cmp al, 13 + jne .cont + mov bx, [cursor_pos] + call setcursor + call new_line + call getcursor + mov [cursor_pos], bx + jmp .displaychar + + .cont: + cmp al, 10 ; ignore + je .displaychar + movzx ebx, [cursor_pos] + mov [es:(ebx*2 + 0xB8000)], ax + inc [cursor_pos] + jmp .displaychar + + .done: + mov bx, [cursor_pos] + call setcursor ; update cursor on screen + + pop bx + pop eax + ret + + + +;-----------------------------; +; make a new line (CR, LF) ; +;-----------------------------; +new_line: + push bx + + call getcursorxy + mov bh, [screen_rows] + dec bh + cmp bl, bh ; 24 + jb .newline + + call scroll_up + jmp .done + + .newline: + call getcursorxy + mov bh, 0 + inc bl + call setcursorxy + + .done: + pop bx + ret + + + +;----------------; +; scrolling.. ; +;----------------; +scroll_up: + call _scroll_up + + .mv_curs: + push ax + push bx + + xor ax, ax + mov al, [screen_rows] ; mov bx, 80*24 + mov bl, [screen_cols] + dec al + mul bl + mov bx, ax + call setcursor + + pop bx + pop ax + ret + + _scroll_up: + push eax + push ecx + push edi + push esi + + mov edi, 0xB8000 + movzx esi, [screen_cols] + shl esi, 1 ; 80*2 = 160 + mov cl, [screen_rows] + dec cl + mov eax, esi + mul cl + shr ax, 2 ; ax = (160*24)/4 + movzx ecx, ax ; ecx = - || - + add esi, 0xB8000 ; esi = 0xB8000+160 + + rep movsd + + mov cl, [screen_cols] + shl cl, 1 ; 80*2 = 160 + mov al, [screen_rows] + dec al ; al = 24 + mul cl + movzx edi, ax + add edi, 0xB8000 ; edi = 0xB8000+160*24 + movzx ecx, [screen_cols] + shr ecx, 1 ; 80/2 + mov eax, 0x07000700 ; fill with zeros + rep stosd + + pop esi + pop edi + pop ecx + pop eax + ret \ No newline at end of file diff --git a/kernel/krl_incs/time_date.inc b/kernel/krl_incs/time_date.inc new file mode 100755 index 0000000..ba211ac --- /dev/null +++ b/kernel/krl_incs/time_date.inc @@ -0,0 +1,129 @@ +;----------------------------------------------------------; +; BOS kernel Christoffer Bubach, 2005. ; +;----------------------------------------------------------; +; ; +; functions to print date and time. ; +; ; +;----------------------------------------------------------; + +;------------------; +; variables ; +;------------------; + msg_time db 13,10,' Time: ',0 + msg_date db 13,10,' Date: ',0 + + +;------------------------------------------------------; +; date, prints current date and goes back to the ; +; prompt. swedish i.e. normal :) format ; +;------------------------------------------------------; +print_date: + push eax + push ebx + push esi + + mov esi, msg_date + mov bl, 0x07 + call print ; text.inc + call get_cmos_data ; cmos.inc + + mov al, [century] ; cmos.inc + call BCD2ascii + push eax + mov bh, 0x07 + mov bl, al + call print_char + pop eax + mov bl, ah + call print_char + + mov al, [year] + call BCD2ascii + push eax + mov bl, al + call print_char + pop eax + mov bl, ah + call print_char + + mov bl, ':' + call print_char + + mov al, [month] + call BCD2ascii + push eax + mov bl, al + call print_char + pop eax + mov bl, ah + call print_char + + mov bl, ':' + call print_char + + mov al, [day] + call BCD2ascii + push eax + mov bl, al + call print_char + pop eax + mov bl, ah + call print_char + + pop esi + pop ebx + pop eax + ret + + +;------------------------------------------------------; +; time, prints current time and goes back to the ; +; prompt. ; +;------------------------------------------------------; +print_time: + push eax + push ebx + push esi + + mov esi, msg_time + mov bl, 0x07 + call print ; text.inc + call get_cmos_data ; cmos.inc + mov al, [hour] ; cmos.inc + call BCD2ascii + push eax + mov bh, 0x07 + mov bl, al + call print_char + pop eax + mov bl, ah + call print_char + + mov bl, ':' + call print_char + + mov al, [minute] + call BCD2ascii + push eax + mov bl, al + call print_char + pop eax + mov bl, ah + call print_char + + mov bl, ':' + call print_char + + mov al, [second] + call BCD2ascii + push eax + mov bl, al + call print_char + pop eax + mov bl, ah + call print_char + + pop esi + pop ebx + pop eax + ret \ No newline at end of file diff --git a/kernel/krl_incs/timer.inc b/kernel/krl_incs/timer.inc new file mode 100755 index 0000000..29088eb --- /dev/null +++ b/kernel/krl_incs/timer.inc @@ -0,0 +1,174 @@ +;----------------------------------------------------------; +; BOS kernel Christoffer Bubach, 2005. ; +;----------------------------------------------------------; +; ; +; Function to set up the timer IRQ. ; +; ; +;----------------------------------------------------------; + +;-----------------; +; variables ; +;-----------------; + timer_wait dd 0 ; time to wait + timer_counter dd 0, 0 ; time since BOS started + call_list dd 0, 0, 0, 0, 0 ; functions to call + + +;---------------------------; +; Timer IRQ(0) ; +;---------------------------; +timer: + add dword [timer_counter], 1 ; it's just a 64-bit + adc dword [timer_counter+4], 0 ; counter since boot. + + cmp [timer_wait], 0 ; "delay" countdown. + je .test1 + dec [timer_wait] + + .test1: ; checks for calls to + cmp [call_list], dword 0 ; do before we quit. + je .test2 + call dword [call_list] + .test2: + cmp [call_list+4], dword 0 + je .test3 + call dword [call_list+4] + .test3: + cmp [call_list+8], dword 0 + je .test4 + call dword [call_list+8] + .test4: + cmp [call_list+12], dword 0 + je .test5 + call dword [call_list+12] + .test5: + cmp [call_list+16], dword 0 + je .end + call dword [call_list+16] + + .end: + mov al, 0x20 + out 0x20, al + ret + + + +;------------------------------------------------; +; add function for the timer to call ; +; in: ebx = function address ; +; out: eax = 0 if OK ; +;------------------------------------------------; +add_timercall: + cmp [call_list], 0 + jne .test2 + mov [call_list], ebx + jmp .end + .error: + mov eax, 1 + ret + .test2: + cmp [call_list+4], 0 ; since i am so lazy + jne .test3 ; and a loop can be + mov [call_list+4], ebx ; rather complicated + jmp .end ; for this stuff, i + .test3: ; check for each one.. + cmp [call_list+8], 0 ; after all, it's only 5. + jne .test4 + mov [call_list+8], ebx + jmp .end + .test4: + cmp [call_list+12], 0 + jne .test5 + mov [call_list+12], ebx + jmp .end + .test5: + cmp [call_list+16], 0 + jne .error + mov [call_list+16], ebx + .end: + xor eax, eax + ret + + + +;-------------------------------------------------; +; remove function from the call list ; +; in: ebx = function address ; +; out: eax = 0 if OK ; +;-------------------------------------------------; +remove_timercall: + cmp [call_list], ebx + jne .test2 + mov [call_list], dword 0 + jmp .end + .error: + mov eax, 1 + ret + .test2: + cmp [call_list+4], ebx + jne .test3 + mov [call_list+4], dword 0 + jmp .end + .test3: + cmp [call_list+8], ebx + jne .test4 + mov [call_list+8], dword 0 + jmp .end + .test4: + cmp [call_list+12], ebx + jne .test5 + mov [call_list+12], dword 0 + jmp .end + .test5: + cmp [call_list+16], ebx + jne .error + mov [call_list+16], dword 0 + .end: + xor eax, eax + ret + + + +;--------------------------------------------; +; delay function ; +; in: ecx = 100/second to wait ; +; out: nothing ; +;--------------------------------------------; +delay: + mov [timer_wait], ecx ; mov value to "timer" + .loop: + cmp [timer_wait], 0 + jne .loop + ret + + + +;--------------------------------------------; +; "active" delay ; +; ; +; gives the caller a pointer to the counter ; +; so that it can check for timeouts etc, ; +; itself. ; +; in: ecx = 100/second to wait ; +; out: ecx = pointer to counter ; +;--------------------------------------------; +active_delay: + mov [timer_wait], ecx ; mov value to "timer" + mov ecx, timer_wait ; let caller check value + ret + + + +;------------------------------; +; set PIT to 100Hz ; +;------------------------------; +set_pit_freq: + push eax + mov al, 0x34 ; set to 100Hz, 0x34 = 00110100b + out 0x43, al + mov al, 0x9B ; lsb 1193180 / 1193 + out 0x40, al + mov al, 0x2E ; msb + out 0x40, al + pop eax + ret \ No newline at end of file diff --git a/kernel/krl_incs/vga.inc b/kernel/krl_incs/vga.inc new file mode 100755 index 0000000..c27c62a --- /dev/null +++ b/kernel/krl_incs/vga.inc @@ -0,0 +1,221 @@ +;----------------------------------------------------------; +; BOS 0.04 Christoffer Bubach, 2004-2005. ; +;----------------------------------------------------------; +; ; +; VGA functions. Change video mode etc. ; +; ; +;----------------------------------------------------------; + + + ;-------------------; + ; VGA palettes ; + ;-------------------; + + palette256 db 00, 00, 00, 00, 10, 41, 12, 28, 18, 02, 43, 22, 35 + db 19, 09, 58, 00, 00, 57, 35, 12, 43, 43, 47, 24, 24 + db 28, 20, 24, 60, 10, 60, 15, 31, 47, 63, 62, 56, 20 + db 60, 56, 22, 63, 61, 36, 63, 63, 63, 00, 00, 00, 05 + db 05, 05, 08, 08, 08, 11, 11, 11, 14, 14, 14, 17, 17 + db 17, 20, 20, 20, 24, 24, 24, 28, 28, 28, 32, 32, 32 + db 36, 36, 36, 40, 40, 40, 45, 45, 45, 50, 50, 50, 56 + db 56, 56, 63, 63, 63, 13, 12, 15, 15, 16, 22, 17, 20 + db 29, 19, 24, 36, 21, 28, 43, 23, 31, 50, 25, 34, 57 + db 26, 42, 63, 00, 15, 02, 01, 22, 04, 02, 29, 06, 03 + db 36, 08, 04, 43, 10, 05, 50, 12, 06, 57, 14, 20, 63 + db 40, 18, 06, 07, 25, 12, 11, 33, 17, 14, 40, 23, 18 + db 48, 28, 21, 55, 34, 25, 62, 39, 27, 63, 48, 36, 15 + db 03, 02, 22, 06, 04, 29, 09, 06, 36, 12, 08, 43, 15 + db 10, 50, 18, 12, 57, 21, 14, 63, 28, 20, 15, 00, 00 + db 22, 07, 00, 29, 15, 00, 36, 23, 00, 43, 31, 00, 50 + db 39, 00, 57, 47, 00, 63, 55, 00, 15, 05, 03, 22, 11 + db 07, 29, 17, 11, 36, 23, 15, 43, 29, 19, 50, 35, 23 + db 57, 41, 27, 63, 53, 34, 28, 14, 12, 33, 20, 14, 38 + db 26, 16, 43, 32, 18, 48, 38, 20, 53, 44, 22, 58, 50 + db 24, 63, 56, 30, 05, 05, 06, 10, 10, 13, 15, 15, 20 + db 20, 20, 27, 25, 25, 34, 30, 30, 41, 35, 35, 48, 44 + db 44, 63, 03, 06, 05, 05, 11, 09, 07, 16, 13, 09, 21 + db 17, 11, 26, 21, 13, 31, 25, 15, 36, 29, 20, 48, 38 + db 06, 06, 07, 13, 13, 15, 20, 20, 23, 27, 27, 31, 34 + db 34, 39, 41, 41, 47, 48, 48, 55, 57, 57, 63, 06, 15 + db 04, 12, 22, 08, 18, 29, 12, 24, 36, 16, 30, 43, 20 + db 36, 50, 24, 42, 57, 28, 54, 63, 35, 15, 10, 10, 22 + db 16, 16, 29, 21, 21, 36, 27, 27, 43, 32, 32, 50, 38 + db 38, 57, 43, 43, 63, 54, 54, 15, 15, 06, 22, 22, 12 + db 29, 29, 18, 36, 36, 24, 43, 43, 30, 50, 50, 36, 57 + db 57, 42, 63, 63, 54, 02, 04, 14, 06, 12, 21, 10, 20 + db 28, 14, 28, 35, 18, 36, 42, 22, 44, 49, 26, 52, 56 + db 36, 63, 63, 18, 04, 14, 24, 08, 21, 31, 12, 28, 37 + db 16, 35, 44, 20, 42, 50, 24, 49, 57, 28, 56, 63, 38 + db 63, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00 + db 00, 00, 00, 00, 00, 00, 00, 00, 00, 53, 44, 22, 09 + db 08, 12, 16, 14, 16, 22, 21, 20, 29, 27, 24, 35, 34 + db 28, 42, 40, 32, 48, 47, 36, 57, 56, 43, 08, 12, 16 + db 14, 16, 22, 21, 20, 29, 27, 24, 35, 34, 28, 42, 40 + db 32, 48, 47, 36, 57, 56, 43, 63, 13, 09, 11, 21, 16 + db 15, 27, 22, 18, 36, 29, 22, 42, 35, 25, 51, 42, 29 + db 57, 48, 32, 63, 56, 39, 06, 14, 09, 12, 21, 14, 18 + db 27, 22, 24, 33, 28, 30, 39, 36, 36, 46, 42, 42, 52 + db 47, 50, 59, 53, 00, 00, 00, 00, 00, 00, 00, 00, 00 + db 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00 + db 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00 + db 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00 + db 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00 + db 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00 + db 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00 + db 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00 + db 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00 + db 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00 + db 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00 + db 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00 + db 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00 + db 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00 + db 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00 + db 00 + + +;---------------------------------; +; sets the screen to mode 0x03 ; +;---------------------------------; +set_mode_0x03: + push eax + + ;mov ax, 0x0003 ; "realmode ax", move to + ;shl eax, 16 ; the high part of eax + ;mov ax, 0x77 ; os function number for ints + ;int 0x32 + + ;mov eax, 0x00030077 ; or it could look like this. + + mov eax, 0x00030000 + mov ebx, 0x00100000 ; int no. in high part and + call rmode_int ; realmode bx in low part + + pop eax + ret + + +;---------------------------------; +; sets the screen to mode 0x13 ; +;---------------------------------; +set_mode_0x13: + push eax + push ebx + + mov eax, 0x00130000 ; realmode ax in high part + mov ebx, 0x00100000 ; int no. in high part and + call rmode_int ; realmode bx in low part + + mov esi, palette256 + call set_palette256 + + pop ebx + pop eax + ret + + +;------------------------------------; +; put a pixel at x, y with color ; +; used only in mode 0x13 ; +; ; +; input: bx = x ; +; cx = y ; +; al = color ; +; ; +; output: none. ; +;------------------------------------; +put_0x13_pixel: + push ax + push bx + push cx + push edi + + mov edi, 0xa0000 ; directly to mem + add di, bx + mov bx, cx + shl cx, 8 + shl bx, 6 + add cx, bx + add di, cx + stosb + + pop edi + pop cx + pop bx + pop ax + ret + + +;-----------------------------------------------------; +; put a sprite at x, y. only for mode 0x13 ; +; ; +; input: ax = x, bx = y, cx = width, dx = height ; +; esi = pointer to sprite ; +; ; +; output: none. ; +;-----------------------------------------------------; +put_0x13_sprite: + pushad ; this was a + .row_loop: ; nightmare to write. + dec dx ; guess how many times + push cx ; i got lost in the push + push ax ; and pops here.. ;) + .col_loop: ; not to mention what + dec cx ; time it was when i wrote + push ax ; it.. :P + push bx + push cx + mov cx, bx + mov bx, ax + lodsb + call put_0x13_pixel + pop cx + pop bx + pop ax + inc ax + cmp cx, 0 + jne .col_loop + pop ax + pop cx + inc bx + cmp dx, 0 + jne .row_loop + popad + ret + + +;---------------------------------------------; +; sets the palette (256 colors) ; +; ; +; input: esi = palette. ; +; output: none. ; +;---------------------------------------------; +set_palette256: + push ax + push cx + push dx + + xor cx, cx + .l1: + mov dx, 0x03C8 + mov al, cl ; color no. = loop no. + out dx, al + inc dx ; port 0x3C9 + mov al, byte [esi] ; red + out dx, al + inc esi + mov al, byte [esi] ; green + out dx, al + inc esi + mov al, byte [esi] ; blue + out dx, al + inc esi + + inc cx + cmp cx, 256 + jl .l1 + + pop dx + pop cx + pop ax + ret + diff --git a/kernel/realmode/a20.inc b/kernel/realmode/a20.inc new file mode 100755 index 0000000..f0ab1c8 --- /dev/null +++ b/kernel/realmode/a20.inc @@ -0,0 +1,51 @@ +;----------------------------------------------------------; +; BOS 0.04 Christoffer Bubach, 2005. ; +;----------------------------------------------------------; +; ; +; Realmode functions to set a20-gate. ; +; ; +;----------------------------------------------------------; + +;----------------------; +; enable a20 gate ; +;----------------------; +enable_a20: + in al, 0x64 ; first try.. + test al, 2 + jnz enable_a20 + mov al, 0xD1 + out 0x64, al + .d6: + in al, 0x64 + and ax, 2 + jnz .d6 + mov al, 0xDF + out 0x60, al + + call a20_test + jz .ok + + in al, 0x92 ; try again, diffrent method. + or al, 0x02 + out 0x92, al + + call a20_test + jz .ok + + ; ERROR! + ; a20-gate not set! Do something about it here... ;) + + .ok: + ret + +;------------------------; +; test if A20 is set ; +;------------------------; +a20_test: + mov al, byte [fs:0] + mov ah, al + not al + xchg al, byte [gs:0x10] + cmp ah, byte [fs:0] + mov [gs:0x10], al + ret \ No newline at end of file diff --git a/kernel/realmode/do_all_16bit.inc b/kernel/realmode/do_all_16bit.inc new file mode 100755 index 0000000..f0fb4c3 --- /dev/null +++ b/kernel/realmode/do_all_16bit.inc @@ -0,0 +1,38 @@ +;----------------------------------------------------------; +; BOS kernel Christoffer Bubach, 2005. ; +;----------------------------------------------------------; +; ; +; Do everything related to 16-bit here... :) ; +; ; +;----------------------------------------------------------; + +;---------------------; +; save info ; +;---------------------; +do_all_16bit: + call getmem ; realmode/mem.inc + mov [ram_amount - 0x10000], eax + + xor eax, eax ; clear mem for IDT and GDT + mov edi, 0x6c00 ; IDT address + mov ecx, (0x800 + 0x800)/4 + rep stosd + + mov eax, cs + shl eax, 4 + mov [gdt.BOS_16code - 0x10000 + 2], ax ; Prepare GDT by + mov [gdt.BOS_16data - 0x10000 + 2], ax ; setting 16-bit base. + shr eax, 16 + mov [gdt.BOS_16code - 0x10000 + 4], al + mov [gdt.BOS_16data - 0x10000 + 4], al + mov [gdt.BOS_16code - 0x10000 + 7], ah + mov [gdt.BOS_16data - 0x10000 + 7], ah + + lea esi, [gdt - 0x10000] + mov edi, 0x7400 ; GDT address + mov ecx, (gdt_end - gdt)/4 + rep movsd ; Move it to final pos. + + push dword 0 ; clear NT bit + popfd + ret \ No newline at end of file diff --git a/kernel/realmode/gdt.inc b/kernel/realmode/gdt.inc new file mode 100755 index 0000000..43b144f --- /dev/null +++ b/kernel/realmode/gdt.inc @@ -0,0 +1,26 @@ +;----------------------------------------------------------; +; BOS kernel Christoffer Bubach, 2004-2005. ; +;----------------------------------------------------------; +; ; +; Global Descriptor Table (GDT). ; +; ; +;----------------------------------------------------------; + +;-------------------; +; pointer to GDT ; +;-------------------; +gdtr: + .size dw gdt_end - gdt - 1 + .address dd 0x7400 ; this is where we move + ; the gdt +;-----------------------------------; +; Global Descriptor Table (GDT). ; +;-----------------------------------; +gdt: + .null dw 0x0000,0x0000,0x0000,0x0000 ; null desc. + .BOS_code: dw 0xFFFF,0x0000,0x9A00,0x00CF ; 0x08 , was 9800 before. + .BOS_data: dw 0xFFFF,0x0000,0x9200,0x00CF ; 0x10 + .BOS_16code: dw 0xFFFF,0x0000,0x9A00,0x0000 ; 0x18 + .BOS_16data: dw 0xFFFF,0x0000,0x9200,0x0000 ; 0x20 + +gdt_end: \ No newline at end of file diff --git a/kernel/realmode/idt.inc b/kernel/realmode/idt.inc new file mode 100755 index 0000000..6335776 --- /dev/null +++ b/kernel/realmode/idt.inc @@ -0,0 +1,16 @@ +;----------------------------------------------------------; +; BOS kernel Christoffer Bubach, 2003-2005. ; +;----------------------------------------------------------; +; ; +; pointer to IDT (Interrupt Description Table) ; +; ; +;----------------------------------------------------------; + + + +;-----------------; +; IDT pointer ; +;-----------------; +idtr: + .size dw 0x800 + .address dd 0x6C00 diff --git a/kernel/realmode/mem.inc b/kernel/realmode/mem.inc new file mode 100755 index 0000000..0446e02 --- /dev/null +++ b/kernel/realmode/mem.inc @@ -0,0 +1,51 @@ +;----------------------------------------------------------; +; BOS kernel Christoffer Bubach, 2003-2005. ; +;----------------------------------------------------------; +; ; +; Get memory size, only using E801 right now. ; +; ; +;----------------------------------------------------------; + +;-----------------------------------------; +; get mem ; +; in: nothing ; +; out: eax = mem in bytes, 0 = error ; +;-----------------------------------------; +getmem: + push dx + push cx + push ebx + + xor eax, eax + xor ebx, ebx + mov ax, 0xE801 + xor dx, dx + xor cx, cx + int 0x15 + jnc .cont1 + xor eax, eax + jmp .end ; failed! :'( + + .cont1: + mov si, ax + or si, bx + jne .cont + mov ax, cx + mov bx, dx + + .cont: + cmp ax, 0x3C00 + jb .below_16 + movzx eax, bx + add eax, 0x100 + shl eax, 16 ; eax = eax * 65536 + jmp .end + + .below_16: + shl eax, 10 ; eax = eax * 1024 + + .end: + pop ebx + pop cx + pop dx + ret \ No newline at end of file diff --git a/kernel/realmode/variables.inc b/kernel/realmode/variables.inc new file mode 100755 index 0000000..2ab6707 --- /dev/null +++ b/kernel/realmode/variables.inc @@ -0,0 +1,29 @@ +;----------------------------------------------------------; +; BOS kernel Christoffer Bubach, 2005. ; +;----------------------------------------------------------; +; ; +; Variabels for/from realmode. ; +; ; +;----------------------------------------------------------; + +;---------------------------------------; +; needed to get back to 16-bit mode ; +;---------------------------------------; + realmode_cs dw 0 + ridtr: dw 0x3FF + dd 0 + +;----------------; +; other stuff ; +;----------------; + int_number db 0 + realmode_error db 0 + realmode_ax dw 0 + realmode_bx dw 0 + realmode_cx dw 0 + realmode_dx dw 0 + +;-------------------; +; saved info ; +;-------------------; + ram_amount dd 0 \ No newline at end of file diff --git a/kernel/testkernels etc/font8x16.inc b/kernel/testkernels etc/font8x16.inc new file mode 100755 index 0000000..b26f778 --- /dev/null +++ b/kernel/testkernels etc/font8x16.inc @@ -0,0 +1,264 @@ +;----------------------------------------------------------; +; BOS 0.04 Christoffer Bubach, 2004-2005. ; +;----------------------------------------------------------; +; ; +; System 8x16 font.. ; +; ; +;----------------------------------------------------------; + font_8x16: + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x7E, 0x81, 0xA5, 0x81, 0x81, 0xA5, 0x99, 0x81, 0x81, 0x7E, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x7E, 0xFF, 0xDB, 0xFF, 0xFF, 0xDB, 0xE7, 0xFF, 0xFF, 0x7E, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x6C, 0xFE, 0xFE, 0xFE, 0xFE, 0x7C, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x10, 0x38, 0x7C, 0xFE, 0x7C, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x18, 0x3C, 0x3C, 0xE7, 0xE7, 0xE7, 0x18, 0x18, 0x3C, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x18, 0x3C, 0x7E, 0xFF, 0xFF, 0x7E, 0x18, 0x18, 0x3C, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x3C, 0x3C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0xC3, 0xC3, 0xE7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x66, 0x42, 0x42, 0x66, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC3, 0x99, 0xBD, 0xBD, 0x99, 0xC3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF + db 0x00, 0x00, 0x1E, 0x06, 0x0E, 0x1A, 0x78, 0xCC, 0xCC, 0xCC, 0xCC, 0x78, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x3C, 0x66, 0x66, 0x66, 0x66, 0x3C, 0x18, 0x7E, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x3F, 0x33, 0x3F, 0x30, 0x30, 0x30, 0x30, 0x70, 0xF0, 0xE0, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x7F, 0x63, 0x7F, 0x63, 0x63, 0x63, 0x63, 0x67, 0xE7, 0xE6, 0xC0, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x18, 0x18, 0xDB, 0x3C, 0xE7, 0x3C, 0xDB, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0xF8, 0xFE, 0xF8, 0xF0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x02, 0x06, 0x0E, 0x1E, 0x3E, 0xFE, 0x3E, 0x1E, 0x0E, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x18, 0x3C, 0x7E, 0x18, 0x18, 0x18, 0x7E, 0x3C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x7F, 0xDB, 0xDB, 0xDB, 0x7B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x7C, 0xC6, 0x60, 0x38, 0x6C, 0xC6, 0xC6, 0x6C, 0x38, 0x0C, 0xC6, 0x7C, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x18, 0x3C, 0x7E, 0x18, 0x18, 0x18, 0x7E, 0x3C, 0x18, 0x7E, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x18, 0x3C, 0x7E, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x7E, 0x3C, 0x18, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x0C, 0xFE, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x60, 0xFE, 0x60, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x6C, 0xFE, 0x6C, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x10, 0x38, 0x38, 0x7C, 0x7C, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0x7C, 0x7C, 0x38, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x18, 0x3C, 0x3C, 0x3C, 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x66, 0x66, 0x66, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x6C, 0x6C, 0xFE, 0x6C, 0x6C, 0x6C, 0xFE, 0x6C, 0x6C, 0x00, 0x00, 0x00, 0x00 + db 0x18, 0x18, 0x7C, 0xC6, 0xC2, 0xC0, 0x7C, 0x06, 0x06, 0x86, 0xC6, 0x7C, 0x18, 0x18, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0xC2, 0xC6, 0x0C, 0x18, 0x30, 0x60, 0xC6, 0x86, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x38, 0x6C, 0x6C, 0x38, 0x76, 0xDC, 0xCC, 0xCC, 0xCC, 0x76, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x30, 0x30, 0x30, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x0C, 0x18, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x30, 0x18, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x3C, 0xFF, 0x3C, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x7E, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x30, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x02, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x38, 0x6C, 0xC6, 0xC6, 0xD6, 0xD6, 0xC6, 0xC6, 0x6C, 0x38, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x18, 0x38, 0x78, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x7E, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x7C, 0xC6, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC0, 0xC6, 0xFE, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x7C, 0xC6, 0x06, 0x06, 0x3C, 0x06, 0x06, 0x06, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x0C, 0x1C, 0x3C, 0x6C, 0xCC, 0xFE, 0x0C, 0x0C, 0x0C, 0x1E, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0xFE, 0xC0, 0xC0, 0xC0, 0xFC, 0x06, 0x06, 0x06, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x38, 0x60, 0xC0, 0xC0, 0xFC, 0xC6, 0xC6, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0xFE, 0xC6, 0x06, 0x06, 0x0C, 0x18, 0x30, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x7C, 0xC6, 0xC6, 0xC6, 0x7C, 0xC6, 0xC6, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x7C, 0xC6, 0xC6, 0xC6, 0x7E, 0x06, 0x06, 0x06, 0x0C, 0x78, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x18, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x06, 0x0C, 0x18, 0x30, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x0C, 0x18, 0x30, 0x60, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x7C, 0xC6, 0xC6, 0x0C, 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x7C, 0xC6, 0xC6, 0xDE, 0xDE, 0xDE, 0xDC, 0xC0, 0x7C, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x10, 0x38, 0x6C, 0xC6, 0xC6, 0xFE, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0xFC, 0x66, 0x66, 0x66, 0x7C, 0x66, 0x66, 0x66, 0x66, 0xFC, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x3C, 0x66, 0xC2, 0xC0, 0xC0, 0xC0, 0xC0, 0xC2, 0x66, 0x3C, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0xF8, 0x6C, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x6C, 0xF8, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0xFE, 0x66, 0x62, 0x68, 0x78, 0x68, 0x60, 0x62, 0x66, 0xFE, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0xFE, 0x66, 0x62, 0x68, 0x78, 0x68, 0x60, 0x60, 0x60, 0xF0, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x3C, 0x66, 0xC2, 0xC0, 0xC0, 0xDE, 0xC6, 0xC6, 0x66, 0x3A, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0xFE, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x3C, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3C, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x1E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0xCC, 0xCC, 0xCC, 0x78, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0xE6, 0x66, 0x66, 0x6C, 0x78, 0x78, 0x6C, 0x66, 0x66, 0xE6, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0xF0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x62, 0x66, 0xFE, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0xC6, 0xEE, 0xFE, 0xFE, 0xD6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0xC6, 0xE6, 0xF6, 0xFE, 0xDE, 0xCE, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x7C, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0xFC, 0x66, 0x66, 0x66, 0x7C, 0x60, 0x60, 0x60, 0x60, 0xF0, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x7C, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xD6, 0xDE, 0x7C, 0x0C, 0x0E, 0x00, 0x00 + db 0x00, 0x00, 0xFC, 0x66, 0x66, 0x66, 0x7C, 0x6C, 0x66, 0x66, 0x66, 0xE6, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x7C, 0xC6, 0xC6, 0x60, 0x38, 0x0C, 0x06, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x7E, 0x7E, 0x5A, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3C, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x6C, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0xD6, 0xD6, 0xD6, 0xFE, 0xEE, 0x6C, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0xC6, 0xC6, 0x6C, 0x7C, 0x38, 0x38, 0x7C, 0x6C, 0xC6, 0xC6, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x3C, 0x18, 0x18, 0x18, 0x18, 0x3C, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0xFE, 0xC6, 0x86, 0x0C, 0x18, 0x30, 0x60, 0xC2, 0xC6, 0xFE, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x3C, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x3C, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x3C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x3C, 0x00, 0x00, 0x00, 0x00 + db 0x10, 0x38, 0x6C, 0xC6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00 + db 0x30, 0x30, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x0C, 0x7C, 0xCC, 0xCC, 0xCC, 0x76, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0xE0, 0x60, 0x60, 0x78, 0x6C, 0x66, 0x66, 0x66, 0x66, 0x7C, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0xC6, 0xC0, 0xC0, 0xC0, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x1C, 0x0C, 0x0C, 0x3C, 0x6C, 0xCC, 0xCC, 0xCC, 0xCC, 0x76, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0xC6, 0xFE, 0xC0, 0xC0, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x38, 0x6C, 0x64, 0x60, 0xF0, 0x60, 0x60, 0x60, 0x60, 0xF0, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x7C, 0x0C, 0xCC, 0x78, 0x00 + db 0x00, 0x00, 0xE0, 0x60, 0x60, 0x6C, 0x76, 0x66, 0x66, 0x66, 0x66, 0xE6, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x18, 0x18, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3C, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x06, 0x06, 0x00, 0x0E, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x66, 0x66, 0x3C, 0x00 + db 0x00, 0x00, 0xE0, 0x60, 0x60, 0x66, 0x6C, 0x78, 0x78, 0x6C, 0x66, 0xE6, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3C, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0xEC, 0xFE, 0xD6, 0xD6, 0xD6, 0xD6, 0xC6, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0xDC, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0xDC, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7C, 0x60, 0x60, 0xF0, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x7C, 0x0C, 0x0C, 0x1E, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0xDC, 0x76, 0x66, 0x60, 0x60, 0x60, 0xF0, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0xC6, 0x60, 0x38, 0x0C, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x10, 0x30, 0x30, 0xFC, 0x30, 0x30, 0x30, 0x30, 0x36, 0x1C, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x76, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3C, 0x18, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0xC6, 0xC6, 0xD6, 0xD6, 0xD6, 0xFE, 0x6C, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0xC6, 0x6C, 0x38, 0x38, 0x38, 0x6C, 0xC6, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7E, 0x06, 0x0C, 0xF8, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xCC, 0x18, 0x30, 0x60, 0xC6, 0xFE, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x0E, 0x18, 0x18, 0x18, 0x70, 0x18, 0x18, 0x18, 0x18, 0x0E, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x70, 0x18, 0x18, 0x18, 0x0E, 0x18, 0x18, 0x18, 0x18, 0x70, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x76, 0xDC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x10, 0x38, 0x6C, 0xC6, 0xC6, 0xC6, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x3C, 0x66, 0xC2, 0xC0, 0xC0, 0xC0, 0xC2, 0x66, 0x3C, 0x0C, 0x06, 0x7C, 0x00, 0x00 + db 0x00, 0x00, 0xCC, 0x00, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x76, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x0C, 0x18, 0x30, 0x00, 0x7C, 0xC6, 0xFE, 0xC0, 0xC0, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x10, 0x38, 0x6C, 0x00, 0x78, 0x0C, 0x7C, 0xCC, 0xCC, 0xCC, 0x76, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0xCC, 0x00, 0x00, 0x78, 0x0C, 0x7C, 0xCC, 0xCC, 0xCC, 0x76, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x60, 0x30, 0x18, 0x00, 0x78, 0x0C, 0x7C, 0xCC, 0xCC, 0xCC, 0x76, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x38, 0x6C, 0x38, 0x00, 0x78, 0x0C, 0x7C, 0xCC, 0xCC, 0xCC, 0x76, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x3C, 0x66, 0x60, 0x60, 0x66, 0x3C, 0x0C, 0x06, 0x3C, 0x00, 0x00, 0x00 + db 0x00, 0x10, 0x38, 0x6C, 0x00, 0x7C, 0xC6, 0xFE, 0xC0, 0xC0, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0xC6, 0x00, 0x00, 0x7C, 0xC6, 0xFE, 0xC0, 0xC0, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x60, 0x30, 0x18, 0x00, 0x7C, 0xC6, 0xFE, 0xC0, 0xC0, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x66, 0x00, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3C, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x18, 0x3C, 0x66, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3C, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x60, 0x30, 0x18, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3C, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0xC6, 0x00, 0x10, 0x38, 0x6C, 0xC6, 0xC6, 0xFE, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00, 0x00 + db 0x38, 0x6C, 0x38, 0x00, 0x38, 0x6C, 0xC6, 0xC6, 0xFE, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00, 0x00 + db 0x18, 0x30, 0x60, 0x00, 0xFE, 0x66, 0x60, 0x7C, 0x60, 0x60, 0x66, 0xFE, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0xCC, 0x76, 0x36, 0x7E, 0xD8, 0xD8, 0x6E, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x3E, 0x6C, 0xCC, 0xCC, 0xFE, 0xCC, 0xCC, 0xCC, 0xCC, 0xCE, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x10, 0x38, 0x6C, 0x00, 0x7C, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0xC6, 0x00, 0x00, 0x7C, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x60, 0x30, 0x18, 0x00, 0x7C, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x30, 0x78, 0xCC, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x76, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x60, 0x30, 0x18, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x76, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0xC6, 0x00, 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7E, 0x06, 0x0C, 0x78, 0x00 + db 0x00, 0xC6, 0x00, 0x7C, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0xC6, 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x18, 0x18, 0x3C, 0x66, 0x60, 0x60, 0x60, 0x66, 0x3C, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x38, 0x6C, 0x64, 0x60, 0xF0, 0x60, 0x60, 0x60, 0x60, 0xE6, 0xFC, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x66, 0x66, 0x3C, 0x18, 0x7E, 0x18, 0x7E, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0xF8, 0xCC, 0xCC, 0xF8, 0xC4, 0xCC, 0xDE, 0xCC, 0xCC, 0xCC, 0xC6, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x0E, 0x1B, 0x18, 0x18, 0x18, 0x7E, 0x18, 0x18, 0x18, 0x18, 0x18, 0xD8, 0x70, 0x00, 0x00 + db 0x00, 0x18, 0x30, 0x60, 0x00, 0x78, 0x0C, 0x7C, 0xCC, 0xCC, 0xCC, 0x76, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x0C, 0x18, 0x30, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3C, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x18, 0x30, 0x60, 0x00, 0x7C, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x18, 0x30, 0x60, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x76, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x76, 0xDC, 0x00, 0xDC, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00 + db 0x76, 0xDC, 0x00, 0xC6, 0xE6, 0xF6, 0xFE, 0xDE, 0xCE, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x3C, 0x6C, 0x6C, 0x3E, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x38, 0x6C, 0x6C, 0x38, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x30, 0x30, 0x00, 0x30, 0x30, 0x60, 0xC0, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0xC0, 0xC0, 0xC2, 0xC6, 0xCC, 0x18, 0x30, 0x60, 0xDC, 0x86, 0x0C, 0x18, 0x3E, 0x00, 0x00 + db 0x00, 0xC0, 0xC0, 0xC2, 0xC6, 0xCC, 0x18, 0x30, 0x66, 0xCE, 0x9E, 0x3E, 0x06, 0x06, 0x00, 0x00 + db 0x00, 0x00, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x3C, 0x3C, 0x3C, 0x18, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x6C, 0xD8, 0x6C, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0xD8, 0x6C, 0x36, 0x6C, 0xD8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x11, 0x44 + db 0x55, 0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x55, 0xAA + db 0xDD, 0x77, 0xDD, 0x77, 0xDD, 0x77, 0xDD, 0x77, 0xDD, 0x77, 0xDD, 0x77, 0xDD, 0x77, 0xDD, 0x77 + db 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + db 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xF8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + db 0x18, 0x18, 0x18, 0x18, 0x18, 0xF8, 0x18, 0xF8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + db 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xF6, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x18, 0xF8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + db 0x36, 0x36, 0x36, 0x36, 0x36, 0xF6, 0x06, 0xF6, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36 + db 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x06, 0xF6, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36 + db 0x36, 0x36, 0x36, 0x36, 0x36, 0xF6, 0x06, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x18, 0x18, 0x18, 0x18, 0x18, 0xF8, 0x18, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + db 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + db 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1F, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xFF, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + db 0x18, 0x18, 0x18, 0x18, 0x18, 0x1F, 0x18, 0x1F, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + db 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x37, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36 + db 0x36, 0x36, 0x36, 0x36, 0x36, 0x37, 0x30, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x30, 0x37, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36 + db 0x36, 0x36, 0x36, 0x36, 0x36, 0xF7, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xF7, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36 + db 0x36, 0x36, 0x36, 0x36, 0x36, 0x37, 0x30, 0x37, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x36, 0x36, 0x36, 0x36, 0x36, 0xF7, 0x00, 0xF7, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36 + db 0x18, 0x18, 0x18, 0x18, 0x18, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36 + db 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x18, 0x18, 0x18, 0x18, 0x18, 0x1F, 0x18, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x18, 0x1F, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36 + db 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xFF, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36 + db 0x18, 0x18, 0x18, 0x18, 0x18, 0xFF, 0x18, 0xFF, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + db 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF + db 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0 + db 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F + db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xDC, 0xD8, 0xD8, 0xD8, 0xDC, 0x76, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x78, 0xCC, 0xCC, 0xCC, 0xD8, 0xCC, 0xC6, 0xC6, 0xC6, 0xCC, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0xFE, 0xC6, 0xC6, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0xFE, 0x6C, 0x6C, 0x6C, 0x6C, 0x6C, 0x6C, 0x6C, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0xFE, 0xC6, 0x60, 0x30, 0x18, 0x30, 0x60, 0xC6, 0xFE, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0x70, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7C, 0x60, 0x60, 0xC0, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x76, 0xDC, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x7E, 0x18, 0x3C, 0x66, 0x66, 0x66, 0x3C, 0x18, 0x7E, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x38, 0x6C, 0xC6, 0xC6, 0xFE, 0xC6, 0xC6, 0x6C, 0x38, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x38, 0x6C, 0xC6, 0xC6, 0xC6, 0x6C, 0x6C, 0x6C, 0x6C, 0xEE, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x1E, 0x30, 0x18, 0x0C, 0x3E, 0x66, 0x66, 0x66, 0x66, 0x3C, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0xDB, 0xDB, 0xDB, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x03, 0x06, 0x7E, 0xDB, 0xDB, 0xF3, 0x7E, 0x60, 0xC0, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x1C, 0x30, 0x60, 0x60, 0x7C, 0x60, 0x60, 0x60, 0x30, 0x1C, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x7C, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x7E, 0x18, 0x18, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x30, 0x18, 0x0C, 0x06, 0x0C, 0x18, 0x30, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x0C, 0x18, 0x30, 0x60, 0x30, 0x18, 0x0C, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x0E, 0x1B, 0x1B, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 + db 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xD8, 0xD8, 0xD8, 0x70, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x7E, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xDC, 0x00, 0x76, 0xDC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x38, 0x6C, 0x6C, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0xEC, 0x6C, 0x6C, 0x3C, 0x1C, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0xD8, 0x6C, 0x6C, 0x6C, 0x6C, 0x6C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x70, 0xD8, 0x30, 0x60, 0xC8, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 \ No newline at end of file diff --git a/kernel/testkernels etc/kernel.asm b/kernel/testkernels etc/kernel.asm new file mode 100755 index 0000000..4f1dcbb --- /dev/null +++ b/kernel/testkernels etc/kernel.asm @@ -0,0 +1,188 @@ +;------------------------------------------------------------; +; BOS - test kernel ; +;------------------------------------------------------------; +; ; +; by: Christoffer Bubach, 2003-2005 ; +; http://bos.asmhackers.net/ asmhacker@gmail.com ; +; ; +;------------------------------------------------------------; + +; 16-bit mem map (seg:off) +; 0x0000:0x0000 -> 0x0000:0x0500 BIOS stuff +; 0x0000:0x0500 -> 0x0000:0x2100 root +; 0x0000:0x2100 -> 0x0000:0x3300 fat +; 0x0000:0x3300 -> 0x0000:0x6c00 14,25kb free space +; 0x0000:0x6c00 -> 0x0000:0x7c00 IDT and GDT (256 desc. eatch) +; 0x0000:0x7c00 -> 0x0000:0x7e00 bootsector +; 0x0000:0x7e00 <- 0x0000:0xffff ~32,5kb stack for boot +; 0x1000:0x0000 -> 0x9000:0xffff 576kb free space +; 0xa000:0x0000 -> ............. VGA mem etc. + +use16 +org 0x0000 + jmp start + + include 'realmode/a20.inc' + include 'realmode/variables.inc' + ;----------------------------------------------------; + ; show a message and wait for a key before reboot ; + ;----------------------------------------------------; + first: + mov bp, first16 + mov ax, 0x1301 + mov bx, 4 + mov cx, 19 + mov dx, 0x0401 + int 0x10 + + mov ah, 0 + int 0x16 + ;int 0x19 + ret + + first16 db 'Now in 16 bit mode.' + + +;------------------------------------------; +; starting point of second stage code ; +;------------------------------------------; +start: + cli + mov ax, 0x1000 + mov ds, ax ; registers. + mov es, ax + mov ss, ax + mov sp, 0xFFFF ; Stack.. + sti + + +;----------------------; +; enable a20 gate ; +;----------------------; +a20: ; Enable A20 + in al, 0x64 + test al, 2 + jnz a20 + mov al, 0xD1 + out 0x64, al + .d6: + in al, 0x64 + and ax, 2 + jnz .d6 + mov al, 0xDF + out 0x60, al + + +;-----------------; +; display message ; +;-----------------; + call first + + +;------------------------; +; enter 32-bit mode ; +;------------------------; +pmode: + ; xor ebx, ebx + ; mov bx, ds + ; shl ebx, 4 + ; mov [BaseAddOn], ebx + ; mov eax, ebx + + ; mov [gdt.BOS_code + 2], ax + ; mov [gdt.BOS_data + 2], ax + ; mov [gdt.BOS_16code + 2], ax + ; mov [gdt.BOS_16data + 2], ax + + ; shr eax, 16 + + ; mov [gdt.BOS_code + 4], al + ; mov [gdt.BOS_data + 4], al + ; mov [gdt.BOS_16code + 4], al + ; mov [gdt.BOS_16data + 4], al + + ; mov [gdt.BOS_code + 7], ah + ; mov [gdt.BOS_data + 7], ah + ; mov [gdt.BOS_16code + 7], ah + ; mov [gdt.BOS_16data + 7], ah + + ; add ebx, gdt + + ; mov [gdtr + 2], ebx + ; add ebx, idt_start - gdt + ; mov [idtr + 2], ebx + + xor ebx,ebx + mov bx,ds ; BX=segment + shl ebx,4 ; BX="linear" address of segment base + mov eax,ebx + mov [sys_code_1 + 2],ax ; set base address of 32-bit segments + mov [sys_data_1 + 2],ax + mov [Real_code_1 + 2],ax ; set base address of 16-bit segments + mov [Real_data_1 + 2],ax + shr eax,16 + mov [sys_code_1 + 4],al + mov [sys_data_1 + 4],al + mov [Real_code_1 + 4],al + mov [Real_data_1 + 4],al + + mov [sys_code_1 + 7],ah + mov [sys_data_1 + 7],ah + mov [Real_code_1 + 7],ah + mov [Real_data_1 + 7],ah + + add ebx,gdt ; EBX=linear address of gdt + mov [gdtr + 2],ebx + + cli ; Disable interrupts, + mov ax,cs + mov [RealModeCS],ax + lgdt [gdtr] ; Load the GDT descriptor + + mov eax, cr0 ; Copy the contents of CR0 into EAX + or eax, 1 ; Set bit 0 + mov cr0, eax ; Copy the contents of EAX into CR0 + + ;jmp 10h:clear_pipe ; Jump to code segment, offset clear_pipe + + ; cli ; set protected mode (32-bit) + ; lgdt [gdtr] + ; mov eax, cr0 + ; or eax, 1 + ; mov cr0, eax + + jmp 0x08:flush + +;----------------------------------------; +; start of 32-bit area. ; +; flush segments and jump to kernel ; +;----------------------------------------; +use32 +flush: + mov eax, 0x10 ; refresh all segment registers + mov ds, eax + mov es, eax + mov fs, eax + mov gs, eax + mov ss, eax + mov esp, 0xfffc + + mov byte [ds:0B8502h], 'P' + mov byte [ds:0B8503h], 0x07 ; Assign a color code + + jmp $ ;hang + + + +;--------------------------------; +; global descriptor table (gdt) ; +;--------------------------------; +gdt: + .null: dw 0x0000, 0x0000, 0x0000, 0x0000 + .codesel: dw 0xFFFF, 0x0000, 0x9800, 0x00CF + .datasel: dw 0xFFFF, 0x0000, 0x9200, 0x00CF +gdt_end: + +gdtr: + .size: dw gdt_end - gdt - 1 + .address dd gdt ;+ 0x10000 ; 0x10000 is where we are in mem \ No newline at end of file diff --git a/kernel/testkernels etc/text.txt b/kernel/testkernels etc/text.txt new file mode 100755 index 0000000..35efa82 --- /dev/null +++ b/kernel/testkernels etc/text.txt @@ -0,0 +1,8547 @@ +00000000 E91E01 jmp 0x121 +00000003 E464 in al,0x64 +00000005 A802 test al,0x2 +00000007 75FA jnz 0x3 +00000009 B0D1 mov al,0xd1 +0000000B E664 out 0x64,al +0000000D E464 in al,0x64 +0000000F 83E002 and ax,byte +0x2 +00000012 75F9 jnz 0xd +00000014 B0DF mov al,0xdf +00000016 E660 out 0x60,al +00000018 E80E00 call 0x29 +0000001B 740B jz 0x28 +0000001D E492 in al,0x92 +0000001F 0C02 or al,0x2 +00000021 E692 out 0x92,al +00000023 E80300 call 0x29 +00000026 7400 jz 0x28 +00000028 C3 ret +00000029 64A00000 mov al,[fs:0x0] +0000002D 88C4 mov ah,al +0000002F F6D0 not al +00000031 6586061000 xchg al,[gs:0x10] +00000036 643A260000 cmp ah,[fs:0x0] +0000003B 65A21000 mov [gs:0x10],al +0000003F C3 ret +00000040 27 daa +00000041 0000 add [bx+si],al +00000043 7400 jz 0x45 +00000045 0000 add [bx+si],al +00000047 0000 add [bx+si],al +00000049 0000 add [bx+si],al +0000004B 0000 add [bx+si],al +0000004D 00FF add bh,bh +0000004F FF00 inc word [bx+si] +00000051 0000 add [bx+si],al +00000053 9ACF00FFFF call 0xffff:0xcf +00000058 0000 add [bx+si],al +0000005A 0092CF00 add [bp+si+0xcf],dl +0000005E FF db 0xFF +0000005F FF00 inc word [bx+si] +00000061 0000 add [bx+si],al +00000063 9A0000FFFF call 0xffff:0x0 +00000068 0000 add [bx+si],al +0000006A 00920000 add [bp+si+0x0],dl +0000006E 0008 add [bx+si],cl +00000070 006C00 add [si+0x0],ch +00000073 005251 add [bp+si+0x51],dl +00000076 6653 push ebx +00000078 6631C0 xor eax,eax +0000007B 6631DB xor ebx,ebx +0000007E B801E8 mov ax,0xe801 +00000081 31D2 xor dx,dx +00000083 31C9 xor cx,cx +00000085 CD15 int 0x15 +00000087 7305 jnc 0x8e +00000089 6631C0 xor eax,eax +0000008C EB23 jmp short 0xb1 +0000008E 89C6 mov si,ax +00000090 09DE or si,bx +00000092 7504 jnz 0x98 +00000094 89C8 mov ax,cx +00000096 89D3 mov bx,dx +00000098 3D003C cmp ax,0x3c00 +0000009B 7210 jc 0xad +0000009D 660FB7C3 movzx eax,bx +000000A1 660500010000 add eax,0x100 +000000A7 66C1E010 shl eax,0x10 +000000AB EB04 jmp short 0xb1 +000000AD 66C1E00A shl eax,0xa +000000B1 665B pop ebx +000000B3 59 pop cx +000000B4 5A pop dx +000000B5 C3 ret +000000B6 0000 add [bx+si],al +000000B8 FF03 inc word [bp+di] +000000BA 0000 add [bx+si],al +000000BC 0000 add [bx+si],al +000000BE 0000 add [bx+si],al +000000C0 0000 add [bx+si],al +000000C2 0000 add [bx+si],al +000000C4 0000 add [bx+si],al +000000C6 0000 add [bx+si],al +000000C8 0000 add [bx+si],al +000000CA 0000 add [bx+si],al +000000CC E8A5FF call 0x74 +000000CF 66A3C800 mov [0xc8],eax +000000D3 6631C0 xor eax,eax +000000D6 66BF006C0000 mov edi,0x6c00 +000000DC 66B900040000 mov ecx,0x400 +000000E2 F366AB rep stosd +000000E5 668CC8 mov eax,cs +000000E8 66C1E004 shl eax,0x4 +000000EC A36000 mov [0x60],ax +000000EF A36800 mov [0x68],ax +000000F2 66C1E810 shr eax,0x10 +000000F6 A26200 mov [0x62],al +000000F9 A26A00 mov [0x6a],al +000000FC 88266500 mov [0x65],ah +00000100 88266D00 mov [0x6d],ah +00000104 668D364600 lea esi,[0x46] +00000109 66BF00740000 mov edi,0x7400 +0000010F 66B90A000000 mov ecx,0xa +00000115 F366A5 rep movsd +00000118 666800000000 push dword 0x0 +0000011E 669D popfd +00000120 C3 ret +00000121 FA cli +00000122 8CC8 mov ax,cs +00000124 8ED8 mov ds,ax +00000126 6631C0 xor eax,eax +00000129 8EC0 mov es,ax +0000012B 8EE0 mov fs,ax +0000012D 8EE8 mov gs,ax +0000012F FB sti +00000130 E8D0FE call 0x3 +00000133 E896FF call 0xcc +00000136 FA cli +00000137 8CC8 mov ax,cs +00000139 A3B600 mov [0xb6],ax +0000013C 0F01164000 lgdt [0x40] +00000141 0F011E6E00 lidt [0x6e] +00000146 0F20C0 mov eax,cr0 +00000149 0C01 or al,0x1 +0000014B 0F22C0 mov cr0,eax +0000014E 66EA560101000800 jmp dword 0x8:0x10156 +00000156 66B810008ED8 mov eax,0xd88e0010 +0000015C 8EC0 mov es,ax +0000015E 8EE0 mov fs,ax +00000160 8EE8 mov gs,ax +00000162 8ED0 mov ss,ax +00000164 BCFCFF mov sp,0xfffc +00000167 0000 add [bx+si],al +00000169 E85607 call 0x8c2 +0000016C 0000 add [bx+si],al +0000016E 66BBB104E850 mov ebx,0x50e804b1 +00000174 050000 add ax,0x0 +00000177 BEA40A mov si,0xaa4 +0000017A 0100 add [bx+si],ax +0000017C B307 mov bl,0x7 +0000017E E82C06 call 0x7ad +00000181 0000 add [bx+si],al +00000183 E8F210 call 0x1278 +00000186 0000 add [bx+si],al +00000188 E90B11 jmp 0x1296 +0000018B 0000 add [bx+si],al +0000018D FA cli +0000018E F4 hlt +0000018F EBFC jmp short 0x18d +00000191 50 push ax +00000192 51 push cx +00000193 B90000 mov cx,0x0 +00000196 0000 add [bx+si],al +00000198 89F8 mov ax,di +0000019A 668981006C mov [bx+di+0x6c00],eax +0000019F 0000 add [bx+si],al +000001A1 83C102 add cx,byte +0x2 +000001A4 C781006C0000 mov word [bx+di+0x6c00],0x0 +000001AA 0800 or [bx+si],al +000001AC 008E83C1 add [bp+0xc183],cl +000001B0 0489 add al,0x89 +000001B2 F8 clc +000001B3 C1E810 shr ax,0x10 +000001B6 668981006C mov [bx+di+0x6c00],eax +000001BB 0000 add [bx+si],al +000001BD 83C102 add cx,byte +0x2 +000001C0 81F90008 cmp cx,0x800 +000001C4 0000 add [bx+si],al +000001C6 72D0 jc 0x198 +000001C8 59 pop cx +000001C9 58 pop ax +000001CA C3 ret +000001CB 50 push ax +000001CC 51 push cx +000001CD B008 mov al,0x8 +000001CF F6E1 mul cl +000001D1 0F db 0x0F +000001D2 B7C8 mov bh,0xc8 +000001D4 89B83202 mov [bx+si+0x232],di +000001D8 0100 add [bx+si],ax +000001DA 89F8 mov ax,di +000001DC 668981006C mov [bx+di+0x6c00],eax +000001E1 0000 add [bx+si],al +000001E3 83C102 add cx,byte +0x2 +000001E6 C781006C0000 mov word [bx+di+0x6c00],0x0 +000001EC 0800 or [bx+si],al +000001EE 008E83C1 add [bp+0xc183],cl +000001F2 0489 add al,0x89 +000001F4 F8 clc +000001F5 C1E810 shr ax,0x10 +000001F8 668981006C mov [bx+di+0x6c00],eax +000001FD 0000 add [bx+si],al +000001FF 59 pop cx +00000200 58 pop ax +00000201 C3 ret +00000202 50 push ax +00000203 B80400 mov ax,0x4 +00000206 0000 add [bx+si],al +00000208 F6E1 mul cl +0000020A BE3202 mov si,0x232 +0000020D 0100 add [bx+si],ax +0000020F 01C6 add si,ax +00000211 58 pop ax +00000212 C3 ret +00000213 50 push ax +00000214 57 push di +00000215 B90000 mov cx,0x0 +00000218 0000 add [bx+si],al +0000021A AD lodsw +0000021B 09C0 or ax,ax +0000021D 7407 jz 0x226 +0000021F 89C7 mov di,ax +00000221 E8A5FF call 0x1c9 +00000224 FF db 0xFF +00000225 FF4181 inc word [bx+di-0x7f] +00000228 F9 stc +00000229 0001 add [bx+di],al +0000022B 0000 add [bx+si],al +0000022D 72EB jc 0x21a +0000022F 5F pop di +00000230 58 pop ax +00000231 C3 ret +00000232 631E0100 arpl [0x1],bx +00000236 D81E0100 fcomp dword [0x1] +0000023A 4D dec bp +0000023B 1F pop ds +0000023C 0100 add [bx+si],ax +0000023E C21F01 ret 0x11f +00000241 0037 add [bx],dh +00000243 2001 and [bx+di],al +00000245 00AC2001 add [si+0x120],ch +00000249 0021 add [bx+di],ah +0000024B 2101 and [bx+di],ax +0000024D 00962101 add [bp+0x121],dl +00000251 000B add [bp+di],cl +00000253 2201 and al,[bx+di] +00000255 00802201 add [bx+si+0x122],al +00000259 00F5 add ch,dh +0000025B 2201 and al,[bx+di] +0000025D 006A23 add [bp+si+0x23],ch +00000260 0100 add [bx+si],ax +00000262 DF23 fbld tword [bp+di] +00000264 0100 add [bx+si],ax +00000266 54 push sp +00000267 2401 and al,0x1 +00000269 00C9 add cl,cl +0000026B 2401 and al,0x1 +0000026D 0000 add [bx+si],al +0000026F 0000 add [bx+si],al +00000271 003E2501 add [0x125],bh +00000275 00B32501 add [bp+di+0x125],dh +00000279 0028 add [bx+si],ch +0000027B 260100 add [es:bx+si],ax +0000027E 9D popf +0000027F 260100 add [es:bx+si],ax +00000282 0000 add [bx+si],al +00000284 0000 add [bx+si],al +00000286 0000 add [bx+si],al +00000288 0000 add [bx+si],al +0000028A 0000 add [bx+si],al +0000028C 0000 add [bx+si],al +0000028E 0000 add [bx+si],al +00000290 0000 add [bx+si],al +00000292 0000 add [bx+si],al +00000294 0000 add [bx+si],al +00000296 0000 add [bx+si],al +00000298 0000 add [bx+si],al +0000029A 0000 add [bx+si],al +0000029C 0000 add [bx+si],al +0000029E 0000 add [bx+si],al +000002A0 0000 add [bx+si],al +000002A2 0000 add [bx+si],al +000002A4 0000 add [bx+si],al +000002A6 0000 add [bx+si],al +000002A8 0000 add [bx+si],al +000002AA 0000 add [bx+si],al +000002AC 0000 add [bx+si],al +000002AE 0000 add [bx+si],al +000002B0 0000 add [bx+si],al +000002B2 1227 adc ah,[bx] +000002B4 0100 add [bx+si],ax +000002B6 2627 es daa +000002B8 0100 add [bx+si],ax +000002BA 0000 add [bx+si],al +000002BC 0000 add [bx+si],al +000002BE 0000 add [bx+si],al +000002C0 0000 add [bx+si],al +000002C2 0000 add [bx+si],al +000002C4 0000 add [bx+si],al +000002C6 0000 add [bx+si],al +000002C8 0000 add [bx+si],al +000002CA 0000 add [bx+si],al +000002CC 0000 add [bx+si],al +000002CE 0000 add [bx+si],al +000002D0 0000 add [bx+si],al +000002D2 0000 add [bx+si],al +000002D4 0000 add [bx+si],al +000002D6 0000 add [bx+si],al +000002D8 0000 add [bx+si],al +000002DA 0000 add [bx+si],al +000002DC 0000 add [bx+si],al +000002DE 0000 add [bx+si],al +000002E0 0000 add [bx+si],al +000002E2 0000 add [bx+si],al +000002E4 0000 add [bx+si],al +000002E6 0000 add [bx+si],al +000002E8 0000 add [bx+si],al +000002EA 0000 add [bx+si],al +000002EC 0000 add [bx+si],al +000002EE 0000 add [bx+si],al +000002F0 0000 add [bx+si],al +000002F2 0000 add [bx+si],al +000002F4 0000 add [bx+si],al +000002F6 0000 add [bx+si],al +000002F8 0000 add [bx+si],al +000002FA 3C27 cmp al,0x27 +000002FC 0100 add [bx+si],ax +000002FE 0000 add [bx+si],al +00000300 0000 add [bx+si],al +00000302 0000 add [bx+si],al +00000304 0000 add [bx+si],al +00000306 0000 add [bx+si],al +00000308 0000 add [bx+si],al +0000030A 0000 add [bx+si],al +0000030C 0000 add [bx+si],al +0000030E 0000 add [bx+si],al +00000310 0000 add [bx+si],al +00000312 0000 add [bx+si],al +00000314 0000 add [bx+si],al +00000316 0000 add [bx+si],al +00000318 0000 add [bx+si],al +0000031A 0000 add [bx+si],al +0000031C 0000 add [bx+si],al +0000031E 0000 add [bx+si],al +00000320 0000 add [bx+si],al +00000322 0000 add [bx+si],al +00000324 0000 add [bx+si],al +00000326 0000 add [bx+si],al +00000328 0000 add [bx+si],al +0000032A 0000 add [bx+si],al +0000032C 0000 add [bx+si],al +0000032E 0000 add [bx+si],al +00000330 0000 add [bx+si],al +00000332 0000 add [bx+si],al +00000334 0000 add [bx+si],al +00000336 0000 add [bx+si],al +00000338 0000 add [bx+si],al +0000033A 0000 add [bx+si],al +0000033C 0000 add [bx+si],al +0000033E 0000 add [bx+si],al +00000340 0000 add [bx+si],al +00000342 0000 add [bx+si],al +00000344 0000 add [bx+si],al +00000346 0000 add [bx+si],al +00000348 0000 add [bx+si],al +0000034A 0000 add [bx+si],al +0000034C 0000 add [bx+si],al +0000034E 0000 add [bx+si],al +00000350 0000 add [bx+si],al +00000352 0000 add [bx+si],al +00000354 0000 add [bx+si],al +00000356 0000 add [bx+si],al +00000358 0000 add [bx+si],al +0000035A 0000 add [bx+si],al +0000035C 0000 add [bx+si],al +0000035E 0000 add [bx+si],al +00000360 0000 add [bx+si],al +00000362 0000 add [bx+si],al +00000364 0000 add [bx+si],al +00000366 0000 add [bx+si],al +00000368 0000 add [bx+si],al +0000036A 0000 add [bx+si],al +0000036C 0000 add [bx+si],al +0000036E 0000 add [bx+si],al +00000370 0000 add [bx+si],al +00000372 0000 add [bx+si],al +00000374 0000 add [bx+si],al +00000376 0000 add [bx+si],al +00000378 0000 add [bx+si],al +0000037A 0000 add [bx+si],al +0000037C 0000 add [bx+si],al +0000037E 0000 add [bx+si],al +00000380 0000 add [bx+si],al +00000382 0000 add [bx+si],al +00000384 0000 add [bx+si],al +00000386 0000 add [bx+si],al +00000388 0000 add [bx+si],al +0000038A 0000 add [bx+si],al +0000038C 0000 add [bx+si],al +0000038E 0000 add [bx+si],al +00000390 0000 add [bx+si],al +00000392 0000 add [bx+si],al +00000394 0000 add [bx+si],al +00000396 0000 add [bx+si],al +00000398 0000 add [bx+si],al +0000039A 0000 add [bx+si],al +0000039C 0000 add [bx+si],al +0000039E 0000 add [bx+si],al +000003A0 0000 add [bx+si],al +000003A2 0000 add [bx+si],al +000003A4 0000 add [bx+si],al +000003A6 0000 add [bx+si],al +000003A8 0000 add [bx+si],al +000003AA 0000 add [bx+si],al +000003AC 0000 add [bx+si],al +000003AE 0000 add [bx+si],al +000003B0 0000 add [bx+si],al +000003B2 0000 add [bx+si],al +000003B4 0000 add [bx+si],al +000003B6 0000 add [bx+si],al +000003B8 0000 add [bx+si],al +000003BA 0000 add [bx+si],al +000003BC 0000 add [bx+si],al +000003BE 0000 add [bx+si],al +000003C0 0000 add [bx+si],al +000003C2 0000 add [bx+si],al +000003C4 0000 add [bx+si],al +000003C6 0000 add [bx+si],al +000003C8 0000 add [bx+si],al +000003CA 0000 add [bx+si],al +000003CC 0000 add [bx+si],al +000003CE 0000 add [bx+si],al +000003D0 0000 add [bx+si],al +000003D2 0000 add [bx+si],al +000003D4 0000 add [bx+si],al +000003D6 0000 add [bx+si],al +000003D8 0000 add [bx+si],al +000003DA 0000 add [bx+si],al +000003DC 0000 add [bx+si],al +000003DE 0000 add [bx+si],al +000003E0 0000 add [bx+si],al +000003E2 0000 add [bx+si],al +000003E4 0000 add [bx+si],al +000003E6 0000 add [bx+si],al +000003E8 0000 add [bx+si],al +000003EA 0000 add [bx+si],al +000003EC 0000 add [bx+si],al +000003EE 0000 add [bx+si],al +000003F0 0000 add [bx+si],al +000003F2 0000 add [bx+si],al +000003F4 0000 add [bx+si],al +000003F6 0000 add [bx+si],al +000003F8 0000 add [bx+si],al +000003FA 0000 add [bx+si],al +000003FC 0000 add [bx+si],al +000003FE 0000 add [bx+si],al +00000400 0000 add [bx+si],al +00000402 0000 add [bx+si],al +00000404 0000 add [bx+si],al +00000406 0000 add [bx+si],al +00000408 0000 add [bx+si],al +0000040A 0000 add [bx+si],al +0000040C 0000 add [bx+si],al +0000040E 0000 add [bx+si],al +00000410 0000 add [bx+si],al +00000412 0000 add [bx+si],al +00000414 0000 add [bx+si],al +00000416 0000 add [bx+si],al +00000418 0000 add [bx+si],al +0000041A 0000 add [bx+si],al +0000041C 0000 add [bx+si],al +0000041E 0000 add [bx+si],al +00000420 0000 add [bx+si],al +00000422 0000 add [bx+si],al +00000424 0000 add [bx+si],al +00000426 0000 add [bx+si],al +00000428 0000 add [bx+si],al +0000042A 0000 add [bx+si],al +0000042C 0000 add [bx+si],al +0000042E 0000 add [bx+si],al +00000430 0000 add [bx+si],al +00000432 0000 add [bx+si],al +00000434 0000 add [bx+si],al +00000436 0000 add [bx+si],al +00000438 0000 add [bx+si],al +0000043A 0000 add [bx+si],al +0000043C 0000 add [bx+si],al +0000043E 0000 add [bx+si],al +00000440 0000 add [bx+si],al +00000442 0000 add [bx+si],al +00000444 0000 add [bx+si],al +00000446 0000 add [bx+si],al +00000448 0000 add [bx+si],al +0000044A 0000 add [bx+si],al +0000044C 0000 add [bx+si],al +0000044E 0000 add [bx+si],al +00000450 0000 add [bx+si],al +00000452 0000 add [bx+si],al +00000454 0000 add [bx+si],al +00000456 0000 add [bx+si],al +00000458 0000 add [bx+si],al +0000045A 0000 add [bx+si],al +0000045C 0000 add [bx+si],al +0000045E 0000 add [bx+si],al +00000460 0000 add [bx+si],al +00000462 0000 add [bx+si],al +00000464 0000 add [bx+si],al +00000466 0000 add [bx+si],al +00000468 0000 add [bx+si],al +0000046A 0000 add [bx+si],al +0000046C 0000 add [bx+si],al +0000046E 0000 add [bx+si],al +00000470 0000 add [bx+si],al +00000472 0000 add [bx+si],al +00000474 0000 add [bx+si],al +00000476 0000 add [bx+si],al +00000478 0000 add [bx+si],al +0000047A 0000 add [bx+si],al +0000047C 0000 add [bx+si],al +0000047E 0000 add [bx+si],al +00000480 0000 add [bx+si],al +00000482 0000 add [bx+si],al +00000484 0000 add [bx+si],al +00000486 0000 add [bx+si],al +00000488 0000 add [bx+si],al +0000048A 0000 add [bx+si],al +0000048C 0000 add [bx+si],al +0000048E 0000 add [bx+si],al +00000490 0000 add [bx+si],al +00000492 0000 add [bx+si],al +00000494 0000 add [bx+si],al +00000496 0000 add [bx+si],al +00000498 0000 add [bx+si],al +0000049A 0000 add [bx+si],al +0000049C 0000 add [bx+si],al +0000049E 0000 add [bx+si],al +000004A0 0000 add [bx+si],al +000004A2 0000 add [bx+si],al +000004A4 0000 add [bx+si],al +000004A6 0000 add [bx+si],al +000004A8 0000 add [bx+si],al +000004AA 0000 add [bx+si],al +000004AC 0000 add [bx+si],al +000004AE 0000 add [bx+si],al +000004B0 0000 add [bx+si],al +000004B2 0000 add [bx+si],al +000004B4 0000 add [bx+si],al +000004B6 0000 add [bx+si],al +000004B8 0000 add [bx+si],al +000004BA 0000 add [bx+si],al +000004BC 0000 add [bx+si],al +000004BE 0000 add [bx+si],al +000004C0 0000 add [bx+si],al +000004C2 0000 add [bx+si],al +000004C4 0000 add [bx+si],al +000004C6 0000 add [bx+si],al +000004C8 0000 add [bx+si],al +000004CA 0000 add [bx+si],al +000004CC 0000 add [bx+si],al +000004CE 0000 add [bx+si],al +000004D0 0000 add [bx+si],al +000004D2 0000 add [bx+si],al +000004D4 0000 add [bx+si],al +000004D6 0000 add [bx+si],al +000004D8 0000 add [bx+si],al +000004DA 0000 add [bx+si],al +000004DC 0000 add [bx+si],al +000004DE 0000 add [bx+si],al +000004E0 0000 add [bx+si],al +000004E2 0000 add [bx+si],al +000004E4 0000 add [bx+si],al +000004E6 0000 add [bx+si],al +000004E8 0000 add [bx+si],al +000004EA 0000 add [bx+si],al +000004EC 0000 add [bx+si],al +000004EE 0000 add [bx+si],al +000004F0 0000 add [bx+si],al +000004F2 0000 add [bx+si],al +000004F4 0000 add [bx+si],al +000004F6 0000 add [bx+si],al +000004F8 0000 add [bx+si],al +000004FA 0000 add [bx+si],al +000004FC 0000 add [bx+si],al +000004FE 0000 add [bx+si],al +00000500 0000 add [bx+si],al +00000502 0000 add [bx+si],al +00000504 0000 add [bx+si],al +00000506 0000 add [bx+si],al +00000508 0000 add [bx+si],al +0000050A 0000 add [bx+si],al +0000050C 0000 add [bx+si],al +0000050E 0000 add [bx+si],al +00000510 0000 add [bx+si],al +00000512 0000 add [bx+si],al +00000514 0000 add [bx+si],al +00000516 0000 add [bx+si],al +00000518 0000 add [bx+si],al +0000051A 0000 add [bx+si],al +0000051C 0000 add [bx+si],al +0000051E 0000 add [bx+si],al +00000520 0000 add [bx+si],al +00000522 0000 add [bx+si],al +00000524 0000 add [bx+si],al +00000526 0000 add [bx+si],al +00000528 0000 add [bx+si],al +0000052A 0000 add [bx+si],al +0000052C 0000 add [bx+si],al +0000052E 0000 add [bx+si],al +00000530 0000 add [bx+si],al +00000532 0000 add [bx+si],al +00000534 0000 add [bx+si],al +00000536 0000 add [bx+si],al +00000538 0000 add [bx+si],al +0000053A 0000 add [bx+si],al +0000053C 0000 add [bx+si],al +0000053E 0000 add [bx+si],al +00000540 0000 add [bx+si],al +00000542 0000 add [bx+si],al +00000544 0000 add [bx+si],al +00000546 0000 add [bx+si],al +00000548 0000 add [bx+si],al +0000054A 0000 add [bx+si],al +0000054C 0000 add [bx+si],al +0000054E 0000 add [bx+si],al +00000550 0000 add [bx+si],al +00000552 0000 add [bx+si],al +00000554 0000 add [bx+si],al +00000556 0000 add [bx+si],al +00000558 0000 add [bx+si],al +0000055A 0000 add [bx+si],al +0000055C 0000 add [bx+si],al +0000055E 0000 add [bx+si],al +00000560 0000 add [bx+si],al +00000562 0000 add [bx+si],al +00000564 0000 add [bx+si],al +00000566 0000 add [bx+si],al +00000568 0000 add [bx+si],al +0000056A 0000 add [bx+si],al +0000056C 0000 add [bx+si],al +0000056E 0000 add [bx+si],al +00000570 0000 add [bx+si],al +00000572 0000 add [bx+si],al +00000574 0000 add [bx+si],al +00000576 0000 add [bx+si],al +00000578 0000 add [bx+si],al +0000057A 0000 add [bx+si],al +0000057C 0000 add [bx+si],al +0000057E 0000 add [bx+si],al +00000580 0000 add [bx+si],al +00000582 0000 add [bx+si],al +00000584 0000 add [bx+si],al +00000586 0000 add [bx+si],al +00000588 0000 add [bx+si],al +0000058A 0000 add [bx+si],al +0000058C 0000 add [bx+si],al +0000058E 0000 add [bx+si],al +00000590 0000 add [bx+si],al +00000592 0000 add [bx+si],al +00000594 0000 add [bx+si],al +00000596 0000 add [bx+si],al +00000598 0000 add [bx+si],al +0000059A 0000 add [bx+si],al +0000059C 0000 add [bx+si],al +0000059E 0000 add [bx+si],al +000005A0 0000 add [bx+si],al +000005A2 0000 add [bx+si],al +000005A4 0000 add [bx+si],al +000005A6 0000 add [bx+si],al +000005A8 0000 add [bx+si],al +000005AA 0000 add [bx+si],al +000005AC 0000 add [bx+si],al +000005AE 0000 add [bx+si],al +000005B0 0000 add [bx+si],al +000005B2 0000 add [bx+si],al +000005B4 0000 add [bx+si],al +000005B6 0000 add [bx+si],al +000005B8 0000 add [bx+si],al +000005BA 0000 add [bx+si],al +000005BC 0000 add [bx+si],al +000005BE 0000 add [bx+si],al +000005C0 0000 add [bx+si],al +000005C2 0000 add [bx+si],al +000005C4 0000 add [bx+si],al +000005C6 0000 add [bx+si],al +000005C8 0000 add [bx+si],al +000005CA 0000 add [bx+si],al +000005CC 0000 add [bx+si],al +000005CE 0000 add [bx+si],al +000005D0 0000 add [bx+si],al +000005D2 0000 add [bx+si],al +000005D4 0000 add [bx+si],al +000005D6 0000 add [bx+si],al +000005D8 0000 add [bx+si],al +000005DA 0000 add [bx+si],al +000005DC 0000 add [bx+si],al +000005DE 0000 add [bx+si],al +000005E0 0000 add [bx+si],al +000005E2 0000 add [bx+si],al +000005E4 0000 add [bx+si],al +000005E6 0000 add [bx+si],al +000005E8 0000 add [bx+si],al +000005EA 0000 add [bx+si],al +000005EC 0000 add [bx+si],al +000005EE 0000 add [bx+si],al +000005F0 0000 add [bx+si],al +000005F2 0000 add [bx+si],al +000005F4 0000 add [bx+si],al +000005F6 0000 add [bx+si],al +000005F8 0000 add [bx+si],al +000005FA 0000 add [bx+si],al +000005FC 0000 add [bx+si],al +000005FE 0000 add [bx+si],al +00000600 0000 add [bx+si],al +00000602 0000 add [bx+si],al +00000604 0000 add [bx+si],al +00000606 0000 add [bx+si],al +00000608 0000 add [bx+si],al +0000060A 0000 add [bx+si],al +0000060C 0000 add [bx+si],al +0000060E 0000 add [bx+si],al +00000610 0000 add [bx+si],al +00000612 0000 add [bx+si],al +00000614 0000 add [bx+si],al +00000616 0000 add [bx+si],al +00000618 0000 add [bx+si],al +0000061A 0000 add [bx+si],al +0000061C 0000 add [bx+si],al +0000061E 0000 add [bx+si],al +00000620 0000 add [bx+si],al +00000622 0000 add [bx+si],al +00000624 0000 add [bx+si],al +00000626 0000 add [bx+si],al +00000628 0000 add [bx+si],al +0000062A 0000 add [bx+si],al +0000062C 0000 add [bx+si],al +0000062E 0000 add [bx+si],al +00000630 0000 add [bx+si],al +00000632 195000 sbb [bx+si+0x0],dx +00000635 006650 add [bp+0x50],ah +00000638 6652 push edx +0000063A 66BAD403B00A mov edx,0xab003d4 +00000640 88FC mov ah,bh +00000642 66EF out dx,eax +00000644 6640 inc eax +00000646 88DC mov ah,bl +00000648 66EF out dx,eax +0000064A 665A pop edx +0000064C 6658 pop eax +0000064E C3 ret +0000064F 6653 push ebx +00000651 6651 push ecx +00000653 660FB60D movzx ecx,byte [di] +00000657 32060100 xor al,[0x1] +0000065B E80802 call 0x866 +0000065E 0000 add [bx+si],al +00000660 E2F9 loop 0x65b +00000662 66BB0000E85C mov ebx,0x5ce80000 +00000668 0000 add [bx+si],al +0000066A 006659 add [bp+0x59],ah +0000066D 665B pop ebx +0000066F C3 ret +00000670 6650 push eax +00000672 E81200 call 0x687 +00000675 0000 add [bx+si],al +00000677 6689D8 mov eax,ebx +0000067A 8A1D mov bl,[di] +0000067C 33060100 xor ax,[0x1] +00000680 F6F3 div bl +00000682 88C3 mov bl,al +00000684 88E7 mov bh,ah +00000686 6658 pop eax +00000688 C3 ret +00000689 6650 push eax +0000068B 6652 push edx +0000068D 66BAD403B00E mov edx,0xeb003d4 +00000693 EE out dx,al +00000694 6642 inc edx +00000696 EC in al,dx +00000697 88C7 mov bh,al +00000699 B00F mov al,0xf +0000069B 664A dec edx +0000069D EE out dx,al +0000069E 6642 inc edx +000006A0 EC in al,dx +000006A1 88C3 mov bl,al +000006A3 665A pop edx +000006A5 6658 pop eax +000006A7 C3 ret +000006A8 6650 push eax +000006AA 6653 push ebx +000006AC 6631C0 xor eax,eax +000006AF A03306 mov al,[0x633] +000006B2 0100 add [bx+si],ax +000006B4 F6E3 mul bl +000006B6 660FB6DF movzx ebx,bh +000006BA 6601C3 add ebx,eax +000006BD E80500 call 0x6c5 +000006C0 0000 add [bx+si],al +000006C2 665B pop ebx +000006C4 6658 pop eax +000006C6 C3 ret +000006C7 6650 push eax +000006C9 6653 push ebx +000006CB 6652 push edx +000006CD B00E mov al,0xe +000006CF 88FC mov ah,bh +000006D1 66BAD40366EF mov edx,0xef6603d4 +000006D7 6640 inc eax +000006D9 88DC mov ah,bl +000006DB 66EF out dx,eax +000006DD 665A pop edx +000006DF 665B pop ebx +000006E1 6658 pop eax +000006E3 C3 ret +000006E4 6650 push eax +000006E6 6653 push ebx +000006E8 A03306 mov al,[0x633] +000006EB 0100 add [bx+si],ax +000006ED 8A1D mov bl,[di] +000006EF 32060100 xor al,[0x1] +000006F3 F6E3 mul bl +000006F5 6648 dec eax +000006F7 E88DFF call 0x687 +000006FA FF db 0xFF +000006FB FF6639 jmp near [bp+0x39] +000006FE C3 ret +000006FF 7507 jnz 0x708 +00000701 E83A01 call 0x83e +00000704 0000 add [bx+si],al +00000706 EB07 jmp short 0x70f +00000708 6643 inc ebx +0000070A E8B8FF call 0x6c5 +0000070D FF db 0xFF +0000070E FF665B jmp near [bp+0x5b] +00000711 6658 pop eax +00000713 C3 ret +00000714 6653 push ebx +00000716 E86EFF call 0x687 +00000719 FF db 0xFF +0000071A FF6683 jmp near [bp-0x7d] +0000071D FB sti +0000071E 007407 add [si+0x7],dh +00000721 664B dec ebx +00000723 E89FFF call 0x6c5 +00000726 FF db 0xFF +00000727 FF665B jmp near [bp+0x5b] +0000072A C3 ret +0000072B 6653 push ebx +0000072D E857FF call 0x687 +00000730 FF db 0xFF +00000731 FF6683 jmp near [bp-0x7d] +00000734 FB sti +00000735 007413 add [si+0x13],dh +00000738 E8D7FF call 0x712 +0000073B FF db 0xFF +0000073C FFB707B3 push word [bx+0xb307] +00000740 00E8 add al,ch +00000742 0800 or [bx+si],al +00000744 0000 add [bx+si],al +00000746 E8C9FF call 0x712 +00000749 FF db 0xFF +0000074A FF665B jmp near [bp+0x5b] +0000074D C3 ret +0000074E 50 push ax +0000074F 6653 push ebx +00000751 80FB0D cmp bl,0xd +00000754 7507 jnz 0x75d +00000756 E8BA00 call 0x813 +00000759 0000 add [bx+si],al +0000075B EB1F jmp short 0x77c +0000075D 80FB0A cmp bl,0xa +00000760 741A jz 0x77c +00000762 6653 push ebx +00000764 E820FF call 0x687 +00000767 FF db 0xFF +00000768 FF0F dec word [bx] +0000076A B7C3 mov bh,0xc3 +0000076C 665B pop ebx +0000076E 2666899C0000 mov [es:si+0x0],ebx +00000774 800B00 or byte [bp+di],0x0 +00000777 E868FF call 0x6e2 +0000077A FF db 0xFF +0000077B FF665B jmp near [bp+0x5b] +0000077E 58 pop ax +0000077F C3 ret +00000780 50 push ax +00000781 53 push bx +00000782 51 push cx +00000783 52 push dx +00000784 89D8 mov ax,bx +00000786 88CF mov bh,cl +00000788 B90800 mov cx,0x8 +0000078B 0000 add [bx+si],al +0000078D C1C004 rol ax,0x4 +00000790 0FB6D0 movzx dx,al +00000793 83E20F and dx,byte +0xf +00000796 83CA30 or dx,byte +0x30 +00000799 83FA39 cmp dx,byte +0x39 +0000079C 7603 jna 0x7a1 +0000079E 83C207 add dx,byte +0x7 +000007A1 88D3 mov bl,dl +000007A3 E8A6FF call 0x74c +000007A6 FF db 0xFF +000007A7 FFE2 jmp dx +000007A9 E35A jcxz 0x805 +000007AB 59 pop cx +000007AC 5B pop bx +000007AD 58 pop ax +000007AE C3 ret +000007AF 50 push ax +000007B0 6653 push ebx +000007B2 88DC mov ah,bl +000007B4 E8D0FE call 0x687 +000007B7 FF db 0xFF +000007B8 FF6689 jmp near [bp-0x77] +000007BB 1D3406 sbb ax,0x634 +000007BE 0100 add [bx+si],ax +000007C0 AC lodsb +000007C1 08C0 or al,al +000007C3 7440 jz 0x805 +000007C5 3C0D cmp al,0xd +000007C7 751F jnz 0x7e8 +000007C9 668B1D mov ebx,[di] +000007CC 3406 xor al,0x6 +000007CE 0100 add [bx+si],ax +000007D0 E8F2FE call 0x6c5 +000007D3 FF db 0xFF +000007D4 FF db 0xFF +000007D5 E83B00 call 0x813 +000007D8 0000 add [bx+si],al +000007DA E8AAFE call 0x687 +000007DD FF db 0xFF +000007DE FF6689 jmp near [bp-0x77] +000007E1 1D3406 sbb ax,0x634 +000007E4 0100 add [bx+si],ax +000007E6 EBD8 jmp short 0x7c0 +000007E8 3C0A cmp al,0xa +000007EA 74D4 jz 0x7c0 +000007EC 0F db 0x0F +000007ED B71D mov bh,0x1d +000007EF 3406 xor al,0x6 +000007F1 0100 add [bx+si],ax +000007F3 266689841B00 mov [es:si+0x1b],eax +000007F9 800B00 or byte [bp+di],0x0 +000007FC 66FF05 inc dword [di] +000007FF 3406 xor al,0x6 +00000801 0100 add [bx+si],ax +00000803 EBBB jmp short 0x7c0 +00000805 668B1D mov ebx,[di] +00000808 3406 xor al,0x6 +0000080A 0100 add [bx+si],ax +0000080C E8B6FE call 0x6c5 +0000080F FF db 0xFF +00000810 FF665B jmp near [bp+0x5b] +00000813 58 pop ax +00000814 C3 ret +00000815 6653 push ebx +00000817 E854FE call 0x66e +0000081A FF db 0xFF +0000081B FF8A3D32 dec word [bp+si+0x323d] +0000081F 06 push es +00000820 0100 add [bx+si],ax +00000822 FECF dec bh +00000824 38FB cmp bl,bh +00000826 7207 jc 0x82f +00000828 E81300 call 0x83e +0000082B 0000 add [bx+si],al +0000082D EB0E jmp short 0x83d +0000082F E83CFE call 0x66e +00000832 FF db 0xFF +00000833 FFB700FE push word [bx+0xfe00] +00000837 C3 ret +00000838 E86BFE call 0x6a6 +0000083B FF db 0xFF +0000083C FF665B jmp near [bp+0x5b] +0000083F C3 ret +00000840 E82300 call 0x866 +00000843 0000 add [bx+si],al +00000845 6650 push eax +00000847 6653 push ebx +00000849 6631C0 xor eax,eax +0000084C A03206 mov al,[0x632] +0000084F 0100 add [bx+si],ax +00000851 8A1D mov bl,[di] +00000853 33060100 xor ax,[0x1] +00000857 FEC8 dec al +00000859 F6E3 mul bl +0000085B 6689C3 mov ebx,eax +0000085E E864FE call 0x6c5 +00000861 FF db 0xFF +00000862 FF665B jmp near [bp+0x5b] +00000865 6658 pop eax +00000867 C3 ret +00000868 50 push ax +00000869 51 push cx +0000086A 57 push di +0000086B 56 push si +0000086C BF0080 mov di,0x8000 +0000086F 0B00 or ax,[bx+si] +00000871 0FB635 movzx si,[di] +00000874 33060100 xor ax,[0x1] +00000878 D1E6 shl si,1 +0000087A 8A0D mov cl,[di] +0000087C 32060100 xor al,[0x1] +00000880 FEC9 dec cl +00000882 89F0 mov ax,si +00000884 F6E1 mul cl +00000886 66C1E802 shr eax,0x2 +0000088A 0F db 0x0F +0000088B B7C8 mov bh,0xc8 +0000088D 81C60080 add si,0x8000 +00000891 0B00 or ax,[bx+si] +00000893 F3A5 rep movsw +00000895 8A0D mov cl,[di] +00000897 33060100 xor ax,[0x1] +0000089B D0E1 shl cl,1 +0000089D A03206 mov al,[0x632] +000008A0 0100 add [bx+si],ax +000008A2 FEC8 dec al +000008A4 F6E1 mul cl +000008A6 0F db 0x0F +000008A7 B7F8 mov bh,0xf8 +000008A9 81C70080 add di,0x8000 +000008AD 0B00 or ax,[bx+si] +000008AF 0FB60D movzx cx,[di] +000008B2 33060100 xor ax,[0x1] +000008B6 D1E9 shr cx,1 +000008B8 B80007 mov ax,0x700 +000008BB 0007 add [bx],al +000008BD F3AB rep stosw +000008BF 5E pop si +000008C0 5F pop di +000008C1 59 pop cx +000008C2 58 pop ax +000008C3 C3 ret +000008C4 66BB9301E8FA mov ebx,0xfae80193 +000008CA FD std +000008CB FF db 0xFF +000008CC FF db 0xFF +000008CD BEE709 mov si,0x9e7 +000008D0 0100 add [bx+si],ax +000008D2 B307 mov bl,0x7 +000008D4 E8D6FE call 0x7ad +000008D7 FF db 0xFF +000008D8 FF66BB jmp near [bp-0x45] +000008DB C501 lds ax,[bx+di] +000008DD E8E5FD call 0x6c5 +000008E0 FF db 0xFF +000008E1 FF db 0xFF +000008E2 BE040A mov si,0xa04 +000008E5 0100 add [bx+si],ax +000008E7 B302 mov bl,0x2 +000008E9 E8C1FE call 0x7ad +000008EC FF db 0xFF +000008ED FF66BB jmp near [bp-0x45] +000008F0 E301 jcxz 0x8f3 +000008F2 E8D0FD call 0x6c5 +000008F5 FF db 0xFF +000008F6 FF db 0xFF +000008F7 BE150A mov si,0xa15 +000008FA 0100 add [bx+si],ax +000008FC B307 mov bl,0x7 +000008FE E8ACFE call 0x7ad +00000901 FF db 0xFF +00000902 FF66BB jmp near [bp-0x45] +00000905 1502E8 adc ax,0xe802 +00000908 BBFDFF mov bx,0xfffd +0000090B FF db 0xFF +0000090C BE270A mov si,0xa27 +0000090F 0100 add [bx+si],ax +00000911 B302 mov bl,0x2 +00000913 E897FE call 0x7ad +00000916 FF db 0xFF +00000917 FFB120B5 push word [bx+di+0xb520] +0000091B 28E8 sub al,ch +0000091D 8402 test [bp+si],al +0000091F 0000 add [bx+si],al +00000921 E8A402 call 0xbc8 +00000924 0000 add [bx+si],al +00000926 66BB3302E898 mov ebx,0x98e80233 +0000092C FD std +0000092D FF db 0xFF +0000092E FF db 0xFF +0000092F BE380A mov si,0xa38 +00000932 0100 add [bx+si],ax +00000934 B307 mov bl,0x7 +00000936 E874FE call 0x7ad +00000939 FF db 0xFF +0000093A FF66BB jmp near [bp-0x45] +0000093D 6502E8 gs add ch,al +00000940 83FDFF cmp bp,byte -0x1 +00000943 FF db 0xFF +00000944 BE4F0A mov si,0xa4f +00000947 0100 add [bx+si],ax +00000949 B302 mov bl,0x2 +0000094B E85FFE call 0x7ad +0000094E FF db 0xFF +0000094F FF db 0xFF +00000950 BFEE1D mov di,0x1dee +00000953 0100 add [bx+si],ax +00000955 E837F8 call 0x18f +00000958 FF db 0xFF +00000959 FF db 0xFF +0000095A BE3202 mov si,0x232 +0000095D 0100 add [bx+si],ax +0000095F E8AFF8 call 0x211 +00000962 FF db 0xFF +00000963 FF db 0xFF +00000964 FB sti +00000965 66BB8302E859 mov ebx,0x59e80283 +0000096B FD std +0000096C FF db 0xFF +0000096D FF db 0xFF +0000096E BE600A mov si,0xa60 +00000971 0100 add [bx+si],ax +00000973 B307 mov bl,0x7 +00000975 E835FE call 0x7ad +00000978 FF db 0xFF +00000979 FF66BB jmp near [bp-0x45] +0000097C B502 mov ch,0x2 +0000097E E844FD call 0x6c5 +00000981 FF db 0xFF +00000982 FF db 0xFF +00000983 BE720A mov si,0xa72 +00000986 0100 add [bx+si],ax +00000988 B302 mov bl,0x2 +0000098A E820FE call 0x7ad +0000098D FF db 0xFF +0000098E FFB101E8 push word [bx+di+0xe801] +00000992 4A dec dx +00000993 0200 add al,[bx+si] +00000995 0066BB add [bp-0x45],ah +00000998 D302 rol word [bp+si],cl +0000099A E828FD call 0x6c5 +0000099D FF db 0xFF +0000099E FF db 0xFF +0000099F BE830A mov si,0xa83 +000009A2 0100 add [bx+si],ax +000009A4 B307 mov bl,0x7 +000009A6 E804FE call 0x7ad +000009A9 FF db 0xFF +000009AA FF66BB jmp near [bp-0x45] +000009AD 0503E8 add ax,0xe803 +000009B0 13FD adc di,bp +000009B2 FF db 0xFF +000009B3 FF db 0xFF +000009B4 BE930A mov si,0xa93 +000009B7 0100 add [bx+si],ax +000009B9 B302 mov bl,0x2 +000009BB E8EFFD call 0x7ad +000009BE FF db 0xFF +000009BF FF db 0xFF +000009C0 E8CA25 call 0x2f8d +000009C3 0000 add [bx+si],al +000009C5 E8D728 call 0x329f +000009C8 0000 add [bx+si],al +000009CA B100 mov cl,0x0 +000009CC E80F02 call 0xbde +000009CF 0000 add [bx+si],al +000009D1 BB0000 mov bx,0x0 +000009D4 1000 adc [bx+si],al +000009D6 8B0D mov cx,[di] +000009D8 C8000100 enter 0x100,0x0 +000009DC E85939 call 0x4338 +000009DF 0000 add [bx+si],al +000009E1 E8152E call 0x37f9 +000009E4 0000 add [bx+si],al +000009E6 C3 ret +000009E7 53 push bx +000009E8 657474 gs jz 0xa5f +000009EB 696E672075 imul bp,[bp+0x67],word 0x7520 +000009F0 7020 jo 0xa12 +000009F2 7072 jo 0xa66 +000009F4 6F outsw +000009F5 7465 jz 0xa5c +000009F7 637465 arpl [si+0x65],si +000009FA 64206D6F and [fs:di+0x6f],ch +000009FE 64652E2E2E005B20 add [cs:bp+di+0x20],bl +00000A06 3332 xor si,[bp+si] +00000A08 2D6269 sub ax,0x6962 +00000A0B 7473 jz 0xa80 +00000A0D 204F4B and [bx+0x4b],cl +00000A10 2020 and [bx+si],ah +00000A12 205D00 and [di+0x0],bl +00000A15 4C dec sp +00000A16 6F outsw +00000A17 61 popa +00000A18 64696E67206B imul bp,[fs:bp+0x67],word 0x6b20 +00000A1E 65726E gs jc 0xa8f +00000A21 656C gs insb +00000A23 2E2E2E005B20 add [cs:bp+di+0x20],bl +00000A29 4F dec di +00000A2A 4B dec bx +00000A2B 2020 and [bx+si],ah +00000A2D 2020 and [bx+si],ah +00000A2F 2020 and [bx+si],ah +00000A31 2020 and [bx+si],ah +00000A33 2020 and [bx+si],ah +00000A35 205D00 and [di+0x0],bl +00000A38 46 inc si +00000A39 6978696E67 imul di,[bx+si+0x69],word 0x676e +00000A3E 205049 and [bx+si+0x49],dl +00000A41 43 inc bx +00000A42 20616E and [bx+di+0x6e],ah +00000A45 64204952 and [fs:bx+di+0x52],cl +00000A49 51 push cx +00000A4A 732E jnc 0xa7a +00000A4C 2E2E005B20 add [cs:bp+di+0x20],bl +00000A51 44 inc sp +00000A52 6F outsw +00000A53 6E outsb +00000A54 652020 and [gs:bx+si],ah +00000A57 2020 and [bx+si],ah +00000A59 2020 and [bx+si],ah +00000A5B 2020 and [bx+si],ah +00000A5D 205D00 and [di+0x0],bl +00000A60 53 push bx +00000A61 657474 gs jz 0xad8 +00000A64 696E672075 imul bp,[bp+0x67],word 0x7520 +00000A69 7020 jo 0xa8b +00000A6B 49 dec cx +00000A6C 44 inc sp +00000A6D 54 push sp +00000A6E 2E2E2E005B20 add [cs:bp+di+0x20],bl +00000A74 49 dec cx +00000A75 44 inc sp +00000A76 54 push sp +00000A77 204F4B and [bx+0x4b],cl +00000A7A 2020 and [bx+si],ah +00000A7C 2020 and [bx+si],ah +00000A7E 2020 and [bx+si],ah +00000A80 205D00 and [di+0x0],bl +00000A83 45 inc bp +00000A84 6E outsb +00000A85 61 popa +00000A86 626C65 bound bp,[si+0x65] +00000A89 7320 jnc 0xaab +00000A8B 49 dec cx +00000A8C 52 push dx +00000A8D 51 push cx +00000A8E 312E2E2E xor [0x2e2e],bp +00000A92 005B20 add [bp+di+0x20],bl +00000A95 4B dec bx +00000A96 657962 gs jns 0xafb +00000A99 6F outsw +00000A9A 61 popa +00000A9B 7264 jc 0xb01 +00000A9D 204F4B and [bx+0x4b],cl +00000AA0 2020 and [bx+si],ah +00000AA2 5D pop bp +00000AA3 00424F add [bp+si+0x4f],al +00000AA6 53 push bx +00000AA7 207368 and [bp+di+0x68],dh +00000AAA 656C gs insb +00000AAC 6C insb +00000AAD 2E205479 and [cs:si+0x79],dl +00000AB1 7065 jo 0xb18 +00000AB3 2022 and [bp+si],ah +00000AB5 68656C push word 0x6c65 +00000AB8 7022 jo 0xadc +00000ABA 20666F and [bp+0x6f],ah +00000ABD 7220 jc 0xadf +00000ABF 6D insw +00000AC0 6F outsw +00000AC1 7265 jc 0xb28 +00000AC3 20696E and [bx+di+0x6e],ch +00000AC6 666F outsd +00000AC8 2E0D0A00 cs or ax,0xa +00000ACC 60 pusha +00000ACD 50 push ax +00000ACE C1E810 shr ax,0x10 +00000AD1 66A3C000 mov [0xc0],eax +00000AD5 0100 add [bx+si],ax +00000AD7 58 pop ax +00000AD8 53 push bx +00000AD9 C1EB10 shr bx,0x10 +00000ADC 881D mov [di],bl +00000ADE BE0001 mov si,0x100 +00000AE1 005BC6 add [bp+di-0x3a],bl +00000AE4 05BF00 add ax,0xbf +00000AE7 0100 add [bx+si],ax +00000AE9 006689 add [bp-0x77],ah +00000AEC 1DC200 sbb ax,0xc2 +00000AEF 0100 add [bx+si],ax +00000AF1 66890D mov [di],ecx +00000AF4 C400 les ax,[bx+si] +00000AF6 0100 add [bx+si],ax +00000AF8 668915 mov [di],edx +00000AFB C60001 mov byte [bx+si],0x1 +00000AFE 00E8 add al,ch +00000B00 C60000 mov byte [bx+si],0x0 +00000B03 00EA add dl,ch +00000B05 0B0B or cx,[bp+di] +00000B07 0000 add [bx+si],al +00000B09 1800 sbb [bx+si],al +00000B0B B82000 mov ax,0x20 +00000B0E 8ED8 mov ds,ax +00000B10 8EC0 mov es,ax +00000B12 8EE0 mov fs,ax +00000B14 8EE8 mov gs,ax +00000B16 8ED0 mov ss,ax +00000B18 FA cli +00000B19 0F20C0 mov eax,cr0 +00000B1C 24FE and al,0xfe +00000B1E 0F22C0 mov cr0,eax +00000B21 EA260B0010 jmp 0x1000:0xb26 +00000B26 8CC8 mov ax,cs +00000B28 8ED8 mov ds,ax +00000B2A 31C0 xor ax,ax +00000B2C 8EC0 mov es,ax +00000B2E 8EE0 mov fs,ax +00000B30 8EE8 mov gs,ax +00000B32 8ED0 mov ss,ax +00000B34 0F011EB800 lidt [0xb8] +00000B39 FB sti +00000B3A A1C000 mov ax,[0xc0] +00000B3D 8B1EC200 mov bx,[0xc2] +00000B41 8B0EC400 mov cx,[0xc4] +00000B45 8B16C600 mov dx,[0xc6] +00000B49 50 push ax +00000B4A A0BE00 mov al,[0xbe] +00000B4D A2520B mov [0xb52],al +00000B50 58 pop ax +00000B51 CD00 int 0x0 +00000B53 7305 jnc 0xb5a +00000B55 C606BF0001 mov byte [0xbf],0x1 +00000B5A A3C000 mov [0xc0],ax +00000B5D 891EC200 mov [0xc2],bx +00000B61 890EC400 mov [0xc4],cx +00000B65 8916C600 mov [0xc6],dx +00000B69 FA cli +00000B6A 0F01164000 lgdt [0x40] +00000B6F 0F011E6E00 lidt [0x6e] +00000B74 0F20C0 mov eax,cr0 +00000B77 0C01 or al,0x1 +00000B79 0F22C0 mov cr0,eax +00000B7C 66EA840B01000800 jmp dword 0x8:0x10b84 +00000B84 66B810008ED8 mov eax,0xd88e0010 +00000B8A 8EC0 mov es,ax +00000B8C 8EE0 mov fs,ax +00000B8E 8EE8 mov gs,ax +00000B90 8ED0 mov ss,ax +00000B92 E83E00 call 0xbd3 +00000B95 0000 add [bx+si],al +00000B97 FB sti +00000B98 61 popa +00000B99 F8 clc +00000B9A 803DBF cmp byte [di],0xbf +00000B9D 0001 add [bx+di],al +00000B9F 0001 add [bx+di],al +00000BA1 7501 jnz 0xba4 +00000BA3 F9 stc +00000BA4 C3 ret +00000BA5 6650 push eax +00000BA7 6652 push edx +00000BA9 B011 mov al,0x11 +00000BAB E620 out 0x20,al +00000BAD E6A0 out 0xa0,al +00000BAF 88C8 mov al,cl +00000BB1 E621 out 0x21,al +00000BB3 88E8 mov al,ch +00000BB5 E6A1 out 0xa1,al +00000BB7 B004 mov al,0x4 +00000BB9 E621 out 0x21,al +00000BBB B002 mov al,0x2 +00000BBD E6A1 out 0xa1,al +00000BBF B001 mov al,0x1 +00000BC1 E621 out 0x21,al +00000BC3 E6A1 out 0xa1,al +00000BC5 665A pop edx +00000BC7 6658 pop eax +00000BC9 C3 ret +00000BCA 6650 push eax +00000BCC B0FF mov al,0xff +00000BCE E621 out 0x21,al +00000BD0 E6A1 out 0xa1,al +00000BD2 6658 pop eax +00000BD4 C3 ret +00000BD5 6650 push eax +00000BD7 B000 mov al,0x0 +00000BD9 E621 out 0x21,al +00000BDB E6A1 out 0xa1,al +00000BDD 6658 pop eax +00000BDF C3 ret +00000BE0 6650 push eax +00000BE2 6651 push ecx +00000BE4 80F908 cmp cl,0x8 +00000BE7 7215 jc 0xbfe +00000BE9 80E908 sub cl,0x8 +00000BEC B401 mov ah,0x1 +00000BEE D2E4 shl ah,cl +00000BF0 80F4FF xor ah,0xff +00000BF3 E4A1 in al,0xa1 +00000BF5 20E0 and al,ah +00000BF7 E6A1 out 0xa1,al +00000BF9 6659 pop ecx +00000BFB 6658 pop eax +00000BFD C3 ret +00000BFE B401 mov ah,0x1 +00000C00 D2E4 shl ah,cl +00000C02 80F4FF xor ah,0xff +00000C05 E421 in al,0x21 +00000C07 20E0 and al,ah +00000C09 E621 out 0x21,al +00000C0B 6659 pop ecx +00000C0D 6658 pop eax +00000C0F C3 ret +00000C10 6650 push eax +00000C12 6651 push ecx +00000C14 80F908 cmp cl,0x8 +00000C17 7212 jc 0xc2b +00000C19 80E908 sub cl,0x8 +00000C1C B401 mov ah,0x1 +00000C1E D2E4 shl ah,cl +00000C20 E4A1 in al,0xa1 +00000C22 08E0 or al,ah +00000C24 E6A1 out 0xa1,al +00000C26 6659 pop ecx +00000C28 6658 pop eax +00000C2A C3 ret +00000C2B B401 mov ah,0x1 +00000C2D D2E4 shl ah,cl +00000C2F E421 in al,0x21 +00000C31 08E0 or al,ah +00000C33 E621 out 0x21,al +00000C35 6659 pop ecx +00000C37 6658 pop eax +00000C39 C3 ret +00000C3A C9 leave +00000C3B CDCD int 0xcd +00000C3D CDCD int 0xcd +00000C3F CDCD int 0xcd +00000C41 CDCD int 0xcd +00000C43 CDCD int 0xcd +00000C45 CDCD int 0xcd +00000C47 CDCD int 0xcd +00000C49 CDCD int 0xcd +00000C4B CDCD int 0xcd +00000C4D CDCD int 0xcd +00000C4F CDCD int 0xcd +00000C51 CDCD int 0xcd +00000C53 CDBB int 0xbb +00000C55 00BA2020 add [bp+si+0x2020],bh +00000C59 2020 and [bx+si],ah +00000C5B 1020 adc [bx+si],ah +00000C5D 49 dec cx +00000C5E 4E dec si +00000C5F 54 push sp +00000C60 2033 and [bp+di],dh +00000C62 3220 xor ah,[bx+si] +00000C64 43 inc bx +00000C65 41 inc cx +00000C66 4C dec sp +00000C67 4C dec sp +00000C68 45 inc bp +00000C69 44 inc sp +00000C6A 2121 and [bx+di],sp +00000C6C 2020 and [bx+si],ah +00000C6E 2020 and [bx+si],ah +00000C70 BA00BA mov dx,0xba00 +00000C73 2020 and [bx+si],ah +00000C75 2020 and [bx+si],ah +00000C77 2020 and [bx+si],ah +00000C79 2020 and [bx+si],ah +00000C7B 2020 and [bx+si],ah +00000C7D 0220 add ah,[bx+si] +00000C7F 0120 add [bx+si],sp +00000C81 2020 and [bx+si],ah +00000C83 2020 and [bx+si],ah +00000C85 2020 and [bx+si],ah +00000C87 2020 and [bx+si],ah +00000C89 2020 and [bx+si],ah +00000C8B 20BA00C8 and [bp+si+0xc800],bh +00000C8F CDCD int 0xcd +00000C91 CDCD int 0xcd +00000C93 CDCD int 0xcd +00000C95 CDCD int 0xcd +00000C97 CDCD int 0xcd +00000C99 CDCD int 0xcd +00000C9B CDCD int 0xcd +00000C9D CDCD int 0xcd +00000C9F CDCD int 0xcd +00000CA1 CDCD int 0xcd +00000CA3 CDCD int 0xcd +00000CA5 CDCD int 0xcd +00000CA7 CDBC int 0xbc +00000CA9 004354 add [bp+di+0x54],al +00000CAC 52 push dx +00000CAD 4C dec sp +00000CAE 2B414C sub ax,[bx+di+0x4c] +00000CB1 54 push sp +00000CB2 2B4445 sub ax,[si+0x45] +00000CB5 4C dec sp +00000CB6 207761 and [bx+0x61],dh +00000CB9 7320 jnc 0xcdb +00000CBB 7072 jo 0xd2f +00000CBD 657373 gs jnc 0xd33 +00000CC0 65642100 and [fs:bx+si],ax +00000CC4 6683F801 cmp eax,byte +0x1 +00000CC8 750A jnz 0xcd4 +00000CCA E85602 call 0xf23 +00000CCD 0000 add [bx+si],al +00000CCF E99900 jmp 0xd6b +00000CD2 0000 add [bx+si],al +00000CD4 663DDECA7533 cmp eax,0x3375cade +00000CDA 6653 push ebx +00000CDC 6651 push ecx +00000CDE 6652 push edx +00000CE0 E8A4F9 call 0x687 +00000CE3 FF db 0xFF +00000CE4 FF6689 jmp near [bp-0x77] +00000CE7 D9B20CB6 fnstenv [bp+si+0xb60c] +00000CEB 1BE8 sbb bp,ax +00000CED B7F9 mov bh,0xf9 +00000CEF FF db 0xFF +00000CF0 FF db 0xFF +00000CF1 BEAA0C mov si,0xcaa +00000CF4 0100 add [bx+si],ax +00000CF6 B040 mov al,0x40 +00000CF8 E8B2FA call 0x7ad +00000CFB FF db 0xFF +00000CFC FF6689 jmp near [bp-0x77] +00000CFF CB retf +00000D00 E8C2F9 call 0x6c5 +00000D03 FF db 0xFF +00000D04 FF665A jmp near [bp+0x5a] +00000D07 6659 pop ecx +00000D09 665B pop ebx +00000D0B EB60 jmp short 0xd6d +00000D0D 6653 push ebx +00000D0F 6651 push ecx +00000D11 6652 push edx +00000D13 B20B mov dl,0xb +00000D15 B61A mov dh,0x1a +00000D17 E88CF9 call 0x6a6 +00000D1A FF db 0xFF +00000D1B FF db 0xFF +00000D1C BE3A0C mov si,0xc3a +00000D1F 0100 add [bx+si],ax +00000D21 B340 mov bl,0x40 +00000D23 E887FA call 0x7ad +00000D26 FF db 0xFF +00000D27 FFB20CB6 push word [bp+si+0xb60c] +00000D2B 1AE8 sbb ch,al +00000D2D 77F9 ja 0xd28 +00000D2F FF db 0xFF +00000D30 FF db 0xFF +00000D31 BE560C mov si,0xc56 +00000D34 0100 add [bx+si],ax +00000D36 B340 mov bl,0x40 +00000D38 E872FA call 0x7ad +00000D3B FF db 0xFF +00000D3C FFB20DB6 push word [bp+si+0xb60d] +00000D40 1AE8 sbb ch,al +00000D42 62 db 0x62 +00000D43 F9 stc +00000D44 FF db 0xFF +00000D45 FF db 0xFF +00000D46 BE720C mov si,0xc72 +00000D49 0100 add [bx+si],ax +00000D4B B340 mov bl,0x40 +00000D4D E85DFA call 0x7ad +00000D50 FF db 0xFF +00000D51 FFB20EB6 push word [bp+si+0xb60e] +00000D55 1AE8 sbb ch,al +00000D57 4D dec bp +00000D58 F9 stc +00000D59 FF db 0xFF +00000D5A FF db 0xFF +00000D5B BE8E0C mov si,0xc8e +00000D5E 0100 add [bx+si],ax +00000D60 B340 mov bl,0x40 +00000D62 E848FA call 0x7ad +00000D65 FF db 0xFF +00000D66 FF665A jmp near [bp+0x5a] +00000D69 6659 pop ecx +00000D6B 665B pop ebx +00000D6D C3 ret +00000D6E 2020 and [bx+si],ah +00000D70 2020 and [bx+si],ah +00000D72 2020 and [bx+si],ah +00000D74 2020 and [bx+si],ah +00000D76 2020 and [bx+si],ah +00000D78 204120 and [bx+di+0x20],al +00000D7B 36342D ss xor al,0x2d +00000D7E 627974 bound di,[bx+di+0x74] +00000D81 652020 and [gs:bx+si],ah +00000D84 2020 and [bx+si],ah +00000D86 2020 and [bx+si],ah +00000D88 2020 and [bx+si],ah +00000D8A 2020 and [bx+si],ah +00000D8C 2020 and [bx+si],ah +00000D8E 2020 and [bx+si],ah +00000D90 2020 and [bx+si],ah +00000D92 2020 and [bx+si],ah +00000D94 2020 and [bx+si],ah +00000D96 6B657962 imul sp,[di+0x79],byte +0x62 +00000D9A 6F outsw +00000D9B 61 popa +00000D9C 7264 jc 0xe02 +00000D9E 206275 and [bp+si+0x75],ah +00000DA1 6666657220 gs o32 jc 0xdc6 +00000DA6 2020 and [bx+si],ah +00000DA8 2020 and [bx+si],ah +00000DAA 2020 and [bx+si],ah +00000DAC 2020 and [bx+si],ah +00000DAE 0100 add [bx+si],ax +00000DB0 0000 add [bx+si],al +00000DB2 50 push ax +00000DB3 31C0 xor ax,ax +00000DB5 E460 in al,0x60 +00000DB7 A880 test al,0x80 +00000DB9 7455 jz 0xe10 +00000DBB 8025B0 and byte [di],0xb0 +00000DBE 0D0100 or ax,0x1 +00000DC1 7F3C jg 0xdff +00000DC3 AA stosb +00000DC4 7415 jz 0xddb +00000DC6 3CB6 cmp al,0xb6 +00000DC8 7411 jz 0xddb +00000DCA 3C9D cmp al,0x9d +00000DCC 741B jz 0xde9 +00000DCE 3CD3 cmp al,0xd3 +00000DD0 7415 jz 0xde7 +00000DD2 3CB8 cmp al,0xb8 +00000DD4 741C jz 0xdf2 +00000DD6 E9BA00 jmp 0xe93 +00000DD9 0000 add [bx+si],al +00000DDB 8025B0 and byte [di],0xb0 +00000DDE 0D0100 or ax,0x1 +00000DE1 FE db 0xFE +00000DE2 E9AE00 jmp 0xe93 +00000DE5 0000 add [bx+si],al +00000DE7 EB12 jmp short 0xdfb +00000DE9 8025B0 and byte [di],0xb0 +00000DEC 0D0100 or ax,0x1 +00000DEF FD std +00000DF0 EB09 jmp short 0xdfb +00000DF2 8025B0 and byte [di],0xb0 +00000DF5 0D0100 or ax,0x1 +00000DF8 FB sti +00000DF9 EB00 jmp short 0xdfb +00000DFB F605B0 test byte [di],0xb0 +00000DFE 0D0100 or ax,0x1 +00000E01 40 inc ax +00000E02 7407 jz 0xe0b +00000E04 8025B0 and byte [di],0xb0 +00000E07 0D0100 or ax,0x1 +00000E0A BFE985 mov di,0x85e9 +00000E0D 0000 add [bx+si],al +00000E0F 00800DB0 add [bx+si+0xb00d],al +00000E13 0D0100 or ax,0x1 +00000E16 803C2A cmp byte [si],0x2a +00000E19 7509 jnz 0xe24 +00000E1B 800DB0 or byte [di],0xb0 +00000E1E 0D0100 or ax,0x1 +00000E21 01EB add bx,bp +00000E23 713C jno 0xe61 +00000E25 367509 ss jnz 0xe31 +00000E28 800DB0 or byte [di],0xb0 +00000E2B 0D0100 or ax,0x1 +00000E2E 01EB add bx,bp +00000E30 643C1D fs cmp al,0x1d +00000E33 7509 jnz 0xe3e +00000E35 800DB0 or byte [di],0xb0 +00000E38 0D0100 or ax,0x1 +00000E3B 02EB add ch,bl +00000E3D 57 push di +00000E3E 3C38 cmp al,0x38 +00000E40 7509 jnz 0xe4b +00000E42 800DB0 or byte [di],0xb0 +00000E45 0D0100 or ax,0x1 +00000E48 04EB add al,0xeb +00000E4A 4A dec dx +00000E4B F605B0 test byte [di],0xb0 +00000E4E 0D0100 or ax,0x1 +00000E51 06 push es +00000E52 740B jz 0xe5f +00000E54 3C53 cmp al,0x53 +00000E56 7507 jnz 0xe5f +00000E58 800DB0 or byte [di],0xb0 +00000E5B 0D0100 or ax,0x1 +00000E5E 40 inc ax +00000E5F 3C3A cmp al,0x3a +00000E61 750E jnz 0xe71 +00000E63 8035B1 xor byte [di],0xb1 +00000E66 0D0100 or ax,0x1 +00000E69 04E8 add al,0xe8 +00000E6B 8400 test [bx+si],al +00000E6D 0000 add [bx+si],al +00000E6F EB24 jmp short 0xe95 +00000E71 3C45 cmp al,0x45 +00000E73 750E jnz 0xe83 +00000E75 8035B1 xor byte [di],0xb1 +00000E78 0D0100 or ax,0x1 +00000E7B 02E8 add ch,al +00000E7D 7200 jc 0xe7f +00000E7F 0000 add [bx+si],al +00000E81 EB12 jmp short 0xe95 +00000E83 3C46 cmp al,0x46 +00000E85 750E jnz 0xe95 +00000E87 8035B1 xor byte [di],0xb1 +00000E8A 0D0100 or ax,0x1 +00000E8D 01E8 add ax,bp +00000E8F 60 pusha +00000E90 0000 add [bx+si],al +00000E92 00EB add bl,ch +00000E94 0050BF add [bx+si-0x41],dl +00000E97 6E outsb +00000E98 0D0100 or ax,0x1 +00000E9B 31C0 xor ax,ax +00000E9D A0AE0D mov al,[0xdae] +00000EA0 0100 add [bx+si],ax +00000EA2 01C7 add di,ax +00000EA4 58 pop ax +00000EA5 AA stosb +00000EA6 803DAE cmp byte [di],0xae +00000EA9 0D0100 or ax,0x1 +00000EAC 3F aas +00000EAD 7512 jnz 0xec1 +00000EAF 803DAF cmp byte [di],0xaf +00000EB2 0D0100 or ax,0x1 +00000EB5 007422 add [si+0x22],dh +00000EB8 C605AE mov byte [di],0xae +00000EBB 0D0100 or ax,0x1 +00000EBE 00EB add bl,ch +00000EC0 2C8A sub al,0x8a +00000EC2 25AF0D and ax,0xdaf +00000EC5 0100 add [bx+si],ax +00000EC7 A0AE0D mov al,[0xdae] +00000ECA 0100 add [bx+si],ax +00000ECC 0401 add al,0x1 +00000ECE 38C4 cmp ah,al +00000ED0 7408 jz 0xeda +00000ED2 FE05 inc byte [di] +00000ED4 AE scasb +00000ED5 0D0100 or ax,0x1 +00000ED8 EB13 jmp short 0xeed +00000EDA E83134 call 0x430e +00000EDD 0000 add [bx+si],al +00000EDF C605AE mov byte [di],0xae +00000EE2 0D0100 or ax,0x1 +00000EE5 01C6 add si,ax +00000EE7 05AF0D add ax,0xdaf +00000EEA 0100 add [bx+si],ax +00000EEC 00B020E6 add [bx+si+0xe620],dh +00000EF0 2058C3 and [bx+si-0x3d],bl +00000EF3 6650 push eax +00000EF5 E81800 call 0xf10 +00000EF8 0000 add [bx+si],al +00000EFA B0ED mov al,0xed +00000EFC E660 out 0x60,al +00000EFE E80F00 call 0xf10 +00000F01 0000 add [bx+si],al +00000F03 A0B10D mov al,[0xdb1] +00000F06 0100 add [bx+si],ax +00000F08 E660 out 0x60,al +00000F0A E80300 call 0xf10 +00000F0D 0000 add [bx+si],al +00000F0F 6658 pop eax +00000F11 C3 ret +00000F12 EB00 jmp short 0xf14 +00000F14 E464 in al,0x64 +00000F16 A801 test al,0x1 +00000F18 7406 jz 0xf20 +00000F1A EB00 jmp short 0xf1c +00000F1C E460 in al,0x60 +00000F1E EBF2 jmp short 0xf12 +00000F20 A802 test al,0x2 +00000F22 75EE jnz 0xf12 +00000F24 C3 ret +00000F25 56 push si +00000F26 A0AE0D mov al,[0xdae] +00000F29 0100 add [bx+si],ax +00000F2B 8A25 mov ah,[di] +00000F2D AF scasw +00000F2E 0D0100 or ax,0x1 +00000F31 80FC3F cmp ah,0x3f +00000F34 750D jnz 0xf43 +00000F36 3C00 cmp al,0x0 +00000F38 74EC jz 0xf26 +00000F3A C605AF mov byte [di],0xaf +00000F3D 0D0100 or ax,0x1 +00000F40 00EB add bl,ch +00000F42 0E push cs +00000F43 88E3 mov bl,ah +00000F45 FEC3 inc bl +00000F47 38C3 cmp bl,al +00000F49 74DB jz 0xf26 +00000F4B FE05 inc byte [di] +00000F4D AF scasw +00000F4E 0D0100 or ax,0x1 +00000F51 BE6E0D mov si,0xd6e +00000F54 0100 add [bx+si],ax +00000F56 0FB605 movzx ax,[di] +00000F59 AF scasw +00000F5A 0D0100 or ax,0x1 +00000F5D 01C6 add si,ax +00000F5F 8A260FB6 mov ah,[0xb60f] +00000F63 3680FCFA ss cmp ah,0xfa +00000F67 74BD jz 0xf26 +00000F69 80FCE0 cmp ah,0xe0 +00000F6C 74B8 jz 0xf26 +00000F6E 80FCE1 cmp ah,0xe1 +00000F71 74B3 jz 0xf26 +00000F73 F6C480 test ah,0x80 +00000F76 75AE jnz 0xf26 +00000F78 F605B1 test byte [di],0xb1 +00000F7B 0D0100 or ax,0x1 +00000F7E 0475 add al,0x75 +00000F80 11F6 adc si,si +00000F82 05B00D add ax,0xdb0 +00000F85 0100 add [bx+si],ax +00000F87 017521 add [di+0x21],si +00000F8A 8A861710 mov al,[bp+0x1017] +00000F8E 0100 add [bx+si],ax +00000F90 EB21 jmp short 0xfb3 +00000F92 F605B0 test byte [di],0xb0 +00000F95 0D0100 or ax,0x1 +00000F98 017508 add [di+0x8],si +00000F9B 8A866D10 mov al,[bp+0x106d] +00000F9F 0100 add [bx+si],ax +00000FA1 EB10 jmp short 0xfb3 +00000FA3 8A86C310 mov al,[bp+0x10c3] +00000FA7 0100 add [bx+si],ax +00000FA9 EB08 jmp short 0xfb3 +00000FAB 8A861911 mov al,[bp+0x1119] +00000FAF 0100 add [bx+si],ax +00000FB1 EB00 jmp short 0xfb3 +00000FB3 8A1D mov bl,[di] +00000FB5 B10D mov cl,0xd +00000FB7 0100 add [bx+si],ax +00000FB9 8A3D mov bh,[di] +00000FBB B00D mov al,0xd +00000FBD 0100 add [bx+si],ax +00000FBF 5E pop si +00000FC0 C3 ret +00000FC1 50 push ax +00000FC2 53 push bx +00000FC3 56 push si +00000FC4 A0AE0D mov al,[0xdae] +00000FC7 0100 add [bx+si],ax +00000FC9 8A25 mov ah,[di] +00000FCB AF scasw +00000FCC 0D0100 or ax,0x1 +00000FCF 80FC3F cmp ah,0x3f +00000FD2 750D jnz 0xfe1 +00000FD4 3C00 cmp al,0x0 +00000FD6 74EC jz 0xfc4 +00000FD8 C605AF mov byte [di],0xaf +00000FDB 0D0100 or ax,0x1 +00000FDE 00EB add bl,ch +00000FE0 0E push cs +00000FE1 88E3 mov bl,ah +00000FE3 FEC3 inc bl +00000FE5 38C3 cmp bl,al +00000FE7 74DB jz 0xfc4 +00000FE9 FE05 inc byte [di] +00000FEB AF scasw +00000FEC 0D0100 or ax,0x1 +00000FEF BE6E0D mov si,0xd6e +00000FF2 0100 add [bx+si],ax +00000FF4 0FB605 movzx ax,[di] +00000FF7 AF scasw +00000FF8 0D0100 or ax,0x1 +00000FFB 01C6 add si,ax +00000FFD 8A2680FC mov ah,[0xfc80] +00001001 FA cli +00001002 74C0 jz 0xfc4 +00001004 80FCE0 cmp ah,0xe0 +00001007 74BB jz 0xfc4 +00001009 80FCE1 cmp ah,0xe1 +0000100C 74B6 jz 0xfc4 +0000100E F6C480 test ah,0x80 +00001011 75B1 jnz 0xfc4 +00001013 5E pop si +00001014 5B pop bx +00001015 58 pop ax +00001016 C3 ret +00001017 0001 add [bx+di],al +00001019 3132 xor [bp+si],si +0000101B 3334 xor si,[si] +0000101D 353637 xor ax,0x3736 +00001020 3839 cmp [bx+di],bh +00001022 302D xor [di],ch +00001024 3D0000 cmp ax,0x0 +00001027 7177 jno 0x10a0 +00001029 657274 gs jc 0x10a0 +0000102C 7975 jns 0x10a3 +0000102E 696F705B5D imul bp,[bx+0x70],word 0x5d5b +00001033 0000 add [bx+si],al +00001035 61 popa +00001036 7364 jnc 0x109c +00001038 6667686A6B6C3B a32 push dword 0x3b6c6b6a +0000103F 27 daa +00001040 60 pusha +00001041 005C7A add [si+0x7a],bl +00001044 7863 js 0x10a9 +00001046 7662 jna 0x10aa +00001048 6E outsb +00001049 6D insw +0000104A 2C2E sub al,0x2e +0000104C 2F das +0000104D 0000 add [bx+si],al +0000104F 0020 add [bx+si],ah +00001051 0000 add [bx+si],al +00001053 0000 add [bx+si],al +00001055 0000 add [bx+si],al +00001057 0000 add [bx+si],al +00001059 0000 add [bx+si],al +0000105B 0000 add [bx+si],al +0000105D 0000 add [bx+si],al +0000105F 0000 add [bx+si],al +00001061 0000 add [bx+si],al +00001063 0000 add [bx+si],al +00001065 0000 add [bx+si],al +00001067 0000 add [bx+si],al +00001069 0000 add [bx+si],al +0000106B 0000 add [bx+si],al +0000106D 0001 add [bx+di],al +0000106F 3132 xor [bp+si],si +00001071 3334 xor si,[si] +00001073 353637 xor ax,0x3736 +00001076 3839 cmp [bx+di],bh +00001078 302D xor [di],ch +0000107A 3D0000 cmp ax,0x0 +0000107D 51 push cx +0000107E 57 push di +0000107F 45 inc bp +00001080 52 push dx +00001081 54 push sp +00001082 59 pop cx +00001083 55 push bp +00001084 49 dec cx +00001085 4F dec di +00001086 50 push ax +00001087 5B pop bx +00001088 5D pop bp +00001089 0000 add [bx+si],al +0000108B 41 inc cx +0000108C 53 push bx +0000108D 44 inc sp +0000108E 46 inc si +0000108F 47 inc di +00001090 48 dec ax +00001091 4A dec dx +00001092 4B dec bx +00001093 4C dec sp +00001094 3B27 cmp sp,[bx] +00001096 60 pusha +00001097 005C5A add [si+0x5a],bl +0000109A 58 pop ax +0000109B 43 inc bx +0000109C 56 push si +0000109D 42 inc dx +0000109E 4E dec si +0000109F 4D dec bp +000010A0 2C2E sub al,0x2e +000010A2 2F das +000010A3 0000 add [bx+si],al +000010A5 0020 add [bx+si],ah +000010A7 0000 add [bx+si],al +000010A9 0000 add [bx+si],al +000010AB 0000 add [bx+si],al +000010AD 0000 add [bx+si],al +000010AF 0000 add [bx+si],al +000010B1 0000 add [bx+si],al +000010B3 0000 add [bx+si],al +000010B5 0000 add [bx+si],al +000010B7 0000 add [bx+si],al +000010B9 0000 add [bx+si],al +000010BB 0000 add [bx+si],al +000010BD 0000 add [bx+si],al +000010BF 0000 add [bx+si],al +000010C1 0000 add [bx+si],al +000010C3 0001 add [bx+di],al +000010C5 214023 and [bx+si+0x23],ax +000010C8 2425 and al,0x25 +000010CA 5E pop si +000010CB 262A28 sub ch,[es:bx+si] +000010CE 295F2B sub [bx+0x2b],bx +000010D1 0000 add [bx+si],al +000010D3 7177 jno 0x114c +000010D5 657274 gs jc 0x114c +000010D8 7975 jns 0x114f +000010DA 696F707B7D imul bp,[bx+0x70],word 0x7d7b +000010DF 0000 add [bx+si],al +000010E1 61 popa +000010E2 7364 jnc 0x1148 +000010E4 6667686A6B6C3A a32 push dword 0x3a6c6b6a +000010EB 227E00 and bh,[bp+0x0] +000010EE 7C7A jl 0x116a +000010F0 7863 js 0x1155 +000010F2 7662 jna 0x1156 +000010F4 6E outsb +000010F5 6D insw +000010F6 3C3E cmp al,0x3e +000010F8 3F aas +000010F9 0000 add [bx+si],al +000010FB 0020 add [bx+si],ah +000010FD 0000 add [bx+si],al +000010FF 0000 add [bx+si],al +00001101 0000 add [bx+si],al +00001103 0000 add [bx+si],al +00001105 0000 add [bx+si],al +00001107 0000 add [bx+si],al +00001109 0000 add [bx+si],al +0000110B 0000 add [bx+si],al +0000110D 0000 add [bx+si],al +0000110F 0000 add [bx+si],al +00001111 0000 add [bx+si],al +00001113 0000 add [bx+si],al +00001115 0000 add [bx+si],al +00001117 0000 add [bx+si],al +00001119 0001 add [bx+di],al +0000111B 214023 and [bx+si+0x23],ax +0000111E 2425 and al,0x25 +00001120 5E pop si +00001121 262A28 sub ch,[es:bx+si] +00001124 295F2B sub [bx+0x2b],bx +00001127 0000 add [bx+si],al +00001129 51 push cx +0000112A 57 push di +0000112B 45 inc bp +0000112C 52 push dx +0000112D 54 push sp +0000112E 59 pop cx +0000112F 55 push bp +00001130 49 dec cx +00001131 4F dec di +00001132 50 push ax +00001133 7B7D jpo 0x11b2 +00001135 0000 add [bx+si],al +00001137 41 inc cx +00001138 53 push bx +00001139 44 inc sp +0000113A 46 inc si +0000113B 47 inc di +0000113C 48 dec ax +0000113D 4A dec dx +0000113E 4B dec bx +0000113F 4C dec sp +00001140 3A22 cmp ah,[bp+si] +00001142 7E00 jng 0x1144 +00001144 7C5A jl 0x11a0 +00001146 58 pop ax +00001147 43 inc bx +00001148 56 push si +00001149 42 inc dx +0000114A 4E dec si +0000114B 4D dec bp +0000114C 3C3E cmp al,0x3e +0000114E 3F aas +0000114F 0000 add [bx+si],al +00001151 0020 add [bx+si],ah +00001153 0000 add [bx+si],al +00001155 0000 add [bx+si],al +00001157 0000 add [bx+si],al +00001159 0000 add [bx+si],al +0000115B 0000 add [bx+si],al +0000115D 0000 add [bx+si],al +0000115F 0000 add [bx+si],al +00001161 0000 add [bx+si],al +00001163 0000 add [bx+si],al +00001165 0000 add [bx+si],al +00001167 0000 add [bx+si],al +00001169 0000 add [bx+si],al +0000116B 0000 add [bx+si],al +0000116D 0000 add [bx+si],al +0000116F 42 inc dx +00001170 4F dec di +00001171 53 push bx +00001172 206B65 and [bp+di+0x65],ch +00001175 726E jc 0x11e5 +00001177 656C gs insb +00001179 3E0000 add [ds:bx+si],al +0000117C 0000 add [bx+si],al +0000117E 0000 add [bx+si],al +00001180 0000 add [bx+si],al +00001182 0000 add [bx+si],al +00001184 0000 add [bx+si],al +00001186 0000 add [bx+si],al +00001188 0000 add [bx+si],al +0000118A 0000 add [bx+si],al +0000118C 0000 add [bx+si],al +0000118E 0000 add [bx+si],al +00001190 0000 add [bx+si],al +00001192 0000 add [bx+si],al +00001194 0000 add [bx+si],al +00001196 0000 add [bx+si],al +00001198 0000 add [bx+si],al +0000119A 0000 add [bx+si],al +0000119C 0000 add [bx+si],al +0000119E 0000 add [bx+si],al +000011A0 0000 add [bx+si],al +000011A2 0000 add [bx+si],al +000011A4 0000 add [bx+si],al +000011A6 0000 add [bx+si],al +000011A8 0000 add [bx+si],al +000011AA 0000 add [bx+si],al +000011AC 0000 add [bx+si],al +000011AE 0000 add [bx+si],al +000011B0 0000 add [bx+si],al +000011B2 0000 add [bx+si],al +000011B4 0000 add [bx+si],al +000011B6 0000 add [bx+si],al +000011B8 0000 add [bx+si],al +000011BA 0000 add [bx+si],al +000011BC 0000 add [bx+si],al +000011BE 0000 add [bx+si],al +000011C0 0000 add [bx+si],al +000011C2 0000 add [bx+si],al +000011C4 0000 add [bx+si],al +000011C6 0000 add [bx+si],al +000011C8 0000 add [bx+si],al +000011CA 0000 add [bx+si],al +000011CC 0000 add [bx+si],al +000011CE 0000 add [bx+si],al +000011D0 0000 add [bx+si],al +000011D2 0000 add [bx+si],al +000011D4 0000 add [bx+si],al +000011D6 0000 add [bx+si],al +000011D8 0000 add [bx+si],al +000011DA 0000 add [bx+si],al +000011DC 0000 add [bx+si],al +000011DE 0000 add [bx+si],al +000011E0 0000 add [bx+si],al +000011E2 0000 add [bx+si],al +000011E4 0000 add [bx+si],al +000011E6 0000 add [bx+si],al +000011E8 0000 add [bx+si],al +000011EA 0000 add [bx+si],al +000011EC 0000 add [bx+si],al +000011EE 0000 add [bx+si],al +000011F0 0000 add [bx+si],al +000011F2 0000 add [bx+si],al +000011F4 0000 add [bx+si],al +000011F6 0000 add [bx+si],al +000011F8 0000 add [bx+si],al +000011FA 0000 add [bx+si],al +000011FC 0000 add [bx+si],al +000011FE 0000 add [bx+si],al +00001200 0000 add [bx+si],al +00001202 0000 add [bx+si],al +00001204 0000 add [bx+si],al +00001206 0000 add [bx+si],al +00001208 0000 add [bx+si],al +0000120A 0000 add [bx+si],al +0000120C 0000 add [bx+si],al +0000120E 0000 add [bx+si],al +00001210 0000 add [bx+si],al +00001212 0000 add [bx+si],al +00001214 0000 add [bx+si],al +00001216 0000 add [bx+si],al +00001218 0000 add [bx+si],al +0000121A 0000 add [bx+si],al +0000121C 0000 add [bx+si],al +0000121E 0000 add [bx+si],al +00001220 0000 add [bx+si],al +00001222 0000 add [bx+si],al +00001224 0000 add [bx+si],al +00001226 0000 add [bx+si],al +00001228 0000 add [bx+si],al +0000122A 0000 add [bx+si],al +0000122C 0000 add [bx+si],al +0000122E 0000 add [bx+si],al +00001230 0000 add [bx+si],al +00001232 0000 add [bx+si],al +00001234 0000 add [bx+si],al +00001236 0000 add [bx+si],al +00001238 0000 add [bx+si],al +0000123A 0000 add [bx+si],al +0000123C 0000 add [bx+si],al +0000123E 0000 add [bx+si],al +00001240 0000 add [bx+si],al +00001242 0000 add [bx+si],al +00001244 0000 add [bx+si],al +00001246 0000 add [bx+si],al +00001248 0000 add [bx+si],al +0000124A 0000 add [bx+si],al +0000124C 0000 add [bx+si],al +0000124E 0000 add [bx+si],al +00001250 0000 add [bx+si],al +00001252 0000 add [bx+si],al +00001254 0000 add [bx+si],al +00001256 0000 add [bx+si],al +00001258 0000 add [bx+si],al +0000125A 0000 add [bx+si],al +0000125C 0000 add [bx+si],al +0000125E 0000 add [bx+si],al +00001260 0000 add [bx+si],al +00001262 0000 add [bx+si],al +00001264 0000 add [bx+si],al +00001266 0000 add [bx+si],al +00001268 0000 add [bx+si],al +0000126A 0000 add [bx+si],al +0000126C 0000 add [bx+si],al +0000126E 0000 add [bx+si],al +00001270 0000 add [bx+si],al +00001272 0000 add [bx+si],al +00001274 0000 add [bx+si],al +00001276 0000 add [bx+si],al +00001278 0000 add [bx+si],al +0000127A C605B1 mov byte [di],0xb1 +0000127D 0D0100 or ax,0x1 +00001280 00E8 add al,ch +00001282 6D insw +00001283 FC cld +00001284 FF db 0xFF +00001285 FF db 0xFF +00001286 BE6F11 mov si,0x116f +00001289 0100 add [bx+si],ax +0000128B B30E mov bl,0xe +0000128D E81DF5 call 0x7ad +00001290 FF db 0xFF +00001291 FF db 0xFF +00001292 BF7B11 mov di,0x117b +00001295 0100 add [bx+si],ax +00001297 C3 ret +00001298 66B900006651 mov ecx,0x51660000 +0000129E 57 push di +0000129F E881FC call 0xf23 +000012A2 FF db 0xFF +000012A3 FF5F66 call far [bx+0x66] +000012A6 59 pop cx +000012A7 80FC1C cmp ah,0x1c +000012AA 741E jz 0x12ca +000012AC 80FC0E cmp ah,0xe +000012AF 741E jz 0x12cf +000012B1 3C00 cmp al,0x0 +000012B3 74E7 jz 0x129c +000012B5 6681F9FE0073E0 cmp ecx,0xe07300fe +000012BC AA stosb +000012BD 6641 inc ecx +000012BF 88C3 mov bl,al +000012C1 B707 mov bh,0x7 +000012C3 E886F4 call 0x74c +000012C6 FF db 0xFF +000012C7 FF db 0xFF +000012C8 EBD2 jmp short 0x129c +000012CA B000 mov al,0x0 +000012CC AA stosb +000012CD EB13 jmp short 0x12e2 +000012CF 6683F900 cmp ecx,byte +0x0 +000012D3 74C7 jz 0x129c +000012D5 4F dec di +000012D6 E850F4 call 0x729 +000012D9 FF db 0xFF +000012DA FF6649 jmp near [bp+0x49] +000012DD EBBD jmp short 0x129c +000012DF EBFE jmp short 0x12df +000012E1 C3 ret +000012E2 BE6513 mov si,0x1365 +000012E5 0100 add [bx+si],ax +000012E7 BF7B11 mov di,0x117b +000012EA 0100 add [bx+si],ax +000012EC BD0000 mov bp,0x0 +000012EF 0000 add [bx+si],al +000012F1 B90000 mov cx,0x0 +000012F4 0000 add [bx+si],al +000012F6 803EFF7442 cmp byte [0x74ff],0x42 +000012FB 803F20 cmp byte [bx],0x20 +000012FE 7407 jz 0x1307 +00001300 803F00 cmp byte [bx],0x0 +00001303 7402 jz 0x1307 +00001305 EB07 jmp short 0x130e +00001307 803E007512 cmp byte [0x7500],0x12 +0000130C EB1F jmp short 0x132d +0000130E 803E00740B cmp byte [0x7400],0xb +00001313 8A063A07 mov al,[0x73a] +00001317 7505 jnz 0x131e +00001319 46 inc si +0000131A 47 inc di +0000131B 41 inc cx +0000131C EBDD jmp short 0x12fb +0000131E 45 inc bp +0000131F BF7B11 mov di,0x117b +00001322 0100 add [bx+si],ax +00001324 46 inc si +00001325 803E0075FA cmp byte [0x7500],0xfa +0000132A 46 inc si +0000132B EBC4 jmp short 0x12f1 +0000132D 83F900 cmp cx,byte +0x0 +00001330 7409 jz 0x133b +00001332 C1E502 shl bp,0x2 +00001335 FF95C613 call near [di+0x13c6] +00001339 0100 add [bx+si],ax +0000133B EB07 jmp short 0x1344 +0000133D E8E900 call 0x1429 +00001340 0000 add [bx+si],al +00001342 EB00 jmp short 0x1344 +00001344 E8CCF4 call 0x813 +00001347 FF db 0xFF +00001348 FF db 0xFF +00001349 E8C7F4 call 0x813 +0000134C FF db 0xFF +0000134D FF db 0xFF +0000134E BE6F11 mov si,0x116f +00001351 0100 add [bx+si],ax +00001353 B30E mov bl,0xe +00001355 E855F4 call 0x7ad +00001358 FF db 0xFF +00001359 FF db 0xFF +0000135A BF7B11 mov di,0x117b +0000135D 0100 add [bx+si],ax +0000135F E934FF jmp 0x1296 +00001362 FF db 0xFF +00001363 FFC3 inc bx +00001365 7665 jna 0x13cc +00001367 7200 jc 0x1369 +00001369 68656C push word 0x6c65 +0000136C 7000 jo 0x136e +0000136E 3F aas +0000136F 006162 add [bx+di+0x62],ah +00001372 6F outsw +00001373 7574 jnz 0x13e9 +00001375 00636C add [bp+di+0x6c],ah +00001378 7300 jnc 0x137a +0000137A 636C72 arpl [si+0x72],bp +0000137D 7363 jnc 0x13e2 +0000137F 7200 jc 0x1381 +00001381 6C insb +00001382 6963656E63 imul sp,[bp+di+0x65],word 0x636e +00001387 65007265 add [gs:bp+si+0x65],dh +0000138B 626F6F bound bp,[bx+0x6f] +0000138E 7400 jz 0x1390 +00001390 6D insw +00001391 656E gs outsb +00001393 7500 jnz 0x1395 +00001395 7265 jc 0x13fc +00001397 6764756D fs a32 jnz 0x1408 +0000139B 7000 jo 0x139d +0000139D 7469 jz 0x1408 +0000139F 6D insw +000013A0 65006461 add [gs:si+0x61],ah +000013A4 7465 jz 0x140b +000013A6 006465 add [si+0x65],ah +000013A9 6C insb +000013AA 61 popa +000013AB 7900 jns 0x13ad +000013AD 7667 jna 0x1416 +000013AF 61 popa +000013B0 7465 jz 0x1417 +000013B2 7374 jnc 0x1428 +000013B4 006D65 add [di+0x65],ch +000013B7 6D insw +000013B8 7465 jz 0x141f +000013BA 7374 jnc 0x1430 +000013BC 006664 add [bp+0x64],ah +000013BF 647465 fs jz 0x1427 +000013C2 7374 jnc 0x1438 +000013C4 00FF add bh,bh +000013C6 7314 jnc 0x13dc +000013C8 0100 add [bx+si],ax +000013CA D516 aad 0x16 +000013CC 0100 add [bx+si],ax +000013CE D516 aad 0x16 +000013D0 0100 add [bx+si],ax +000013D2 7518 jnz 0x13ec +000013D4 0100 add [bx+si],ax +000013D6 8818 mov [bx+si],bl +000013D8 0100 add [bx+si],ax +000013DA 8818 mov [bx+si],bl +000013DC 0100 add [bx+si],ax +000013DE A31801 mov [0x118],ax +000013E1 00A41801 add [si+0x118],ah +000013E5 00EC add ah,ch +000013E7 1D0100 sbb ax,0x1 +000013EA 812B0100 sub word [bp+di],0x1 +000013EE AC lodsb +000013EF 3001 xor [bx+di],al +000013F1 001C add [si],bl +000013F3 3001 xor [bx+di],al +000013F5 00C8 add al,cl +000013F7 1801 sbb [bx+di],al +000013F9 00FA add dl,bh +000013FB 1801 sbb [bx+di],al +000013FD 00C4 add ah,al +000013FF 1B01 sbb ax,[bx+di] +00001401 0020 add [bx+si],ah +00001403 1A01 sbb al,[bx+di] +00001405 000D add [di],cl +00001407 0A4E6F or cl,[bp+0x6f] +0000140A 207375 and [bp+di+0x75],dh +0000140D 636820 arpl [bx+si+0x20],bp +00001410 636F6D arpl [bx+0x6d],bp +00001413 6D insw +00001414 61 popa +00001415 6E outsb +00001416 64206F72 and [fs:bx+0x72],ch +0000141A 207072 and [bx+si+0x72],dh +0000141D 6F outsw +0000141E 677261 a32 jc 0x1482 +00001421 6D insw +00001422 206578 and [di+0x78],ah +00001425 697374732E imul si,[bp+di+0x74],word 0x2e73 +0000142A 005666 add [bp+0x66],dl +0000142D 53 push bx +0000142E BE0614 mov si,0x1406 +00001431 0100 add [bx+si],ax +00001433 B304 mov bl,0x4 +00001435 E875F3 call 0x7ad +00001438 FF db 0xFF +00001439 FF665B jmp near [bp+0x5b] +0000143C 5E pop si +0000143D C3 ret +0000143E 0D0A42 or ax,0x420a +00001441 4F dec di +00001442 53 push bx +00001443 207665 and [bp+0x65],dh +00001446 7273 jc 0x14bb +00001448 696F6E2030 imul bp,[bx+0x6e],word 0x3020 +0000144D 2E3034 xor [cs:si],dh +00001450 206279 and [bp+si+0x79],ah +00001453 204368 and [bp+di+0x68],al +00001456 7269 jc 0x14c1 +00001458 7374 jnc 0x14ce +0000145A 6F outsw +0000145B 6666657220 gs o32 jc 0x1480 +00001460 42 inc dx +00001461 7562 jnz 0x14c5 +00001463 61 popa +00001464 63682C arpl [bx+si+0x2c],bp +00001467 2032 and [bp+si],dh +00001469 3030 xor [bx+si],dh +0000146B 332D xor bp,[di] +0000146D 3230 xor dh,[bx+si] +0000146F 3035 xor [di],dh +00001471 2E005666 add [cs:bp+0x66],dl +00001475 53 push bx +00001476 BE3E14 mov si,0x143e +00001479 0100 add [bx+si],ax +0000147B B307 mov bl,0x7 +0000147D E82DF3 call 0x7ad +00001480 FF db 0xFF +00001481 FF665B jmp near [bp+0x5b] +00001484 5E pop si +00001485 C3 ret +00001486 0D0A0D or ax,0xd0a +00001489 0A20 or ah,[bx+si] +0000148B 42 inc dx +0000148C 4F dec di +0000148D 53 push bx +0000148E 2030 and [bx+si],dh +00001490 2E3034 xor [cs:si],dh +00001493 206279 and [bp+si+0x79],ah +00001496 204368 and [bp+di+0x68],al +00001499 7269 jc 0x1504 +0000149B 7374 jnc 0x1511 +0000149D 6F outsw +0000149E 6666657220 gs o32 jc 0x14c3 +000014A3 42 inc dx +000014A4 7562 jnz 0x1508 +000014A6 61 popa +000014A7 63682C arpl [bx+si+0x2c],bp +000014AA 2032 and [bp+si],dh +000014AC 3030 xor [bx+si],dh +000014AE 332D xor bp,[di] +000014B0 3230 xor dh,[bx+si] +000014B2 3035 xor [di],dh +000014B4 2E0D0A2D cs or ax,0x2d0a +000014B8 2D2D2D sub ax,0x2d2d +000014BB 2D2D2D sub ax,0x2d2d +000014BE 2D2D2D sub ax,0x2d2d +000014C1 2D2D2D sub ax,0x2d2d +000014C4 2D2D2D sub ax,0x2d2d +000014C7 2D2D2D sub ax,0x2d2d +000014CA 2D2D2D sub ax,0x2d2d +000014CD 2D2D2D sub ax,0x2d2d +000014D0 2D2D2D sub ax,0x2d2d +000014D3 2D2D2D sub ax,0x2d2d +000014D6 2D2D2D sub ax,0x2d2d +000014D9 2D2D2D sub ax,0x2d2d +000014DC 2D2D2D sub ax,0x2d2d +000014DF 2D2D2D sub ax,0x2d2d +000014E2 2D0D0A sub ax,0xa0d +000014E5 54 push sp +000014E6 7970 jns 0x1558 +000014E8 65206120 and [gs:bx+di+0x20],ah +000014EC 636F6D arpl [bx+0x6d],bp +000014EF 6D insw +000014F0 61 popa +000014F1 6E outsb +000014F2 6420616E and [fs:bx+di+0x6e],ah +000014F6 64207072 and [fs:bx+si+0x72],dh +000014FA 657373 gs jnc 0x1570 +000014FD 20454E and [di+0x4e],al +00001500 54 push sp +00001501 45 inc bp +00001502 52 push dx +00001503 20746F and [si+0x6f],dh +00001506 206578 and [di+0x78],ah +00001509 65637574 arpl [gs:di+0x74],si +0000150D 65206974 and [gs:bx+di+0x74],ch +00001511 2E0D0A56 cs or ax,0x560a +00001515 61 popa +00001516 6C insb +00001517 696420636F imul sp,[si+0x20],word 0x6f63 +0000151C 6D insw +0000151D 6D insw +0000151E 61 popa +0000151F 6E outsb +00001520 647320 fs jnc 0x1543 +00001523 61 popa +00001524 7265 jc 0x158b +00001526 3A0D cmp cl,[di] +00001528 0A0D or cl,[di] +0000152A 0A22 or ah,[bp+si] +0000152C 68656C push word 0x6c65 +0000152F 7022 jo 0x1553 +00001531 206F72 and [bx+0x72],ch +00001534 2022 and [bp+si],ah +00001536 3F aas +00001537 2220 and ah,[bx+si] +00001539 2020 and [bx+si],ah +0000153B 2020 and [bx+si],ah +0000153D 2020 and [bx+si],ah +0000153F 2D2044 sub ax,0x4420 +00001542 6973706C61 imul si,[bp+di+0x70],word 0x616c +00001547 7973 jns 0x15bc +00001549 207468 and [si+0x68],dh +0000154C 6973207465 imul si,[bp+di+0x20],word 0x6574 +00001551 7874 js 0x15c7 +00001553 2E0D0A22 cs or ax,0x220a +00001557 7665 jna 0x15be +00001559 7222 jc 0x157d +0000155B 2020 and [bx+si],ah +0000155D 2020 and [bx+si],ah +0000155F 2020 and [bx+si],ah +00001561 2020 and [bx+si],ah +00001563 2020 and [bx+si],ah +00001565 2020 and [bx+si],ah +00001567 2020 and [bx+si],ah +00001569 202D and [di],ch +0000156B 205368 and [bp+di+0x68],dl +0000156E 6F outsw +0000156F 7773 ja 0x15e4 +00001571 207665 and [bp+0x65],dh +00001574 7273 jc 0x15e9 +00001576 696F6E2069 imul bp,[bx+0x6e],word 0x6920 +0000157B 6E outsb +0000157C 666F outsd +0000157E 726D jc 0x15ed +00001580 61 popa +00001581 7469 jz 0x15ec +00001583 6F outsw +00001584 6E outsb +00001585 2E0D0A22 cs or ax,0x220a +00001589 61 popa +0000158A 626F75 bound bp,[bx+0x75] +0000158D 7422 jz 0x15b1 +0000158F 2020 and [bx+si],ah +00001591 2020 and [bx+si],ah +00001593 2020 and [bx+si],ah +00001595 2020 and [bx+si],ah +00001597 2020 and [bx+si],ah +00001599 2020 and [bx+si],ah +0000159B 202D and [di],ch +0000159D 205368 and [bp+di+0x68],dl +000015A0 6F outsw +000015A1 7773 ja 0x1616 +000015A3 20696E and [bx+di+0x6e],ch +000015A6 666F outsd +000015A8 726D jc 0x1617 +000015AA 61 popa +000015AB 7469 jz 0x1616 +000015AD 6F outsw +000015AE 6E outsb +000015AF 206162 and [bx+di+0x62],ah +000015B2 6F outsw +000015B3 7574 jnz 0x1629 +000015B5 207468 and [si+0x68],dh +000015B8 65204F53 and [gs:bx+0x53],cl +000015BC 2E0D0A22 cs or ax,0x220a +000015C0 636C73 arpl [si+0x73],bp +000015C3 2220 and ah,[bx+si] +000015C5 6F outsw +000015C6 7220 jc 0x15e8 +000015C8 22636C and ah,[bp+di+0x6c] +000015CB 7273 jc 0x1640 +000015CD 637222 arpl [bp+si+0x22],si +000015D0 2020 and [bx+si],ah +000015D2 202D and [di],ch +000015D4 20436C and [bp+di+0x6c],al +000015D7 6561 gs popa +000015D9 7273 jc 0x164e +000015DB 207468 and [si+0x68],dh +000015DE 65207363 and [gs:bp+di+0x63],dh +000015E2 7265 jc 0x1649 +000015E4 656E gs outsb +000015E6 2E0D0A2A cs or ax,0x2a0a +000015EA 2022 and [bp+si],ah +000015EC 6C insb +000015ED 6963656E63 imul sp,[bp+di+0x65],word 0x636e +000015F2 652220 and ah,[gs:bx+si] +000015F5 2020 and [bx+si],ah +000015F7 2020 and [bx+si],ah +000015F9 2020 and [bx+si],ah +000015FB 2020 and [bx+si],ah +000015FD 2D2053 sub ax,0x5320 +00001600 686F77 push word 0x776f +00001603 7320 jnc 0x1625 +00001605 42 inc dx +00001606 4F dec di +00001607 53 push bx +00001608 206C69 and [si+0x69],ch +0000160B 63656E arpl [di+0x6e],sp +0000160E 63652E arpl [di+0x2e],sp +00001611 0D0A2A or ax,0x2a0a +00001614 2022 and [bp+si],ah +00001616 6D insw +00001617 656E gs outsb +00001619 7522 jnz 0x163d +0000161B 2020 and [bx+si],ah +0000161D 2020 and [bx+si],ah +0000161F 2020 and [bx+si],ah +00001621 2020 and [bx+si],ah +00001623 2020 and [bx+si],ah +00001625 2020 and [bx+si],ah +00001627 2D2042 sub ax,0x4220 +0000162A 4F dec di +0000162B 53 push bx +0000162C 207379 and [bp+di+0x79],dh +0000162F 7374 jnc 0x16a5 +00001631 656D gs insw +00001633 206D65 and [di+0x65],ch +00001636 6E outsb +00001637 752E jnz 0x1667 +00001639 0D0A22 or ax,0x220a +0000163C 7265 jc 0x16a3 +0000163E 6764756D fs a32 jnz 0x16af +00001642 7022 jo 0x1666 +00001644 2020 and [bx+si],ah +00001646 2020 and [bx+si],ah +00001648 2020 and [bx+si],ah +0000164A 2020 and [bx+si],ah +0000164C 2020 and [bx+si],ah +0000164E 202D and [di],ch +00001650 204475 and [si+0x75],al +00001653 6D insw +00001654 7020 jo 0x1676 +00001656 736F jnc 0x16c7 +00001658 6D insw +00001659 65207374 and [gs:bp+di+0x74],dh +0000165D 61 popa +0000165E 6E outsb +0000165F 6461 fs popa +00001661 7264 jc 0x16c7 +00001663 207265 and [bp+si+0x65],dh +00001666 676973746572 imul si,[ebx+0x74],word 0x7265 +0000166C 732E jnc 0x169c +0000166E 0D0A22 or ax,0x220a +00001671 7265 jc 0x16d8 +00001673 626F6F bound bp,[bx+0x6f] +00001676 7422 jz 0x169a +00001678 2020 and [bx+si],ah +0000167A 2020 and [bx+si],ah +0000167C 2020 and [bx+si],ah +0000167E 2020 and [bx+si],ah +00001680 2020 and [bx+si],ah +00001682 2020 and [bx+si],ah +00001684 2D2052 sub ax,0x5220 +00001687 657374 gs jnc 0x16fe +0000168A 61 popa +0000168B 7274 jc 0x1701 +0000168D 7320 jnc 0x16af +0000168F 7468 jz 0x16f9 +00001691 6520636F and [gs:bp+di+0x6f],ah +00001695 6D insw +00001696 7075 jo 0x170d +00001698 7465 jz 0x16ff +0000169A 722E jc 0x16ca +0000169C 0D0A0D or ax,0xd0a +0000169F 0A416C or al,[bx+di+0x6c] +000016A2 6C insb +000016A3 20636F and [bp+di+0x6f],ah +000016A6 6D insw +000016A7 6D insw +000016A8 61 popa +000016A9 6E outsb +000016AA 647320 fs jnc 0x16cd +000016AD 7769 ja 0x1718 +000016AF 7468 jz 0x1719 +000016B1 206120 and [bx+di+0x20],ah +000016B4 2A20 sub ah,[bx+si] +000016B6 696E206672 imul bp,[bp+0x20],word 0x7266 +000016BB 6F outsw +000016BC 6E outsb +000016BD 7420 jz 0x16df +000016BF 6973206E6F imul si,[bp+di+0x20],word 0x6f6e +000016C4 7420 jz 0x16e6 +000016C6 636F6D arpl [bx+0x6d],bp +000016C9 706C jo 0x1737 +000016CB 657465 gs jz 0x1733 +000016CE 64207965 and [fs:bx+di+0x65],bh +000016D2 742E jz 0x1702 +000016D4 005666 add [bp+0x66],dl +000016D7 53 push bx +000016D8 BE8614 mov si,0x1486 +000016DB 0100 add [bx+si],ax +000016DD B307 mov bl,0x7 +000016DF E8CBF0 call 0x7ad +000016E2 FF db 0xFF +000016E3 FF665B jmp near [bp+0x5b] +000016E6 5E pop si +000016E7 C3 ret +000016E8 0D0A41 or ax,0x410a +000016EB 626F75 bound bp,[bx+0x75] +000016EE 7420 jz 0x1710 +000016F0 42 inc dx +000016F1 4F dec di +000016F2 53 push bx +000016F3 0D0A48 or ax,0x480a +000016F6 6D insw +000016F7 6D insw +000016F8 2E2E204920 and [cs:bx+di+0x20],cl +000016FD 7374 jnc 0x1773 +000016FF 61 popa +00001700 7274 jc 0x1776 +00001702 6564207769 and [fs:bx+0x69],dh +00001707 7468 jz 0x1771 +00001709 204F53 and [bx+0x53],cl +0000170C 2D6465 sub ax,0x6564 +0000170F 7620 jna 0x1731 +00001711 696E206C61 imul bp,[bp+0x20],word 0x616c +00001716 7465 jz 0x177d +00001718 2032 and [bp+si],dh +0000171A 3030 xor [bx+si],dh +0000171C 332E2E20 xor bp,[0x202e] +00001720 41 inc cx +00001721 6E outsb +00001722 7977 jns 0x179b +00001724 61 popa +00001725 792E jns 0x1755 +00001727 2E0D0A0D cs or ax,0xd0a +0000172B 0A5468 or dl,[si+0x68] +0000172E 61 popa +0000172F 6E outsb +00001730 6B732066 imul si,[bp+di+0x20],byte +0x66 +00001734 6F outsw +00001735 7220 jc 0x1757 +00001737 68656C push word 0x6c65 +0000173A 7069 jo 0x17a5 +0000173C 6E outsb +0000173D 67206D65 and [ebp+0x65],ch +00001741 206765 and [bx+0x65],ah +00001744 7420 jz 0x1766 +00001746 7468 jz 0x17b0 +00001748 6973206661 imul si,[bp+di+0x20],word 0x6166 +0000174D 7220 jc 0x176f +0000174F 676F a32 outsw +00001751 657320 gs jnc 0x1774 +00001754 746F jz 0x17c5 +00001756 3A0D cmp cl,[di] +00001758 0A616C or ah,[bx+di+0x6c] +0000175B 6C insb +0000175C 207065 and [bx+si+0x65],dh +0000175F 6F outsw +00001760 706C jo 0x17ce +00001762 65206174 and [gs:bx+di+0x74],ah +00001766 206D65 and [di+0x65],ch +00001769 6761 a32 popa +0000176B 2D746F sub ax,0x6f74 +0000176E 6B796F2E imul di,[bx+di+0x6f],byte +0x2e +00001772 636F6D arpl [bx+0x6d],bp +00001775 2C20 sub al,0x20 +00001777 6F outsw +00001778 7364 jnc 0x17de +0000177A 657665 gs jna 0x17e2 +0000177D 722E jc 0x17ad +0000177F 6E outsb +00001780 657420 gs jz 0x17a3 +00001783 61 popa +00001784 6E outsb +00001785 6420666C and [fs:bp+0x6c],ah +00001789 61 popa +0000178A 7461 jz 0x17ed +0000178C 7373 jnc 0x1801 +0000178E 656D gs insw +00001790 626C65 bound bp,[si+0x65] +00001793 722E jc 0x17c3 +00001795 6E outsb +00001796 65740D gs jz 0x17a6 +00001799 0A526F or dl,[bp+si+0x6f] +0000179C 626572 bound sp,[di+0x72] +0000179F 7420 jz 0x17c1 +000017A1 99 cwd +000017A2 7374 jnc 0x1818 +000017A4 6C insb +000017A5 696E672066 imul bp,[bp+0x67],word 0x6620 +000017AA 6F outsw +000017AB 7220 jc 0x17cd +000017AD 50 push ax +000017AE 7269 jc 0x1819 +000017B0 6D insw +000017B1 756C jnz 0x181f +000017B3 61 popa +000017B4 2C20 sub al,0x20 +000017B6 687474 push word 0x7474 +000017B9 703A jo 0x17f5 +000017BB 2F das +000017BC 2F das +000017BD 6F outsw +000017BE 7374 jnc 0x1834 +000017C0 6C insb +000017C1 696E672E6E imul bp,[bp+0x67],word 0x6e2e +000017C6 6F outsw +000017C7 2D6970 sub ax,0x7069 +000017CA 2E636F6D arpl [cs:bx+0x6d],bp +000017CE 2F das +000017CF 0D0A4A or ax,0x4a0a +000017D2 2E54 cs push sp +000017D4 68696D push word 0x6d69 +000017D7 20666F and [bp+0x6f],ah +000017DA 7220 jc 0x17fc +000017DC 45 inc bp +000017DD 656C gs insb +000017DF 4F dec di +000017E0 53 push bx +000017E1 2C20 sub al,0x20 +000017E3 687474 push word 0x7474 +000017E6 703A jo 0x1822 +000017E8 2F das +000017E9 2F das +000017EA 7777 ja 0x1863 +000017EC 772E ja 0x181c +000017EE 6C insb +000017EF 7564 jnz 0x1855 +000017F1 642E6C cs insb +000017F4 7574 jnz 0x186a +000017F6 682E73 push word 0x732e +000017F9 652F gs das +000017FB 7E69 jng 0x1866 +000017FD 7669 jna 0x1868 +000017FF 6C insb +00001800 65656C gs insb +00001803 2F das +00001804 0D0A54 or ax,0x540a +00001807 6F outsw +00001808 6D insw +00001809 61 popa +0000180A 737A jnc 0x1886 +0000180C 204772 and [bx+0x72],al +0000180F 7973 jns 0x1884 +00001811 7A74 jpe 0x1887 +00001813 61 popa +00001814 7220 jc 0x1836 +00001816 666F outsd +00001818 7220 jc 0x183a +0000181A 6661 popad +0000181C 736D jnc 0x188b +0000181E 20616E and [bx+di+0x6e],ah +00001821 64206661 and [fs:bp+0x61],ah +00001825 736D jnc 0x1894 +00001827 772C ja 0x1855 +00001829 206874 and [bx+si+0x74],ch +0000182C 7470 jz 0x189e +0000182E 3A2F cmp ch,[bx] +00001830 2F das +00001831 666C o32 insb +00001833 61 popa +00001834 7461 jz 0x1897 +00001836 7373 jnc 0x18ab +00001838 656D gs insw +0000183A 626C65 bound bp,[si+0x65] +0000183D 722E jc 0x186d +0000183F 6E outsb +00001840 65742F gs jz 0x1872 +00001843 0D0A41 or ax,0x410a +00001846 53 push bx +00001847 48 dec ax +00001848 4C dec sp +00001849 45 inc bp +0000184A 59 pop cx +0000184B 342C xor al,0x2c +0000184D 204361 and [bp+di+0x61],al +00001850 6E outsb +00001851 64792C fs jns 0x1880 +00001854 204A6F and [bp+si+0x6f],cl +00001857 686E20 push word 0x206e +0000185A 53 push bx +0000185B 2E204669 and [cs:bp+0x69],al +0000185F 6E outsb +00001860 6520616E and [gs:bx+di+0x6e],ah +00001864 64205065 and [fs:bx+si+0x65],dl +00001868 7472 jz 0x18dc +0000186A 6F outsw +0000186B 6666204865 o32 and [bx+si+0x65],cl +00001870 726F jc 0x18e1 +00001872 6A2E push byte +0x2e +00001874 005666 add [bp+0x66],dl +00001877 53 push bx +00001878 BEE816 mov si,0x16e8 +0000187B 0100 add [bx+si],ax +0000187D B307 mov bl,0x7 +0000187F E82BEF call 0x7ad +00001882 FF db 0xFF +00001883 FF665B jmp near [bp+0x5b] +00001886 5E pop si +00001887 C3 ret +00001888 E8C2ED call 0x64d +0000188B FF db 0xFF +0000188C FF db 0xFF +0000188D BE6F11 mov si,0x116f +00001890 0100 add [bx+si],ax +00001892 B30E mov bl,0xe +00001894 E816EF call 0x7ad +00001897 FF db 0xFF +00001898 FF db 0xFF +00001899 BF7B11 mov di,0x117b +0000189C 0100 add [bx+si],ax +0000189E E9F5F9 jmp 0x1296 +000018A1 FF db 0xFF +000018A2 FFC3 inc bx +000018A4 E869F6 call 0xf10 +000018A7 FF db 0xFF +000018A8 FFB0FEE6 push word [bx+si+0xe6fe] +000018AC 64EBFE fs jmp short 0x18ad +000018AF C3 ret +000018B0 0D0A7E or ax,0x7e0a +000018B3 3120 xor [bx+si],sp +000018B5 7365 jnc 0x191c +000018B7 636F6E arpl [bx+0x6e],bp +000018BA 64206861 and [fs:bx+si+0x61],ch +000018BE 7320 jnc 0x18e0 +000018C0 7061 jo 0x1923 +000018C2 7373 jnc 0x1937 +000018C4 65642E00B90500 add [cs:bx+di+0x5],bh +000018CB 0000 add [bx+si],al +000018CD 51 push cx +000018CE B96400 mov cx,0x64 +000018D1 0000 add [bx+si],al +000018D3 E8AD19 call 0x3283 +000018D6 0000 add [bx+si],al +000018D8 59 pop cx +000018D9 BEB018 mov si,0x18b0 +000018DC 0100 add [bx+si],ax +000018DE B307 mov bl,0x7 +000018E0 E8CAEE call 0x7ad +000018E3 FF db 0xFF +000018E4 FFE2 jmp dx +000018E6 E6C3 out 0xc3,al +000018E8 0D0A49 or ax,0x490a +000018EB 7420 jz 0x190d +000018ED 776F ja 0x195e +000018EF 726B jc 0x195c +000018F1 732E jnc 0x1921 +000018F3 2E2120 and [cs:bx+si],sp +000018F6 3A2D cmp ch,[di] +000018F8 44 inc sp +000018F9 0066B8 add [bp-0x48],ah +000018FC 0100 add [bx+si],ax +000018FE E8BF1C call 0x35c0 +00001901 0000 add [bx+si],al +00001903 66B900016689 mov ecx,0x89660100 +00001909 CB retf +0000190A 88C8 mov al,cl +0000190C 6651 push ecx +0000190E 66B93200E8C9 mov ecx,0xc9e80032 +00001914 1C00 sbb al,0x0 +00001916 006659 add [bp+0x59],ah +00001919 E2EC loop 0x1907 +0000191B BEF13B mov si,0x3bf1 +0000191E 0100 add [bx+si],ax +00001920 66B8040166BB mov eax,0xbb660104 +00001926 A800 test al,0x0 +00001928 66B9140066BA mov ecx,0xba660014 +0000192E 1200 adc al,[bx+si] +00001930 E8D41C call 0x3607 +00001933 0000 add [bx+si],al +00001935 BE6D3D mov si,0x3d6d +00001938 0100 add [bx+si],ax +0000193A 66B8FA0066BB mov eax,0xbb6600fa +00001940 BA0066 mov dx,0x6600 +00001943 B91400 mov cx,0x14 +00001946 66BA0E00E8BA mov edx,0xbae8000e +0000194C 1C00 sbb al,0x0 +0000194E 00BE853E add [bp+0x3e85],bh +00001952 0100 add [bx+si],ax +00001954 66B8090166BB mov eax,0xbb660109 +0000195A BA0066 mov dx,0x6600 +0000195D B91400 mov cx,0x14 +00001960 66BA0E00E8A0 mov edx,0xa0e8000e +00001966 1C00 sbb al,0x0 +00001968 00BE9D3F add [bp+0x3f9d],bh +0000196C 0100 add [bx+si],ax +0000196E 66B8180166BB mov eax,0xbb660118 +00001974 BA0066 mov dx,0x6600 +00001977 B91400 mov cx,0x14 +0000197A 66BA0E00E886 mov edx,0x86e8000e +00001980 1C00 sbb al,0x0 +00001982 00BEB540 add [bp+0x40b5],bh +00001986 0100 add [bx+si],ax +00001988 66B8180166BB mov eax,0xbb660118 +0000198E AC lodsb +0000198F 0066B9 add [bp-0x47],ah +00001992 1400 adc al,0x0 +00001994 66BA0E00E86C mov edx,0x6ce8000e +0000199A 1C00 sbb al,0x0 +0000199C 00BE6D3D add [bp+0x3d6d],bh +000019A0 0100 add [bx+si],ax +000019A2 66B8180166BB mov eax,0xbb660118 +000019A8 9E sahf +000019A9 0066B9 add [bp-0x47],ah +000019AC 1400 adc al,0x0 +000019AE 66BA0E00E852 mov edx,0x52e8000e +000019B4 1C00 sbb al,0x0 +000019B6 00BECD41 add [bp+0x41cd],bh +000019BA 0100 add [bx+si],ax +000019BC 66B82C0166BB mov eax,0xbb66012c +000019C2 BA0066 mov dx,0x6600 +000019C5 B91400 mov cx,0x14 +000019C8 66BA0E00E838 mov edx,0x38e8000e +000019CE 1C00 sbb al,0x0 +000019D0 00BECD41 add [bp+0x41cd],bh +000019D4 0100 add [bx+si],ax +000019D6 66B82C0166BB mov eax,0xbb66012c +000019DC AC lodsb +000019DD 0066B9 add [bp-0x47],ah +000019E0 1400 adc al,0x0 +000019E2 66BA0E00E81E mov edx,0x1ee8000e +000019E8 1C00 sbb al,0x0 +000019EA 00BE853E add [bp+0x3e85],bh +000019EE 0100 add [bx+si],ax +000019F0 66B82C0166BB mov eax,0xbb66012c +000019F6 9E sahf +000019F7 0066B9 add [bp-0x47],ah +000019FA 1400 adc al,0x0 +000019FC 66BA0E00E804 mov edx,0x4e8000e +00001A02 1C00 sbb al,0x0 +00001A04 00E8 add al,ch +00001A06 B7F5 mov bh,0xf5 +00001A08 FF db 0xFF +00001A09 FF66B8 jmp near [bp-0x48] +00001A0C 0100 add [bx+si],ax +00001A0E E89D1B call 0x35ae +00001A11 0000 add [bx+si],al +00001A13 BEE818 mov si,0x18e8 +00001A16 0100 add [bx+si],ax +00001A18 B301 mov bl,0x1 +00001A1A E890ED call 0x7ad +00001A1D FF db 0xFF +00001A1E FFC3 inc bx +00001A20 B30D mov bl,0xd +00001A22 B707 mov bh,0x7 +00001A24 E825ED call 0x74c +00001A27 FF db 0xFF +00001A28 FF db 0xFF +00001A29 B90002 mov cx,0x200 +00001A2C 0000 add [bx+si],al +00001A2E BF0000 mov di,0x0 +00001A31 0800 or [bx+si],al +00001A33 C7077765 mov word [bx],0x6577 +00001A37 61 popa +00001A38 6883C7 push word 0xc783 +00001A3B 0483 add al,0x83 +00001A3D E90483 jmp 0x9d44 +00001A40 F9 stc +00001A41 0075EF add [di-0x11],dh +00001A44 B600 mov dh,0x0 +00001A46 B200 mov dl,0x0 +00001A48 B500 mov ch,0x0 +00001A4A B103 mov cl,0x3 +00001A4C B301 mov bl,0x1 +00001A4E E82D20 call 0x3a7e +00001A51 0000 add [bx+si],al +00001A53 7248 jc 0x1a9d +00001A55 B90002 mov cx,0x200 +00001A58 0000 add [bx+si],al +00001A5A BF0000 mov di,0x0 +00001A5D 0800 or [bx+si],al +00001A5F C7077368 mov word [bx],0x6873 +00001A63 697483C704 imul si,[si-0x7d],word 0x4c7 +00001A68 83E904 sub cx,byte +0x4 +00001A6B 83F900 cmp cx,byte +0x0 +00001A6E 75EF jnz 0x1a5f +00001A70 B600 mov dh,0x0 +00001A72 B200 mov dl,0x0 +00001A74 B500 mov ch,0x0 +00001A76 B103 mov cl,0x3 +00001A78 B300 mov bl,0x0 +00001A7A E80120 call 0x3a7e +00001A7D 0000 add [bx+si],al +00001A7F 721C jc 0x1a9d +00001A81 BE0000 mov si,0x0 +00001A84 0800 or [bx+si],al +00001A86 B90002 mov cx,0x200 +00001A89 0000 add [bx+si],al +00001A8B AC lodsb +00001A8C 88C3 mov bl,al +00001A8E B707 mov bh,0x7 +00001A90 E8B9EC call 0x74c +00001A93 FF db 0xFF +00001A94 FF4983 dec word [bx+di-0x7d] +00001A97 F9 stc +00001A98 0075F0 add [di-0x10],dh +00001A9B EB21 jmp short 0x1abe +00001A9D B30D mov bl,0xd +00001A9F E8AAEC call 0x74c +00001AA2 FF db 0xFF +00001AA3 FFB30AE8 push word [bp+di+0xe80a] +00001AA7 A3ECFF mov [0xffec],ax +00001AAA FFB740B3 push word [bx+0xb340] +00001AAE 45 inc bp +00001AAF E89AEC call 0x74c +00001AB2 FF db 0xFF +00001AB3 FF db 0xFF +00001AB4 E8AC1E call 0x3963 +00001AB7 0000 add [bx+si],al +00001AB9 E8621F call 0x3a1e +00001ABC 0000 add [bx+si],al +00001ABE C3 ret +00001ABF 0D0A50 or ax,0x500a +00001AC2 657266 gs jc 0x1b2b +00001AC5 6F outsw +00001AC6 726D jc 0x1b35 +00001AC8 696E67206D imul bp,[bp+0x67],word 0x6d20 +00001ACD 656D gs insw +00001ACF 6F outsw +00001AD0 7279 jc 0x1b4b +00001AD2 207465 and [si+0x65],dh +00001AD5 7374 jnc 0x1b4b +00001AD7 2E000D add [cs:di],cl +00001ADA 0A546F or dl,[si+0x6f] +00001ADD 7461 jz 0x1b40 +00001ADF 6C insb +00001AE0 20696E and [bx+di+0x6e],ch +00001AE3 7374 jnc 0x1b59 +00001AE5 61 popa +00001AE6 6C insb +00001AE7 6C insb +00001AE8 6564206D65 and [fs:di+0x65],ch +00001AED 6D insw +00001AEE 6F outsw +00001AEF 7279 jc 0x1b6a +00001AF1 2028 and [bx+si],ch +00001AF3 696E206279 imul bp,[bp+0x20],word 0x7962 +00001AF8 7465 jz 0x1b5f +00001AFA 7329 jnc 0x1b25 +00001AFC 3A20 cmp ah,[bx+si] +00001AFE 000D add [di],cl +00001B00 0A0D or cl,[di] +00001B02 0A4D65 or cl,[di+0x65] +00001B05 6D insw +00001B06 6F outsw +00001B07 7279 jc 0x1b82 +00001B09 206368 and [bp+di+0x68],ah +00001B0C 756E jnz 0x1b7c +00001B0E 6B733A00 imul si,[bp+di+0x3a],byte +0x0 +00001B12 0D0A41 or ax,0x410a +00001B15 64647265 fs jc 0x1b7e +00001B19 7373 jnc 0x1b8e +00001B1B 2020 and [bx+si],ah +00001B1D 2020 and [bx+si],ah +00001B1F 53 push bx +00001B20 697A652020 imul di,[bp+si+0x65],word 0x2020 +00001B25 2020 and [bx+si],ah +00001B27 2020 and [bx+si],ah +00001B29 205479 and [si+0x79],dl +00001B2C 7065 jo 0x1b93 +00001B2E 2020 and [bx+si],ah +00001B30 2020 and [bx+si],ah +00001B32 2020 and [bx+si],ah +00001B34 205072 and [bx+si+0x72],dl +00001B37 657669 gs jna 0x1ba3 +00001B3A 6F outsw +00001B3B 7573 jnz 0x1bb0 +00001B3D 2020 and [bx+si],ah +00001B3F 204E65 and [bp+0x65],cl +00001B42 7874 js 0x1bb8 +00001B44 000D add [di],cl +00001B46 0A2D or ch,[di] +00001B48 2D2D2D sub ax,0x2d2d +00001B4B 2D2D2D sub ax,0x2d2d +00001B4E 2D2D2D sub ax,0x2d2d +00001B51 2D2D2D sub ax,0x2d2d +00001B54 2D2D2D sub ax,0x2d2d +00001B57 2D2D2D sub ax,0x2d2d +00001B5A 2D2D2D sub ax,0x2d2d +00001B5D 2D2D2D sub ax,0x2d2d +00001B60 2D2D2D sub ax,0x2d2d +00001B63 2D2D2D sub ax,0x2d2d +00001B66 2D2D2D sub ax,0x2d2d +00001B69 2D2D2D sub ax,0x2d2d +00001B6C 2D2D2D sub ax,0x2d2d +00001B6F 2D2D2D sub ax,0x2d2d +00001B72 2D2D2D sub ax,0x2d2d +00001B75 2D2D2D sub ax,0x2d2d +00001B78 2D2D2D sub ax,0x2d2d +00001B7B 2D2D2D sub ax,0x2d2d +00001B7E 0030 add [bx+si],dh +00001B80 7800 js 0x1b82 +00001B82 46 inc si +00001B83 7265 jc 0x1bea +00001B85 652020 and [gs:bx+si],ah +00001B88 2020 and [bx+si],ah +00001B8A 2020 and [bx+si],ah +00001B8C 2000 and [bx+si],al +00001B8E 55 push bp +00001B8F 7365 jnc 0x1bf6 +00001B91 642020 and [fs:bx+si],ah +00001B94 2020 and [bx+si],ah +00001B96 2020 and [bx+si],ah +00001B98 2000 and [bx+si],al +00001B9A 4E dec si +00001B9B 6F outsw +00001B9C 6E outsb +00001B9D 652020 and [gs:bx+si],ah +00001BA0 2020 and [bx+si],ah +00001BA2 2020 and [bx+si],ah +00001BA4 2000 and [bx+si],al +00001BA6 2000 and [bx+si],al +00001BA8 0D0A00 or ax,0xa +00001BAB 0000 add [bx+si],al +00001BAD 0000 add [bx+si],al +00001BAF 0000 add [bx+si],al +00001BB1 0000 add [bx+si],al +00001BB3 0100 add [bx+si],ax +00001BB5 0000 add [bx+si],al +00001BB7 0000 add [bx+si],al +00001BB9 0000 add [bx+si],al +00001BBB 0000 add [bx+si],al +00001BBD 0000 add [bx+si],al +00001BBF 0000 add [bx+si],al +00001BC1 0000 add [bx+si],al +00001BC3 005053 add [bx+si+0x53],dl +00001BC6 51 push cx +00001BC7 52 push dx +00001BC8 803DB3 cmp byte [di],0xb3 +00001BCB 1B01 sbb ax,[bx+di] +00001BCD 0000 add [bx+si],al +00001BCF 744A jz 0x1c1b +00001BD1 BB0000 mov bx,0x0 +00001BD4 0001 add [bx+di],al +00001BD6 891D mov [di],bx +00001BD8 C01B01 rcr byte [bp+di],0x1 +00001BDB 00E8 add al,ch +00001BDD 98 cbw +00001BDE 27 daa +00001BDF 0000 add [bx+si],al +00001BE1 891D mov [di],bx +00001BE3 BC1B01 mov sp,0x11b +00001BE6 00BB0000 add [bp+di+0x0],bh +00001BEA E000 loopne 0x1bec +00001BEC 89D9 mov cx,bx +00001BEE E88627 call 0x4377 +00001BF1 0000 add [bx+si],al +00001BF3 53 push bx +00001BF4 51 push cx +00001BF5 BB0000 mov bx,0x0 +00001BF8 0100 add [bx+si],ax +00001BFA 891D mov [di],bx +00001BFC B81B01 mov ax,0x11b +00001BFF 00E8 add al,ch +00001C01 7427 jz 0x1c2a +00001C03 0000 add [bx+si],al +00001C05 891D mov [di],bx +00001C07 B41B mov ah,0x1b +00001C09 0100 add [bx+si],ax +00001C0B 59 pop cx +00001C0C 5B pop bx +00001C0D E82A29 call 0x453a +00001C10 0000 add [bx+si],al +00001C12 C605B3 mov byte [di],0xb3 +00001C15 1B01 sbb ax,[bx+di] +00001C17 0000 add [bx+si],al +00001C19 EB29 jmp short 0x1c44 +00001C1B 8B1D mov bx,[di] +00001C1D B41B mov ah,0x1b +00001C1F 0100 add [bx+si],ax +00001C21 8B0D mov cx,[di] +00001C23 B81B01 mov ax,0x11b +00001C26 00E8 add al,ch +00001C28 1029 adc [bx+di],ch +00001C2A 0000 add [bx+si],al +00001C2C 8B1D mov bx,[di] +00001C2E BC1B01 mov sp,0x11b +00001C31 008B0DC0 add [bp+di+0xc00d],cl +00001C35 1B01 sbb ax,[bx+di] +00001C37 00E8 add al,ch +00001C39 FF28 jmp far [bx+si] +00001C3B 0000 add [bx+si],al +00001C3D C605B3 mov byte [di],0xb3 +00001C40 1B01 sbb ax,[bx+di] +00001C42 0001 add [bx+di],al +00001C44 BEBF1A mov si,0x1abf +00001C47 0100 add [bx+si],ax +00001C49 B307 mov bl,0x7 +00001C4B E85FEB call 0x7ad +00001C4E FF db 0xFF +00001C4F FF db 0xFF +00001C50 BED91A mov si,0x1ad9 +00001C53 0100 add [bx+si],ax +00001C55 B307 mov bl,0x7 +00001C57 E853EB call 0x7ad +00001C5A FF db 0xFF +00001C5B FF db 0xFF +00001C5C BE7F1B mov si,0x1b7f +00001C5F 0100 add [bx+si],ax +00001C61 B304 mov bl,0x4 +00001C63 E847EB call 0x7ad +00001C66 FF db 0xFF +00001C67 FF8B1DC8 dec word [bp+di+0xc81d] +00001C6B 0001 add [bx+di],al +00001C6D 00B104E8 add [bx+di+0xe804],dh +00001C71 0BEB or bp,bx +00001C73 FF db 0xFF +00001C74 FF db 0xFF +00001C75 BEFF1A mov si,0x1aff +00001C78 0100 add [bx+si],ax +00001C7A B307 mov bl,0x7 +00001C7C E82EEB call 0x7ad +00001C7F FF db 0xFF +00001C80 FF db 0xFF +00001C81 BE121B mov si,0x1b12 +00001C84 0100 add [bx+si],ax +00001C86 B307 mov bl,0x7 +00001C88 E822EB call 0x7ad +00001C8B FF db 0xFF +00001C8C FF db 0xFF +00001C8D BE451B mov si,0x1b45 +00001C90 0100 add [bx+si],ax +00001C92 B307 mov bl,0x7 +00001C94 E816EB call 0x7ad +00001C97 FF db 0xFF +00001C98 FFC7 inc di +00001C9A 05AB1B add ax,0x1bab +00001C9D 0100 add [bx+si],ax +00001C9F 0000 add [bx+si],al +00001CA1 0000 add [bx+si],al +00001CA3 A12A43 mov ax,[0x432a] +00001CA6 0100 add [bx+si],ax +00001CA8 A3AF1B mov [0x1baf],ax +00001CAB 0100 add [bx+si],ax +00001CAD A1AB1B mov ax,[0x1bab] +00001CB0 0100 add [bx+si],ax +00001CB2 8B1D mov bx,[di] +00001CB4 AF scasw +00001CB5 1B01 sbb ax,[bx+di] +00001CB7 003B add [bp+di],bh +00001CB9 05C800 add ax,0xc8 +00001CBC 0100 add [bx+si],ax +00001CBE 735E jnc 0x1d1e +00001CC0 833DAF cmp word [di],byte -0x51 +00001CC3 1B01 sbb ax,[bx+di] +00001CC5 0000 add [bx+si],al +00001CC7 7514 jnz 0x1cdd +00001CC9 8B1D mov bx,[di] +00001CCB C8000100 enter 0x100,0x0 +00001CCF 29C3 sub bx,ax +00001CD1 BF0100 mov di,0x1 +00001CD4 0000 add [bx+si],al +00001CD6 E84800 call 0x1d21 +00001CD9 0000 add [bx+si],al +00001CDB EB41 jmp short 0x1d1e +00001CDD 29C3 sub bx,ax +00001CDF BF0100 mov di,0x1 +00001CE2 0000 add [bx+si],al +00001CE4 E83A00 call 0x1d21 +00001CE7 0000 add [bx+si],al +00001CE9 A1AF1B mov ax,[0x1baf] +00001CEC 0100 add [bx+si],ax +00001CEE 83F800 cmp ax,byte +0x0 +00001CF1 742B jz 0x1d1e +00001CF3 8B5808 mov bx,[bx+si+0x8] +00001CF6 A3AB1B mov [0x1bab],ax +00001CF9 0100 add [bx+si],ax +00001CFB 891D mov [di],bx +00001CFD AF scasw +00001CFE 1B01 sbb ax,[bx+di] +00001D00 00A1AB1B add [bx+di+0x1bab],ah +00001D04 0100 add [bx+si],ax +00001D06 8B5804 mov bx,[bx+si+0x4] +00001D09 8B08 mov cx,[bx+si] +00001D0B 8B5008 mov dx,[bx+si+0x8] +00001D0E 31FF xor di,di +00001D10 E80E00 call 0x1d21 +00001D13 0000 add [bx+si],al +00001D15 01D8 add ax,bx +00001D17 A3AB1B mov [0x1bab],ax +00001D1A 0100 add [bx+si],ax +00001D1C EB8F jmp short 0x1cad +00001D1E 58 pop ax +00001D1F 5B pop bx +00001D20 59 pop cx +00001D21 5A pop dx +00001D22 C3 ret +00001D23 50 push ax +00001D24 53 push bx +00001D25 51 push cx +00001D26 52 push dx +00001D27 57 push di +00001D28 53 push bx +00001D29 BEA81B mov si,0x1ba8 +00001D2C 0100 add [bx+si],ax +00001D2E B307 mov bl,0x7 +00001D30 E87AEA call 0x7ad +00001D33 FF db 0xFF +00001D34 FF db 0xFF +00001D35 BE7F1B mov si,0x1b7f +00001D38 0100 add [bx+si],ax +00001D3A B304 mov bl,0x4 +00001D3C E86EEA call 0x7ad +00001D3F FF db 0xFF +00001D40 FF5189 call near [bx+di-0x77] +00001D43 C3 ret +00001D44 B104 mov cl,0x4 +00001D46 E835EA call 0x77e +00001D49 FF db 0xFF +00001D4A FF db 0xFF +00001D4B BEA61B mov si,0x1ba6 +00001D4E 0100 add [bx+si],ax +00001D50 B307 mov bl,0x7 +00001D52 E858EA call 0x7ad +00001D55 FF db 0xFF +00001D56 FF db 0xFF +00001D57 BE7F1B mov si,0x1b7f +00001D5A 0100 add [bx+si],ax +00001D5C B304 mov bl,0x4 +00001D5E E84CEA call 0x7ad +00001D61 FF db 0xFF +00001D62 FF595B call far [bx+di+0x5b] +00001D65 51 push cx +00001D66 B104 mov cl,0x4 +00001D68 E813EA call 0x77e +00001D6B FF db 0xFF +00001D6C FF db 0xFF +00001D6D BEA61B mov si,0x1ba6 +00001D70 0100 add [bx+si],ax +00001D72 B307 mov bl,0x7 +00001D74 E836EA call 0x7ad +00001D77 FF db 0xFF +00001D78 FF83FF01 inc word [bp+di+0x1ff] +00001D7C 7527 jnz 0x1da5 +00001D7E 59 pop cx +00001D7F BE8E1B mov si,0x1b8e +00001D82 0100 add [bx+si],ax +00001D84 B307 mov bl,0x7 +00001D86 E824EA call 0x7ad +00001D89 FF db 0xFF +00001D8A FF db 0xFF +00001D8B BE9A1B mov si,0x1b9a +00001D8E 0100 add [bx+si],ax +00001D90 B307 mov bl,0x7 +00001D92 E818EA call 0x7ad +00001D95 FF db 0xFF +00001D96 FF db 0xFF +00001D97 BE9A1B mov si,0x1b9a +00001D9A 0100 add [bx+si],ax +00001D9C B307 mov bl,0x7 +00001D9E E80CEA call 0x7ad +00001DA1 FF db 0xFF +00001DA2 FF db 0xFF +00001DA3 EB41 jmp short 0x1de6 +00001DA5 BE821B mov si,0x1b82 +00001DA8 0100 add [bx+si],ax +00001DAA B307 mov bl,0x7 +00001DAC E8FEE9 call 0x7ad +00001DAF FF db 0xFF +00001DB0 FF db 0xFF +00001DB1 BE7F1B mov si,0x1b7f +00001DB4 0100 add [bx+si],ax +00001DB6 B304 mov bl,0x4 +00001DB8 E8F2E9 call 0x7ad +00001DBB FF db 0xFF +00001DBC FF5BB1 call far [bp+di-0x4f] +00001DBF 04E8 add al,0xe8 +00001DC1 BBE9FF mov bx,0xffe9 +00001DC4 FF db 0xFF +00001DC5 BEA61B mov si,0x1ba6 +00001DC8 0100 add [bx+si],ax +00001DCA B307 mov bl,0x7 +00001DCC E8DEE9 call 0x7ad +00001DCF FF db 0xFF +00001DD0 FF db 0xFF +00001DD1 BE7F1B mov si,0x1b7f +00001DD4 0100 add [bx+si],ax +00001DD6 B304 mov bl,0x4 +00001DD8 E8D2E9 call 0x7ad +00001DDB FF db 0xFF +00001DDC FF89D3B1 dec word [bx+di+0xb1d3] +00001DE0 04E8 add al,0xe8 +00001DE2 9AE9FFFF5F call 0x5fff:0xffe9 +00001DE7 5A pop dx +00001DE8 59 pop cx +00001DE9 5B pop bx +00001DEA 58 pop ax +00001DEB C3 ret +00001DEC C3 ret +00001DED C3 ret +00001DEE C6051F mov byte [di],0x1f +00001DF1 2801 sub [bx+di],al +00001DF3 0000 add [bx+si],al +00001DF5 C60520 mov byte [di],0x20 +00001DF8 2801 sub [bx+di],al +00001DFA 0055C6 add [di-0x3a],dl +00001DFD 052128 add ax,0x2821 +00001E00 0100 add [bx+si],ax +00001E02 6E outsb +00001E03 C60522 mov byte [di],0x22 +00001E06 2801 sub [bx+di],al +00001E08 0068C6 add [bx+si-0x3a],ch +00001E0B 052328 add ax,0x2823 +00001E0E 0100 add [bx+si],ax +00001E10 61 popa +00001E11 C60524 mov byte [di],0x24 +00001E14 2801 sub [bx+di],al +00001E16 006EC6 add [bp-0x3a],ch +00001E19 052528 add ax,0x2825 +00001E1C 0100 add [bx+si],ax +00001E1E 64C60526 mov byte [fs:di],0x26 +00001E22 2801 sub [bx+di],al +00001E24 006CC6 add [si-0x3a],ch +00001E27 052728 add ax,0x2827 +00001E2A 0100 add [bx+si],ax +00001E2C 65C60528 mov byte [gs:di],0x28 +00001E30 2801 sub [bx+di],al +00001E32 0064C6 add [si-0x3a],ah +00001E35 052928 add ax,0x2829 +00001E38 0100 add [bx+si],ax +00001E3A 20C6 and dh,al +00001E3C 052A28 add ax,0x282a +00001E3F 0100 add [bx+si],ax +00001E41 49 dec cx +00001E42 C6052B mov byte [di],0x2b +00001E45 2801 sub [bx+di],al +00001E47 006EC6 add [bp-0x3a],ch +00001E4A 052C28 add ax,0x282c +00001E4D 0100 add [bx+si],ax +00001E4F 74C6 jz 0x1e17 +00001E51 052D28 add ax,0x282d +00001E54 0100 add [bx+si],ax +00001E56 20C6 and dh,al +00001E58 052E28 add ax,0x282e +00001E5B 0100 add [bx+si],ax +00001E5D 00E8 add al,ch +00001E5F 1E push ds +00001E60 0D0000 or ax,0x0 +00001E63 C6051F mov byte [di],0x1f +00001E66 2801 sub [bx+di],al +00001E68 0000 add [bx+si],al +00001E6A C60520 mov byte [di],0x20 +00001E6D 2801 sub [bx+di],al +00001E6F 0044C6 add [si-0x3a],al +00001E72 052128 add ax,0x2821 +00001E75 0100 add [bx+si],ax +00001E77 69C60522 imul ax,si,word 0x2205 +00001E7B 2801 sub [bx+di],al +00001E7D 0076C6 add [bp-0x3a],dh +00001E80 052328 add ax,0x2823 +00001E83 0100 add [bx+si],ax +00001E85 69C60524 imul ax,si,word 0x2405 +00001E89 2801 sub [bx+di],al +00001E8B 0064C6 add [si-0x3a],ah +00001E8E 052528 add ax,0x2825 +00001E91 0100 add [bx+si],ax +00001E93 65C60526 mov byte [gs:di],0x26 +00001E97 2801 sub [bx+di],al +00001E99 0020 add [bx+si],ah +00001E9B C60527 mov byte [di],0x27 +00001E9E 2801 sub [bx+di],al +00001EA0 0065C6 add [di-0x3a],ah +00001EA3 052828 add ax,0x2828 +00001EA6 0100 add [bx+si],ax +00001EA8 72C6 jc 0x1e70 +00001EAA 052928 add ax,0x2829 +00001EAD 0100 add [bx+si],ax +00001EAF 72C6 jc 0x1e77 +00001EB1 052A28 add ax,0x282a +00001EB4 0100 add [bx+si],ax +00001EB6 6F outsw +00001EB7 C6052B mov byte [di],0x2b +00001EBA 2801 sub [bx+di],al +00001EBC 0072C6 add [bp+si-0x3a],dh +00001EBF 052C28 add ax,0x282c +00001EC2 0100 add [bx+si],ax +00001EC4 20C6 and dh,al +00001EC6 052D28 add ax,0x282d +00001EC9 0100 add [bx+si],ax +00001ECB 20C6 and dh,al +00001ECD 052E28 add ax,0x282e +00001ED0 0100 add [bx+si],ax +00001ED2 00E8 add al,ch +00001ED4 A90C00 test ax,0xc +00001ED7 00C6 add dh,al +00001ED9 051F28 add ax,0x281f +00001EDC 0100 add [bx+si],ax +00001EDE 00C6 add dh,al +00001EE0 052028 add ax,0x2820 +00001EE3 0100 add [bx+si],ax +00001EE5 44 inc sp +00001EE6 C60521 mov byte [di],0x21 +00001EE9 2801 sub [bx+di],al +00001EEB 0065C6 add [di-0x3a],ah +00001EEE 052228 add ax,0x2822 +00001EF1 0100 add [bx+si],ax +00001EF3 62 db 0x62 +00001EF4 C60523 mov byte [di],0x23 +00001EF7 2801 sub [bx+di],al +00001EF9 0075C6 add [di-0x3a],dh +00001EFC 052428 add ax,0x2824 +00001EFF 0100 add [bx+si],ax +00001F01 67C6052528010020 mov byte [dword 0x12825],0x20 +00001F09 C60526 mov byte [di],0x26 +00001F0C 2801 sub [bx+di],al +00001F0E 0066C6 add [bp-0x3a],ah +00001F11 052728 add ax,0x2827 +00001F14 0100 add [bx+si],ax +00001F16 61 popa +00001F17 C60528 mov byte [di],0x28 +00001F1A 2801 sub [bx+di],al +00001F1C 0075C6 add [di-0x3a],dh +00001F1F 052928 add ax,0x2829 +00001F22 0100 add [bx+si],ax +00001F24 6C insb +00001F25 C6052A mov byte [di],0x2a +00001F28 2801 sub [bx+di],al +00001F2A 0074C6 add [si-0x3a],dh +00001F2D 052B28 add ax,0x282b +00001F30 0100 add [bx+si],ax +00001F32 20C6 and dh,al +00001F34 052C28 add ax,0x282c +00001F37 0100 add [bx+si],ax +00001F39 20C6 and dh,al +00001F3B 052D28 add ax,0x282d +00001F3E 0100 add [bx+si],ax +00001F40 20C6 and dh,al +00001F42 052E28 add ax,0x282e +00001F45 0100 add [bx+si],ax +00001F47 00E8 add al,ch +00001F49 340C xor al,0xc +00001F4B 0000 add [bx+si],al +00001F4D C6051F mov byte [di],0x1f +00001F50 2801 sub [bx+di],al +00001F52 0000 add [bx+si],al +00001F54 C60520 mov byte [di],0x20 +00001F57 2801 sub [bx+di],al +00001F59 004EC6 add [bp-0x3a],cl +00001F5C 052128 add ax,0x2821 +00001F5F 0100 add [bx+si],ax +00001F61 4D dec bp +00001F62 C60522 mov byte [di],0x22 +00001F65 2801 sub [bx+di],al +00001F67 0049C6 add [bx+di-0x3a],cl +00001F6A 052328 add ax,0x2823 +00001F6D 0100 add [bx+si],ax +00001F6F 20C6 and dh,al +00001F71 052428 add ax,0x2824 +00001F74 0100 add [bx+si],ax +00001F76 69C60525 imul ax,si,word 0x2505 +00001F7A 2801 sub [bx+di],al +00001F7C 006EC6 add [bp-0x3a],ch +00001F7F 052628 add ax,0x2826 +00001F82 0100 add [bx+si],ax +00001F84 74C6 jz 0x1f4c +00001F86 052728 add ax,0x2827 +00001F89 0100 add [bx+si],ax +00001F8B 65C60528 mov byte [gs:di],0x28 +00001F8F 2801 sub [bx+di],al +00001F91 0072C6 add [bp+si-0x3a],dh +00001F94 052928 add ax,0x2829 +00001F97 0100 add [bx+si],ax +00001F99 72C6 jc 0x1f61 +00001F9B 052A28 add ax,0x282a +00001F9E 0100 add [bx+si],ax +00001FA0 75C6 jnz 0x1f68 +00001FA2 052B28 add ax,0x282b +00001FA5 0100 add [bx+si],ax +00001FA7 70C6 jo 0x1f6f +00001FA9 052C28 add ax,0x282c +00001FAC 0100 add [bx+si],ax +00001FAE 74C6 jz 0x1f76 +00001FB0 052D28 add ax,0x282d +00001FB3 0100 add [bx+si],ax +00001FB5 20C6 and dh,al +00001FB7 052E28 add ax,0x282e +00001FBA 0100 add [bx+si],ax +00001FBC 00E8 add al,ch +00001FBE BF0B00 mov di,0xb +00001FC1 00C6 add dh,al +00001FC3 051F28 add ax,0x281f +00001FC6 0100 add [bx+si],ax +00001FC8 00C6 add dh,al +00001FCA 052028 add ax,0x2820 +00001FCD 0100 add [bx+si],ax +00001FCF 42 inc dx +00001FD0 C60521 mov byte [di],0x21 +00001FD3 2801 sub [bx+di],al +00001FD5 0072C6 add [bp+si-0x3a],dh +00001FD8 052228 add ax,0x2822 +00001FDB 0100 add [bx+si],ax +00001FDD 65C60523 mov byte [gs:di],0x23 +00001FE1 2801 sub [bx+di],al +00001FE3 0061C6 add [bx+di-0x3a],ah +00001FE6 052428 add ax,0x2824 +00001FE9 0100 add [bx+si],ax +00001FEB 6BC605 imul ax,si,byte +0x5 +00001FEE 252801 and ax,0x128 +00001FF1 0070C6 add [bx+si-0x3a],dh +00001FF4 052628 add ax,0x2826 +00001FF7 0100 add [bx+si],ax +00001FF9 6F outsw +00001FFA C60527 mov byte [di],0x27 +00001FFD 2801 sub [bx+di],al +00001FFF 0069C6 add [bx+di-0x3a],ch +00002002 052828 add ax,0x2828 +00002005 0100 add [bx+si],ax +00002007 6E outsb +00002008 C60529 mov byte [di],0x29 +0000200B 2801 sub [bx+di],al +0000200D 0074C6 add [si-0x3a],dh +00002010 052A28 add ax,0x282a +00002013 0100 add [bx+si],ax +00002015 20C6 and dh,al +00002017 052B28 add ax,0x282b +0000201A 0100 add [bx+si],ax +0000201C 20C6 and dh,al +0000201E 052C28 add ax,0x282c +00002021 0100 add [bx+si],ax +00002023 20C6 and dh,al +00002025 052D28 add ax,0x282d +00002028 0100 add [bx+si],ax +0000202A 20C6 and dh,al +0000202C 052E28 add ax,0x282e +0000202F 0100 add [bx+si],ax +00002031 00E8 add al,ch +00002033 4A dec dx +00002034 0B00 or ax,[bx+si] +00002036 00C6 add dh,al +00002038 051F28 add ax,0x281f +0000203B 0100 add [bx+si],ax +0000203D 00C6 add dh,al +0000203F 052028 add ax,0x2820 +00002042 0100 add [bx+si],ax +00002044 4F dec di +00002045 C60521 mov byte [di],0x21 +00002048 2801 sub [bx+di],al +0000204A 0076C6 add [bp-0x3a],dh +0000204D 052228 add ax,0x2822 +00002050 0100 add [bx+si],ax +00002052 65C60523 mov byte [gs:di],0x23 +00002056 2801 sub [bx+di],al +00002058 0072C6 add [bp+si-0x3a],dh +0000205B 052428 add ax,0x2824 +0000205E 0100 add [bx+si],ax +00002060 66C60525 o32 mov byte [di],0x25 +00002064 2801 sub [bx+di],al +00002066 006CC6 add [si-0x3a],ch +00002069 052628 add ax,0x2826 +0000206C 0100 add [bx+si],ax +0000206E 6F outsw +0000206F C60527 mov byte [di],0x27 +00002072 2801 sub [bx+di],al +00002074 0077C6 add [bx-0x3a],dh +00002077 052828 add ax,0x2828 +0000207A 0100 add [bx+si],ax +0000207C 20C6 and dh,al +0000207E 052928 add ax,0x2829 +00002081 0100 add [bx+si],ax +00002083 66C6052A o32 mov byte [di],0x2a +00002087 2801 sub [bx+di],al +00002089 0061C6 add [bx+di-0x3a],ah +0000208C 052B28 add ax,0x282b +0000208F 0100 add [bx+si],ax +00002091 75C6 jnz 0x2059 +00002093 052C28 add ax,0x282c +00002096 0100 add [bx+si],ax +00002098 6C insb +00002099 C6052D mov byte [di],0x2d +0000209C 2801 sub [bx+di],al +0000209E 0074C6 add [si-0x3a],dh +000020A1 052E28 add ax,0x282e +000020A4 0100 add [bx+si],ax +000020A6 00E8 add al,ch +000020A8 D50A aad +000020AA 0000 add [bx+si],al +000020AC C6051F mov byte [di],0x1f +000020AF 2801 sub [bx+di],al +000020B1 0000 add [bx+si],al +000020B3 C60520 mov byte [di],0x20 +000020B6 2801 sub [bx+di],al +000020B8 0042C6 add [bp+si-0x3a],al +000020BB 052128 add ax,0x2821 +000020BE 0100 add [bx+si],ax +000020C0 6F outsw +000020C1 C60522 mov byte [di],0x22 +000020C4 2801 sub [bx+di],al +000020C6 0075C6 add [di-0x3a],dh +000020C9 052328 add ax,0x2823 +000020CC 0100 add [bx+si],ax +000020CE 6E outsb +000020CF C60524 mov byte [di],0x24 +000020D2 2801 sub [bx+di],al +000020D4 0064C6 add [si-0x3a],ah +000020D7 052528 add ax,0x2825 +000020DA 0100 add [bx+si],ax +000020DC 73C6 jnc 0x20a4 +000020DE 052628 add ax,0x2826 +000020E1 0100 add [bx+si],ax +000020E3 20C6 and dh,al +000020E5 052728 add ax,0x2827 +000020E8 0100 add [bx+si],ax +000020EA 63C6 arpl si,ax +000020EC 052828 add ax,0x2828 +000020EF 0100 add [bx+si],ax +000020F1 68C605 push word 0x5c6 +000020F4 2928 sub [bx+si],bp +000020F6 0100 add [bx+si],ax +000020F8 65C6052A mov byte [gs:di],0x2a +000020FC 2801 sub [bx+di],al +000020FE 0063C6 add [bp+di-0x3a],ah +00002101 052B28 add ax,0x282b +00002104 0100 add [bx+si],ax +00002106 6BC605 imul ax,si,byte +0x5 +00002109 2C28 sub al,0x28 +0000210B 0100 add [bx+si],ax +0000210D 20C6 and dh,al +0000210F 052D28 add ax,0x282d +00002112 0100 add [bx+si],ax +00002114 20C6 and dh,al +00002116 052E28 add ax,0x282e +00002119 0100 add [bx+si],ax +0000211B 00E8 add al,ch +0000211D 60 pusha +0000211E 0A00 or al,[bx+si] +00002120 00C6 add dh,al +00002122 051F28 add ax,0x281f +00002125 0100 add [bx+si],ax +00002127 00C6 add dh,al +00002129 052028 add ax,0x2820 +0000212C 0100 add [bx+si],ax +0000212E 49 dec cx +0000212F C60521 mov byte [di],0x21 +00002132 2801 sub [bx+di],al +00002134 006EC6 add [bp-0x3a],ch +00002137 052228 add ax,0x2822 +0000213A 0100 add [bx+si],ax +0000213C 76C6 jna 0x2104 +0000213E 052328 add ax,0x2823 +00002141 0100 add [bx+si],ax +00002143 61 popa +00002144 C60524 mov byte [di],0x24 +00002147 2801 sub [bx+di],al +00002149 006CC6 add [si-0x3a],ch +0000214C 052528 add ax,0x2825 +0000214F 0100 add [bx+si],ax +00002151 69C60526 imul ax,si,word 0x2605 +00002155 2801 sub [bx+di],al +00002157 0064C6 add [si-0x3a],ah +0000215A 052728 add ax,0x2827 +0000215D 0100 add [bx+si],ax +0000215F 20C6 and dh,al +00002161 052828 add ax,0x2828 +00002164 0100 add [bx+si],ax +00002166 6F outsw +00002167 C60529 mov byte [di],0x29 +0000216A 2801 sub [bx+di],al +0000216C 0070C6 add [bx+si-0x3a],dh +0000216F 052A28 add ax,0x282a +00002172 0100 add [bx+si],ax +00002174 63C6 arpl si,ax +00002176 052B28 add ax,0x282b +00002179 0100 add [bx+si],ax +0000217B 6F outsw +0000217C C6052C mov byte [di],0x2c +0000217F 2801 sub [bx+di],al +00002181 0064C6 add [si-0x3a],ah +00002184 052D28 add ax,0x282d +00002187 0100 add [bx+si],ax +00002189 65C6052E mov byte [gs:di],0x2e +0000218D 2801 sub [bx+di],al +0000218F 0000 add [bx+si],al +00002191 E8EB09 call 0x2b7f +00002194 0000 add [bx+si],al +00002196 C6051F mov byte [di],0x1f +00002199 2801 sub [bx+di],al +0000219B 0000 add [bx+si],al +0000219D C60520 mov byte [di],0x20 +000021A0 2801 sub [bx+di],al +000021A2 004EC6 add [bp-0x3a],cl +000021A5 052128 add ax,0x2821 +000021A8 0100 add [bx+si],ax +000021AA 6F outsw +000021AB C60522 mov byte [di],0x22 +000021AE 2801 sub [bx+di],al +000021B0 0020 add [bx+si],ah +000021B2 C60523 mov byte [di],0x23 +000021B5 2801 sub [bx+di],al +000021B7 0063C6 add [bp+di-0x3a],ah +000021BA 052428 add ax,0x2824 +000021BD 0100 add [bx+si],ax +000021BF 6F outsw +000021C0 C60525 mov byte [di],0x25 +000021C3 2801 sub [bx+di],al +000021C5 0070C6 add [bx+si-0x3a],dh +000021C8 052628 add ax,0x2826 +000021CB 0100 add [bx+si],ax +000021CD 2EC60527 mov byte [cs:di],0x27 +000021D1 2801 sub [bx+di],al +000021D3 0020 add [bx+si],ah +000021D5 C60528 mov byte [di],0x28 +000021D8 2801 sub [bx+di],al +000021DA 0061C6 add [bx+di-0x3a],ah +000021DD 052928 add ax,0x2829 +000021E0 0100 add [bx+si],ax +000021E2 76C6 jna 0x21aa +000021E4 052A28 add ax,0x282a +000021E7 0100 add [bx+si],ax +000021E9 61 popa +000021EA C6052B mov byte [di],0x2b +000021ED 2801 sub [bx+di],al +000021EF 0069C6 add [bx+di-0x3a],ch +000021F2 052C28 add ax,0x282c +000021F5 0100 add [bx+si],ax +000021F7 6C insb +000021F8 C6052D mov byte [di],0x2d +000021FB 2801 sub [bx+di],al +000021FD 002EC605 add [0x5c6],ch +00002201 2E2801 sub [cs:bx+di],al +00002204 0000 add [bx+si],al +00002206 E87609 call 0x2b7f +00002209 0000 add [bx+si],al +0000220B C6051F mov byte [di],0x1f +0000220E 2801 sub [bx+di],al +00002210 0000 add [bx+si],al +00002212 C60520 mov byte [di],0x20 +00002215 2801 sub [bx+di],al +00002217 0044C6 add [si-0x3a],al +0000221A 052128 add ax,0x2821 +0000221D 0100 add [bx+si],ax +0000221F 6F outsw +00002220 C60522 mov byte [di],0x22 +00002223 2801 sub [bx+di],al +00002225 0075C6 add [di-0x3a],dh +00002228 052328 add ax,0x2823 +0000222B 0100 add [bx+si],ax +0000222D 62 db 0x62 +0000222E C60524 mov byte [di],0x24 +00002231 2801 sub [bx+di],al +00002233 006CC6 add [si-0x3a],ch +00002236 052528 add ax,0x2825 +00002239 0100 add [bx+si],ax +0000223B 65C60526 mov byte [gs:di],0x26 +0000223F 2801 sub [bx+di],al +00002241 0020 add [bx+si],ah +00002243 C60527 mov byte [di],0x27 +00002246 2801 sub [bx+di],al +00002248 0066C6 add [bp-0x3a],ah +0000224B 052828 add ax,0x2828 +0000224E 0100 add [bx+si],ax +00002250 61 popa +00002251 C60529 mov byte [di],0x29 +00002254 2801 sub [bx+di],al +00002256 0075C6 add [di-0x3a],dh +00002259 052A28 add ax,0x282a +0000225C 0100 add [bx+si],ax +0000225E 6C insb +0000225F C6052B mov byte [di],0x2b +00002262 2801 sub [bx+di],al +00002264 0074C6 add [si-0x3a],dh +00002267 052C28 add ax,0x282c +0000226A 0100 add [bx+si],ax +0000226C 20C6 and dh,al +0000226E 052D28 add ax,0x282d +00002271 0100 add [bx+si],ax +00002273 20C6 and dh,al +00002275 052E28 add ax,0x282e +00002278 0100 add [bx+si],ax +0000227A 00E8 add al,ch +0000227C 0109 add [bx+di],cx +0000227E 0000 add [bx+si],al +00002280 C6051F mov byte [di],0x1f +00002283 2801 sub [bx+di],al +00002285 0000 add [bx+si],al +00002287 C60520 mov byte [di],0x20 +0000228A 2801 sub [bx+di],al +0000228C 0043C6 add [bp+di-0x3a],al +0000228F 052128 add ax,0x2821 +00002292 0100 add [bx+si],ax +00002294 6F outsw +00002295 C60522 mov byte [di],0x22 +00002298 2801 sub [bx+di],al +0000229A 0070C6 add [bx+si-0x3a],dh +0000229D 052328 add ax,0x2823 +000022A0 0100 add [bx+si],ax +000022A2 72C6 jc 0x226a +000022A4 052428 add ax,0x2824 +000022A7 0100 add [bx+si],ax +000022A9 6F outsw +000022AA C60525 mov byte [di],0x25 +000022AD 2801 sub [bx+di],al +000022AF 002EC605 add [0x5c6],ch +000022B3 262801 sub [es:bx+di],al +000022B6 0020 add [bx+si],ah +000022B8 C60527 mov byte [di],0x27 +000022BB 2801 sub [bx+di],al +000022BD 0073C6 add [bp+di-0x3a],dh +000022C0 052828 add ax,0x2828 +000022C3 0100 add [bx+si],ax +000022C5 65C60529 mov byte [gs:di],0x29 +000022C9 2801 sub [bx+di],al +000022CB 0067C6 add [bx-0x3a],ah +000022CE 052A28 add ax,0x282a +000022D1 0100 add [bx+si],ax +000022D3 6D insw +000022D4 C6052B mov byte [di],0x2b +000022D7 2801 sub [bx+di],al +000022D9 0065C6 add [di-0x3a],ah +000022DC 052C28 add ax,0x282c +000022DF 0100 add [bx+si],ax +000022E1 6E outsb +000022E2 C6052D mov byte [di],0x2d +000022E5 2801 sub [bx+di],al +000022E7 0074C6 add [si-0x3a],dh +000022EA 052E28 add ax,0x282e +000022ED 0100 add [bx+si],ax +000022EF 00E8 add al,ch +000022F1 8C08 mov [bx+si],cs +000022F3 0000 add [bx+si],al +000022F5 C6051F mov byte [di],0x1f +000022F8 2801 sub [bx+di],al +000022FA 0000 add [bx+si],al +000022FC C60520 mov byte [di],0x20 +000022FF 2801 sub [bx+di],al +00002301 0049C6 add [bx+di-0x3a],cl +00002304 052128 add ax,0x2821 +00002307 0100 add [bx+si],ax +00002309 6E outsb +0000230A C60522 mov byte [di],0x22 +0000230D 2801 sub [bx+di],al +0000230F 0076C6 add [bp-0x3a],dh +00002312 052328 add ax,0x2823 +00002315 0100 add [bx+si],ax +00002317 61 popa +00002318 C60524 mov byte [di],0x24 +0000231B 2801 sub [bx+di],al +0000231D 006CC6 add [si-0x3a],ch +00002320 052528 add ax,0x2825 +00002323 0100 add [bx+si],ax +00002325 69C60526 imul ax,si,word 0x2605 +00002329 2801 sub [bx+di],al +0000232B 0064C6 add [si-0x3a],ah +0000232E 052728 add ax,0x2827 +00002331 0100 add [bx+si],ax +00002333 20C6 and dh,al +00002335 052828 add ax,0x2828 +00002338 0100 add [bx+si],ax +0000233A 54 push sp +0000233B C60529 mov byte [di],0x29 +0000233E 2801 sub [bx+di],al +00002340 0053C6 add [bp+di-0x3a],dl +00002343 052A28 add ax,0x282a +00002346 0100 add [bx+si],ax +00002348 53 push bx +00002349 C6052B mov byte [di],0x2b +0000234C 2801 sub [bx+di],al +0000234E 0021 add [bx+di],ah +00002350 C6052C mov byte [di],0x2c +00002353 2801 sub [bx+di],al +00002355 0020 add [bx+si],ah +00002357 C6052D mov byte [di],0x2d +0000235A 2801 sub [bx+di],al +0000235C 0020 add [bx+si],ah +0000235E C6052E mov byte [di],0x2e +00002361 2801 sub [bx+di],al +00002363 0000 add [bx+si],al +00002365 E81708 call 0x2b7f +00002368 0000 add [bx+si],al +0000236A C6051F mov byte [di],0x1f +0000236D 2801 sub [bx+di],al +0000236F 0000 add [bx+si],al +00002371 C60520 mov byte [di],0x20 +00002374 2801 sub [bx+di],al +00002376 004EC6 add [bp-0x3a],cl +00002379 052128 add ax,0x2821 +0000237C 0100 add [bx+si],ax +0000237E 6F outsw +0000237F C60522 mov byte [di],0x22 +00002382 2801 sub [bx+di],al +00002384 0020 add [bx+si],ah +00002386 C60523 mov byte [di],0x23 +00002389 2801 sub [bx+di],al +0000238B 0073C6 add [bp+di-0x3a],dh +0000238E 052428 add ax,0x2824 +00002391 0100 add [bx+si],ax +00002393 65C60525 mov byte [gs:di],0x25 +00002397 2801 sub [bx+di],al +00002399 0067C6 add [bx-0x3a],ah +0000239C 052628 add ax,0x2826 +0000239F 0100 add [bx+si],ax +000023A1 6D insw +000023A2 C60527 mov byte [di],0x27 +000023A5 2801 sub [bx+di],al +000023A7 0065C6 add [di-0x3a],ah +000023AA 052828 add ax,0x2828 +000023AD 0100 add [bx+si],ax +000023AF 6E outsb +000023B0 C60529 mov byte [di],0x29 +000023B3 2801 sub [bx+di],al +000023B5 0074C6 add [si-0x3a],dh +000023B8 052A28 add ax,0x282a +000023BB 0100 add [bx+si],ax +000023BD 21C6 and si,ax +000023BF 052B28 add ax,0x282b +000023C2 0100 add [bx+si],ax +000023C4 20C6 and dh,al +000023C6 052C28 add ax,0x282c +000023C9 0100 add [bx+si],ax +000023CB 20C6 and dh,al +000023CD 052D28 add ax,0x282d +000023D0 0100 add [bx+si],ax +000023D2 20C6 and dh,al +000023D4 052E28 add ax,0x282e +000023D7 0100 add [bx+si],ax +000023D9 00E8 add al,ch +000023DB A20700 mov [0x7],al +000023DE 00C6 add dh,al +000023E0 051F28 add ax,0x281f +000023E3 0100 add [bx+si],ax +000023E5 00C6 add dh,al +000023E7 052028 add ax,0x2820 +000023EA 0100 add [bx+si],ax +000023EC 53 push bx +000023ED C60521 mov byte [di],0x21 +000023F0 2801 sub [bx+di],al +000023F2 0074C6 add [si-0x3a],dh +000023F5 052228 add ax,0x2822 +000023F8 0100 add [bx+si],ax +000023FA 61 popa +000023FB C60523 mov byte [di],0x23 +000023FE 2801 sub [bx+di],al +00002400 0063C6 add [bp+di-0x3a],ah +00002403 052428 add ax,0x2824 +00002406 0100 add [bx+si],ax +00002408 6BC605 imul ax,si,byte +0x5 +0000240B 252801 and ax,0x128 +0000240E 0020 add [bx+si],ah +00002410 C60526 mov byte [di],0x26 +00002413 2801 sub [bx+di],al +00002415 0066C6 add [bp-0x3a],ah +00002418 052728 add ax,0x2827 +0000241B 0100 add [bx+si],ax +0000241D 61 popa +0000241E C60528 mov byte [di],0x28 +00002421 2801 sub [bx+di],al +00002423 0075C6 add [di-0x3a],dh +00002426 052928 add ax,0x2829 +00002429 0100 add [bx+si],ax +0000242B 6C insb +0000242C C6052A mov byte [di],0x2a +0000242F 2801 sub [bx+di],al +00002431 0074C6 add [si-0x3a],dh +00002434 052B28 add ax,0x282b +00002437 0100 add [bx+si],ax +00002439 21C6 and si,ax +0000243B 052C28 add ax,0x282c +0000243E 0100 add [bx+si],ax +00002440 20C6 and dh,al +00002442 052D28 add ax,0x282d +00002445 0100 add [bx+si],ax +00002447 20C6 and dh,al +00002449 052E28 add ax,0x282e +0000244C 0100 add [bx+si],ax +0000244E 00E8 add al,ch +00002450 2D0700 sub ax,0x7 +00002453 00C6 add dh,al +00002455 051F28 add ax,0x281f +00002458 0100 add [bx+si],ax +0000245A 00C6 add dh,al +0000245C 052028 add ax,0x2820 +0000245F 0100 add [bx+si],ax +00002461 54 push sp +00002462 C60521 mov byte [di],0x21 +00002465 2801 sub [bx+di],al +00002467 0072C6 add [bp+si-0x3a],dh +0000246A 052228 add ax,0x2822 +0000246D 0100 add [bx+si],ax +0000246F 69C60523 imul ax,si,word 0x2305 +00002473 2801 sub [bx+di],al +00002475 0070C6 add [bx+si-0x3a],dh +00002478 052428 add ax,0x2824 +0000247B 0100 add [bx+si],ax +0000247D 6C insb +0000247E C60525 mov byte [di],0x25 +00002481 2801 sub [bx+di],al +00002483 0065C6 add [di-0x3a],ah +00002486 052628 add ax,0x2826 +00002489 0100 add [bx+si],ax +0000248B 20C6 and dh,al +0000248D 052728 add ax,0x2827 +00002490 0100 add [bx+si],ax +00002492 66C60528 o32 mov byte [di],0x28 +00002496 2801 sub [bx+di],al +00002498 0061C6 add [bx+di-0x3a],ah +0000249B 052928 add ax,0x2829 +0000249E 0100 add [bx+si],ax +000024A0 75C6 jnz 0x2468 +000024A2 052A28 add ax,0x282a +000024A5 0100 add [bx+si],ax +000024A7 6C insb +000024A8 C6052B mov byte [di],0x2b +000024AB 2801 sub [bx+di],al +000024AD 0074C6 add [si-0x3a],dh +000024B0 052C28 add ax,0x282c +000024B3 0100 add [bx+si],ax +000024B5 21C6 and si,ax +000024B7 052D28 add ax,0x282d +000024BA 0100 add [bx+si],ax +000024BC 20C6 and dh,al +000024BE 052E28 add ax,0x282e +000024C1 0100 add [bx+si],ax +000024C3 00E8 add al,ch +000024C5 B80600 mov ax,0x6 +000024C8 00C6 add dh,al +000024CA 051F28 add ax,0x281f +000024CD 0100 add [bx+si],ax +000024CF 00C6 add dh,al +000024D1 052028 add ax,0x2820 +000024D4 0100 add [bx+si],ax +000024D6 50 push ax +000024D7 C60521 mov byte [di],0x21 +000024DA 2801 sub [bx+di],al +000024DC 0061C6 add [bx+di-0x3a],ah +000024DF 052228 add ax,0x2822 +000024E2 0100 add [bx+si],ax +000024E4 67C6052328010065 mov byte [dword 0x12823],0x65 +000024EC C60524 mov byte [di],0x24 +000024EF 2801 sub [bx+di],al +000024F1 0020 add [bx+si],ah +000024F3 C60525 mov byte [di],0x25 +000024F6 2801 sub [bx+di],al +000024F8 0066C6 add [bp-0x3a],ah +000024FB 052628 add ax,0x2826 +000024FE 0100 add [bx+si],ax +00002500 61 popa +00002501 C60527 mov byte [di],0x27 +00002504 2801 sub [bx+di],al +00002506 0075C6 add [di-0x3a],dh +00002509 052828 add ax,0x2828 +0000250C 0100 add [bx+si],ax +0000250E 6C insb +0000250F C60529 mov byte [di],0x29 +00002512 2801 sub [bx+di],al +00002514 0074C6 add [si-0x3a],dh +00002517 052A28 add ax,0x282a +0000251A 0100 add [bx+si],ax +0000251C 21C6 and si,ax +0000251E 052B28 add ax,0x282b +00002521 0100 add [bx+si],ax +00002523 20C6 and dh,al +00002525 052C28 add ax,0x282c +00002528 0100 add [bx+si],ax +0000252A 20C6 and dh,al +0000252C 052D28 add ax,0x282d +0000252F 0100 add [bx+si],ax +00002531 20C6 and dh,al +00002533 052E28 add ax,0x282e +00002536 0100 add [bx+si],ax +00002538 00E8 add al,ch +0000253A 43 inc bx +0000253B 06 push es +0000253C 0000 add [bx+si],al +0000253E C6051F mov byte [di],0x1f +00002541 2801 sub [bx+di],al +00002543 0000 add [bx+si],al +00002545 C60520 mov byte [di],0x20 +00002548 2801 sub [bx+di],al +0000254A 0043C6 add [bp+di-0x3a],al +0000254D 052128 add ax,0x2821 +00002550 0100 add [bx+si],ax +00002552 6F outsw +00002553 C60522 mov byte [di],0x22 +00002556 2801 sub [bx+di],al +00002558 0070C6 add [bx+si-0x3a],dh +0000255B 052328 add ax,0x2823 +0000255E 0100 add [bx+si],ax +00002560 72C6 jc 0x2528 +00002562 052428 add ax,0x2824 +00002565 0100 add [bx+si],ax +00002567 6F outsw +00002568 C60525 mov byte [di],0x25 +0000256B 2801 sub [bx+di],al +0000256D 0063C6 add [bp+di-0x3a],ah +00002570 052628 add ax,0x2826 +00002573 0100 add [bx+si],ax +00002575 65C60527 mov byte [gs:di],0x27 +00002579 2801 sub [bx+di],al +0000257B 0073C6 add [bp+di-0x3a],dh +0000257E 052828 add ax,0x2828 +00002581 0100 add [bx+si],ax +00002583 73C6 jnc 0x254b +00002585 052928 add ax,0x2829 +00002588 0100 add [bx+si],ax +0000258A 6F outsw +0000258B C6052A mov byte [di],0x2a +0000258E 2801 sub [bx+di],al +00002590 0072C6 add [bp+si-0x3a],dh +00002593 052B28 add ax,0x282b +00002596 0100 add [bx+si],ax +00002598 21C6 and si,ax +0000259A 052C28 add ax,0x282c +0000259D 0100 add [bx+si],ax +0000259F 20C6 and dh,al +000025A1 052D28 add ax,0x282d +000025A4 0100 add [bx+si],ax +000025A6 20C6 and dh,al +000025A8 052E28 add ax,0x282e +000025AB 0100 add [bx+si],ax +000025AD 00E8 add al,ch +000025AF CE into +000025B0 050000 add ax,0x0 +000025B3 C6051F mov byte [di],0x1f +000025B6 2801 sub [bx+di],al +000025B8 0000 add [bx+si],al +000025BA C60520 mov byte [di],0x20 +000025BD 2801 sub [bx+di],al +000025BF 0041C6 add [bx+di-0x3a],al +000025C2 052128 add ax,0x2821 +000025C5 0100 add [bx+si],ax +000025C7 6C insb +000025C8 C60522 mov byte [di],0x22 +000025CB 2801 sub [bx+di],al +000025CD 0069C6 add [bx+di-0x3a],ch +000025D0 052328 add ax,0x2823 +000025D3 0100 add [bx+si],ax +000025D5 67C605242801006E mov byte [dword 0x12824],0x6e +000025DD C60525 mov byte [di],0x25 +000025E0 2801 sub [bx+di],al +000025E2 006DC6 add [di-0x3a],ch +000025E5 052628 add ax,0x2826 +000025E8 0100 add [bx+si],ax +000025EA 65C60527 mov byte [gs:di],0x27 +000025EE 2801 sub [bx+di],al +000025F0 006EC6 add [bp-0x3a],ch +000025F3 052828 add ax,0x2828 +000025F6 0100 add [bx+si],ax +000025F8 74C6 jz 0x25c0 +000025FA 052928 add ax,0x2829 +000025FD 0100 add [bx+si],ax +000025FF 20C6 and dh,al +00002601 052A28 add ax,0x282a +00002604 0100 add [bx+si],ax +00002606 63C6 arpl si,ax +00002608 052B28 add ax,0x282b +0000260B 0100 add [bx+si],ax +0000260D 68C605 push word 0x5c6 +00002610 2C28 sub al,0x28 +00002612 0100 add [bx+si],ax +00002614 6BC605 imul ax,si,byte +0x5 +00002617 2D2801 sub ax,0x128 +0000261A 002EC605 add [0x5c6],ch +0000261E 2E2801 sub [cs:bx+di],al +00002621 0000 add [bx+si],al +00002623 E85905 call 0x2b7f +00002626 0000 add [bx+si],al +00002628 C6051F mov byte [di],0x1f +0000262B 2801 sub [bx+di],al +0000262D 0000 add [bx+si],al +0000262F C60520 mov byte [di],0x20 +00002632 2801 sub [bx+di],al +00002634 004DC6 add [di-0x3a],cl +00002637 052128 add ax,0x2821 +0000263A 0100 add [bx+si],ax +0000263C 61 popa +0000263D C60522 mov byte [di],0x22 +00002640 2801 sub [bx+di],al +00002642 0063C6 add [bp+di-0x3a],ah +00002645 052328 add ax,0x2823 +00002648 0100 add [bx+si],ax +0000264A 68C605 push word 0x5c6 +0000264D 2428 and al,0x28 +0000264F 0100 add [bx+si],ax +00002651 69C60525 imul ax,si,word 0x2505 +00002655 2801 sub [bx+di],al +00002657 006EC6 add [bp-0x3a],ch +0000265A 052628 add ax,0x2826 +0000265D 0100 add [bx+si],ax +0000265F 65C60527 mov byte [gs:di],0x27 +00002663 2801 sub [bx+di],al +00002665 0020 add [bx+si],ah +00002667 C60528 mov byte [di],0x28 +0000266A 2801 sub [bx+di],al +0000266C 0063C6 add [bp+di-0x3a],ah +0000266F 052928 add ax,0x2829 +00002672 0100 add [bx+si],ax +00002674 68C605 push word 0x5c6 +00002677 2A28 sub ch,[bx+si] +00002679 0100 add [bx+si],ax +0000267B 65C6052B mov byte [gs:di],0x2b +0000267F 2801 sub [bx+di],al +00002681 0063C6 add [bp+di-0x3a],ah +00002684 052C28 add ax,0x282c +00002687 0100 add [bx+si],ax +00002689 6BC605 imul ax,si,byte +0x5 +0000268C 2D2801 sub ax,0x128 +0000268F 0021 add [bx+di],ah +00002691 C6052E mov byte [di],0x2e +00002694 2801 sub [bx+di],al +00002696 0000 add [bx+si],al +00002698 E8E404 call 0x2b7f +0000269B 0000 add [bx+si],al +0000269D C6051F mov byte [di],0x1f +000026A0 2801 sub [bx+di],al +000026A2 0000 add [bx+si],al +000026A4 C60520 mov byte [di],0x20 +000026A7 2801 sub [bx+di],al +000026A9 0053C6 add [bp+di-0x3a],dl +000026AC 052128 add ax,0x2821 +000026AF 0100 add [bx+si],ax +000026B1 49 dec cx +000026B2 C60522 mov byte [di],0x22 +000026B5 2801 sub [bx+di],al +000026B7 004DC6 add [di-0x3a],cl +000026BA 052328 add ax,0x2823 +000026BD 0100 add [bx+si],ax +000026BF 44 inc sp +000026C0 C60524 mov byte [di],0x24 +000026C3 2801 sub [bx+di],al +000026C5 0020 add [bx+si],ah +000026C7 C60525 mov byte [di],0x25 +000026CA 2801 sub [bx+di],al +000026CC 0066C6 add [bp-0x3a],ah +000026CF 052628 add ax,0x2826 +000026D2 0100 add [bx+si],ax +000026D4 6C insb +000026D5 C60527 mov byte [di],0x27 +000026D8 2801 sub [bx+di],al +000026DA 006FC6 add [bx-0x3a],ch +000026DD 052828 add ax,0x2828 +000026E0 0100 add [bx+si],ax +000026E2 61 popa +000026E3 C60529 mov byte [di],0x29 +000026E6 2801 sub [bx+di],al +000026E8 0074C6 add [si-0x3a],dh +000026EB 052A28 add ax,0x282a +000026EE 0100 add [bx+si],ax +000026F0 2EC6052B mov byte [cs:di],0x2b +000026F4 2801 sub [bx+di],al +000026F6 002D add [di],ch +000026F8 C6052C mov byte [di],0x2c +000026FB 2801 sub [bx+di],al +000026FD 0070C6 add [bx+si-0x3a],dh +00002700 052D28 add ax,0x282d +00002703 0100 add [bx+si],ax +00002705 2EC6052E mov byte [cs:di],0x2e +00002709 2801 sub [bx+di],al +0000270B 0000 add [bx+si],al +0000270D E86F04 call 0x2b7f +00002710 0000 add [bx+si],al +00002712 60 pusha +00002713 0FA8 push gs +00002715 0FA0 push fs +00002717 1E push ds +00002718 06 push es +00002719 E8240A call 0x3140 +0000271C 0000 add [bx+si],al +0000271E 07 pop es +0000271F 1F pop ds +00002720 0FA1 pop fs +00002722 0FA9 pop gs +00002724 61 popa +00002725 CF iret +00002726 60 pusha +00002727 0FA8 push gs +00002729 0FA0 push fs +0000272B 1E push ds +0000272C 06 push es +0000272D 56 push si +0000272E E87FE6 call 0xdb0 +00002731 FF db 0xFF +00002732 FF5E07 call far [bp+0x7] +00002735 1F pop ds +00002736 0FA1 pop fs +00002738 0FA9 pop gs +0000273A 61 popa +0000273B CF iret +0000273C 0FA8 push gs +0000273E 0FA0 push fs +00002740 1E push ds +00002741 06 push es +00002742 E87DE5 call 0xcc2 +00002745 FF db 0xFF +00002746 FF07 inc word [bx] +00002748 1F pop ds +00002749 0FA1 pop fs +0000274B 0FA9 pop gs +0000274D CF iret +0000274E C9 leave +0000274F CDCD int 0xcd +00002751 CDCD int 0xcd +00002753 CDCD int 0xcd +00002755 CDCD int 0xcd +00002757 CDCD int 0xcd +00002759 CDCD int 0xcd +0000275B CDCD int 0xcd +0000275D CDCD int 0xcd +0000275F CDCD int 0xcd +00002761 CDCD int 0xcd +00002763 CDCD int 0xcd +00002765 CDCD int 0xcd +00002767 CDCD int 0xcd +00002769 CDCD int 0xcd +0000276B CDCD int 0xcd +0000276D CDCD int 0xcd +0000276F CDCD int 0xcd +00002771 BB00BA mov bx,0xba00 +00002774 20424F and [bp+si+0x4f],al +00002777 53 push bx +00002778 2030 and [bx+si],dh +0000277A 2E3034 xor [cs:si],dh +0000277D 202D and [di],ch +0000277F 204552 and [di+0x52],al +00002782 52 push dx +00002783 4F dec di +00002784 52 push dx +00002785 3A20 cmp ah,[bx+si] +00002787 00BA2020 add [bp+si+0x2020],bh +0000278B 2020 and [bx+si],ah +0000278D 2020 and [bx+si],ah +0000278F 2020 and [bx+si],ah +00002791 2020 and [bx+si],ah +00002793 2020 and [bx+si],ah +00002795 2020 and [bx+si],ah +00002797 2020 and [bx+si],ah +00002799 2020 and [bx+si],ah +0000279B 2020 and [bx+si],ah +0000279D 2020 and [bx+si],ah +0000279F 2020 and [bx+si],ah +000027A1 2020 and [bx+si],ah +000027A3 2020 and [bx+si],ah +000027A5 2020 and [bx+si],ah +000027A7 2020 and [bx+si],ah +000027A9 2020 and [bx+si],ah +000027AB BA00BA mov dx,0xba00 +000027AE 2020 and [bx+si],ah +000027B0 50 push ax +000027B1 7265 jc 0x2818 +000027B3 7373 jnc 0x2828 +000027B5 20616E and [bx+di+0x6e],ah +000027B8 7920 jns 0x27da +000027BA 6B657920 imul sp,[di+0x79],byte +0x20 +000027BE 746F jz 0x282f +000027C0 20636F and [bp+di+0x6f],ah +000027C3 6E outsb +000027C4 7469 jz 0x282f +000027C6 6E outsb +000027C7 7565 jnz 0x282e +000027C9 2E2E2E2020 and [cs:bx+si],ah +000027CE 2020 and [bx+si],ah +000027D0 BA00BA mov dx,0xba00 +000027D3 205072 and [bx+si+0x72],dl +000027D6 657373 gs jnc 0x284c +000027D9 206120 and [bx+di+0x20],ah +000027DC 6B657920 imul sp,[di+0x79],byte +0x20 +000027E0 746F jz 0x2851 +000027E2 207265 and [bp+si+0x65],dh +000027E5 7374 jnc 0x285b +000027E7 61 popa +000027E8 7274 jc 0x285e +000027EA 207468 and [si+0x68],dh +000027ED 65205043 and [gs:bx+si+0x43],dl +000027F1 2E2E2E20BA00C8 and [cs:bp+si+0xc800],bh +000027F8 CDCD int 0xcd +000027FA CDCD int 0xcd +000027FC CDCD int 0xcd +000027FE CDCD int 0xcd +00002800 CDCD int 0xcd +00002802 CDCD int 0xcd +00002804 CDCD int 0xcd +00002806 CDCD int 0xcd +00002808 CDCD int 0xcd +0000280A CDCD int 0xcd +0000280C CDCD int 0xcd +0000280E CDCD int 0xcd +00002810 CDCD int 0xcd +00002812 CDCD int 0xcd +00002814 CDCD int 0xcd +00002816 CDCD int 0xcd +00002818 CDCD int 0xcd +0000281A BC0020 mov sp,0x2000 +0000281D BA0001 mov dx,0x100 +00002820 206E6F and [bp+0x6f],ch +00002823 6E outsb +00002824 652E2020 and [cs:bx+si],ah +00002828 2020 and [bx+si],ah +0000282A 2020 and [bx+si],ah +0000282C 2020 and [bx+si],ah +0000282E 00BA2045 add [bp+si+0x4520],bh +00002832 41 inc cx +00002833 58 pop ax +00002834 3A20 cmp ah,[bx+si] +00002836 307800 xor [bx+si+0x0],bh +00002839 2020 and [bx+si],ah +0000283B 45 inc bp +0000283C 42 inc dx +0000283D 58 pop ax +0000283E 3A20 cmp ah,[bx+si] +00002840 307800 xor [bx+si+0x0],bh +00002843 BA2045 mov dx,0x4520 +00002846 43 inc bx +00002847 58 pop ax +00002848 3A20 cmp ah,[bx+si] +0000284A 307800 xor [bx+si+0x0],bh +0000284D 2020 and [bx+si],ah +0000284F 45 inc bp +00002850 44 inc sp +00002851 58 pop ax +00002852 3A20 cmp ah,[bx+si] +00002854 307800 xor [bx+si+0x0],bh +00002857 BA2045 mov dx,0x4520 +0000285A 53 push bx +0000285B 50 push ax +0000285C 3A20 cmp ah,[bx+si] +0000285E 307800 xor [bx+si+0x0],bh +00002861 2020 and [bx+si],ah +00002863 45 inc bp +00002864 42 inc dx +00002865 50 push ax +00002866 3A20 cmp ah,[bx+si] +00002868 307800 xor [bx+si+0x0],bh +0000286B BA2045 mov dx,0x4520 +0000286E 53 push bx +0000286F 49 dec cx +00002870 3A20 cmp ah,[bx+si] +00002872 307800 xor [bx+si+0x0],bh +00002875 2020 and [bx+si],ah +00002877 45 inc bp +00002878 44 inc sp +00002879 49 dec cx +0000287A 3A20 cmp ah,[bx+si] +0000287C 307800 xor [bx+si+0x0],bh +0000287F 0000 add [bx+si],al +00002881 0000 add [bx+si],al +00002883 0000 add [bx+si],al +00002885 0000 add [bx+si],al +00002887 0000 add [bx+si],al +00002889 0000 add [bx+si],al +0000288B 0000 add [bx+si],al +0000288D 0000 add [bx+si],al +0000288F 0000 add [bx+si],al +00002891 0000 add [bx+si],al +00002893 0000 add [bx+si],al +00002895 0000 add [bx+si],al +00002897 0000 add [bx+si],al +00002899 0000 add [bx+si],al +0000289B 0000 add [bx+si],al +0000289D 0000 add [bx+si],al +0000289F 0000 add [bx+si],al +000028A1 0000 add [bx+si],al +000028A3 0000 add [bx+si],al +000028A5 0000 add [bx+si],al +000028A7 0000 add [bx+si],al +000028A9 0000 add [bx+si],al +000028AB 0000 add [bx+si],al +000028AD 0000 add [bx+si],al +000028AF 0000 add [bx+si],al +000028B1 0000 add [bx+si],al +000028B3 0000 add [bx+si],al +000028B5 0000 add [bx+si],al +000028B7 0000 add [bx+si],al +000028B9 0000 add [bx+si],al +000028BB 0000 add [bx+si],al +000028BD 0000 add [bx+si],al +000028BF 0000 add [bx+si],al +000028C1 0000 add [bx+si],al +000028C3 0000 add [bx+si],al +000028C5 0000 add [bx+si],al +000028C7 0000 add [bx+si],al +000028C9 0000 add [bx+si],al +000028CB 0000 add [bx+si],al +000028CD 0000 add [bx+si],al +000028CF 0000 add [bx+si],al +000028D1 0000 add [bx+si],al +000028D3 0000 add [bx+si],al +000028D5 0000 add [bx+si],al +000028D7 0000 add [bx+si],al +000028D9 0000 add [bx+si],al +000028DB 0000 add [bx+si],al +000028DD 0000 add [bx+si],al +000028DF 0000 add [bx+si],al +000028E1 0000 add [bx+si],al +000028E3 0000 add [bx+si],al +000028E5 0000 add [bx+si],al +000028E7 0000 add [bx+si],al +000028E9 0000 add [bx+si],al +000028EB 0000 add [bx+si],al +000028ED 0000 add [bx+si],al +000028EF 0000 add [bx+si],al +000028F1 0000 add [bx+si],al +000028F3 0000 add [bx+si],al +000028F5 0000 add [bx+si],al +000028F7 0000 add [bx+si],al +000028F9 0000 add [bx+si],al +000028FB 0000 add [bx+si],al +000028FD 0000 add [bx+si],al +000028FF 0000 add [bx+si],al +00002901 0000 add [bx+si],al +00002903 0000 add [bx+si],al +00002905 0000 add [bx+si],al +00002907 0000 add [bx+si],al +00002909 0000 add [bx+si],al +0000290B 0000 add [bx+si],al +0000290D 0000 add [bx+si],al +0000290F 0000 add [bx+si],al +00002911 0000 add [bx+si],al +00002913 0000 add [bx+si],al +00002915 0000 add [bx+si],al +00002917 0000 add [bx+si],al +00002919 0000 add [bx+si],al +0000291B 0000 add [bx+si],al +0000291D 0000 add [bx+si],al +0000291F 0000 add [bx+si],al +00002921 0000 add [bx+si],al +00002923 0000 add [bx+si],al +00002925 0000 add [bx+si],al +00002927 0000 add [bx+si],al +00002929 0000 add [bx+si],al +0000292B 0000 add [bx+si],al +0000292D 0000 add [bx+si],al +0000292F 0000 add [bx+si],al +00002931 0000 add [bx+si],al +00002933 0000 add [bx+si],al +00002935 0000 add [bx+si],al +00002937 0000 add [bx+si],al +00002939 0000 add [bx+si],al +0000293B 0000 add [bx+si],al +0000293D 0000 add [bx+si],al +0000293F 0000 add [bx+si],al +00002941 0000 add [bx+si],al +00002943 0000 add [bx+si],al +00002945 0000 add [bx+si],al +00002947 0000 add [bx+si],al +00002949 0000 add [bx+si],al +0000294B 0000 add [bx+si],al +0000294D 0000 add [bx+si],al +0000294F 0000 add [bx+si],al +00002951 0000 add [bx+si],al +00002953 0000 add [bx+si],al +00002955 0000 add [bx+si],al +00002957 0000 add [bx+si],al +00002959 0000 add [bx+si],al +0000295B 0000 add [bx+si],al +0000295D 0000 add [bx+si],al +0000295F 0000 add [bx+si],al +00002961 0000 add [bx+si],al +00002963 0000 add [bx+si],al +00002965 0000 add [bx+si],al +00002967 0000 add [bx+si],al +00002969 0000 add [bx+si],al +0000296B 0000 add [bx+si],al +0000296D 0000 add [bx+si],al +0000296F 0000 add [bx+si],al +00002971 0000 add [bx+si],al +00002973 0000 add [bx+si],al +00002975 0000 add [bx+si],al +00002977 0000 add [bx+si],al +00002979 0000 add [bx+si],al +0000297B 0000 add [bx+si],al +0000297D 0000 add [bx+si],al +0000297F 0000 add [bx+si],al +00002981 0000 add [bx+si],al +00002983 0000 add [bx+si],al +00002985 0000 add [bx+si],al +00002987 0000 add [bx+si],al +00002989 0000 add [bx+si],al +0000298B 0000 add [bx+si],al +0000298D 0000 add [bx+si],al +0000298F 0000 add [bx+si],al +00002991 0000 add [bx+si],al +00002993 0000 add [bx+si],al +00002995 0000 add [bx+si],al +00002997 0000 add [bx+si],al +00002999 0000 add [bx+si],al +0000299B 0000 add [bx+si],al +0000299D 0000 add [bx+si],al +0000299F 0000 add [bx+si],al +000029A1 0000 add [bx+si],al +000029A3 0000 add [bx+si],al +000029A5 0000 add [bx+si],al +000029A7 0000 add [bx+si],al +000029A9 0000 add [bx+si],al +000029AB 0000 add [bx+si],al +000029AD 0000 add [bx+si],al +000029AF 0000 add [bx+si],al +000029B1 0000 add [bx+si],al +000029B3 0000 add [bx+si],al +000029B5 0000 add [bx+si],al +000029B7 0000 add [bx+si],al +000029B9 0000 add [bx+si],al +000029BB 0000 add [bx+si],al +000029BD 0000 add [bx+si],al +000029BF 0000 add [bx+si],al +000029C1 0000 add [bx+si],al +000029C3 0000 add [bx+si],al +000029C5 0000 add [bx+si],al +000029C7 0000 add [bx+si],al +000029C9 0000 add [bx+si],al +000029CB 0000 add [bx+si],al +000029CD 0000 add [bx+si],al +000029CF 0000 add [bx+si],al +000029D1 0000 add [bx+si],al +000029D3 0000 add [bx+si],al +000029D5 0000 add [bx+si],al +000029D7 0000 add [bx+si],al +000029D9 0000 add [bx+si],al +000029DB 0000 add [bx+si],al +000029DD 0000 add [bx+si],al +000029DF 0000 add [bx+si],al +000029E1 0000 add [bx+si],al +000029E3 0000 add [bx+si],al +000029E5 0000 add [bx+si],al +000029E7 0000 add [bx+si],al +000029E9 0000 add [bx+si],al +000029EB 0000 add [bx+si],al +000029ED 0000 add [bx+si],al +000029EF 0000 add [bx+si],al +000029F1 0000 add [bx+si],al +000029F3 0000 add [bx+si],al +000029F5 0000 add [bx+si],al +000029F7 0000 add [bx+si],al +000029F9 0000 add [bx+si],al +000029FB 0000 add [bx+si],al +000029FD 0000 add [bx+si],al +000029FF 0000 add [bx+si],al +00002A01 0000 add [bx+si],al +00002A03 0000 add [bx+si],al +00002A05 0000 add [bx+si],al +00002A07 0000 add [bx+si],al +00002A09 0000 add [bx+si],al +00002A0B 0000 add [bx+si],al +00002A0D 0000 add [bx+si],al +00002A0F 0000 add [bx+si],al +00002A11 0000 add [bx+si],al +00002A13 0000 add [bx+si],al +00002A15 0000 add [bx+si],al +00002A17 0000 add [bx+si],al +00002A19 0000 add [bx+si],al +00002A1B 0000 add [bx+si],al +00002A1D 0000 add [bx+si],al +00002A1F 0000 add [bx+si],al +00002A21 0000 add [bx+si],al +00002A23 0000 add [bx+si],al +00002A25 0000 add [bx+si],al +00002A27 0000 add [bx+si],al +00002A29 0000 add [bx+si],al +00002A2B 0000 add [bx+si],al +00002A2D 0000 add [bx+si],al +00002A2F 0000 add [bx+si],al +00002A31 0000 add [bx+si],al +00002A33 0000 add [bx+si],al +00002A35 0000 add [bx+si],al +00002A37 0000 add [bx+si],al +00002A39 0000 add [bx+si],al +00002A3B 0000 add [bx+si],al +00002A3D 0000 add [bx+si],al +00002A3F 0000 add [bx+si],al +00002A41 0000 add [bx+si],al +00002A43 0000 add [bx+si],al +00002A45 0000 add [bx+si],al +00002A47 0000 add [bx+si],al +00002A49 0000 add [bx+si],al +00002A4B 0000 add [bx+si],al +00002A4D 0000 add [bx+si],al +00002A4F 0000 add [bx+si],al +00002A51 0000 add [bx+si],al +00002A53 0000 add [bx+si],al +00002A55 0000 add [bx+si],al +00002A57 0000 add [bx+si],al +00002A59 0000 add [bx+si],al +00002A5B 0000 add [bx+si],al +00002A5D 0000 add [bx+si],al +00002A5F 0000 add [bx+si],al +00002A61 0000 add [bx+si],al +00002A63 0000 add [bx+si],al +00002A65 0000 add [bx+si],al +00002A67 0000 add [bx+si],al +00002A69 0000 add [bx+si],al +00002A6B 0000 add [bx+si],al +00002A6D 0000 add [bx+si],al +00002A6F 0000 add [bx+si],al +00002A71 0000 add [bx+si],al +00002A73 0000 add [bx+si],al +00002A75 0000 add [bx+si],al +00002A77 0000 add [bx+si],al +00002A79 0000 add [bx+si],al +00002A7B 0000 add [bx+si],al +00002A7D 0000 add [bx+si],al +00002A7F 0000 add [bx+si],al +00002A81 0000 add [bx+si],al +00002A83 0000 add [bx+si],al +00002A85 0000 add [bx+si],al +00002A87 0000 add [bx+si],al +00002A89 0000 add [bx+si],al +00002A8B 0000 add [bx+si],al +00002A8D 0000 add [bx+si],al +00002A8F 0000 add [bx+si],al +00002A91 0000 add [bx+si],al +00002A93 0000 add [bx+si],al +00002A95 0000 add [bx+si],al +00002A97 0000 add [bx+si],al +00002A99 0000 add [bx+si],al +00002A9B 0000 add [bx+si],al +00002A9D 0000 add [bx+si],al +00002A9F 0000 add [bx+si],al +00002AA1 0000 add [bx+si],al +00002AA3 0000 add [bx+si],al +00002AA5 0000 add [bx+si],al +00002AA7 0000 add [bx+si],al +00002AA9 0000 add [bx+si],al +00002AAB 0000 add [bx+si],al +00002AAD 0000 add [bx+si],al +00002AAF 0000 add [bx+si],al +00002AB1 0000 add [bx+si],al +00002AB3 0000 add [bx+si],al +00002AB5 0000 add [bx+si],al +00002AB7 0000 add [bx+si],al +00002AB9 0000 add [bx+si],al +00002ABB 0000 add [bx+si],al +00002ABD 0000 add [bx+si],al +00002ABF 0000 add [bx+si],al +00002AC1 0000 add [bx+si],al +00002AC3 0000 add [bx+si],al +00002AC5 0000 add [bx+si],al +00002AC7 0000 add [bx+si],al +00002AC9 0000 add [bx+si],al +00002ACB 0000 add [bx+si],al +00002ACD 0000 add [bx+si],al +00002ACF 0000 add [bx+si],al +00002AD1 0000 add [bx+si],al +00002AD3 0000 add [bx+si],al +00002AD5 0000 add [bx+si],al +00002AD7 0000 add [bx+si],al +00002AD9 0000 add [bx+si],al +00002ADB 0000 add [bx+si],al +00002ADD 0000 add [bx+si],al +00002ADF 0000 add [bx+si],al +00002AE1 0000 add [bx+si],al +00002AE3 0000 add [bx+si],al +00002AE5 0000 add [bx+si],al +00002AE7 0000 add [bx+si],al +00002AE9 0000 add [bx+si],al +00002AEB 0000 add [bx+si],al +00002AED 0000 add [bx+si],al +00002AEF 0000 add [bx+si],al +00002AF1 0000 add [bx+si],al +00002AF3 0000 add [bx+si],al +00002AF5 0000 add [bx+si],al +00002AF7 0000 add [bx+si],al +00002AF9 0000 add [bx+si],al +00002AFB 0000 add [bx+si],al +00002AFD 0000 add [bx+si],al +00002AFF 0000 add [bx+si],al +00002B01 0000 add [bx+si],al +00002B03 0000 add [bx+si],al +00002B05 0000 add [bx+si],al +00002B07 0000 add [bx+si],al +00002B09 0000 add [bx+si],al +00002B0B 0000 add [bx+si],al +00002B0D 0000 add [bx+si],al +00002B0F 0000 add [bx+si],al +00002B11 0000 add [bx+si],al +00002B13 0000 add [bx+si],al +00002B15 0000 add [bx+si],al +00002B17 0000 add [bx+si],al +00002B19 0000 add [bx+si],al +00002B1B 0000 add [bx+si],al +00002B1D 0000 add [bx+si],al +00002B1F 0000 add [bx+si],al +00002B21 0000 add [bx+si],al +00002B23 0000 add [bx+si],al +00002B25 0000 add [bx+si],al +00002B27 0000 add [bx+si],al +00002B29 0000 add [bx+si],al +00002B2B 0000 add [bx+si],al +00002B2D 0000 add [bx+si],al +00002B2F 0000 add [bx+si],al +00002B31 0000 add [bx+si],al +00002B33 0000 add [bx+si],al +00002B35 0000 add [bx+si],al +00002B37 0000 add [bx+si],al +00002B39 0000 add [bx+si],al +00002B3B 0000 add [bx+si],al +00002B3D 0000 add [bx+si],al +00002B3F 0000 add [bx+si],al +00002B41 0000 add [bx+si],al +00002B43 0000 add [bx+si],al +00002B45 0000 add [bx+si],al +00002B47 0000 add [bx+si],al +00002B49 0000 add [bx+si],al +00002B4B 0000 add [bx+si],al +00002B4D 0000 add [bx+si],al +00002B4F 0000 add [bx+si],al +00002B51 0000 add [bx+si],al +00002B53 0000 add [bx+si],al +00002B55 0000 add [bx+si],al +00002B57 0000 add [bx+si],al +00002B59 0000 add [bx+si],al +00002B5B 0000 add [bx+si],al +00002B5D 0000 add [bx+si],al +00002B5F 0000 add [bx+si],al +00002B61 0000 add [bx+si],al +00002B63 0000 add [bx+si],al +00002B65 0000 add [bx+si],al +00002B67 0000 add [bx+si],al +00002B69 0000 add [bx+si],al +00002B6B 0000 add [bx+si],al +00002B6D 0000 add [bx+si],al +00002B6F 0000 add [bx+si],al +00002B71 0000 add [bx+si],al +00002B73 0000 add [bx+si],al +00002B75 0000 add [bx+si],al +00002B77 0000 add [bx+si],al +00002B79 0000 add [bx+si],al +00002B7B 0000 add [bx+si],al +00002B7D 0000 add [bx+si],al +00002B7F 0000 add [bx+si],al +00002B81 A37F28 mov [0x287f],ax +00002B84 0100 add [bx+si],ax +00002B86 891D mov [di],bx +00002B88 832801 sub word [bx+si],byte +0x1 +00002B8B 00890D87 add [bx+di+0x870d],cl +00002B8F 2801 sub [bx+di],al +00002B91 0089158B add [bx+di+0x8b15],cl +00002B95 2801 sub [bx+di],al +00002B97 0089258F add [bx+di+0x8f25],cl +00002B9B 2801 sub [bx+di],al +00002B9D 00892D93 add [bx+di+0x932d],cl +00002BA1 2801 sub [bx+di],al +00002BA3 00893597 add [bx+di+0x9735],cl +00002BA7 2801 sub [bx+di],al +00002BA9 00893D9B add [bx+di+0x9b3d],cl +00002BAD 2801 sub [bx+di],al +00002BAF 00E8 add al,ch +00002BB1 3903 cmp [bp+di],ax +00002BB3 0000 add [bx+si],al +00002BB5 66891D mov [di],ebx +00002BB8 AF scasw +00002BB9 2801 sub [bx+di],al +00002BBB 0066BA add [bp-0x46],ah +00002BBE 0000 add [bx+si],al +00002BC0 BE4883 mov si,0x8348 +00002BC3 0B00 or ax,[bx+si] +00002BC5 BFB128 mov di,0x28b1 +00002BC8 0100 add [bx+si],ax +00002BCA 66B90000A466 mov ecx,0x66a40000 +00002BD0 41 inc cx +00002BD1 6683F948 cmp ecx,byte +0x48 +00002BD5 7402 jz 0x2bd9 +00002BD7 EBF5 jmp short 0x2bce +00002BD9 6642 inc edx +00002BDB 6683FA0A cmp edx,byte +0xa +00002BDF 7405 jz 0x2be6 +00002BE1 83C658 add si,byte +0x58 +00002BE4 EBE4 jmp short 0x2bca +00002BE6 66BBA401E8D8 mov ebx,0xd8e801a4 +00002BEC 0200 add al,[bx+si] +00002BEE 00BD4E27 add [di+0x274e],bh +00002BF2 0100 add [bx+si],ax +00002BF4 E87B03 call 0x2f72 +00002BF7 0000 add [bx+si],al +00002BF9 66BBF401E8C5 mov ebx,0xc5e801f4 +00002BFF 0200 add al,[bx+si] +00002C01 00BD7327 add [di+0x2773],bh +00002C05 0100 add [bx+si],ax +00002C07 E86803 call 0x2f72 +00002C0A 0000 add [bx+si],al +00002C0C BD2028 mov bp,0x2820 +00002C0F 0100 add [bx+si],ax +00002C11 E85E03 call 0x2f72 +00002C14 0000 add [bx+si],al +00002C16 BD1C28 mov bp,0x281c +00002C19 0100 add [bx+si],ax +00002C1B E85403 call 0x2f72 +00002C1E 0000 add [bx+si],al +00002C20 66BB4402E89E mov ebx,0x9ee80244 +00002C26 0200 add al,[bx+si] +00002C28 00BD8827 add [di+0x2788],bh +00002C2C 0100 add [bx+si],ax +00002C2E E84103 call 0x2f72 +00002C31 0000 add [bx+si],al +00002C33 66BB9402E88B mov ebx,0x8be80294 +00002C39 0200 add al,[bx+si] +00002C3B 00BD2F28 add [di+0x282f],bh +00002C3F 0100 add [bx+si],ax +00002C41 E82E03 call 0x2f72 +00002C44 0000 add [bx+si],al +00002C46 A17F28 mov ax,[0x287f] +00002C49 0100 add [bx+si],ax +00002C4B E80103 call 0x2f4f +00002C4E 0000 add [bx+si],al +00002C50 BD3928 mov bp,0x2839 +00002C53 0100 add [bx+si],ax +00002C55 E81A03 call 0x2f72 +00002C58 0000 add [bx+si],al +00002C5A A18328 mov ax,[0x2883] +00002C5D 0100 add [bx+si],ax +00002C5F E8ED02 call 0x2f4f +00002C62 0000 add [bx+si],al +00002C64 BD1C28 mov bp,0x281c +00002C67 0100 add [bx+si],ax +00002C69 E80603 call 0x2f72 +00002C6C 0000 add [bx+si],al +00002C6E 66BBE402E850 mov ebx,0x50e802e4 +00002C74 0200 add al,[bx+si] +00002C76 00BD4328 add [di+0x2843],bh +00002C7A 0100 add [bx+si],ax +00002C7C E8F302 call 0x2f72 +00002C7F 0000 add [bx+si],al +00002C81 A18728 mov ax,[0x2887] +00002C84 0100 add [bx+si],ax +00002C86 E8C602 call 0x2f4f +00002C89 0000 add [bx+si],al +00002C8B BD4D28 mov bp,0x284d +00002C8E 0100 add [bx+si],ax +00002C90 E8DF02 call 0x2f72 +00002C93 0000 add [bx+si],al +00002C95 A18B28 mov ax,[0x288b] +00002C98 0100 add [bx+si],ax +00002C9A E8B202 call 0x2f4f +00002C9D 0000 add [bx+si],al +00002C9F BD1C28 mov bp,0x281c +00002CA2 0100 add [bx+si],ax +00002CA4 E8CB02 call 0x2f72 +00002CA7 0000 add [bx+si],al +00002CA9 66BB3403E815 mov ebx,0x15e80334 +00002CAF 0200 add al,[bx+si] +00002CB1 00BD5728 add [di+0x2857],bh +00002CB5 0100 add [bx+si],ax +00002CB7 E8B802 call 0x2f72 +00002CBA 0000 add [bx+si],al +00002CBC A18F28 mov ax,[0x288f] +00002CBF 0100 add [bx+si],ax +00002CC1 E88B02 call 0x2f4f +00002CC4 0000 add [bx+si],al +00002CC6 BD6128 mov bp,0x2861 +00002CC9 0100 add [bx+si],ax +00002CCB E8A402 call 0x2f72 +00002CCE 0000 add [bx+si],al +00002CD0 A19328 mov ax,[0x2893] +00002CD3 0100 add [bx+si],ax +00002CD5 E87702 call 0x2f4f +00002CD8 0000 add [bx+si],al +00002CDA BD1C28 mov bp,0x281c +00002CDD 0100 add [bx+si],ax +00002CDF E89002 call 0x2f72 +00002CE2 0000 add [bx+si],al +00002CE4 66BB8403E8DA mov ebx,0xdae80384 +00002CEA 0100 add [bx+si],ax +00002CEC 00BD6B28 add [di+0x286b],bh +00002CF0 0100 add [bx+si],ax +00002CF2 E87D02 call 0x2f72 +00002CF5 0000 add [bx+si],al +00002CF7 A19728 mov ax,[0x2897] +00002CFA 0100 add [bx+si],ax +00002CFC E85002 call 0x2f4f +00002CFF 0000 add [bx+si],al +00002D01 BD7528 mov bp,0x2875 +00002D04 0100 add [bx+si],ax +00002D06 E86902 call 0x2f72 +00002D09 0000 add [bx+si],al +00002D0B A19B28 mov ax,[0x289b] +00002D0E 0100 add [bx+si],ax +00002D10 E83C02 call 0x2f4f +00002D13 0000 add [bx+si],al +00002D15 BD1C28 mov bp,0x281c +00002D18 0100 add [bx+si],ax +00002D1A E85502 call 0x2f72 +00002D1D 0000 add [bx+si],al +00002D1F 66BBD403E89F mov ebx,0x9fe803d4 +00002D25 0100 add [bx+si],ax +00002D27 00BD8827 add [di+0x2788],bh +00002D2B 0100 add [bx+si],ax +00002D2D E84202 call 0x2f72 +00002D30 0000 add [bx+si],al +00002D32 66BB7404E88C mov ebx,0x8ce80474 +00002D38 0100 add [bx+si],ax +00002D3A 00BDF727 add [di+0x27f7],bh +00002D3E 0100 add [bx+si],ax +00002D40 E82F02 call 0x2f72 +00002D43 0000 add [bx+si],al +00002D45 66BB2404E879 mov ebx,0x79e80424 +00002D4B 0100 add [bx+si],ax +00002D4D 00803D1F add [bx+si+0x1f3d],al +00002D51 2801 sub [bx+di],al +00002D53 0001 add [bx+di],al +00002D55 7467 jz 0x2dbe +00002D57 BDD227 mov bp,0x27d2 +00002D5A 0100 add [bx+si],ax +00002D5C E81302 call 0x2f72 +00002D5F 0000 add [bx+si],al +00002D61 66BB4504E85D mov ebx,0x5de80445 +00002D67 0100 add [bx+si],ax +00002D69 00A0AE0D add [bx+si+0xdae],ah +00002D6D 0100 add [bx+si],ax +00002D6F 8A25 mov ah,[di] +00002D71 AF scasw +00002D72 0D0100 or ax,0x1 +00002D75 80FC3F cmp ah,0x3f +00002D78 750D jnz 0x2d87 +00002D7A 3C00 cmp al,0x0 +00002D7C 74EC jz 0x2d6a +00002D7E C605AF mov byte [di],0xaf +00002D81 0D0100 or ax,0x1 +00002D84 00EB add bl,ch +00002D86 0E push cs +00002D87 88E3 mov bl,ah +00002D89 FEC3 inc bl +00002D8B 38C3 cmp bl,al +00002D8D 74DB jz 0x2d6a +00002D8F FE05 inc byte [di] +00002D91 AF scasw +00002D92 0D0100 or ax,0x1 +00002D95 BE6E0D mov si,0xd6e +00002D98 0100 add [bx+si],ax +00002D9A 0FB605 movzx ax,[di] +00002D9D AF scasw +00002D9E 0D0100 or ax,0x1 +00002DA1 01C6 add si,ax +00002DA3 8A2680FC mov ah,[0xfc80] +00002DA7 FA cli +00002DA8 74C0 jz 0x2d6a +00002DAA 80FCE0 cmp ah,0xe0 +00002DAD 74BB jz 0x2d6a +00002DAF 80FCE1 cmp ah,0xe1 +00002DB2 74B6 jz 0x2d6a +00002DB4 F6C480 test ah,0x80 +00002DB7 75B1 jnz 0x2d6a +00002DB9 E8E6EA call 0x18a2 +00002DBC FF db 0xFF +00002DBD FF db 0xFF +00002DBE BDAD27 mov bp,0x27ad +00002DC1 0100 add [bx+si],ax +00002DC3 E8AC01 call 0x2f72 +00002DC6 0000 add [bx+si],al +00002DC8 66BB4304E8F6 mov ebx,0xf6e80443 +00002DCE 0000 add [bx+si],al +00002DD0 00A0AE0D add [bx+si+0xdae],ah +00002DD4 0100 add [bx+si],ax +00002DD6 8A25 mov ah,[di] +00002DD8 AF scasw +00002DD9 0D0100 or ax,0x1 +00002DDC 80FC3F cmp ah,0x3f +00002DDF 750D jnz 0x2dee +00002DE1 3C00 cmp al,0x0 +00002DE3 74EC jz 0x2dd1 +00002DE5 C605AF mov byte [di],0xaf +00002DE8 0D0100 or ax,0x1 +00002DEB 00EB add bl,ch +00002DED 0E push cs +00002DEE 88E3 mov bl,ah +00002DF0 FEC3 inc bl +00002DF2 38C3 cmp bl,al +00002DF4 74DB jz 0x2dd1 +00002DF6 FE05 inc byte [di] +00002DF8 AF scasw +00002DF9 0D0100 or ax,0x1 +00002DFC BE6E0D mov si,0xd6e +00002DFF 0100 add [bx+si],ax +00002E01 0FB605 movzx ax,[di] +00002E04 AF scasw +00002E05 0D0100 or ax,0x1 +00002E08 01C6 add si,ax +00002E0A 8A2680FC mov ah,[0xfc80] +00002E0E FA cli +00002E0F 74C0 jz 0x2dd1 +00002E11 80FCE0 cmp ah,0xe0 +00002E14 74BB jz 0x2dd1 +00002E16 80FCE1 cmp ah,0xe1 +00002E19 74B6 jz 0x2dd1 +00002E1B F6C480 test ah,0x80 +00002E1E 75B1 jnz 0x2dd1 +00002E20 66BA0000BF48 mov edx,0x48bf0000 +00002E26 830B00 or word [bp+di],byte +0x0 +00002E29 BEB128 mov si,0x28b1 +00002E2C 0100 add [bx+si],ax +00002E2E 66B90000A466 mov ecx,0x66a40000 +00002E34 41 inc cx +00002E35 6683F948 cmp ecx,byte +0x48 +00002E39 7402 jz 0x2e3d +00002E3B EBF5 jmp short 0x2e32 +00002E3D 6642 inc edx +00002E3F 6683FA0A cmp edx,byte +0xa +00002E43 7405 jz 0x2e4a +00002E45 83C758 add di,byte +0x58 +00002E48 EBE4 jmp short 0x2e2e +00002E4A 668B1D mov ebx,[di] +00002E4D AF scasw +00002E4E 2801 sub [bx+di],al +00002E50 00E8 add al,ch +00002E52 7100 jno 0x2e54 +00002E54 0000 add [bx+si],al +00002E56 C6051F mov byte [di],0x1f +00002E59 2801 sub [bx+di],al +00002E5B 0001 add [bx+di],al +00002E5D C60520 mov byte [di],0x20 +00002E60 2801 sub [bx+di],al +00002E62 0020 add [bx+si],ah +00002E64 C60521 mov byte [di],0x21 +00002E67 2801 sub [bx+di],al +00002E69 006EC6 add [bp-0x3a],ch +00002E6C 052228 add ax,0x2822 +00002E6F 0100 add [bx+si],ax +00002E71 6F outsw +00002E72 C60523 mov byte [di],0x23 +00002E75 2801 sub [bx+di],al +00002E77 006EC6 add [bp-0x3a],ch +00002E7A 052428 add ax,0x2824 +00002E7D 0100 add [bx+si],ax +00002E7F 65C60525 mov byte [gs:di],0x25 +00002E83 2801 sub [bx+di],al +00002E85 002EC605 add [0x5c6],ch +00002E89 262801 sub [es:bx+di],al +00002E8C 0020 add [bx+si],ah +00002E8E C60527 mov byte [di],0x27 +00002E91 2801 sub [bx+di],al +00002E93 0020 add [bx+si],ah +00002E95 C60528 mov byte [di],0x28 +00002E98 2801 sub [bx+di],al +00002E9A 0020 add [bx+si],ah +00002E9C C60529 mov byte [di],0x29 +00002E9F 2801 sub [bx+di],al +00002EA1 0020 add [bx+si],ah +00002EA3 C6052A mov byte [di],0x2a +00002EA6 2801 sub [bx+di],al +00002EA8 0020 add [bx+si],ah +00002EAA C6052B mov byte [di],0x2b +00002EAD 2801 sub [bx+di],al +00002EAF 0020 add [bx+si],ah +00002EB1 C6052C mov byte [di],0x2c +00002EB4 2801 sub [bx+di],al +00002EB6 0020 add [bx+si],ah +00002EB8 C6052D mov byte [di],0x2d +00002EBB 2801 sub [bx+di],al +00002EBD 0020 add [bx+si],ah +00002EBF C6052E mov byte [di],0x2e +00002EC2 2801 sub [bx+di],al +00002EC4 0000 add [bx+si],al +00002EC6 C3 ret +00002EC7 A3A328 mov [0x28a3],ax +00002ECA 0100 add [bx+si],ax +00002ECC 8915 mov [di],dx +00002ECE AB stosw +00002ECF 2801 sub [bx+di],al +00002ED1 00B00E88 add [bx+si+0x880e],dh +00002ED5 FC cld +00002ED6 66BAD40366EF mov edx,0xef6603d4 +00002EDC 6640 inc eax +00002EDE 88DC mov ah,bl +00002EE0 66EF out dx,eax +00002EE2 8B15 mov dx,[di] +00002EE4 AB stosw +00002EE5 2801 sub [bx+di],al +00002EE7 00A1A328 add [bx+di+0x28a3],ah +00002EEB 0100 add [bx+si],ax +00002EED C3 ret +00002EEE A3A328 mov [0x28a3],ax +00002EF1 0100 add [bx+si],ax +00002EF3 8915 mov [di],dx +00002EF5 AB stosw +00002EF6 2801 sub [bx+di],al +00002EF8 0066BA add [bp-0x46],ah +00002EFB D403 aam 0x3 +00002EFD B00E mov al,0xe +00002EFF EE out dx,al +00002F00 6642 inc edx +00002F02 EC in al,dx +00002F03 88C7 mov bh,al +00002F05 B00F mov al,0xf +00002F07 664A dec edx +00002F09 EE out dx,al +00002F0A 6642 inc edx +00002F0C EC in al,dx +00002F0D 88C3 mov bl,al +00002F0F 8B15 mov dx,[di] +00002F11 AB stosw +00002F12 2801 sub [bx+di],al +00002F14 00A1A328 add [bx+di+0x28a3],ah +00002F18 0100 add [bx+si],ax +00002F1A C3 ret +00002F1B A39F28 mov [0x289f],ax +00002F1E 0100 add [bx+si],ax +00002F20 891D mov [di],bx +00002F22 A7 cmpsw +00002F23 2801 sub [bx+di],al +00002F25 00E8 add al,ch +00002F27 C3 ret +00002F28 FF db 0xFF +00002F29 FF db 0xFF +00002F2A FF89D88B dec word [bx+di+0x8bd8] +00002F2E 1DA728 sbb ax,0x28a7 +00002F31 0100 add [bx+si],ax +00002F33 2666899C0000 mov [es:si+0x0],ebx +00002F39 800B00 or byte [bp+di],0x0 +00002F3C 89C3 mov bx,ax +00002F3E 6643 inc ebx +00002F40 E882FF call 0x2ec5 +00002F43 FF db 0xFF +00002F44 FF8B1DA7 dec word [bp+di+0xa71d] +00002F48 2801 sub [bx+di],al +00002F4A 00A19F28 add [bx+di+0x289f],ah +00002F4E 0100 add [bx+si],ax +00002F50 C3 ret +00002F51 B90800 mov cx,0x8 +00002F54 0000 add [bx+si],al +00002F56 C1C004 rol ax,0x4 +00002F59 0FB6D0 movzx dx,al +00002F5C 83E20F and dx,byte +0xf +00002F5F 83CA30 or dx,byte +0x30 +00002F62 83FA39 cmp dx,byte +0x39 +00002F65 7603 jna 0x2f6a +00002F67 83C207 add dx,byte +0x7 +00002F6A 88D3 mov bl,dl +00002F6C E8AAFF call 0x2f19 +00002F6F FF db 0xFF +00002F70 FFE2 jmp dx +00002F72 E3C3 jcxz 0x2f37 +00002F74 8A4500 mov al,[di+0x0] +00002F77 08C0 or al,al +00002F79 740C jz 0x2f87 +00002F7B 88C3 mov bl,al +00002F7D B740 mov bh,0x40 +00002F7F E897FF call 0x2f19 +00002F82 FF db 0xFF +00002F83 FF45EB inc word [di-0x15] +00002F86 ED in ax,dx +00002F87 C3 ret +00002F88 0000 add [bx+si],al +00002F8A 0000 add [bx+si],al +00002F8C 0000 add [bx+si],al +00002F8E 006650 add [bp+0x50],ah +00002F91 B000 mov al,0x0 +00002F93 E670 out 0x70,al +00002F95 E471 in al,0x71 +00002F97 A28E2F mov [0x2f8e],al +00002F9A 0100 add [bx+si],ax +00002F9C B002 mov al,0x2 +00002F9E E670 out 0x70,al +00002FA0 E471 in al,0x71 +00002FA2 A28D2F mov [0x2f8d],al +00002FA5 0100 add [bx+si],ax +00002FA7 B004 mov al,0x4 +00002FA9 E670 out 0x70,al +00002FAB E471 in al,0x71 +00002FAD A28C2F mov [0x2f8c],al +00002FB0 0100 add [bx+si],ax +00002FB2 B007 mov al,0x7 +00002FB4 E670 out 0x70,al +00002FB6 E471 in al,0x71 +00002FB8 A28B2F mov [0x2f8b],al +00002FBB 0100 add [bx+si],ax +00002FBD B008 mov al,0x8 +00002FBF E670 out 0x70,al +00002FC1 E471 in al,0x71 +00002FC3 A28A2F mov [0x2f8a],al +00002FC6 0100 add [bx+si],ax +00002FC8 B009 mov al,0x9 +00002FCA E670 out 0x70,al +00002FCC E471 in al,0x71 +00002FCE A2892F mov [0x2f89],al +00002FD1 0100 add [bx+si],ax +00002FD3 B032 mov al,0x32 +00002FD5 E670 out 0x70,al +00002FD7 E471 in al,0x71 +00002FD9 A2882F mov [0x2f88],al +00002FDC 0100 add [bx+si],ax +00002FDE 6658 pop eax +00002FE0 C3 ret +00002FE1 53 push bx +00002FE2 88C3 mov bl,al +00002FE4 80E30F and bl,0xf +00002FE7 C0E804 shr al,0x4 +00002FEA B70A mov bh,0xa +00002FEC F6E7 mul bh +00002FEE 00D8 add al,bl +00002FF0 5B pop bx +00002FF1 C3 ret +00002FF2 51 push cx +00002FF3 88C4 mov ah,al +00002FF5 66250FF0C0EC and eax,0xecc0f00f +00002FFB 0466 add al,0x66 +00002FFD 0D3030 or ax,0x3030 +00003000 86E0 xchg ah,al +00003002 59 pop cx +00003003 C3 ret +00003004 0D0A20 or ax,0x200a +00003007 2020 and [bx+si],ah +00003009 54 push sp +0000300A 696D653A20 imul bp,[di+0x65],word 0x203a +0000300F 000D add [di],cl +00003011 0A20 or ah,[bx+si] +00003013 2020 and [bx+si],ah +00003015 44 inc sp +00003016 61 popa +00003017 7465 jz 0x307e +00003019 3A20 cmp ah,[bx+si] +0000301B 005053 add [bx+si+0x53],dl +0000301E 56 push si +0000301F BE1030 mov si,0x3010 +00003022 0100 add [bx+si],ax +00003024 B307 mov bl,0x7 +00003026 E884D7 call 0x7ad +00003029 FF db 0xFF +0000302A FF db 0xFF +0000302B E85FFF call 0x2f8d +0000302E FF db 0xFF +0000302F FFA0882F jmp near [bx+si+0x2f88] +00003033 0100 add [bx+si],ax +00003035 E8B8FF call 0x2ff0 +00003038 FF db 0xFF +00003039 FF50B7 call near [bx+si-0x49] +0000303C 07 pop es +0000303D 88C3 mov bl,al +0000303F E80AD7 call 0x74c +00003042 FF db 0xFF +00003043 FF5888 call far [bx+si-0x78] +00003046 E3E8 jcxz 0x3030 +00003048 02D7 add dl,bh +0000304A FF db 0xFF +0000304B FFA0892F jmp near [bx+si+0x2f89] +0000304F 0100 add [bx+si],ax +00003051 E89CFF call 0x2ff0 +00003054 FF db 0xFF +00003055 FF5088 call near [bx+si-0x78] +00003058 C3 ret +00003059 E8F0D6 call 0x74c +0000305C FF db 0xFF +0000305D FF5888 call far [bx+si-0x78] +00003060 E3E8 jcxz 0x304a +00003062 E8D6FF call 0x303b +00003065 FFB33AE8 push word [bp+di+0xe83a] +00003069 E1D6 loope 0x3041 +0000306B FF db 0xFF +0000306C FFA08A2F jmp near [bx+si+0x2f8a] +00003070 0100 add [bx+si],ax +00003072 E87BFF call 0x2ff0 +00003075 FF db 0xFF +00003076 FF5088 call near [bx+si-0x78] +00003079 C3 ret +0000307A E8CFD6 call 0x74c +0000307D FF db 0xFF +0000307E FF5888 call far [bx+si-0x78] +00003081 E3E8 jcxz 0x306b +00003083 C7 db 0xC7 +00003084 D6 salc +00003085 FF db 0xFF +00003086 FFB33AE8 push word [bp+di+0xe83a] +0000308A C0D6FF rcl dh,0xff +0000308D FFA08B2F jmp near [bx+si+0x2f8b] +00003091 0100 add [bx+si],ax +00003093 E85AFF call 0x2ff0 +00003096 FF db 0xFF +00003097 FF5088 call near [bx+si-0x78] +0000309A C3 ret +0000309B E8AED6 call 0x74c +0000309E FF db 0xFF +0000309F FF5888 call far [bx+si-0x78] +000030A2 E3E8 jcxz 0x308c +000030A4 A6 cmpsb +000030A5 D6 salc +000030A6 FF db 0xFF +000030A7 FF5E5B call far [bp+0x5b] +000030AA 58 pop ax +000030AB C3 ret +000030AC 50 push ax +000030AD 53 push bx +000030AE 56 push si +000030AF BE0430 mov si,0x3004 +000030B2 0100 add [bx+si],ax +000030B4 B307 mov bl,0x7 +000030B6 E8F4D6 call 0x7ad +000030B9 FF db 0xFF +000030BA FF db 0xFF +000030BB E8CFFE call 0x2f8d +000030BE FF db 0xFF +000030BF FFA08C2F jmp near [bx+si+0x2f8c] +000030C3 0100 add [bx+si],ax +000030C5 E828FF call 0x2ff0 +000030C8 FF db 0xFF +000030C9 FF50B7 call near [bx+si-0x49] +000030CC 07 pop es +000030CD 88C3 mov bl,al +000030CF E87AD6 call 0x74c +000030D2 FF db 0xFF +000030D3 FF5888 call far [bx+si-0x78] +000030D6 E3E8 jcxz 0x30c0 +000030D8 72D6 jc 0x30b0 +000030DA FF db 0xFF +000030DB FFB33AE8 push word [bp+di+0xe83a] +000030DF 6BD6FF imul dx,si,byte -0x1 +000030E2 FFA08D2F jmp near [bx+si+0x2f8d] +000030E6 0100 add [bx+si],ax +000030E8 E805FF call 0x2ff0 +000030EB FF db 0xFF +000030EC FF5088 call near [bx+si-0x78] +000030EF C3 ret +000030F0 E859D6 call 0x74c +000030F3 FF db 0xFF +000030F4 FF5888 call far [bx+si-0x78] +000030F7 E3E8 jcxz 0x30e1 +000030F9 51 push cx +000030FA D6 salc +000030FB FF db 0xFF +000030FC FFB33AE8 push word [bp+di+0xe83a] +00003100 4A dec dx +00003101 D6 salc +00003102 FF db 0xFF +00003103 FFA08E2F jmp near [bx+si+0x2f8e] +00003107 0100 add [bx+si],ax +00003109 E8E4FE call 0x2ff0 +0000310C FF db 0xFF +0000310D FF5088 call near [bx+si-0x78] +00003110 C3 ret +00003111 E838D6 call 0x74c +00003114 FF db 0xFF +00003115 FF5888 call far [bx+si-0x78] +00003118 E3E8 jcxz 0x3102 +0000311A 30D6 xor dh,dl +0000311C FF db 0xFF +0000311D FF5E5B call far [bp+0x5b] +00003120 58 pop ax +00003121 C3 ret +00003122 0000 add [bx+si],al +00003124 0000 add [bx+si],al +00003126 0000 add [bx+si],al +00003128 0000 add [bx+si],al +0000312A 0000 add [bx+si],al +0000312C 0000 add [bx+si],al +0000312E 0000 add [bx+si],al +00003130 0000 add [bx+si],al +00003132 0000 add [bx+si],al +00003134 0000 add [bx+si],al +00003136 0000 add [bx+si],al +00003138 0000 add [bx+si],al +0000313A 0000 add [bx+si],al +0000313C 0000 add [bx+si],al +0000313E 0000 add [bx+si],al +00003140 0000 add [bx+si],al +00003142 830526 add word [di],byte +0x26 +00003145 3101 xor [bx+di],ax +00003147 0001 add [bx+di],al +00003149 83152A adc word [di],byte +0x2a +0000314C 3101 xor [bx+di],ax +0000314E 0000 add [bx+si],al +00003150 833D22 cmp word [di],byte +0x22 +00003153 3101 xor [bx+di],ax +00003155 0000 add [bx+si],al +00003157 7406 jz 0x315f +00003159 FF0D dec word [di] +0000315B 2231 and dh,[bx+di] +0000315D 0100 add [bx+si],ax +0000315F 813D2E31 cmp word [di],0x312e +00003163 0100 add [bx+si],ax +00003165 0000 add [bx+si],al +00003167 0000 add [bx+si],al +00003169 7406 jz 0x3171 +0000316B FF15 call near [di] +0000316D 2E3101 xor [cs:bx+di],ax +00003170 00813D32 add [bx+di+0x323d],al +00003174 3101 xor [bx+di],ax +00003176 0000 add [bx+si],al +00003178 0000 add [bx+si],al +0000317A 007406 add [si+0x6],dh +0000317D FF15 call near [di] +0000317F 3231 xor dh,[bx+di] +00003181 0100 add [bx+si],ax +00003183 813D3631 cmp word [di],0x3136 +00003187 0100 add [bx+si],ax +00003189 0000 add [bx+si],al +0000318B 0000 add [bx+si],al +0000318D 7406 jz 0x3195 +0000318F FF15 call near [di] +00003191 363101 xor [ss:bx+di],ax +00003194 00813D3A add [bx+di+0x3a3d],al +00003198 3101 xor [bx+di],ax +0000319A 0000 add [bx+si],al +0000319C 0000 add [bx+si],al +0000319E 007406 add [si+0x6],dh +000031A1 FF15 call near [di] +000031A3 3A31 cmp dh,[bx+di] +000031A5 0100 add [bx+si],ax +000031A7 813D3E31 cmp word [di],0x313e +000031AB 0100 add [bx+si],ax +000031AD 0000 add [bx+si],al +000031AF 0000 add [bx+si],al +000031B1 7406 jz 0x31b9 +000031B3 FF15 call near [di] +000031B5 3E3101 xor [ds:bx+di],ax +000031B8 00B020E6 add [bx+si+0xe620],dh +000031BC 20C3 and bl,al +000031BE 833D2E cmp word [di],byte +0x2e +000031C1 3101 xor [bx+di],ax +000031C3 0000 add [bx+si],al +000031C5 750E jnz 0x31d5 +000031C7 891D mov [di],bx +000031C9 2E3101 xor [cs:bx+di],ax +000031CC 00EB add bl,ch +000031CE 48 dec ax +000031CF B80100 mov ax,0x1 +000031D2 0000 add [bx+si],al +000031D4 C3 ret +000031D5 833D32 cmp word [di],byte +0x32 +000031D8 3101 xor [bx+di],ax +000031DA 0000 add [bx+si],al +000031DC 7508 jnz 0x31e6 +000031DE 891D mov [di],bx +000031E0 3231 xor dh,[bx+di] +000031E2 0100 add [bx+si],ax +000031E4 EB31 jmp short 0x3217 +000031E6 833D36 cmp word [di],byte +0x36 +000031E9 3101 xor [bx+di],ax +000031EB 0000 add [bx+si],al +000031ED 7508 jnz 0x31f7 +000031EF 891D mov [di],bx +000031F1 363101 xor [ss:bx+di],ax +000031F4 00EB add bl,ch +000031F6 20833D3A and [bp+di+0x3a3d],al +000031FA 3101 xor [bx+di],ax +000031FC 0000 add [bx+si],al +000031FE 7508 jnz 0x3208 +00003200 891D mov [di],bx +00003202 3A31 cmp dh,[bx+di] +00003204 0100 add [bx+si],ax +00003206 EB0F jmp short 0x3217 +00003208 833D3E cmp word [di],byte +0x3e +0000320B 3101 xor [bx+di],ax +0000320D 0000 add [bx+si],al +0000320F 75BE jnz 0x31cf +00003211 891D mov [di],bx +00003213 3E3101 xor [ds:bx+di],ax +00003216 0031 add [bx+di],dh +00003218 C0C339 rol bl,0x39 +0000321B 1D2E31 sbb ax,0x312e +0000321E 0100 add [bx+si],ax +00003220 7512 jnz 0x3234 +00003222 C7052E31 mov word [di],0x312e +00003226 0100 add [bx+si],ax +00003228 0000 add [bx+si],al +0000322A 0000 add [bx+si],al +0000322C EB54 jmp short 0x3282 +0000322E B80100 mov ax,0x1 +00003231 0000 add [bx+si],al +00003233 C3 ret +00003234 391D cmp [di],bx +00003236 3231 xor dh,[bx+di] +00003238 0100 add [bx+si],ax +0000323A 750C jnz 0x3248 +0000323C C7053231 mov word [di],0x3132 +00003240 0100 add [bx+si],ax +00003242 0000 add [bx+si],al +00003244 0000 add [bx+si],al +00003246 EB3A jmp short 0x3282 +00003248 391D cmp [di],bx +0000324A 363101 xor [ss:bx+di],ax +0000324D 00750C add [di+0xc],dh +00003250 C7053631 mov word [di],0x3136 +00003254 0100 add [bx+si],ax +00003256 0000 add [bx+si],al +00003258 0000 add [bx+si],al +0000325A EB26 jmp short 0x3282 +0000325C 391D cmp [di],bx +0000325E 3A31 cmp dh,[bx+di] +00003260 0100 add [bx+si],ax +00003262 750C jnz 0x3270 +00003264 C7053A31 mov word [di],0x313a +00003268 0100 add [bx+si],ax +0000326A 0000 add [bx+si],al +0000326C 0000 add [bx+si],al +0000326E EB12 jmp short 0x3282 +00003270 391D cmp [di],bx +00003272 3E3101 xor [ds:bx+di],ax +00003275 0075B6 add [di-0x4a],dh +00003278 C7053E31 mov word [di],0x313e +0000327C 0100 add [bx+si],ax +0000327E 0000 add [bx+si],al +00003280 0000 add [bx+si],al +00003282 31C0 xor ax,ax +00003284 C3 ret +00003285 890D mov [di],cx +00003287 2231 and dh,[bx+di] +00003289 0100 add [bx+si],ax +0000328B 833D22 cmp word [di],byte +0x22 +0000328E 3101 xor [bx+di],ax +00003290 0000 add [bx+si],al +00003292 75F7 jnz 0x328b +00003294 C3 ret +00003295 890D mov [di],cx +00003297 2231 and dh,[bx+di] +00003299 0100 add [bx+si],ax +0000329B B92231 mov cx,0x3122 +0000329E 0100 add [bx+si],ax +000032A0 C3 ret +000032A1 50 push ax +000032A2 B034 mov al,0x34 +000032A4 E643 out 0x43,al +000032A6 B09B mov al,0x9b +000032A8 E640 out 0x40,al +000032AA B02E mov al,0x2e +000032AC E640 out 0x40,al +000032AE 58 pop ax +000032AF C3 ret +000032B0 0000 add [bx+si],al +000032B2 0000 add [bx+si],al +000032B4 0A29 or ch,[bx+di] +000032B6 0C1C or al,0x1c +000032B8 1202 adc al,[bp+si] +000032BA 2B162313 sub dx,[0x1323] +000032BE 093A or [bp+si],di +000032C0 0000 add [bx+si],al +000032C2 3923 cmp [bp+di],sp +000032C4 0C2B or al,0x2b +000032C6 2B2F sub bp,[bx] +000032C8 1818 sbb [bx+si],bl +000032CA 1C14 sbb al,0x14 +000032CC 183C sbb [si],bh +000032CE 0A3C or bh,[si] +000032D0 0F db 0x0F +000032D1 1F pop ds +000032D2 2F das +000032D3 3F aas +000032D4 3E3814 cmp [ds:si],dl +000032D7 3C38 cmp al,0x38 +000032D9 16 push ss +000032DA 3F aas +000032DB 3D243F cmp ax,0x3f24 +000032DE 3F aas +000032DF 3F aas +000032E0 0000 add [bx+si],al +000032E2 0005 add [di],al +000032E4 050508 add ax,0x805 +000032E7 0808 or [bx+si],cl +000032E9 0B0B or cx,[bp+di] +000032EB 0B0E0E0E or cx,[0xe0e] +000032EF 1111 adc [bx+di],dx +000032F1 1114 adc [si],dx +000032F3 1414 adc al,0x14 +000032F5 1818 sbb [bx+si],bl +000032F7 181C sbb [si],bl +000032F9 1C1C sbb al,0x1c +000032FB 2020 and [bx+si],ah +000032FD 2024 and [si],ah +000032FF 2424 and al,0x24 +00003301 2828 sub [bx+si],ch +00003303 282D sub [di],ch +00003305 2D2D32 sub ax,0x322d +00003308 3232 xor dh,[bp+si] +0000330A 3838 cmp [bx+si],bh +0000330C 383F cmp [bx],bh +0000330E 3F aas +0000330F 3F aas +00003310 0D0C0F or ax,0xf0c +00003313 0F10161114 umov [0x1411],dl +00003318 1D1318 sbb ax,0x1813 +0000331B 2415 and al,0x15 +0000331D 1C2B sbb al,0x2b +0000331F 17 pop ss +00003320 1F pop ds +00003321 3219 xor bl,[bx+di] +00003323 2239 and bh,[bx+di] +00003325 1A2A sbb ch,[bp+si] +00003327 3F aas +00003328 000F add [bx],cl +0000332A 0201 add al,[bx+di] +0000332C 16 push ss +0000332D 0402 add al,0x2 +0000332F 1D0603 sbb ax,0x306 +00003332 2408 and al,0x8 +00003334 042B add al,0x2b +00003336 0A05 or al,[di] +00003338 320C xor cl,[si] +0000333A 06 push es +0000333B 390E143F cmp [0x3f14],cx +0000333F 2812 sub [bp+si],dl +00003341 06 push es +00003342 07 pop es +00003343 190C sbb [si],cx +00003345 0B21 or sp,[bx+di] +00003347 110E2817 adc [0x1728],cx +0000334B 1230 adc dh,[bx+si] +0000334D 1C15 sbb al,0x15 +0000334F 37 aaa +00003350 2219 and bl,[bx+di] +00003352 3E27 ds daa +00003354 1B3F sbb di,[bx] +00003356 3024 xor [si],ah +00003358 0F0302 lsl ax,[bp+si] +0000335B 16 push ss +0000335C 06 push es +0000335D 041D add al,0x1d +0000335F 0906240C or [0xc24],ax +00003363 082B or [bp+di],ch +00003365 0F db 0x0F +00003366 0A32 or dh,[bp+si] +00003368 120C adc cl,[si] +0000336A 3915 cmp [di],dx +0000336C 0E push cs +0000336D 3F aas +0000336E 1C14 sbb al,0x14 +00003370 0F0000 sldt [bx+si] +00003373 16 push ss +00003374 07 pop es +00003375 001D add [di],bl +00003377 0F0024 verr [si] +0000337A 17 pop ss +0000337B 002B add [bp+di],ch +0000337D 1F pop ds +0000337E 0032 add [bp+si],dh +00003380 27 daa +00003381 0039 add [bx+di],bh +00003383 2F das +00003384 003F add [bx],bh +00003386 37 aaa +00003387 000F add [bx],cl +00003389 050316 add ax,0x1603 +0000338C 0B07 or ax,[bx] +0000338E 1D110B sbb ax,0xb11 +00003391 2417 and al,0x17 +00003393 0F2B1D movntps [di],xmm3 +00003396 1332 adc si,[bp+si] +00003398 2317 and dx,[bx] +0000339A 3929 cmp [bx+di],bp +0000339C 1B3F sbb di,[bx] +0000339E 35221C xor ax,0x1c22 +000033A1 0E push cs +000033A2 0C21 or al,0x21 +000033A4 140E adc al,0xe +000033A6 261A10 sbb dl,[es:bx+si] +000033A9 2B20 sub sp,[bx+si] +000033AB 1230 adc dh,[bx+si] +000033AD 261435 es adc al,0x35 +000033B0 2C16 sub al,0x16 +000033B2 3A32 cmp dh,[bp+si] +000033B4 183F sbb [bx],bh +000033B6 381E0505 cmp [0x505],bl +000033BA 06 push es +000033BB 0A0A or cl,[bp+si] +000033BD 0D0F0F or ax,0xf0f +000033C0 1414 adc al,0x14 +000033C2 141B adc al,0x1b +000033C4 1919 sbb [bx+di],bx +000033C6 221E1E29 and bl,[0x291e] +000033CA 2323 and sp,[bp+di] +000033CC 302C xor [si],ch +000033CE 2C3F sub al,0x3f +000033D0 03060505 add ax,[0x505] +000033D4 0B09 or cx,[bx+di] +000033D6 07 pop es +000033D7 100D adc [di],cl +000033D9 0915 or [di],dx +000033DB 110B adc [bp+di],cx +000033DD 1A15 sbb dl,[di] +000033DF 0D1F19 or ax,0x191f +000033E2 0F db 0x0F +000033E3 241D and al,0x1d +000033E5 1430 adc al,0x30 +000033E7 2606 es push es +000033E9 06 push es +000033EA 07 pop es +000033EB 0D0D0F or ax,0xf0d +000033EE 1414 adc al,0x14 +000033F0 17 pop ss +000033F1 1B1B sbb bx,[bp+di] +000033F3 1F pop ds +000033F4 2222 and ah,[bp+si] +000033F6 27 daa +000033F7 2929 sub [bx+di],bp +000033F9 2F das +000033FA 3030 xor [bx+si],dh +000033FC 37 aaa +000033FD 3939 cmp [bx+di],di +000033FF 3F aas +00003400 06 push es +00003401 0F db 0x0F +00003402 040C add al,0xc +00003404 16 push ss +00003405 0812 or [bp+si],dl +00003407 1D0C18 sbb ax,0x180c +0000340A 2410 and al,0x10 +0000340C 1E push ds +0000340D 2B14 sub dx,[si] +0000340F 2432 and al,0x32 +00003411 182A sbb [bp+si],ch +00003413 391C cmp [si],bx +00003415 363F ss aas +00003417 230F and cx,[bx] +00003419 0A0A or cl,[bp+si] +0000341B 16 push ss +0000341C 1010 adc [bx+si],dl +0000341E 1D1515 sbb ax,0x1515 +00003421 241B and al,0x1b +00003423 1B2B sbb bp,[bp+di] +00003425 2020 and [bx+si],ah +00003427 32262639 xor ah,[0x3926] +0000342B 2B2B sub bp,[bp+di] +0000342D 3F aas +0000342E 36360F0F0616160C pi2fw mm0,[ss:0x1616] +00003436 1D1D12 sbb ax,0x121d +00003439 2424 and al,0x24 +0000343B 182B sbb [bp+di],ch +0000343D 2B1E3232 sub bx,[0x3232] +00003441 2439 and al,0x39 +00003443 392A cmp [bp+si],bp +00003445 3F aas +00003446 3F aas +00003447 360204 add al,[ss:si] +0000344A 0E push cs +0000344B 06 push es +0000344C 0C15 or al,0x15 +0000344E 0A14 or dl,[si] +00003450 1C0E sbb al,0xe +00003452 1C23 sbb al,0x23 +00003454 1224 adc ah,[si] +00003456 2A162C31 sub dl,[0x312c] +0000345A 1A34 sbb dh,[si] +0000345C 3824 cmp [si],ah +0000345E 3F aas +0000345F 3F aas +00003460 1204 adc al,[si] +00003462 0E push cs +00003463 1808 sbb [bx+si],cl +00003465 151F0C adc ax,0xc1f +00003468 1C25 sbb al,0x25 +0000346A 1023 adc [bp+di],ah +0000346C 2C14 sub al,0x14 +0000346E 2A32 sub dh,[bp+si] +00003470 1831 sbb [bx+di],dh +00003472 391C cmp [si],bx +00003474 383F cmp [bx],bh +00003476 263F es aas +00003478 0000 add [bx+si],al +0000347A 0000 add [bx+si],al +0000347C 0000 add [bx+si],al +0000347E 0000 add [bx+si],al +00003480 0000 add [bx+si],al +00003482 0000 add [bx+si],al +00003484 0000 add [bx+si],al +00003486 0000 add [bx+si],al +00003488 0000 add [bx+si],al +0000348A 0000 add [bx+si],al +0000348C 0035 add [di],dh +0000348E 2C16 sub al,0x16 +00003490 0908 or [bx+si],cx +00003492 0C10 or al,0x10 +00003494 0E push cs +00003495 10161514 adc [0x1415],dl +00003499 1D1B18 sbb ax,0x181b +0000349C 2322 and sp,[bp+si] +0000349E 1C2A sbb al,0x2a +000034A0 2820 sub [bx+si],ah +000034A2 302F xor [bx],ch +000034A4 2439 and al,0x39 +000034A6 382B cmp [bp+di],ch +000034A8 080C or [si],cl +000034AA 100E1016 adc [0x1610],cl +000034AE 15141D adc ax,0x1d14 +000034B1 1B18 sbb bx,[bx+si] +000034B3 2322 and sp,[bp+si] +000034B5 1C2A sbb al,0x2a +000034B7 2820 sub [bx+si],ah +000034B9 302F xor [bx],ch +000034BB 2439 and al,0x39 +000034BD 382B cmp [bp+di],ch +000034BF 3F aas +000034C0 0D090B or ax,0xb09 +000034C3 15100F adc ax,0xf10 +000034C6 1B161224 sbb dx,[0x2412] +000034CA 1D162A sbb ax,0x2a16 +000034CD 2319 and bx,[bx+di] +000034CF 332A xor bp,[bp+si] +000034D1 1D3930 sbb ax,0x3039 +000034D4 203F and [bx],bh +000034D6 3827 cmp [bx],ah +000034D8 06 push es +000034D9 0E push cs +000034DA 090C or [si],cx +000034DC 150E12 adc ax,0x120e +000034DF 1B161821 sbb dx,[0x2118] +000034E3 1C1E sbb al,0x1e +000034E5 27 daa +000034E6 2424 and al,0x24 +000034E8 2E2A2A sub ch,[cs:bp+si] +000034EB 342F xor al,0x2f +000034ED 323B xor bh,[bp+di] +000034EF 350000 xor ax,0x0 +000034F2 0000 add [bx+si],al +000034F4 0000 add [bx+si],al +000034F6 0000 add [bx+si],al +000034F8 0000 add [bx+si],al +000034FA 0000 add [bx+si],al +000034FC 0000 add [bx+si],al +000034FE 0000 add [bx+si],al +00003500 0000 add [bx+si],al +00003502 0000 add [bx+si],al +00003504 0000 add [bx+si],al +00003506 0000 add [bx+si],al +00003508 0000 add [bx+si],al +0000350A 0000 add [bx+si],al +0000350C 0000 add [bx+si],al +0000350E 0000 add [bx+si],al +00003510 0000 add [bx+si],al +00003512 0000 add [bx+si],al +00003514 0000 add [bx+si],al +00003516 0000 add [bx+si],al +00003518 0000 add [bx+si],al +0000351A 0000 add [bx+si],al +0000351C 0000 add [bx+si],al +0000351E 0000 add [bx+si],al +00003520 0000 add [bx+si],al +00003522 0000 add [bx+si],al +00003524 0000 add [bx+si],al +00003526 0000 add [bx+si],al +00003528 0000 add [bx+si],al +0000352A 0000 add [bx+si],al +0000352C 0000 add [bx+si],al +0000352E 0000 add [bx+si],al +00003530 0000 add [bx+si],al +00003532 0000 add [bx+si],al +00003534 0000 add [bx+si],al +00003536 0000 add [bx+si],al +00003538 0000 add [bx+si],al +0000353A 0000 add [bx+si],al +0000353C 0000 add [bx+si],al +0000353E 0000 add [bx+si],al +00003540 0000 add [bx+si],al +00003542 0000 add [bx+si],al +00003544 0000 add [bx+si],al +00003546 0000 add [bx+si],al +00003548 0000 add [bx+si],al +0000354A 0000 add [bx+si],al +0000354C 0000 add [bx+si],al +0000354E 0000 add [bx+si],al +00003550 0000 add [bx+si],al +00003552 0000 add [bx+si],al +00003554 0000 add [bx+si],al +00003556 0000 add [bx+si],al +00003558 0000 add [bx+si],al +0000355A 0000 add [bx+si],al +0000355C 0000 add [bx+si],al +0000355E 0000 add [bx+si],al +00003560 0000 add [bx+si],al +00003562 0000 add [bx+si],al +00003564 0000 add [bx+si],al +00003566 0000 add [bx+si],al +00003568 0000 add [bx+si],al +0000356A 0000 add [bx+si],al +0000356C 0000 add [bx+si],al +0000356E 0000 add [bx+si],al +00003570 0000 add [bx+si],al +00003572 0000 add [bx+si],al +00003574 0000 add [bx+si],al +00003576 0000 add [bx+si],al +00003578 0000 add [bx+si],al +0000357A 0000 add [bx+si],al +0000357C 0000 add [bx+si],al +0000357E 0000 add [bx+si],al +00003580 0000 add [bx+si],al +00003582 0000 add [bx+si],al +00003584 0000 add [bx+si],al +00003586 0000 add [bx+si],al +00003588 0000 add [bx+si],al +0000358A 0000 add [bx+si],al +0000358C 0000 add [bx+si],al +0000358E 0000 add [bx+si],al +00003590 0000 add [bx+si],al +00003592 0000 add [bx+si],al +00003594 0000 add [bx+si],al +00003596 0000 add [bx+si],al +00003598 0000 add [bx+si],al +0000359A 0000 add [bx+si],al +0000359C 0000 add [bx+si],al +0000359E 0000 add [bx+si],al +000035A0 0000 add [bx+si],al +000035A2 0000 add [bx+si],al +000035A4 0000 add [bx+si],al +000035A6 0000 add [bx+si],al +000035A8 0000 add [bx+si],al +000035AA 0000 add [bx+si],al +000035AC 0000 add [bx+si],al +000035AE 0000 add [bx+si],al +000035B0 50 push ax +000035B1 B80000 mov ax,0x0 +000035B4 0300 add ax,[bx+si] +000035B6 BB0000 mov bx,0x0 +000035B9 1000 adc [bx+si],al +000035BB E80CD5 call 0xaca +000035BE FF db 0xFF +000035BF FF58C3 call far [bx+si-0x3d] +000035C2 50 push ax +000035C3 53 push bx +000035C4 B80000 mov ax,0x0 +000035C7 1300 adc ax,[bx+si] +000035C9 BB0000 mov bx,0x0 +000035CC 1000 adc [bx+si],al +000035CE E8F9D4 call 0xaca +000035D1 FF db 0xFF +000035D2 FF db 0xFF +000035D3 BEB032 mov si,0x32b0 +000035D6 0100 add [bx+si],ax +000035D8 E86300 call 0x363e +000035DB 0000 add [bx+si],al +000035DD 5B pop bx +000035DE 58 pop ax +000035DF C3 ret +000035E0 6650 push eax +000035E2 6653 push ebx +000035E4 6651 push ecx +000035E6 57 push di +000035E7 BF0000 mov di,0x0 +000035EA 0A00 or al,[bx+si] +000035EC 6601DF add edi,ebx +000035EF 6689CB mov ebx,ecx +000035F2 66C1E108 shl ecx,0x8 +000035F6 66C1E306 shl ebx,0x6 +000035FA 6601D9 add ecx,ebx +000035FD 6601CF add edi,ecx +00003600 AA stosb +00003601 5F pop di +00003602 6659 pop ecx +00003604 665B pop ebx +00003606 6658 pop eax +00003608 C3 ret +00003609 60 pusha +0000360A 664A dec edx +0000360C 6651 push ecx +0000360E 6650 push eax +00003610 6649 dec ecx +00003612 6650 push eax +00003614 6653 push ebx +00003616 6651 push ecx +00003618 6689D9 mov ecx,ebx +0000361B 6689C3 mov ebx,eax +0000361E AC lodsb +0000361F E8BCFF call 0x35de +00003622 FF db 0xFF +00003623 FF6659 jmp near [bp+0x59] +00003626 665B pop ebx +00003628 6658 pop eax +0000362A 6640 inc eax +0000362C 6683F900 cmp ecx,byte +0x0 +00003630 75DE jnz 0x3610 +00003632 6658 pop eax +00003634 6659 pop ecx +00003636 6643 inc ebx +00003638 6683FA00 cmp edx,byte +0x0 +0000363C 75CC jnz 0x360a +0000363E 61 popa +0000363F C3 ret +00003640 6650 push eax +00003642 6651 push ecx +00003644 6652 push edx +00003646 6631C9 xor ecx,ecx +00003649 66BAC80388C8 mov edx,0xc88803c8 +0000364F EE out dx,al +00003650 6642 inc edx +00003652 8A06EE46 mov al,[0x46ee] +00003656 8A06EE46 mov al,[0x46ee] +0000365A 8A06EE46 mov al,[0x46ee] +0000365E 6641 inc ecx +00003660 6681F900017CE2 cmp ecx,0xe27c0100 +00003667 665A pop edx +00003669 6659 pop ecx +0000366B 6658 pop eax +0000366D C3 ret +0000366E 0A00 or al,[bx+si] +00003670 0A00 or al,[bx+si] +00003672 0A00 or al,[bx+si] +00003674 0A00 or al,[bx+si] +00003676 D400 aam 0x0 +00003678 D400 aam 0x0 +0000367A D400 aam 0x0 +0000367C D400 aam 0x0 +0000367E 0B00 or ax,[bx+si] +00003680 0B00 or ax,[bx+si] +00003682 0B00 or ax,[bx+si] +00003684 0B00 or ax,[bx+si] +00003686 D6 salc +00003687 00D6 add dh,dl +00003689 00D6 add dh,dl +0000368B 00D6 add dh,dl +0000368D 000C add [si],cl +0000368F 000C add [si],cl +00003691 000C add [si],cl +00003693 000C add [si],cl +00003695 00D8 add al,bl +00003697 00D8 add al,bl +00003699 00D8 add al,bl +0000369B 00D8 add al,bl +0000369D 00870083 add [bx+0x8300],al +000036A1 00810082 add [bx+di+0x8200],al +000036A5 008F008B add [bx+0x8b00],cl +000036A9 0089008A add [bx+di+0x8a00],cl +000036AD 0000 add [bx+si],al +000036AF 0002 add [bp+si],al +000036B1 0004 add [si],al +000036B3 000600C0 add [0xc000],al +000036B7 00C4 add ah,al +000036B9 00C8 add al,cl +000036BB 00CC add ah,cl +000036BD 0001 add [bx+di],al +000036BF 0003 add [bp+di],al +000036C1 0005 add [di],al +000036C3 0007 add [bx],al +000036C5 00C2 add dl,al +000036C7 00C6 add dh,al +000036C9 00CA add dl,cl +000036CB 00CE add dh,cl +000036CD 005052 add [bx+si+0x52],dl +000036D0 56 push si +000036D1 FA cli +000036D2 08FF or bh,bh +000036D4 7407 jz 0x36dd +000036D6 88DF mov bh,bl +000036D8 80C748 add bh,0x48 +000036DB EB05 jmp short 0x36e2 +000036DD 88DF mov bh,bl +000036DF 80C744 add bh,0x44 +000036E2 4E dec si +000036E3 0FB6C3 movzx ax,bl +000036E6 668B94006E mov edx,[si+0x6e00] +000036EB 360100 add [ss:bx+si],ax +000036EE 88D8 mov al,bl +000036F0 0C04 or al,0x4 +000036F2 EE out dx,al +000036F3 0FB6C3 movzx ax,bl +000036F6 668B94008E mov edx,[si+0x8e00] +000036FB 360100 add [ss:bx+si],ax +000036FE B000 mov al,0x0 +00003700 EE out dx,al +00003701 0FB6C3 movzx ax,bl +00003704 668B94007E mov edx,[si+0x7e00] +00003709 360100 add [ss:bx+si],ax +0000370C 88F8 mov al,bh +0000370E EE out dx,al +0000370F 0FB6C3 movzx ax,bl +00003712 668B9400AE mov edx,[si+0xae00] +00003717 360100 add [ss:bx+si],ax +0000371A 88C8 mov al,cl +0000371C EE out dx,al +0000371D 88E8 mov al,ch +0000371F EE out dx,al +00003720 0FB6C3 movzx ax,bl +00003723 668B94009E mov edx,[si+0x9e00] +00003728 360100 add [ss:bx+si],ax +0000372B 89C8 mov ax,cx +0000372D C1E810 shr ax,0x10 +00003730 EE out dx,al +00003731 0FB6C3 movzx ax,bl +00003734 668B9400BE mov edx,[si+0xbe00] +00003739 360100 add [ss:bx+si],ax +0000373C 89F0 mov ax,si +0000373E EE out dx,al +0000373F 88E0 mov al,ah +00003741 EE out dx,al +00003742 0FB6C3 movzx ax,bl +00003745 668B94006E mov edx,[si+0x6e00] +0000374A 360100 add [ss:bx+si],ax +0000374D 88D8 mov al,bl +0000374F EE out dx,al +00003750 FB sti +00003751 5E pop si +00003752 5A pop dx +00003753 58 pop ax +00003754 C3 ret +00003755 0000 add [bx+si],al +00003757 0000 add [bx+si],al +00003759 0000 add [bx+si],al +0000375B 0000 add [bx+si],al +0000375D 0000 add [bx+si],al +0000375F 0000 add [bx+si],al +00003761 0000 add [bx+si],al +00003763 0000 add [bx+si],al +00003765 0000 add [bx+si],al +00003767 4E dec si +00003768 6F outsw +00003769 7420 jz 0x378b +0000376B 696E737461 imul bp,[bp+0x73],word 0x6174 +00003770 6C insb +00003771 6C insb +00003772 65642020 and [fs:bx+si],ah +00003776 0033 add [bp+di],dh +00003778 363020 xor [ss:bx+si],ah +0000377B 6B622C20 imul sp,[bp+si+0x2c],byte +0x20 +0000377F 352E32 xor ax,0x322e +00003782 352220 xor ax,0x2022 +00003785 2000 and [bx+si],al +00003787 312E3220 xor [0x2032],bp +0000378B 6D insw +0000378C 622C bound bp,[si] +0000378E 2035 and [di],dh +00003790 2E3235 xor dh,[cs:di] +00003793 2220 and ah,[bx+si] +00003795 2000 and [bx+si],al +00003797 37 aaa +00003798 3230 xor dh,[bx+si] +0000379A 206B62 and [bp+di+0x62],ch +0000379D 2C20 sub al,0x20 +0000379F 332E3522 xor bp,[0x2235] +000037A3 2020 and [bx+si],ah +000037A5 2000 and [bx+si],al +000037A7 312E3434 xor [0x3434],bp +000037AB 206D62 and [di+0x62],ch +000037AE 2C20 sub al,0x20 +000037B0 332E3522 xor bp,[0x2235] +000037B4 2020 and [bx+si],ah +000037B6 0032 add [bp+si],dh +000037B8 2E3838 cmp [cs:bx+si],bh +000037BB 206D62 and [di+0x62],ch +000037BE 2C20 sub al,0x20 +000037C0 332E3522 xor bp,[0x2235] +000037C4 2020 and [bx+si],ah +000037C6 000D add [di],cl +000037C8 0A20 or ah,[bx+si] +000037CA 2020 and [bx+si],ah +000037CC 6664303A o32 xor [fs:bp+si],bh +000037D0 2020 and [bx+si],ah +000037D2 2000 and [bx+si],al +000037D4 0000 add [bx+si],al +000037D6 0000 add [bx+si],al +000037D8 0000 add [bx+si],al +000037DA 0D0A20 or ax,0x200a +000037DD 2020 and [bx+si],ah +000037DF 6664313A xor [fs:bp+si],edi +000037E3 2020 and [bx+si],ah +000037E5 2000 and [bx+si],al +000037E7 0000 add [bx+si],al +000037E9 0000 add [bx+si],al +000037EB 0000 add [bx+si],al +000037ED C3 ret +000037EE C3 ret +000037EF C3 ret +000037F0 C3 ret +000037F1 C3 ret +000037F2 C3 ret +000037F3 C3 ret +000037F4 C3 ret +000037F5 C3 ret +000037F6 C3 ret +000037F7 C3 ret +000037F8 C3 ret +000037F9 C3 ret +000037FA C3 ret +000037FB 50 push ax +000037FC 51 push cx +000037FD 57 push di +000037FE B010 mov al,0x10 +00003800 E670 out 0x70,al +00003802 E471 in al,0x71 +00003804 50 push ax +00003805 C0E804 shr al,0x4 +00003808 A2D437 mov [0x37d4],al +0000380B 0100 add [bx+si],ax +0000380D 58 pop ax +0000380E 240F and al,0xf +00003810 A2E737 mov [0x37e7],al +00003813 0100 add [bx+si],ax +00003815 BEC737 mov si,0x37c7 +00003818 0100 add [bx+si],ax +0000381A B307 mov bl,0x7 +0000381C E88ECF call 0x7ad +0000381F FF db 0xFF +00003820 FF0F dec word [bx] +00003822 B635 mov dh,0x35 +00003824 D437 aam 0x37 +00003826 0100 add [bx+si],ax +00003828 C1E604 shl si,0x4 +0000382B 81C66737 add si,0x3767 +0000382F 0100 add [bx+si],ax +00003831 B307 mov bl,0x7 +00003833 E877CF call 0x7ad +00003836 FF db 0xFF +00003837 FF db 0xFF +00003838 BEDA37 mov si,0x37da +0000383B 0100 add [bx+si],ax +0000383D B307 mov bl,0x7 +0000383F E86BCF call 0x7ad +00003842 FF db 0xFF +00003843 FF0F dec word [bx] +00003845 B635 mov dh,0x35 +00003847 E737 out 0x37,ax +00003849 0100 add [bx+si],ax +0000384B C1E604 shl si,0x4 +0000384E 81C66737 add si,0x3767 +00003852 0100 add [bx+si],ax +00003854 B307 mov bl,0x7 +00003856 E854CF call 0x7ad +00003859 FF db 0xFF +0000385A FF db 0xFF +0000385B BECAEF mov si,0xefca +0000385E 0F db 0x0F +0000385F 00BFD537 add [bx+0x37d5],bh +00003863 0100 add [bx+si],ax +00003865 B90500 mov cx,0x5 +00003868 0000 add [bx+si],al +0000386A F3A4 rep movsb +0000386C 83C605 add si,byte +0x5 +0000386F BFE837 mov di,0x37e8 +00003872 0100 add [bx+si],ax +00003874 B90600 mov cx,0x6 +00003877 0000 add [bx+si],al +00003879 F3A4 rep movsb +0000387B B126 mov cl,0x26 +0000387D BF9C38 mov di,0x389c +00003880 0100 add [bx+si],ax +00003882 E844C9 call 0x1c9 +00003885 FF db 0xFF +00003886 FFB106E8 push word [bx+di+0xe806] +0000388A 52 push dx +0000388B D3FF sar di,cl +0000388D FF db 0xFF +0000388E E8D200 call 0x3963 +00003891 0000 add [bx+si],al +00003893 E88801 call 0x3a1e +00003896 0000 add [bx+si],al +00003898 5F pop di +00003899 59 pop cx +0000389A 58 pop ax +0000389B C3 ret +0000389C 60 pusha +0000389D 0FA8 push gs +0000389F 0FA0 push fs +000038A1 1E push ds +000038A2 06 push es +000038A3 56 push si +000038A4 66830D55 or dword [di],byte +0x55 +000038A8 37 aaa +000038A9 0100 add [bx+si],ax +000038AB 01B020E6 add [bx+si+0xe620],si +000038AF 205E07 and [bp+0x7],bl +000038B2 1F pop ds +000038B3 0FA1 pop fs +000038B5 0FA9 pop gs +000038B7 61 popa +000038B8 CF iret +000038B9 50 push ax +000038BA 51 push cx +000038BB B99600 mov cx,0x96 +000038BE 0000 add [bx+si],al +000038C0 E8D0F9 call 0x3293 +000038C3 FF db 0xFF +000038C4 FF833900 inc word [bp+di+0x39] +000038C8 740F jz 0x38d9 +000038CA 66A15537 mov eax,[0x3755] +000038CE 0100 add [bx+si],ax +000038D0 6609C0 or eax,eax +000038D3 74F0 jz 0x38c5 +000038D5 59 pop cx +000038D6 58 pop ax +000038D7 F8 clc +000038D8 C3 ret +000038D9 59 pop cx +000038DA 58 pop ax +000038DB F9 stc +000038DC C3 ret +000038DD 50 push ax +000038DE 52 push dx +000038DF 66BAF203B000 mov edx,0xb003f2 +000038E5 EE out dx,al +000038E6 C60557 mov byte [di],0x57 +000038E9 37 aaa +000038EA 0100 add [bx+si],ax +000038EC 005A58 add [bp+si+0x58],bl +000038EF C3 ret +000038F0 50 push ax +000038F1 52 push dx +000038F2 66BAF203B01C mov edx,0x1cb003f2 +000038F8 EE out dx,al +000038F9 B91400 mov cx,0x14 +000038FC 0000 add [bx+si],al +000038FE E882F9 call 0x3283 +00003901 FF db 0xFF +00003902 FFC6 inc si +00003904 055737 add ax,0x3757 +00003907 0100 add [bx+si],ax +00003909 015A58 add [bp+si+0x58],bx +0000390C C3 ret +0000390D 52 push dx +0000390E 51 push cx +0000390F 50 push ax +00003910 B99600 mov cx,0x96 +00003913 0000 add [bx+si],al +00003915 E87BF9 call 0x3293 +00003918 FF db 0xFF +00003919 FF833900 inc word [bp+di+0x39] +0000391D 7415 jz 0x3934 +0000391F 66BAF403EC24 mov edx,0x24ec03f4 +00003925 C03C80 sar byte [si],0x80 +00003928 75F0 jnz 0x391a +0000392A 58 pop ax +0000392B 59 pop cx +0000392C 66BAF503EE5A mov edx,0x5aee03f5 +00003932 F8 clc +00003933 C3 ret +00003934 58 pop ax +00003935 59 pop cx +00003936 5A pop dx +00003937 F9 stc +00003938 C3 ret +00003939 52 push dx +0000393A 51 push cx +0000393B 50 push ax +0000393C B99600 mov cx,0x96 +0000393F 0000 add [bx+si],al +00003941 E84FF9 call 0x3293 +00003944 FF db 0xFF +00003945 FF833900 inc word [bp+di+0x39] +00003949 7415 jz 0x3960 +0000394B 66BAF403EC24 mov edx,0x24ec03f4 +00003951 C03CC0 sar byte [si],0xc0 +00003954 75F0 jnz 0x3946 +00003956 58 pop ax +00003957 59 pop cx +00003958 66BAF503EC5A mov edx,0x5aec03f5 +0000395E F8 clc +0000395F C3 ret +00003960 58 pop ax +00003961 59 pop cx +00003962 5A pop dx +00003963 F9 stc +00003964 C3 ret +00003965 66BAF203B008 mov edx,0x8b003f2 +0000396B EE out dx,al +0000396C B90500 mov cx,0x5 +0000396F 0000 add [bx+si],al +00003971 E80FF9 call 0x3283 +00003974 FF db 0xFF +00003975 FF66BA jmp near [bp-0x46] +00003978 F703B000 test word [bp+di],0xb0 +0000397C EE out dx,al +0000397D 66BAF2030C0C mov edx,0xc0c03f2 +00003983 EE out dx,al +00003984 66C70555370100 mov dword [di],0x13755 +0000398B 0000 add [bx+si],al +0000398D E827FF call 0x38b7 +00003990 FF db 0xFF +00003991 FF722E push word [bp+si+0x2e] +00003994 66B90400B008 mov ecx,0x8b00004 +0000399A E86EFF call 0x390b +0000399D FF db 0xFF +0000399E FF db 0xFF +0000399F E895FF call 0x3937 +000039A2 FF db 0xFF +000039A3 FF db 0xFF +000039A4 E890FF call 0x3937 +000039A7 FF db 0xFF +000039A8 FFE2 jmp dx +000039AA ED in ax,dx +000039AB B003 mov al,0x3 +000039AD E85BFF call 0x390b +000039B0 FF db 0xFF +000039B1 FFB0DFE8 push word [bx+si+0xe8df] +000039B5 54 push sp +000039B6 FF db 0xFF +000039B7 FF db 0xFF +000039B8 FFB002E8 push word [bx+si+0xe802] +000039BC 4D dec bp +000039BD FF db 0xFF +000039BE FF db 0xFF +000039BF FF db 0xFF +000039C0 F8 clc +000039C1 C3 ret +000039C2 F9 stc +000039C3 C3 ret +000039C4 60 pusha +000039C5 A06237 mov al,[0x3762] +000039C8 0100 add [bx+si],ax +000039CA 3805 cmp [di],al +000039CC 5A pop dx +000039CD 37 aaa +000039CE 0100 add [bx+si],ax +000039D0 7448 jz 0x3a1a +000039D2 B00F mov al,0xf +000039D4 E834FF call 0x390b +000039D7 FF db 0xFF +000039D8 FFA05937 jmp near [bx+si+0x3759] +000039DC 0100 add [bx+si],ax +000039DE E82AFF call 0x390b +000039E1 FF db 0xFF +000039E2 FFA05A37 jmp near [bx+si+0x375a] +000039E6 0100 add [bx+si],ax +000039E8 E820FF call 0x390b +000039EB FF db 0xFF +000039EC FF66C7 jmp near [bp-0x39] +000039EF 055537 add ax,0x3755 +000039F2 0100 add [bx+si],ax +000039F4 0000 add [bx+si],al +000039F6 E8BEFE call 0x38b7 +000039F9 FF db 0xFF +000039FA FF7220 push word [bp+si+0x20] +000039FD B008 mov al,0x8 +000039FF E809FF call 0x390b +00003A02 FF db 0xFF +00003A03 FF db 0xFF +00003A04 E830FF call 0x3937 +00003A07 FF db 0xFF +00003A08 FF88C4E8 dec word [bx+si+0xe8c4] +00003A0C 29FF sub di,di +00003A0E FF db 0xFF +00003A0F FFF6 push si +00003A11 C420 les sp,[bx+si] +00003A13 7408 jz 0x3a1d +00003A15 F6C480 test ah,0x80 +00003A18 7503 jnz 0x3a1d +00003A1A 61 popa +00003A1B F8 clc +00003A1C C3 ret +00003A1D 61 popa +00003A1E F9 stc +00003A1F C3 ret +00003A20 F60557 test byte [di],0x57 +00003A23 37 aaa +00003A24 0100 add [bx+si],ax +00003A26 017505 add [di+0x5],si +00003A29 E8C2FE call 0x38ee +00003A2C FF db 0xFF +00003A2D FFB007E8 push word [bx+si+0xe807] +00003A31 D8FE fdivr st6 +00003A33 FF db 0xFF +00003A34 FFB000E8 push word [bx+si+0xe800] +00003A38 D1FE sar si,1 +00003A3A FF db 0xFF +00003A3B FF66C7 jmp near [bp-0x39] +00003A3E 055537 add ax,0x3755 +00003A41 0100 add [bx+si],ax +00003A43 0000 add [bx+si],al +00003A45 E86FFE call 0x38b7 +00003A48 FF db 0xFF +00003A49 FF7226 push word [bp+si+0x26] +00003A4C B008 mov al,0x8 +00003A4E E8BAFE call 0x390b +00003A51 FF db 0xFF +00003A52 FF db 0xFF +00003A53 E8E1FE call 0x3937 +00003A56 FF db 0xFF +00003A57 FF88C4E8 dec word [bx+si+0xe8c4] +00003A5B DA db 0xDA +00003A5C FE db 0xFE +00003A5D FF db 0xFF +00003A5E FFF6 push si +00003A60 C420 les sp,[bx+si] +00003A62 740E jz 0x3a72 +00003A64 F6C410 test ah,0x10 +00003A67 7509 jnz 0x3a72 +00003A69 C60562 mov byte [di],0x62 +00003A6C 37 aaa +00003A6D 0100 add [bx+si],ax +00003A6F 00F8 add al,bh +00003A71 C3 ret +00003A72 F9 stc +00003A73 C3 ret +00003A74 E80700 call 0x3a7e +00003A77 0000 add [bx+si],al +00003A79 C3 ret +00003A7A E80100 call 0x3a7e +00003A7D 0000 add [bx+si],al +00003A7F C3 ret +00003A80 60 pusha +00003A81 80E601 and dh,0x1 +00003A84 8835 mov [di],dh +00003A86 58 pop ax +00003A87 37 aaa +00003A88 0100 add [bx+si],ax +00003A8A C0E602 shl dh,0x2 +00003A8D 8835 mov [di],dh +00003A8F 59 pop cx +00003A90 37 aaa +00003A91 0100 add [bx+si],ax +00003A93 C6055C mov byte [di],0x5c +00003A96 37 aaa +00003A97 0100 add [bx+si],ax +00003A99 0480 add al,0x80 +00003A9B FD std +00003A9C 51 push cx +00003A9D 0F834501 jnc near 0x3be6 +00003AA1 0000 add [bx+si],al +00003AA3 882D mov [di],ch +00003AA5 5A pop dx +00003AA6 37 aaa +00003AA7 0100 add [bx+si],ax +00003AA9 80F913 cmp cl,0x13 +00003AAC 0F833601 jnc near 0x3be6 +00003AB0 0000 add [bx+si],al +00003AB2 880D mov [di],cl +00003AB4 5B pop bx +00003AB5 37 aaa +00003AB6 0100 add [bx+si],ax +00003AB8 F60557 test byte [di],0x57 +00003ABB 37 aaa +00003ABC 0100 add [bx+si],ax +00003ABE 017505 add [di+0x5],si +00003AC1 E82AFE call 0x38ee +00003AC4 FF db 0xFF +00003AC5 FF66BA jmp near [bp-0x46] +00003AC8 F703B000 test word [bp+di],0xb0 +00003ACC EE out dx,al +00003ACD C6055C mov byte [di],0x5c +00003AD0 37 aaa +00003AD1 0100 add [bx+si],ax +00003AD3 8031C9 xor byte [bx+di],0xc9 +00003AD6 66B90300E8E5 mov ecx,0xe5e80003 +00003ADC FE db 0xFE +00003ADD FF db 0xFF +00003ADE FF7307 push word [bp+di+0x7] +00003AE1 E2F7 loop 0x3ada +00003AE3 E90001 jmp 0x3be6 +00003AE6 0000 add [bx+si],al +00003AE8 66BAF403ECA8 mov edx,0xa8ec03f4 +00003AEE 200F and [bx],cl +00003AF0 85F3 test bx,si +00003AF2 0000 add [bx+si],al +00003AF4 0080FB00 add [bx+si+0xfb],al +00003AF8 741C jz 0x3b16 +00003AFA B302 mov bl,0x2 +00003AFC BE0002 mov si,0x200 +00003AFF 0000 add [bx+si],al +00003B01 B90000 mov cx,0x0 +00003B04 0800 or [bx+si],al +00003B06 B701 mov bh,0x1 +00003B08 E8C1FB call 0x36cc +00003B0B FF db 0xFF +00003B0C FFB0C5E8 push word [bx+si+0xe8c5] +00003B10 F9 stc +00003B11 FD std +00003B12 FF db 0xFF +00003B13 FF db 0xFF +00003B14 EB1A jmp short 0x3b30 +00003B16 B302 mov bl,0x2 +00003B18 BE0002 mov si,0x200 +00003B1B 0000 add [bx+si],al +00003B1D B90000 mov cx,0x0 +00003B20 0800 or [bx+si],al +00003B22 B700 mov bh,0x0 +00003B24 E8A5FB call 0x36cc +00003B27 FF db 0xFF +00003B28 FFB0E6E8 push word [bx+si+0xe8e6] +00003B2C DD db 0xDD +00003B2D FD std +00003B2E FF db 0xFF +00003B2F FFA05937 jmp near [bx+si+0x3759] +00003B33 0100 add [bx+si],ax +00003B35 E8D3FD call 0x390b +00003B38 FF db 0xFF +00003B39 FFA05A37 jmp near [bx+si+0x375a] +00003B3D 0100 add [bx+si],ax +00003B3F E8C9FD call 0x390b +00003B42 FF db 0xFF +00003B43 FFA05837 jmp near [bx+si+0x3758] +00003B47 0100 add [bx+si],ax +00003B49 E8BFFD call 0x390b +00003B4C FF db 0xFF +00003B4D FFA05B37 jmp near [bx+si+0x375b] +00003B51 0100 add [bx+si],ax +00003B53 E8B5FD call 0x390b +00003B56 FF db 0xFF +00003B57 FFB002E8 push word [bx+si+0xe802] +00003B5B AE scasb +00003B5C FD std +00003B5D FF db 0xFF +00003B5E FFB012E8 push word [bx+si+0xe812] +00003B62 A7 cmpsw +00003B63 FD std +00003B64 FF db 0xFF +00003B65 FFB01BE8 push word [bx+si+0xe81b] +00003B69 A0FDFF mov al,[0xfffd] +00003B6C FFB0FFE8 push word [bx+si+0xe8ff] +00003B70 99 cwd +00003B71 FD std +00003B72 FF db 0xFF +00003B73 FF66C7 jmp near [bp-0x39] +00003B76 055537 add ax,0x3755 +00003B79 0100 add [bx+si],ax +00003B7B 0000 add [bx+si],al +00003B7D E837FD call 0x38b7 +00003B80 FF db 0xFF +00003B81 FF7264 push word [bp+si+0x64] +00003B84 E8B0FD call 0x3937 +00003B87 FF db 0xFF +00003B88 FFA25E37 jmp near [bp+si+0x375e] +00003B8C 0100 add [bx+si],ax +00003B8E E8A6FD call 0x3937 +00003B91 FF db 0xFF +00003B92 FFA25F37 jmp near [bp+si+0x375f] +00003B96 0100 add [bx+si],ax +00003B98 E89CFD call 0x3937 +00003B9B FF db 0xFF +00003B9C FFA26037 jmp near [bp+si+0x3760] +00003BA0 0100 add [bx+si],ax +00003BA2 E892FD call 0x3937 +00003BA5 FF db 0xFF +00003BA6 FFA26237 jmp near [bp+si+0x3762] +00003BAA 0100 add [bx+si],ax +00003BAC E888FD call 0x3937 +00003BAF FF db 0xFF +00003BB0 FFA26337 jmp near [bp+si+0x3763] +00003BB4 0100 add [bx+si],ax +00003BB6 E87EFD call 0x3937 +00003BB9 FF db 0xFF +00003BBA FFA26437 jmp near [bp+si+0x3764] +00003BBE 0100 add [bx+si],ax +00003BC0 E874FD call 0x3937 +00003BC3 FF db 0xFF +00003BC4 FFA26537 jmp near [bp+si+0x3765] +00003BC8 0100 add [bx+si],ax +00003BCA F6055E test byte [di],0x5e +00003BCD 37 aaa +00003BCE 0100 add [bx+si],ax +00003BD0 C0 db 0xC0 +00003BD1 7515 jnz 0x3be8 +00003BD3 C6055C mov byte [di],0x5c +00003BD6 37 aaa +00003BD7 0100 add [bx+si],ax +00003BD9 00618A add [bx+di-0x76],ah +00003BDC 255C37 and ax,0x375c +00003BDF 0100 add [bx+si],ax +00003BE1 A06437 mov al,[0x3764] +00003BE4 0100 add [bx+si],ax +00003BE6 F8 clc +00003BE7 C3 ret +00003BE8 61 popa +00003BE9 8A25 mov ah,[di] +00003BEB 5C pop sp +00003BEC 37 aaa +00003BED 0100 add [bx+si],ax +00003BEF F9 stc +00003BF0 C3 ret +00003BF1 0000 add [bx+si],al +00003BF3 0000 add [bx+si],al +00003BF5 1010 adc [bx+si],dl +00003BF7 1010 adc [bx+si],dl +00003BF9 1010 adc [bx+si],dl +00003BFB 1000 adc [bx+si],al +00003BFD 0000 add [bx+si],al +00003BFF 0000 add [bx+si],al +00003C01 0000 add [bx+si],al +00003C03 0000 add [bx+si],al +00003C05 0000 add [bx+si],al +00003C07 0010 add [bx+si],dl +00003C09 3205 xor al,[di] +00003C0B 3636050505 ss add ax,0x505 +00003C10 1010 adc [bx+si],dl +00003C12 1000 adc [bx+si],al +00003C14 0000 add [bx+si],al +00003C16 0000 add [bx+si],al +00003C18 0000 add [bx+si],al +00003C1A 0000 add [bx+si],al +00003C1C 3205 xor al,[di] +00003C1E 361F ss pop ds +00003C20 37 aaa +00003C21 36050505 ss add ax,0x505 +00003C25 050510 add ax,0x1005 +00003C28 1000 adc [bx+si],al +00003C2A 0000 add [bx+si],al +00003C2C 0000 add [bx+si],al +00003C2E 1010 adc [bx+si],dl +00003C30 1010 adc [bx+si],dl +00003C32 1010 adc [bx+si],dl +00003C34 1010 adc [bx+si],dl +00003C36 1032 adc [bp+si],dh +00003C38 050505 add ax,0x505 +00003C3B 050510 add ax,0x1005 +00003C3E 0000 add [bx+si],al +00003C40 0010 add [bx+si],dl +00003C42 1010 adc [bx+si],dl +00003C44 1010 adc [bx+si],dl +00003C46 1010 adc [bx+si],dl +00003C48 1010 adc [bx+si],dl +00003C4A 1010 adc [bx+si],dl +00003C4C 1010 adc [bx+si],dl +00003C4E 3205 xor al,[di] +00003C50 050510 add ax,0x1005 +00003C53 0000 add [bx+si],al +00003C55 0000 add [bx+si],al +00003C57 0000 add [bx+si],al +00003C59 0034 add [si],dh +00003C5B 1033 adc [bp+di],dh +00003C5D 1033 adc [bp+di],dh +00003C5F 3210 xor dl,[bx+si] +00003C61 1010 adc [bx+si],dl +00003C63 1032 adc [bp+si],dh +00003C65 3405 xor al,0x5 +00003C67 0000 add [bx+si],al +00003C69 0000 add [bx+si],al +00003C6B 3434 xor al,0x34 +00003C6D 3436 xor al,0x36 +00003C6F 1035 adc [di],dh +00003C71 1035 adc [di],dh +00003C73 353432 xor ax,0x3234 +00003C76 1032 adc [bp+si],dh +00003C78 3437 xor al,0x37 +00003C7A 3432 xor al,0x32 +00003C7C 0000 add [bx+si],al +00003C7E 3437 xor al,0x37 +00003C80 37 aaa +00003C81 37 aaa +00003C82 37 aaa +00003C83 37 aaa +00003C84 363636353210 ss xor ax,0x1032 +00003C8A 1034 adc [si],dh +00003C8C 36363432 ss xor al,0x32 +00003C90 0000 add [bx+si],al +00003C92 3234 xor dh,[si] +00003C94 3434 xor al,0x34 +00003C96 3434 xor al,0x34 +00003C98 3434 xor al,0x34 +00003C9A 10363632 adc [0x3236],dh +00003C9E 10363434 adc [0x3434],dh +00003CA2 3210 xor dl,[bx+si] +00003CA4 0000 add [bx+si],al +00003CA6 0010 add [bx+si],dl +00003CA8 1010 adc [bx+si],dl +00003CAA 1010 adc [bx+si],dl +00003CAC 1010 adc [bx+si],dl +00003CAE 1010 adc [bx+si],dl +00003CB0 363636361010 adc [ss:bx+si],dl +00003CB6 1000 adc [bx+si],al +00003CB8 0000 add [bx+si],al +00003CBA 0000 add [bx+si],al +00003CBC 0010 add [bx+si],dl +00003CBE 1010 adc [bx+si],dl +00003CC0 1010 adc [bx+si],dl +00003CC2 3234 xor dh,[si] +00003CC4 3434 xor al,0x34 +00003CC6 3432 xor al,0x32 +00003CC8 1010 adc [bx+si],dl +00003CCA 0000 add [bx+si],al +00003CCC 0000 add [bx+si],al +00003CCE 0000 add [bx+si],al +00003CD0 0000 add [bx+si],al +00003CD2 006B8B add [bp+di-0x75],ch +00003CD5 8B8B8B6B mov cx,[bp+di+0x6b8b] +00003CD9 3205 xor al,[di] +00003CDB 053200 add ax,0x32 +00003CDE 0000 add [bx+si],al +00003CE0 0000 add [bx+si],al +00003CE2 0000 add [bx+si],al +00003CE4 0000 add [bx+si],al +00003CE6 6A8C push byte -0x74 +00003CE8 8D8D8C8B lea cx,[di+0x8b8c] +00003CEC 8B6B05 mov bp,[bp+di+0x5] +00003CEF 050532 add ax,0x3205 +00003CF2 0000 add [bx+si],al +00003CF4 0000 add [bx+si],al +00003CF6 0000 add [bx+si],al +00003CF8 0010 add [bx+si],dl +00003CFA 8C8E8E8D mov [bp+0x8d8e],cs +00003CFE 8C8C8B6E mov [si+0x6e8b],cs +00003D02 1F pop ds +00003D03 1F pop ds +00003D04 6E outsb +00003D05 6B0000 imul ax,[bx+si],byte +0x0 +00003D08 0000 add [bx+si],al +00003D0A 0000 add [bx+si],al +00003D0C 0010 add [bx+si],dl +00003D0E 8C8D8E8C mov [di+0x8c8e],cs +00003D12 8B8B8B10 mov cx,[bp+di+0x108b] +00003D16 6E outsb +00003D17 1F pop ds +00003D18 6E outsb +00003D19 6B0000 imul ax,[bx+si],byte +0x0 +00003D1C 0000 add [bx+si],al +00003D1E 0000 add [bx+si],al +00003D20 0000 add [bx+si],al +00003D22 108B8B8B adc [bp+di+0x8b8b],cl +00003D26 8B8B8B10 mov cx,[bp+di+0x108b] +00003D2A 6D insw +00003D2B 6E outsb +00003D2C 6D insw +00003D2D 6B0000 imul ax,[bx+si],byte +0x0 +00003D30 0000 add [bx+si],al +00003D32 0000 add [bx+si],al +00003D34 0000 add [bx+si],al +00003D36 0010 add [bx+si],dl +00003D38 1010 adc [bx+si],dl +00003D3A 1010 adc [bx+si],dl +00003D3C 1032 adc [bp+si],dh +00003D3E 4B dec bx +00003D3F 4B dec bx +00003D40 3200 xor al,[bx+si] +00003D42 0000 add [bx+si],al +00003D44 0000 add [bx+si],al +00003D46 0000 add [bx+si],al +00003D48 0000 add [bx+si],al +00003D4A 104E4C adc [bp+0x4c],cl +00003D4D 324E4E xor cl,[bp+0x4e] +00003D50 4C dec sp +00003D51 4C dec sp +00003D52 4C dec sp +00003D53 4B dec bx +00003D54 1000 adc [bx+si],al +00003D56 0000 add [bx+si],al +00003D58 0000 add [bx+si],al +00003D5A 0000 add [bx+si],al +00003D5C 0000 add [bx+si],al +00003D5E 1032 adc [bp+si],dh +00003D60 3210 xor dl,[bx+si] +00003D62 4B dec bx +00003D63 4B dec bx +00003D64 3232 xor dh,[bp+si] +00003D66 3232 xor dh,[bp+si] +00003D68 1000 adc [bx+si],al +00003D6A 0000 add [bx+si],al +00003D6C 0000 add [bx+si],al +00003D6E 0000 add [bx+si],al +00003D70 0000 add [bx+si],al +00003D72 1010 adc [bx+si],dl +00003D74 1010 adc [bx+si],dl +00003D76 1010 adc [bx+si],dl +00003D78 1010 adc [bx+si],dl +00003D7A 1010 adc [bx+si],dl +00003D7C 1010 adc [bx+si],dl +00003D7E 1010 adc [bx+si],dl +00003D80 1000 adc [bx+si],al +00003D82 0010 add [bx+si],dl +00003D84 1010 adc [bx+si],dl +00003D86 292C sub [si],bp +00003D88 2B2C sub bp,[si] +00003D8A 2C2B sub al,0x2b +00003D8C 2B2D sub bp,[di] +00003D8E 2D2C2C sub ax,0x2c2c +00003D91 2B2C sub bp,[si] +00003D93 2C2C sub al,0x2c +00003D95 0010 add [bx+si],dl +00003D97 292A sub [bp+si],bp +00003D99 2A2C sub ch,[si] +00003D9B 2D2A2C sub ax,0x2c2a +00003D9E 2B2C sub bp,[si] +00003DA0 2D2B2C sub ax,0x2c2b +00003DA3 2C2D sub al,0x2d +00003DA5 2D2C2C sub ax,0x2c2c +00003DA8 2B10 sub dx,[bx+si] +00003DAA 292B sub [bp+di],bp +00003DAC 2A2B sub ch,[bp+di] +00003DAE 2B2B sub bp,[bp+di] +00003DB0 2C2B sub al,0x2b +00003DB2 2B2A sub bp,[bp+si] +00003DB4 2A2B sub ch,[bp+di] +00003DB6 2A2B sub ch,[bp+di] +00003DB8 2B2A sub bp,[bp+si] +00003DBA 2C2B sub al,0x2b +00003DBC 2A10 sub dl,[bx+si] +00003DBE 292A sub [bp+si],bp +00003DC0 2A2A sub ch,[bp+si] +00003DC2 2B2A sub bp,[bp+si] +00003DC4 2B2A sub bp,[bp+si] +00003DC6 2B2A sub bp,[bp+si] +00003DC8 2A2A sub ch,[bp+si] +00003DCA 2B2A sub bp,[bp+si] +00003DCC 2A2A sub ch,[bp+si] +00003DCE 2B2A sub bp,[bp+si] +00003DD0 2B10 sub dx,[bx+si] +00003DD2 2829 sub [bx+di],ch +00003DD4 2A2C sub ch,[si] +00003DD6 292B sub [bp+di],bp +00003DD8 2A29 sub ch,[bx+di] +00003DDA 2A2B sub ch,[bp+di] +00003DDC 2C2A sub al,0x2a +00003DDE 2A2A sub ch,[bp+si] +00003DE0 2A2A sub ch,[bp+si] +00003DE2 2A2A sub ch,[bp+si] +00003DE4 2810 sub [bx+si],dl +00003DE6 292A sub [bp+si],bp +00003DE8 2A2D sub ch,[di] +00003DEA 292A sub [bp+si],bp +00003DEC 292A sub [bp+si],bp +00003DEE 292A sub [bp+si],bp +00003DF0 2A29 sub ch,[bx+di] +00003DF2 2A2A sub ch,[bp+si] +00003DF4 2C2A sub al,0x2a +00003DF6 2829 sub [bx+di],ch +00003DF8 2A10 sub dl,[bx+si] +00003DFA 2829 sub [bx+di],ch +00003DFC 2A2B sub ch,[bp+di] +00003DFE 2A2A sub ch,[bp+si] +00003E00 282A sub [bp+si],ch +00003E02 1029 adc [bx+di],ch +00003E04 2A2A sub ch,[bp+si] +00003E06 2910 sub [bx+si],dx +00003E08 2B2A sub bp,[bp+si] +00003E0A 1029 adc [bx+di],ch +00003E0C 2810 sub [bx+si],dl +00003E0E 2929 sub [bx+di],bp +00003E10 2B2A sub bp,[bp+si] +00003E12 292B sub [bp+di],bp +00003E14 292B sub [bp+di],bp +00003E16 1028 adc [bx+si],ch +00003E18 2910 sub [bx+si],dx +00003E1A 2B10 sub dx,[bx+si] +00003E1C 2928 sub [bx+si],bp +00003E1E 2A28 sub ch,[bx+si] +00003E20 2B00 sub ax,[bx+si] +00003E22 282A sub [bp+si],ch +00003E24 2910 sub [bx+si],dx +00003E26 102A adc [bp+si],ch +00003E28 1010 adc [bx+si],dl +00003E2A 41 inc cx +00003E2B 1010 adc [bx+si],dl +00003E2D 41 inc cx +00003E2E 1028 adc [bx+si],ch +00003E30 1029 adc [bx+di],ch +00003E32 2B29 sub bp,[bx+di] +00003E34 2800 sub [bx+si],al +00003E36 1028 adc [bx+si],ch +00003E38 1010 adc [bx+si],dl +00003E3A 41 inc cx +00003E3B 104150 adc [bx+di+0x50],al +00003E3E 50 push ax +00003E3F 41 inc cx +00003E40 50 push ax +00003E41 50 push ax +00003E42 41 inc cx +00003E43 104110 adc [bx+di+0x10],al +00003E46 2928 sub [bx+si],bp +00003E48 41 inc cx +00003E49 0000 add [bx+si],al +00003E4B 1010 adc [bx+si],dl +00003E4D 41 inc cx +00003E4E 105050 adc [bx+si+0x50],dl +00003E51 51 push cx +00003E52 51 push cx +00003E53 51 push cx +00003E54 52 push dx +00003E55 50 push ax +00003E56 50 push ax +00003E57 51 push cx +00003E58 51 push cx +00003E59 41 inc cx +00003E5A 41 inc cx +00003E5B 105000 adc [bx+si+0x0],dl +00003E5E 0010 add [bx+si],dl +00003E60 41 inc cx +00003E61 50 push ax +00003E62 41 inc cx +00003E63 51 push cx +00003E64 52 push dx +00003E65 52 push dx +00003E66 52 push dx +00003E67 52 push dx +00003E68 53 push bx +00003E69 53 push bx +00003E6A 53 push bx +00003E6B 54 push sp +00003E6C 53 push bx +00003E6D 52 push dx +00003E6E 50 push ax +00003E6F 50 push ax +00003E70 51 push cx +00003E71 0000 add [bx+si],al +00003E73 104141 adc [bx+di+0x41],al +00003E76 51 push cx +00003E77 52 push dx +00003E78 53 push bx +00003E79 54 push sp +00003E7A 53 push bx +00003E7B 53 push bx +00003E7C 54 push sp +00003E7D 55 push bp +00003E7E 55 push bp +00003E7F 55 push bp +00003E80 54 push sp +00003E81 54 push sp +00003E82 52 push dx +00003E83 52 push dx +00003E84 54 push sp +00003E85 1010 adc [bx+si],dl +00003E87 1010 adc [bx+si],dl +00003E89 1010 adc [bx+si],dl +00003E8B 1010 adc [bx+si],dl +00003E8D 1010 adc [bx+si],dl +00003E8F 1010 adc [bx+si],dl +00003E91 1010 adc [bx+si],dl +00003E93 1010 adc [bx+si],dl +00003E95 1010 adc [bx+si],dl +00003E97 1010 adc [bx+si],dl +00003E99 2C2B sub al,0x2b +00003E9B 2C2C sub al,0x2c +00003E9D 2D2D2D sub ax,0x2d2d +00003EA0 2C2D sub al,0x2d +00003EA2 2B2B sub bp,[bp+di] +00003EA4 2C2D sub al,0x2d +00003EA6 2C2D sub al,0x2d +00003EA8 2B2C sub bp,[si] +00003EAA 2B2C sub bp,[si] +00003EAC 2D2B2D sub ax,0x2d2b +00003EAF 2C2C sub al,0x2c +00003EB1 2B2A sub bp,[bp+si] +00003EB3 2C2A sub al,0x2a +00003EB5 2C2D sub al,0x2d +00003EB7 2C2C sub al,0x2c +00003EB9 2B2C sub bp,[si] +00003EBB 2A2C sub ch,[si] +00003EBD 2D2D2B sub ax,0x2b2d +00003EC0 2B2A sub bp,[bp+si] +00003EC2 2B2C sub bp,[si] +00003EC4 2B2A sub bp,[bp+si] +00003EC6 2C2A sub al,0x2a +00003EC8 2B2B sub bp,[bp+di] +00003ECA 2B2A sub bp,[bp+si] +00003ECC 2A2B sub ch,[bp+di] +00003ECE 2A2B sub ch,[bp+di] +00003ED0 2B2A sub bp,[bp+si] +00003ED2 2C2B sub al,0x2b +00003ED4 2A2A sub ch,[bp+si] +00003ED6 2A2A sub ch,[bp+si] +00003ED8 2B2A sub bp,[bp+si] +00003EDA 2A2A sub ch,[bp+si] +00003EDC 2A2A sub ch,[bp+si] +00003EDE 2B2A sub bp,[bp+si] +00003EE0 2A2A sub ch,[bp+si] +00003EE2 2B2A sub bp,[bp+si] +00003EE4 2A2A sub ch,[bp+si] +00003EE6 2B2A sub bp,[bp+si] +00003EE8 2B2A sub bp,[bp+si] +00003EEA 2B2A sub bp,[bp+si] +00003EEC 2A2A sub ch,[bp+si] +00003EEE 292B sub [bp+di],bp +00003EF0 2A29 sub ch,[bx+di] +00003EF2 2A2A sub ch,[bp+si] +00003EF4 2B2A sub bp,[bp+si] +00003EF6 2A2A sub ch,[bp+si] +00003EF8 2A2A sub ch,[bp+si] +00003EFA 2A2A sub ch,[bp+si] +00003EFC 282A sub [bp+si],ch +00003EFE 2928 sub [bx+si],bp +00003F00 292A sub [bp+si],bp +00003F02 292A sub [bp+si],bp +00003F04 292A sub [bp+si],bp +00003F06 292A sub [bp+si],bp +00003F08 2A29 sub ch,[bx+di] +00003F0A 2A2A sub ch,[bp+si] +00003F0C 2B2A sub bp,[bp+si] +00003F0E 2829 sub [bx+di],ch +00003F10 2A29 sub ch,[bx+di] +00003F12 2928 sub [bx+si],bp +00003F14 2A29 sub ch,[bx+di] +00003F16 292A sub [bp+si],bp +00003F18 282A sub [bp+si],ch +00003F1A 1029 adc [bx+di],ch +00003F1C 2A2A sub ch,[bp+si] +00003F1E 2910 sub [bx+si],dx +00003F20 2B2A sub bp,[bp+si] +00003F22 1029 adc [bx+di],ch +00003F24 282A sub [bp+si],ch +00003F26 282A sub [bp+si],ch +00003F28 2B10 sub dx,[bx+si] +00003F2A 292B sub [bp+di],bp +00003F2C 292B sub [bp+di],bp +00003F2E 1028 adc [bx+si],ch +00003F30 2910 sub [bx+si],dx +00003F32 2B10 sub dx,[bx+si] +00003F34 2928 sub [bx+si],bp +00003F36 2A28 sub ch,[bx+si] +00003F38 2B28 sub bp,[bx+si] +00003F3A 292A sub [bp+si],bp +00003F3C 2B10 sub dx,[bx+si] +00003F3E 102A adc [bp+si],ch +00003F40 1010 adc [bx+si],dl +00003F42 41 inc cx +00003F43 1010 adc [bx+si],dl +00003F45 41 inc cx +00003F46 1028 adc [bx+si],ch +00003F48 1029 adc [bx+di],ch +00003F4A 2B29 sub bp,[bx+di] +00003F4C 284110 sub [bx+di+0x10],al +00003F4F 2810 sub [bx+si],dl +00003F51 104110 adc [bx+di+0x10],al +00003F54 41 inc cx +00003F55 50 push ax +00003F56 50 push ax +00003F57 41 inc cx +00003F58 50 push ax +00003F59 50 push ax +00003F5A 41 inc cx +00003F5B 104110 adc [bx+di+0x10],al +00003F5E 2928 sub [bx+si],bp +00003F60 41 inc cx +00003F61 50 push ax +00003F62 41 inc cx +00003F63 104141 adc [bx+di+0x41],al +00003F66 50 push ax +00003F67 51 push cx +00003F68 50 push ax +00003F69 51 push cx +00003F6A 51 push cx +00003F6B 51 push cx +00003F6C 52 push dx +00003F6D 50 push ax +00003F6E 50 push ax +00003F6F 51 push cx +00003F70 51 push cx +00003F71 41 inc cx +00003F72 41 inc cx +00003F73 105051 adc [bx+si+0x51],dl +00003F76 51 push cx +00003F77 50 push ax +00003F78 50 push ax +00003F79 51 push cx +00003F7A 51 push cx +00003F7B 52 push dx +00003F7C 51 push cx +00003F7D 52 push dx +00003F7E 52 push dx +00003F7F 52 push dx +00003F80 53 push bx +00003F81 53 push bx +00003F82 53 push bx +00003F83 54 push sp +00003F84 53 push bx +00003F85 52 push dx +00003F86 50 push ax +00003F87 50 push ax +00003F88 51 push cx +00003F89 53 push bx +00003F8A 52 push dx +00003F8B 51 push cx +00003F8C 51 push cx +00003F8D 53 push bx +00003F8E 53 push bx +00003F8F 52 push dx +00003F90 53 push bx +00003F91 54 push sp +00003F92 53 push bx +00003F93 53 push bx +00003F94 54 push sp +00003F95 55 push bp +00003F96 55 push bp +00003F97 55 push bp +00003F98 54 push sp +00003F99 54 push sp +00003F9A 52 push dx +00003F9B 52 push dx +00003F9C 54 push sp +00003F9D 1010 adc [bx+si],dl +00003F9F 1031 adc [bx+di],dh +00003FA1 51 push cx +00003FA2 51 push cx +00003FA3 52 push dx +00003FA4 52 push dx +00003FA5 54 push sp +00003FA6 54 push sp +00003FA7 54 push sp +00003FA8 54 push sp +00003FA9 54 push sp +00003FAA 54 push sp +00003FAB 55 push bp +00003FAC 55 push bp +00003FAD 54 push sp +00003FAE 54 push sp +00003FAF 54 push sp +00003FB0 54 push sp +00003FB1 2C2C sub al,0x2c +00003FB3 292A sub [bp+si],bp +00003FB5 3110 xor [bx+si],dx +00003FB7 51 push cx +00003FB8 52 push dx +00003FB9 52 push dx +00003FBA 55 push bp +00003FBB 53 push bx +00003FBC 54 push sp +00003FBD 54 push sp +00003FBE 54 push sp +00003FBF 54 push sp +00003FC0 54 push sp +00003FC1 54 push sp +00003FC2 54 push sp +00003FC3 54 push sp +00003FC4 55 push bp +00003FC5 2B2D sub bp,[di] +00003FC7 2D292B sub ax,0x2b29 +00003FCA 2A31 sub dh,[bx+di] +00003FCC 285352 sub [bp+di+0x52],dl +00003FCF 52 push dx +00003FD0 54 push sp +00003FD1 54 push sp +00003FD2 54 push sp +00003FD3 55 push bp +00003FD4 54 push sp +00003FD5 54 push sp +00003FD6 54 push sp +00003FD7 54 push sp +00003FD8 54 push sp +00003FD9 2A2B sub ch,[bp+di] +00003FDB 2B2A sub bp,[bp+si] +00003FDD 2D2C2B sub ax,0x2b2c +00003FE0 2A4252 sub al,[bp+si+0x52] +00003FE3 54 push sp +00003FE4 55 push bp +00003FE5 54 push sp +00003FE6 54 push sp +00003FE7 54 push sp +00003FE8 54 push sp +00003FE9 55 push bp +00003FEA 54 push sp +00003FEB 54 push sp +00003FEC 54 push sp +00003FED 2A2B sub ch,[bp+di] +00003FEF 2C2B sub al,0x2b +00003FF1 2B2B sub bp,[bp+di] +00003FF3 2A2B sub ch,[bp+di] +00003FF5 2828 sub [bx+si],ch +00003FF7 52 push dx +00003FF8 52 push dx +00003FF9 54 push sp +00003FFA 54 push sp +00003FFB 54 push sp +00003FFC 54 push sp +00003FFD 54 push sp +00003FFE 54 push sp +00003FFF 54 push sp +00004000 54 push sp +00004001 2A2A sub ch,[bp+si] +00004003 2B2B sub bp,[bp+di] +00004005 2A2D sub ch,[di] +00004007 2B2A sub bp,[bp+si] +00004009 2B28 sub bp,[bx+si] +0000400B 285353 sub [bp+di+0x53],dl +0000400E 54 push sp +0000400F 54 push sp +00004010 54 push sp +00004011 54 push sp +00004012 55 push bp +00004013 55 push bp +00004014 54 push sp +00004015 2B2A sub bp,[bp+si] +00004017 2B2A sub bp,[bp+si] +00004019 2A2B sub ch,[bp+di] +0000401B 2A28 sub ch,[bx+si] +0000401D 292A sub [bp+si],bp +0000401F 104153 adc [bx+di+0x53],al +00004022 53 push bx +00004023 54 push sp +00004024 54 push sp +00004025 55 push bp +00004026 55 push bp +00004027 55 push bp +00004028 55 push bp +00004029 2C28 sub al,0x28 +0000402B 292A sub [bp+si],bp +0000402D 2A2A sub ch,[bp+si] +0000402F 2B29 sub bp,[bx+di] +00004031 2810 sub [bx+si],dl +00004033 42 inc dx +00004034 53 push bx +00004035 53 push bx +00004036 54 push sp +00004037 55 push bp +00004038 54 push sp +00004039 55 push bp +0000403A 55 push bp +0000403B 55 push bp +0000403C 55 push bp +0000403D 2829 sub [bx+di],ch +0000403F 2828 sub [bx+si],ch +00004041 1028 adc [bx+si],ch +00004043 2A28 sub ch,[bx+si] +00004045 51 push cx +00004046 42 inc dx +00004047 53 push bx +00004048 52 push dx +00004049 54 push sp +0000404A 54 push sp +0000404B 54 push sp +0000404C 54 push sp +0000404D 54 push sp +0000404E 55 push bp +0000404F 54 push sp +00004050 54 push sp +00004051 2829 sub [bx+di],ch +00004053 41 inc cx +00004054 41 inc cx +00004055 51 push cx +00004056 1028 adc [bx+si],ch +00004058 41 inc cx +00004059 42 inc dx +0000405A 52 push dx +0000405B 51 push cx +0000405C 54 push sp +0000405D 54 push sp +0000405E 54 push sp +0000405F 54 push sp +00004060 54 push sp +00004061 54 push sp +00004062 54 push sp +00004063 54 push sp +00004064 54 push sp +00004065 41 inc cx +00004066 104151 adc [bx+di+0x51],al +00004069 41 inc cx +0000406A 51 push cx +0000406B 42 inc dx +0000406C 53 push bx +0000406D 53 push bx +0000406E 54 push sp +0000406F 53 push bx +00004070 55 push bp +00004071 54 push sp +00004072 54 push sp +00004073 54 push sp +00004074 54 push sp +00004075 54 push sp +00004076 55 push bp +00004077 54 push sp +00004078 54 push sp +00004079 51 push cx +0000407A 41 inc cx +0000407B 53 push bx +0000407C 41 inc cx +0000407D 52 push dx +0000407E 52 push dx +0000407F 53 push bx +00004080 54 push sp +00004081 53 push bx +00004082 53 push bx +00004083 54 push sp +00004084 54 push sp +00004085 54 push sp +00004086 54 push sp +00004087 55 push bp +00004088 55 push bp +00004089 54 push sp +0000408A 54 push sp +0000408B 54 push sp +0000408C 54 push sp +0000408D 52 push dx +0000408E 52 push dx +0000408F 52 push dx +00004090 53 push bx +00004091 55 push bp +00004092 53 push bx +00004093 53 push bx +00004094 54 push sp +00004095 54 push sp +00004096 54 push sp +00004097 54 push sp +00004098 54 push sp +00004099 54 push sp +0000409A 55 push bp +0000409B 55 push bp +0000409C 55 push bp +0000409D 55 push bp +0000409E 54 push sp +0000409F 54 push sp +000040A0 54 push sp +000040A1 54 push sp +000040A2 53 push bx +000040A3 55 push bp +000040A4 54 push sp +000040A5 53 push bx +000040A6 53 push bx +000040A7 54 push sp +000040A8 54 push sp +000040A9 55 push bp +000040AA 54 push sp +000040AB 54 push sp +000040AC 54 push sp +000040AD 54 push sp +000040AE 55 push bp +000040AF 55 push bp +000040B0 55 push bp +000040B1 55 push bp +000040B2 54 push sp +000040B3 54 push sp +000040B4 55 push bp +000040B5 0000 add [bx+si],al +000040B7 104151 adc [bx+di+0x51],al +000040BA 52 push dx +000040BB 52 push dx +000040BC 54 push sp +000040BD 54 push sp +000040BE 54 push sp +000040BF 54 push sp +000040C0 54 push sp +000040C1 54 push sp +000040C2 54 push sp +000040C3 55 push bp +000040C4 55 push bp +000040C5 54 push sp +000040C6 54 push sp +000040C7 54 push sp +000040C8 54 push sp +000040C9 0000 add [bx+si],al +000040CB 105051 adc [bx+si+0x51],dl +000040CE 53 push bx +000040CF 54 push sp +000040D0 55 push bp +000040D1 54 push sp +000040D2 53 push bx +000040D3 54 push sp +000040D4 55 push bp +000040D5 54 push sp +000040D6 54 push sp +000040D7 54 push sp +000040D8 54 push sp +000040D9 54 push sp +000040DA 54 push sp +000040DB 54 push sp +000040DC 55 push bp +000040DD 0000 add [bx+si],al +000040DF 105041 adc [bx+si+0x41],dl +000040E2 52 push dx +000040E3 54 push sp +000040E4 54 push sp +000040E5 55 push bp +000040E6 54 push sp +000040E7 53 push bx +000040E8 54 push sp +000040E9 55 push bp +000040EA 54 push sp +000040EB 55 push bp +000040EC 54 push sp +000040ED 54 push sp +000040EE 54 push sp +000040EF 54 push sp +000040F0 54 push sp +000040F1 0000 add [bx+si],al +000040F3 104152 adc [bx+di+0x52],al +000040F6 52 push dx +000040F7 54 push sp +000040F8 53 push bx +000040F9 54 push sp +000040FA 54 push sp +000040FB 54 push sp +000040FC 54 push sp +000040FD 55 push bp +000040FE 54 push sp +000040FF 54 push sp +00004100 54 push sp +00004101 55 push bp +00004102 54 push sp +00004103 54 push sp +00004104 54 push sp +00004105 0000 add [bx+si],al +00004107 105051 adc [bx+si+0x51],dl +0000410A 52 push dx +0000410B 52 push dx +0000410C 54 push sp +0000410D 53 push bx +0000410E 53 push bx +0000410F 54 push sp +00004110 54 push sp +00004111 54 push sp +00004112 54 push sp +00004113 54 push sp +00004114 54 push sp +00004115 54 push sp +00004116 54 push sp +00004117 54 push sp +00004118 54 push sp +00004119 0000 add [bx+si],al +0000411B 104151 adc [bx+di+0x51],al +0000411E 41 inc cx +0000411F 54 push sp +00004120 53 push bx +00004121 54 push sp +00004122 54 push sp +00004123 54 push sp +00004124 55 push bp +00004125 54 push sp +00004126 54 push sp +00004127 54 push sp +00004128 54 push sp +00004129 55 push bp +0000412A 55 push bp +0000412B 54 push sp +0000412C 54 push sp +0000412D 0000 add [bx+si],al +0000412F 104151 adc [bx+di+0x51],al +00004132 52 push dx +00004133 52 push dx +00004134 53 push bx +00004135 54 push sp +00004136 55 push bp +00004137 54 push sp +00004138 54 push sp +00004139 54 push sp +0000413A 54 push sp +0000413B 54 push sp +0000413C 55 push bp +0000413D 55 push bp +0000413E 55 push bp +0000413F 55 push bp +00004140 54 push sp +00004141 0000 add [bx+si],al +00004143 104150 adc [bx+di+0x50],al +00004146 51 push cx +00004147 53 push bx +00004148 54 push sp +00004149 54 push sp +0000414A 55 push bp +0000414B 55 push bp +0000414C 54 push sp +0000414D 55 push bp +0000414E 54 push sp +0000414F 54 push sp +00004150 55 push bp +00004151 55 push bp +00004152 55 push bp +00004153 55 push bp +00004154 54 push sp +00004155 0000 add [bx+si],al +00004157 104150 adc [bx+di+0x50],al +0000415A 51 push cx +0000415B 53 push bx +0000415C 54 push sp +0000415D 54 push sp +0000415E 54 push sp +0000415F 55 push bp +00004160 54 push sp +00004161 54 push sp +00004162 54 push sp +00004163 54 push sp +00004164 54 push sp +00004165 55 push bp +00004166 55 push bp +00004167 54 push sp +00004168 54 push sp +00004169 0000 add [bx+si],al +0000416B 104150 adc [bx+di+0x50],al +0000416E 52 push dx +0000416F 52 push dx +00004170 53 push bx +00004171 54 push sp +00004172 55 push bp +00004173 54 push sp +00004174 54 push sp +00004175 54 push sp +00004176 54 push sp +00004177 54 push sp +00004178 54 push sp +00004179 54 push sp +0000417A 54 push sp +0000417B 54 push sp +0000417C 54 push sp +0000417D 0000 add [bx+si],al +0000417F 105051 adc [bx+si+0x51],dl +00004182 52 push dx +00004183 50 push ax +00004184 52 push dx +00004185 53 push bx +00004186 54 push sp +00004187 54 push sp +00004188 54 push sp +00004189 54 push sp +0000418A 54 push sp +0000418B 54 push sp +0000418C 54 push sp +0000418D 54 push sp +0000418E 55 push bp +0000418F 54 push sp +00004190 54 push sp +00004191 0000 add [bx+si],al +00004193 104152 adc [bx+di+0x52],al +00004196 52 push dx +00004197 52 push dx +00004198 55 push bp +00004199 55 push bp +0000419A 54 push sp +0000419B 54 push sp +0000419C 54 push sp +0000419D 54 push sp +0000419E 54 push sp +0000419F 55 push bp +000041A0 55 push bp +000041A1 54 push sp +000041A2 54 push sp +000041A3 54 push sp +000041A4 54 push sp +000041A5 0000 add [bx+si],al +000041A7 104150 adc [bx+di+0x50],al +000041AA 52 push dx +000041AB 52 push dx +000041AC 53 push bx +000041AD 54 push sp +000041AE 54 push sp +000041AF 54 push sp +000041B0 54 push sp +000041B1 54 push sp +000041B2 55 push bp +000041B3 55 push bp +000041B4 55 push bp +000041B5 55 push bp +000041B6 54 push sp +000041B7 54 push sp +000041B8 54 push sp +000041B9 0000 add [bx+si],al +000041BB 105052 adc [bx+si+0x52],dl +000041BE 52 push dx +000041BF 54 push sp +000041C0 53 push bx +000041C1 54 push sp +000041C2 54 push sp +000041C3 55 push bp +000041C4 54 push sp +000041C5 54 push sp +000041C6 55 push bp +000041C7 55 push bp +000041C8 55 push bp +000041C9 55 push bp +000041CA 54 push sp +000041CB 54 push sp +000041CC 55 push bp +000041CD 54 push sp +000041CE 54 push sp +000041CF 54 push sp +000041D0 54 push sp +000041D1 54 push sp +000041D2 54 push sp +000041D3 54 push sp +000041D4 54 push sp +000041D5 54 push sp +000041D6 54 push sp +000041D7 54 push sp +000041D8 54 push sp +000041D9 54 push sp +000041DA 54 push sp +000041DB 55 push bp +000041DC 55 push bp +000041DD 54 push sp +000041DE 54 push sp +000041DF 54 push sp +000041E0 54 push sp +000041E1 54 push sp +000041E2 54 push sp +000041E3 55 push bp +000041E4 55 push bp +000041E5 54 push sp +000041E6 54 push sp +000041E7 54 push sp +000041E8 54 push sp +000041E9 54 push sp +000041EA 55 push bp +000041EB 54 push sp +000041EC 54 push sp +000041ED 54 push sp +000041EE 54 push sp +000041EF 54 push sp +000041F0 54 push sp +000041F1 54 push sp +000041F2 54 push sp +000041F3 54 push sp +000041F4 55 push bp +000041F5 54 push sp +000041F6 55 push bp +000041F7 55 push bp +000041F8 55 push bp +000041F9 55 push bp +000041FA 54 push sp +000041FB 55 push bp +000041FC 54 push sp +000041FD 54 push sp +000041FE 54 push sp +000041FF 55 push bp +00004200 55 push bp +00004201 54 push sp +00004202 54 push sp +00004203 55 push bp +00004204 54 push sp +00004205 54 push sp +00004206 54 push sp +00004207 54 push sp +00004208 54 push sp +00004209 54 push sp +0000420A 55 push bp +0000420B 55 push bp +0000420C 55 push bp +0000420D 55 push bp +0000420E 54 push sp +0000420F 54 push sp +00004210 54 push sp +00004211 54 push sp +00004212 54 push sp +00004213 55 push bp +00004214 55 push bp +00004215 54 push sp +00004216 54 push sp +00004217 54 push sp +00004218 54 push sp +00004219 55 push bp +0000421A 54 push sp +0000421B 54 push sp +0000421C 54 push sp +0000421D 54 push sp +0000421E 54 push sp +0000421F 55 push bp +00004220 55 push bp +00004221 54 push sp +00004222 54 push sp +00004223 54 push sp +00004224 54 push sp +00004225 54 push sp +00004226 54 push sp +00004227 54 push sp +00004228 54 push sp +00004229 54 push sp +0000422A 54 push sp +0000422B 54 push sp +0000422C 54 push sp +0000422D 54 push sp +0000422E 54 push sp +0000422F 54 push sp +00004230 54 push sp +00004231 54 push sp +00004232 54 push sp +00004233 54 push sp +00004234 54 push sp +00004235 54 push sp +00004236 54 push sp +00004237 54 push sp +00004238 54 push sp +00004239 54 push sp +0000423A 55 push bp +0000423B 54 push sp +0000423C 54 push sp +0000423D 54 push sp +0000423E 55 push bp +0000423F 54 push sp +00004240 54 push sp +00004241 55 push bp +00004242 55 push bp +00004243 54 push sp +00004244 54 push sp +00004245 54 push sp +00004246 54 push sp +00004247 54 push sp +00004248 54 push sp +00004249 54 push sp +0000424A 54 push sp +0000424B 55 push bp +0000424C 55 push bp +0000424D 54 push sp +0000424E 54 push sp +0000424F 54 push sp +00004250 54 push sp +00004251 54 push sp +00004252 54 push sp +00004253 54 push sp +00004254 55 push bp +00004255 55 push bp +00004256 55 push bp +00004257 55 push bp +00004258 54 push sp +00004259 54 push sp +0000425A 54 push sp +0000425B 54 push sp +0000425C 54 push sp +0000425D 54 push sp +0000425E 55 push bp +0000425F 55 push bp +00004260 55 push bp +00004261 55 push bp +00004262 54 push sp +00004263 55 push bp +00004264 54 push sp +00004265 54 push sp +00004266 54 push sp +00004267 54 push sp +00004268 55 push bp +00004269 55 push bp +0000426A 55 push bp +0000426B 55 push bp +0000426C 54 push sp +0000426D 54 push sp +0000426E 54 push sp +0000426F 55 push bp +00004270 54 push sp +00004271 54 push sp +00004272 55 push bp +00004273 55 push bp +00004274 55 push bp +00004275 55 push bp +00004276 54 push sp +00004277 54 push sp +00004278 54 push sp +00004279 54 push sp +0000427A 54 push sp +0000427B 54 push sp +0000427C 54 push sp +0000427D 55 push bp +0000427E 55 push bp +0000427F 54 push sp +00004280 54 push sp +00004281 54 push sp +00004282 54 push sp +00004283 54 push sp +00004284 54 push sp +00004285 54 push sp +00004286 54 push sp +00004287 55 push bp +00004288 55 push bp +00004289 54 push sp +0000428A 54 push sp +0000428B 54 push sp +0000428C 54 push sp +0000428D 54 push sp +0000428E 54 push sp +0000428F 54 push sp +00004290 54 push sp +00004291 54 push sp +00004292 54 push sp +00004293 54 push sp +00004294 54 push sp +00004295 54 push sp +00004296 55 push bp +00004297 54 push sp +00004298 54 push sp +00004299 54 push sp +0000429A 54 push sp +0000429B 54 push sp +0000429C 54 push sp +0000429D 54 push sp +0000429E 54 push sp +0000429F 54 push sp +000042A0 55 push bp +000042A1 54 push sp +000042A2 54 push sp +000042A3 54 push sp +000042A4 54 push sp +000042A5 54 push sp +000042A6 55 push bp +000042A7 54 push sp +000042A8 54 push sp +000042A9 54 push sp +000042AA 55 push bp +000042AB 55 push bp +000042AC 54 push sp +000042AD 54 push sp +000042AE 54 push sp +000042AF 55 push bp +000042B0 54 push sp +000042B1 54 push sp +000042B2 54 push sp +000042B3 54 push sp +000042B4 54 push sp +000042B5 54 push sp +000042B6 54 push sp +000042B7 55 push bp +000042B8 55 push bp +000042B9 54 push sp +000042BA 54 push sp +000042BB 54 push sp +000042BC 54 push sp +000042BD 54 push sp +000042BE 54 push sp +000042BF 54 push sp +000042C0 54 push sp +000042C1 55 push bp +000042C2 54 push sp +000042C3 54 push sp +000042C4 54 push sp +000042C5 54 push sp +000042C6 54 push sp +000042C7 54 push sp +000042C8 54 push sp +000042C9 54 push sp +000042CA 55 push bp +000042CB 55 push bp +000042CC 55 push bp +000042CD 55 push bp +000042CE 54 push sp +000042CF 54 push sp +000042D0 54 push sp +000042D1 54 push sp +000042D2 54 push sp +000042D3 55 push bp +000042D4 54 push sp +000042D5 54 push sp +000042D6 54 push sp +000042D7 54 push sp +000042D8 54 push sp +000042D9 55 push bp +000042DA 54 push sp +000042DB 54 push sp +000042DC 54 push sp +000042DD 54 push sp +000042DE 55 push bp +000042DF 55 push bp +000042E0 55 push bp +000042E1 55 push bp +000042E2 54 push sp +000042E3 54 push sp +000042E4 55 push bp +000042E5 66BA120066B8 mov edx,0xb8660012 +000042EB DC34 fdiv qword [si] +000042ED 66F7F3 div ebx +000042F0 88C3 mov bl,al +000042F2 B0B6 mov al,0xb6 +000042F4 E643 out 0x43,al +000042F6 88D8 mov al,bl +000042F8 E642 out 0x42,al +000042FA 88E0 mov al,ah +000042FC E642 out 0x42,al +000042FE E461 in al,0x61 +00004300 0C03 or al,0x3 +00004302 E661 out 0x61,al +00004304 C3 ret +00004305 6650 push eax +00004307 E461 in al,0x61 +00004309 24FC and al,0xfc +0000430B E661 out 0x61,al +0000430D 6658 pop eax +0000430F C3 ret +00004310 50 push ax +00004311 51 push cx +00004312 E461 in al,0x61 +00004314 0C03 or al,0x3 +00004316 E661 out 0x61,al +00004318 B93200 mov cx,0x32 +0000431B 0000 add [bx+si],al +0000431D E863EF call 0x3283 +00004320 FF db 0xFF +00004321 FF db 0xFF +00004322 E8DEFF call 0x4303 +00004325 FF db 0xFF +00004326 FF5958 call far [bx+di+0x58] +00004329 C3 ret +0000432A 0000 add [bx+si],al +0000432C 0000 add [bx+si],al +0000432E 0000 add [bx+si],al +00004330 0000 add [bx+si],al +00004332 0000 add [bx+si],al +00004334 0000 add [bx+si],al +00004336 0000 add [bx+si],al +00004338 0000 add [bx+si],al +0000433A 51 push cx +0000433B 891D mov [di],bx +0000433D 2A4301 sub al,[bp+di+0x1] +00004340 0029 add [bx+di],ch +00004342 D9 db 0xD9 +00004343 890D mov [di],cx +00004345 324301 xor al,[bp+di+0x1] +00004348 00C7 add bh,al +0000434A 052E43 add ax,0x432e +0000434D 0100 add [bx+si],ax +0000434F 0000 add [bx+si],al +00004351 0000 add [bx+si],al +00004353 C7053643 mov word [di],0x4336 +00004357 0100 add [bx+si],ax +00004359 0000 add [bx+si],al +0000435B 0000 add [bx+si],al +0000435D 8B0D mov cx,[di] +0000435F 2E43 cs inc bx +00004361 0100 add [bx+si],ax +00004363 890B mov [bp+di],cx +00004365 8B0D mov cx,[di] +00004367 324301 xor al,[bp+di+0x1] +0000436A 00894B04 add [bx+di+0x44b],cl +0000436E 8B0D mov cx,[di] +00004370 3643 ss inc bx +00004372 0100 add [bx+si],ax +00004374 894B08 mov [bp+di+0x8],cx +00004377 59 pop cx +00004378 C3 ret +00004379 51 push cx +0000437A 52 push dx +0000437B A12A43 mov ax,[0x432a] +0000437E 0100 add [bx+si],ax +00004380 8B08 mov cx,[bx+si] +00004382 890D mov [di],cx +00004384 2E43 cs inc bx +00004386 0100 add [bx+si],ax +00004388 8B4804 mov cx,[bx+si+0x4] +0000438B 890D mov [di],cx +0000438D 324301 xor al,[bp+di+0x1] +00004390 008B4808 add [bp+di+0x848],cl +00004394 890D mov [di],cx +00004396 3643 ss inc bx +00004398 0100 add [bx+si],ax +0000439A 391D cmp [di],bx +0000439C 324301 xor al,[bp+di+0x1] +0000439F 007317 add [bp+di+0x17],dh +000043A2 833D36 cmp word [di],byte +0x36 +000043A5 43 inc bx +000043A6 0100 add [bx+si],ax +000043A8 007407 add [si+0x7],dh +000043AB A13643 mov ax,[0x4336] +000043AE 0100 add [bx+si],ax +000043B0 EBCE jmp short 0x4380 +000043B2 31C0 xor ax,ax +000043B4 E98001 jmp 0x4537 +000043B7 0000 add [bx+si],al +000043B9 8B0D mov cx,[di] +000043BB 324301 xor al,[bp+di+0x1] +000043BE 0029 add [bx+di],ch +000043C0 D9 db 0xD9 +000043C1 0F841501 jz near 0x44da +000043C5 0000 add [bx+si],al +000043C7 833D36 cmp word [di],byte +0x36 +000043CA 43 inc bx +000043CB 0100 add [bx+si],ax +000043CD 00755D add [di+0x5d],dh +000043D0 833D2E cmp word [di],byte +0x2e +000043D3 43 inc bx +000043D4 0100 add [bx+si],ax +000043D6 007529 add [di+0x29],dh +000043D9 89C1 mov cx,ax +000043DB 01D9 add cx,bx +000043DD C7010000 mov word [bx+di],0x0 +000043E1 0000 add [bx+si],al +000043E3 8B15 mov dx,[di] +000043E5 324301 xor al,[bp+di+0x1] +000043E8 0029 add [bx+di],ch +000043EA DA895104 fimul dword [bx+di+0x451] +000043EE C741080000 mov word [bx+di+0x8],0x0 +000043F3 0000 add [bx+si],al +000043F5 890D mov [di],cx +000043F7 2A4301 sub al,[bp+di+0x1] +000043FA 0089C3E9 add [bx+di+0xe9c3],cl +000043FE 37 aaa +000043FF 0100 add [bx+si],ax +00004401 0089C101 add [bx+di+0x1c1],cl +00004405 D9 db 0xD9 +00004406 8B15 mov dx,[di] +00004408 2E43 cs inc bx +0000440A 0100 add [bx+si],ax +0000440C 8911 mov [bx+di],dx +0000440E 8B15 mov dx,[di] +00004410 324301 xor al,[bp+di+0x1] +00004413 0029 add [bx+di],ch +00004415 DA895104 fimul dword [bx+di+0x451] +00004419 C741080000 mov word [bx+di+0x8],0x0 +0000441E 0000 add [bx+si],al +00004420 890D mov [di],cx +00004422 3643 ss inc bx +00004424 0100 add [bx+si],ax +00004426 89C3 mov bx,ax +00004428 E90C01 jmp 0x4537 +0000442B 0000 add [bx+si],al +0000442D 833D2E cmp word [di],byte +0x2e +00004430 43 inc bx +00004431 0100 add [bx+si],ax +00004433 007456 add [si+0x56],dh +00004436 89C1 mov cx,ax +00004438 01D9 add cx,bx +0000443A 8B15 mov dx,[di] +0000443C 2E43 cs inc bx +0000443E 0100 add [bx+si],ax +00004440 8911 mov [bx+di],dx +00004442 8B15 mov dx,[di] +00004444 324301 xor al,[bp+di+0x1] +00004447 0029 add [bx+di],ch +00004449 DA8B1D3A fimul dword [bp+di+0x3a1d] +0000444D 43 inc bx +0000444E 0100 add [bx+si],ax +00004450 01DA add dx,bx +00004452 895104 mov [bx+di+0x4],dx +00004455 8B15 mov dx,[di] +00004457 3643 ss inc bx +00004459 0100 add [bx+si],ax +0000445B 833A00 cmp word [bp+si],byte +0x0 +0000445E 7412 jz 0x4472 +00004460 890A mov [bp+si],cx +00004462 895108 mov [bx+di+0x8],dx +00004465 890D mov [di],cx +00004467 3643 ss inc bx +00004469 0100 add [bx+si],ax +0000446B 89C3 mov bx,ax +0000446D E9C700 jmp 0x4537 +00004470 0000 add [bx+si],al +00004472 C7020000 mov word [bp+si],0x0 +00004476 0000 add [bx+si],al +00004478 C741080000 mov word [bx+di+0x8],0x0 +0000447D 0000 add [bx+si],al +0000447F 890D mov [di],cx +00004481 3643 ss inc bx +00004483 0100 add [bx+si],ax +00004485 89C3 mov bx,ax +00004487 E9AD00 jmp 0x4537 +0000448A 0000 add [bx+si],al +0000448C 89C1 mov cx,ax +0000448E 01D9 add cx,bx +00004490 C7010000 mov word [bx+di],0x0 +00004494 0000 add [bx+si],al +00004496 8B15 mov dx,[di] +00004498 324301 xor al,[bp+di+0x1] +0000449B 0029 add [bx+di],ch +0000449D DA8B1D3A fimul dword [bp+di+0x3a1d] +000044A1 43 inc bx +000044A2 0100 add [bx+si],ax +000044A4 01DA add dx,bx +000044A6 895104 mov [bx+di+0x4],dx +000044A9 8B15 mov dx,[di] +000044AB 3643 ss inc bx +000044AD 0100 add [bx+si],ax +000044AF 833A00 cmp word [bp+si],byte +0x0 +000044B2 740F jz 0x44c3 +000044B4 890A mov [bp+si],cx +000044B6 895108 mov [bx+di+0x8],dx +000044B9 890D mov [di],cx +000044BB 2A4301 sub al,[bp+di+0x1] +000044BE 0089C3EB add [bx+di+0xebc3],cl +000044C2 76C7 jna 0x448b +000044C4 0200 add al,[bx+si] +000044C6 0000 add [bx+si],al +000044C8 008B4908 add [bp+di+0x849],cl +000044CC C7010000 mov word [bx+di],0x0 +000044D0 0000 add [bx+si],al +000044D2 890D mov [di],cx +000044D4 3643 ss inc bx +000044D6 0100 add [bx+si],ax +000044D8 89C3 mov bx,ax +000044DA EB5D jmp short 0x4539 +000044DC 833D36 cmp word [di],byte +0x36 +000044DF 43 inc bx +000044E0 0100 add [bx+si],ax +000044E2 007525 add [di+0x25],dh +000044E5 833D2E cmp word [di],byte +0x2e +000044E8 43 inc bx +000044E9 0100 add [bx+si],ax +000044EB 00750E add [di+0xe],dh +000044EE C7052A43 mov word [di],0x432a +000044F2 0100 add [bx+si],ax +000044F4 0000 add [bx+si],al +000044F6 0000 add [bx+si],al +000044F8 89C3 mov bx,ax +000044FA EB3D jmp short 0x4539 +000044FC C7053643 mov word [di],0x4336 +00004500 0100 add [bx+si],ax +00004502 0000 add [bx+si],al +00004504 0000 add [bx+si],al +00004506 89C3 mov bx,ax +00004508 EB2F jmp short 0x4539 +0000450A 833D2E cmp word [di],byte +0x2e +0000450D 43 inc bx +0000450E 0100 add [bx+si],ax +00004510 007415 add [si+0x15],dh +00004513 8B0D mov cx,[di] +00004515 2E43 cs inc bx +00004517 0100 add [bx+si],ax +00004519 8B15 mov dx,[di] +0000451B 3643 ss inc bx +0000451D 0100 add [bx+si],ax +0000451F 895108 mov [bx+di+0x8],dx +00004522 890A mov [bp+si],cx +00004524 89C3 mov bx,ax +00004526 EB11 jmp short 0x4539 +00004528 8B4808 mov cx,[bx+si+0x8] +0000452B C7010000 mov word [bx+di],0x0 +0000452F 0000 add [bx+si],al +00004531 890D mov [di],cx +00004533 2A4301 sub al,[bp+di+0x1] +00004536 0089C35A add [bx+di+0x5ac3],cl +0000453A 59 pop cx +0000453B C3 ret +0000453C 50 push ax +0000453D 53 push bx +0000453E 51 push cx +0000453F 52 push dx +00004540 3B1D cmp bx,[di] +00004542 2A4301 sub al,[bp+di+0x1] +00004545 000F add [bx],cl +00004547 82 db 0x82 +00004548 BA0000 mov dx,0x0 +0000454B 00833D2A add [bp+di+0x2a3d],al +0000454F 43 inc bx +00004550 0100 add [bx+si],ax +00004552 000F add [bx],cl +00004554 84AD0000 test [di+0x0],ch +00004558 00A12A43 add [bx+di+0x432a],ah +0000455C 0100 add [bx+si],ax +0000455E 8B5008 mov dx,[bx+si+0x8] +00004561 83FA00 cmp dx,byte +0x0 +00004564 747E jz 0x45e4 +00004566 39D3 cmp bx,dx +00004568 7207 jc 0x4571 +0000456A 89D0 mov ax,dx +0000456C 8B5008 mov dx,[bx+si+0x8] +0000456F EBF0 jmp short 0x4561 +00004571 8903 mov [bp+di],ax +00004573 894B04 mov [bp+di+0x4],cx +00004576 895308 mov [bp+di+0x8],dx +00004579 895808 mov [bx+si+0x8],bx +0000457C 891A mov [bp+si],bx +0000457E 01D9 add cx,bx +00004580 39CA cmp dx,cx +00004582 752B jnz 0x45af +00004584 50 push ax +00004585 034004 add ax,[bx+si+0x4] +00004588 39C3 cmp bx,ax +0000458A 58 pop ax +0000458B 753A jnz 0x45c7 +0000458D 8B4B04 mov cx,[bp+di+0x4] +00004590 014804 add [bx+si+0x4],cx +00004593 8B4A04 mov cx,[bp+si+0x4] +00004596 014804 add [bx+si+0x4],cx +00004599 8B4A08 mov cx,[bp+si+0x8] +0000459C 894808 mov [bx+si+0x8],cx +0000459F 83F900 cmp cx,byte +0x0 +000045A2 0F84AF00 jz near 0x4655 +000045A6 0000 add [bx+si],al +000045A8 8901 mov [bx+di],ax +000045AA E9A800 jmp 0x4655 +000045AD 0000 add [bx+si],al +000045AF 39C3 cmp bx,ax +000045B1 0F85A000 jnz near 0x4655 +000045B5 0000 add [bx+si],al +000045B7 8B4B04 mov cx,[bp+di+0x4] +000045BA 014804 add [bx+si+0x4],cx +000045BD 8902 mov [bp+si],ax +000045BF 895008 mov [bx+si+0x8],dx +000045C2 E99000 jmp 0x4655 +000045C5 0000 add [bx+si],al +000045C7 39CA cmp dx,cx +000045C9 0F858800 jnz near 0x4655 +000045CD 0000 add [bx+si],al +000045CF 8B4A04 mov cx,[bp+si+0x4] +000045D2 014B04 add [bp+di+0x4],cx +000045D5 8B4A08 mov cx,[bp+si+0x8] +000045D8 894B08 mov [bp+di+0x8],cx +000045DB 83F900 cmp cx,byte +0x0 +000045DE 7477 jz 0x4657 +000045E0 8919 mov [bx+di],bx +000045E2 EB73 jmp short 0x4657 +000045E4 8903 mov [bp+di],ax +000045E6 894B04 mov [bp+di+0x4],cx +000045E9 895308 mov [bp+di+0x8],dx +000045EC 895808 mov [bx+si+0x8],bx +000045EF 89C1 mov cx,ax +000045F1 034804 add cx,[bx+si+0x4] +000045F4 39CB cmp bx,cx +000045F6 755F jnz 0x4657 +000045F8 8B4B04 mov cx,[bp+di+0x4] +000045FB 014804 add [bx+si+0x4],cx +000045FE 8B4B08 mov cx,[bp+di+0x8] +00004601 894808 mov [bx+si+0x8],cx +00004604 EB51 jmp short 0x4657 +00004606 C7030000 mov word [bp+di],0x0 +0000460A 0000 add [bx+si],al +0000460C 894B04 mov [bp+di+0x4],cx +0000460F 8B15 mov dx,[di] +00004611 2A4301 sub al,[bp+di+0x1] +00004614 00895308 add [bx+di+0x853],cl +00004618 89DA mov dx,bx +0000461A 035304 add dx,[bp+di+0x4] +0000461D 3B15 cmp dx,[di] +0000461F 2A4301 sub al,[bp+di+0x1] +00004622 007416 add [si+0x16],dh +00004625 833D2A cmp word [di],byte +0x2a +00004628 43 inc bx +00004629 0100 add [bx+si],ax +0000462B 007405 add [si+0x5],dh +0000462E 8B5308 mov dx,[bp+di+0x8] +00004631 891A mov [bp+si],bx +00004633 891D mov [di],bx +00004635 2A4301 sub al,[bp+di+0x1] +00004638 00EB add bl,ch +0000463A 1C8B sbb al,0x8b +0000463C 53 push bx +0000463D 088B4A04 or [bp+di+0x44a],cl +00004641 014B04 add [bp+di+0x4],cx +00004644 8B4A08 mov cx,[bp+si+0x8] +00004647 894B08 mov [bp+di+0x8],cx +0000464A 83F900 cmp cx,byte +0x0 +0000464D 7402 jz 0x4651 +0000464F 8919 mov [bx+di],bx +00004651 891D mov [di],bx +00004653 2A4301 sub al,[bp+di+0x1] +00004656 005A59 add [bp+si+0x59],bl +00004659 5B pop bx +0000465A 58 pop ax +0000465B C3 ret diff --git a/kernel/testkernels etc/vga.inc b/kernel/testkernels etc/vga.inc new file mode 100755 index 0000000..427463e --- /dev/null +++ b/kernel/testkernels etc/vga.inc @@ -0,0 +1,482 @@ +;----------------------------------------------------------; +; BOS 0.04 Christoffer Bubach, 2004-2005. ; +;----------------------------------------------------------; +; ; +; VGA functions. Change video mode etc. ; +; ; +;----------------------------------------------------------; + + + ;-------------------; + ; VGA palettes ; + ;-------------------; + + palette256 db 00, 00, 00, 00, 10, 41, 12, 28, 18, 02, 43, 22, 35 + db 19, 09, 58, 00, 00, 57, 35, 12, 43, 43, 47, 24, 24 + db 28, 20, 24, 60, 10, 60, 15, 31, 47, 63, 62, 56, 20 + db 60, 56, 22, 63, 61, 36, 63, 63, 63, 00, 00, 00, 05 + db 05, 05, 08, 08, 08, 11, 11, 11, 14, 14, 14, 17, 17 + db 17, 20, 20, 20, 24, 24, 24, 28, 28, 28, 32, 32, 32 + db 36, 36, 36, 40, 40, 40, 45, 45, 45, 50, 50, 50, 56 + db 56, 56, 63, 63, 63, 13, 12, 15, 15, 16, 22, 17, 20 + db 29, 19, 24, 36, 21, 28, 43, 23, 31, 50, 25, 34, 57 + db 26, 42, 63, 00, 15, 02, 01, 22, 04, 02, 29, 06, 03 + db 36, 08, 04, 43, 10, 05, 50, 12, 06, 57, 14, 20, 63 + db 40, 18, 06, 07, 25, 12, 11, 33, 17, 14, 40, 23, 18 + db 48, 28, 21, 55, 34, 25, 62, 39, 27, 63, 48, 36, 15 + db 03, 02, 22, 06, 04, 29, 09, 06, 36, 12, 08, 43, 15 + db 10, 50, 18, 12, 57, 21, 14, 63, 28, 20, 15, 00, 00 + db 22, 07, 00, 29, 15, 00, 36, 23, 00, 43, 31, 00, 50 + db 39, 00, 57, 47, 00, 63, 55, 00, 15, 05, 03, 22, 11 + db 07, 29, 17, 11, 36, 23, 15, 43, 29, 19, 50, 35, 23 + db 57, 41, 27, 63, 53, 34, 28, 14, 12, 33, 20, 14, 38 + db 26, 16, 43, 32, 18, 48, 38, 20, 53, 44, 22, 58, 50 + db 24, 63, 56, 30, 05, 05, 06, 10, 10, 13, 15, 15, 20 + db 20, 20, 27, 25, 25, 34, 30, 30, 41, 35, 35, 48, 44 + db 44, 63, 03, 06, 05, 05, 11, 09, 07, 16, 13, 09, 21 + db 17, 11, 26, 21, 13, 31, 25, 15, 36, 29, 20, 48, 38 + db 06, 06, 07, 13, 13, 15, 20, 20, 23, 27, 27, 31, 34 + db 34, 39, 41, 41, 47, 48, 48, 55, 57, 57, 63, 06, 15 + db 04, 12, 22, 08, 18, 29, 12, 24, 36, 16, 30, 43, 20 + db 36, 50, 24, 42, 57, 28, 54, 63, 35, 15, 10, 10, 22 + db 16, 16, 29, 21, 21, 36, 27, 27, 43, 32, 32, 50, 38 + db 38, 57, 43, 43, 63, 54, 54, 15, 15, 06, 22, 22, 12 + db 29, 29, 18, 36, 36, 24, 43, 43, 30, 50, 50, 36, 57 + db 57, 42, 63, 63, 54, 02, 04, 14, 06, 12, 21, 10, 20 + db 28, 14, 28, 35, 18, 36, 42, 22, 44, 49, 26, 52, 56 + db 36, 63, 63, 18, 04, 14, 24, 08, 21, 31, 12, 28, 37 + db 16, 35, 44, 20, 42, 50, 24, 49, 57, 28, 56, 63, 38 + db 63, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00 + db 00, 00, 00, 00, 00, 00, 00, 00, 00, 53, 44, 22, 09 + db 08, 12, 16, 14, 16, 22, 21, 20, 29, 27, 24, 35, 34 + db 28, 42, 40, 32, 48, 47, 36, 57, 56, 43, 08, 12, 16 + db 14, 16, 22, 21, 20, 29, 27, 24, 35, 34, 28, 42, 40 + db 32, 48, 47, 36, 57, 56, 43, 63, 13, 09, 11, 21, 16 + db 15, 27, 22, 18, 36, 29, 22, 42, 35, 25, 51, 42, 29 + db 57, 48, 32, 63, 56, 39, 06, 14, 09, 12, 21, 14, 18 + db 27, 22, 24, 33, 28, 30, 39, 36, 36, 46, 42, 42, 52 + db 47, 50, 59, 53, 00, 00, 00, 00, 00, 00, 00, 00, 00 + db 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00 + db 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00 + db 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00 + db 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00 + db 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00 + db 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00 + db 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00 + db 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00 + db 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00 + db 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00 + db 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00 + db 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00 + db 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00 + db 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00 + db 00 + + palette16 db 00, 00, 00, 00, 00, 42, 00, 42, 00, 00, 42, 42, 42 + db 00, 00, 42, 00, 42, 42, 21, 00, 42, 42, 42, 21, 21 + db 21, 21, 21, 63, 21, 63, 21, 21, 63, 63, 63, 21, 21 + db 63, 21, 63, 63, 63, 21, 63, 63, 63 + + ;---------------------; + ; VGA mode values. ; + ;---------------------; + mode0x03 db 0x67, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x5F, 0x4F + db 0x50, 0x82, 0x55, 0x81, 0xBF, 0x1F, 0x00, 0x4F, 0x0E + db 0x0F, 0x00, 0x00, 0x00, 0x00, 0x9C, 0x0E, 0x8F, 0x28 + db 0x01, 0x96, 0xB9, 0xA3, 0xFF, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x10, 0x0E, 0x00, 0xFF, 0x00, 0x01, 0x02, 0x03 + db 0x04, 0x05, 0x14, 0x07, 0x38, 0x39, 0x3A, 0x3B, 0x3C + db 0x3D, 0x3E, 0x3F, 0x0C, 0x00, 0x0F, 0x08, 0x00 + + mode0x13 db 0x63, 0x00, 0x03, 0x01, 0x0F, 0x00, 0x0E, 0x5F, 0x4F + db 0x50, 0x82, 0x54, 0x80, 0xBF, 0x1F, 0x00, 0x41, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x9C, 0x0E, 0x8F, 0x28 + db 0x40, 0x96, 0xB9, 0xA3, 0xFF, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x40, 0x05, 0x0F, 0xFF, 0x00, 0x01, 0x02, 0x03 + db 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C + db 0x0D, 0x0E, 0x0F, 0x41, 0x00, 0x0F, 0x00, 0x00 + + + vga_buff dd 0 + +;---------------------------------; +; sets the screen to mode 0x03 ; +;---------------------------------; +set_mode_0x03: + pushad + push ax + + mov esi, mode0x03 + call set_regs + + call load_font ; IT WORKS!! FINALLY! + + mov esi, palette16 + call set_palette16 + + pop ax + cmp ax, 1 + jne .cont + call cls ; in text.inc + .cont: + + popad + ret + + + +;---------------------------------; +; sets the screen to mode 0x13 ; +;---------------------------------; +set_mode_0x13: + pushad + push ax + + mov esi, mode0x13 + call set_regs + + mov esi, palette256 + call set_palette256 + + pop ax + cmp ax, 1 + jne .cont + mov edi, 0xa0000 ; write directly to mem + mov ax, 0x0000 ; clear all 256kb with color 0 + mov ecx, 0x20000 ; 256kb, 0x20000 = (256*1024)/2 + rep stosw ; by wordwrites + .cont: + + popad + ret + + + +;----------------------------; +; loads the standard font ; +;----------------------------; +load_font: + cld + mov edi, vga_buff + + mov dx, 0x03ce ; graphics + mov al, 5 ; write mode reg + out dx, al + inc dx + in al, dx + stosb + and al, 0xfc + xchg al, ah + mov al, 5 + dec dx + out dx, ax + + mov al, 6 ; misc reg + out dx, al + inc dx + in al, dx + stosb + and al, 0xf1 + or al, 4 + xchg al, ah + mov al, 6 + dec dx + out dx, ax + + mov dx, 0x03c4 ; sequencer port + mov al, 2 ; map mask reg + out dx, al + inc dx + in al, dx + stosb + + dec dx + mov ax, 0x0402 + out dx, ax + + mov al, 4 ; memory selector reg + out dx, al + inc dx + in al, dx + stosb + or al, 4 + xchg al, ah + mov al, 4 + dec dx + out dx, ax + + mov esi, font_8x16 ; font pointer + mov edi, 0xa0000 + + xor ecx, ecx + mov ebx, ecx + + .l1: + mov cl, 16 ; font bytes (16 is standard) + rep movsb + + mov cl, 32 + sub cl, 16 ; font bytes + xor eax, eax + rep stosb + + dec bl ; 256 chars + jnz .l1 + + mov esi, vga_buff + + mov dx, 0x03ce + lodsb + xchg al, ah + mov al, 5 + out dx, ax + + lodsb + xchg al, ah + mov al, 6 + out dx, ax + + mov dx, 0x03c4 + lodsb + xchg al, ah + mov al, 2 + out dx, ax + + lodsb + xchg al, ah + mov al, 4 + out dx, ax + + ret + + + +;------------------------------------; +; put a pixel at x, y with color ; +; used only in mode 0x13 ; +; ; +; input: bx = x ; +; cx = y ; +; al = color ; +; ; +; output: none. ; +;------------------------------------; +put_0x13_pixel: + push ax + push bx + push cx + push edi + + mov edi, 0xa0000 ; directly to mem + add di, bx + mov bx, cx + shl cx, 8 + shl bx, 6 + add cx, bx + add di, cx + stosb + + pop edi + pop cx + pop bx + pop ax + ret + + +;-----------------------------------------------------; +; put a sprite at x, y. only for mode 0x13 ; +; ; +; input: ax = x, bx = y, cx = width, dx = height ; +; esi = pointer to sprite ; +; ; +; output: none. ; +;-----------------------------------------------------; +put_0x13_sprite: + pushad ; this was a + .row_loop: ; nightmare to write. + dec dx ; guess how many times + push cx ; i got lost in the push + push ax ; and pops here.. ;) + .col_loop: ; not to mention what + dec cx ; time it was when i wrote + push ax ; it.. :P + push bx + push cx + mov cx, bx + mov bx, ax + lodsb + call put_0x13_pixel + pop cx + pop bx + pop ax + inc ax + cmp cx, 0 + jne .col_loop + pop ax + pop cx + inc bx + cmp dx, 0 + jne .row_loop + popad + ret + + +;---------------------------------------------; +; sets the palette (256 colors) ; +; ; +; input: esi = palette. ; +; output: none. ; +;---------------------------------------------; +set_palette256: + push ax + push cx + push dx + + xor cx, cx + .l1: + mov dx, 0x03C8 + mov al, cl ; color no. = loop no. + out dx, al + inc dx ; port 0x3C9 + mov al, byte [esi] ; red + out dx, al + inc esi + mov al, byte [esi] ; green + out dx, al + inc esi + mov al, byte [esi] ; blue + out dx, al + inc esi + + inc cx + cmp cx, 256 + jl .l1 + + pop dx + pop cx + pop ax + ret + + +;---------------------------------------------; +; sets the palette (16 colors) ; +; ; +; input: esi = pointer to palette. ; +; output: none. ; +;---------------------------------------------; +set_palette16: + push ax + push cx + push dx + + xor cx, cx + .l1: + mov dx, 0x3DA + in al, dx + mov al, cl ; color no. + mov dx, 0x3C0 + out dx, al + inc dx ; port 0x3C1 + in al, dx + mov dx, 0x3C8 + out dx, al + + inc dx ; port 0x3C9 + mov al, byte [esi] ; red + out dx, al + inc esi + mov al, byte [esi] ; green + out dx, al + inc esi + mov al, byte [esi] ; blue + out dx, al + inc esi + + inc cx + cmp cx, 16 + jl .l1 + + mov dx, 0x3DA + in al, dx + mov al, 0x20 + mov dx, 0x3C0 + out dx, al + + pop dx + pop cx + pop ax + ret + + + +;---------------------------------; +; Set VGA regs to choosen mode ; +; internal use. ; +;---------------------------------; +set_regs: + cli + mov dx, 0x3C2 + lodsb + out dx, al + + mov dx, 0x3DA + lodsb + out dx, al + + xor ecx, ecx + mov dx, 0x3C4 + .l1: + lodsb + xchg al, ah + mov al, cl + out dx, ax + inc ecx + cmp cl, 4 + jbe .l1 + + mov dx, 0x3D4 + mov ax, 0x0E11 + out dx, ax + + xor ecx, ecx + mov dx, 0x3D4 + .l2: + lodsb + xchg al, ah + mov al, cl + out dx, ax + inc ecx + cmp cl, 0x18 + jbe .l2 + + xor ecx, ecx + mov dx, 0x3CE + .l3: + lodsb + xchg al, ah + mov al, cl + out dx, ax + inc ecx + cmp cl, 8 + jbe .l3 + + mov dx, 0x3DA + in al, dx + + xor ecx, ecx + mov dx, 0x3C0 + .l4: + in ax, dx + mov al, cl + out dx, al + lodsb + out dx, al + inc ecx + cmp cl, 0x14 + jbe .l4 + + mov al, 0x20 + out dx, al + + sti + ret \ No newline at end of file diff --git a/utils/FASM.EXE b/utils/FASM.EXE new file mode 100755 index 0000000..6db9d5f Binary files /dev/null and b/utils/FASM.EXE differ diff --git a/utils/PARTCOPY.EXE b/utils/PARTCOPY.EXE new file mode 100755 index 0000000..db2c76d Binary files /dev/null and b/utils/PARTCOPY.EXE differ diff --git a/utils/fasm b/utils/fasm new file mode 100755 index 0000000..76e55a6 Binary files /dev/null and b/utils/fasm differ