Created
October 21, 2025 05:27
-
-
Save pts/9d94dfc3219553eaa308f67e8cb67d99 to your computer and use it in GitHub Desktop.
Partially disassembled Minix 1.5 8086 kernel (from pc/disk.03).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| ; $ ndisasm -b 16 -e 0 -o 0x7c00 -k 0x7e00,-1 pc/disk.03 >biosk.bootblok.ndisasm | |
| ; $ ndisasm -b 16 -e 0 -o 0 -k 0x200,-1 pc/disk.03 >biosk.bootblok0.ndisasm | |
| ; | |
| ; Memory map at boot time: | |
| ; | |
| ; * 0000:7C00...0000:7E00 0x200 boot sector | |
| ; | |
| ; Memory map before jumping to the kernel: | |
| ; | |
| ; * 0000:0580...0000:0600 --- 0x80 boot sector stack (in use before jumping to the kernel) | |
| ; * 0060:0000...0850:0000 @0x00200...@0x08100 0x7f00 kernel/kernel code, entry point MINIX at 0x60:0 | |
| ; * 0850:0000...0850:0010 @0x08100...@0x08110 0x10 kernel/kernel data there is no kernel/kernel bss | |
| ; * 0850:0010...0850:0210 @0x08110...@0x08310 0x200 kernel/kernel stack | |
| ; * 0871:0000...2644:0000 @0x08310...@0x26040 0x1dd30 kernel/mm, kernel/fs etc. | |
| ; * 2644:0000...2680:0000 @0x26040...@0x26400 0x3c0 NUL gap after kernel: may be part of kernel/mm or kernel/fs | |
| ; * 2680:0000...27AE:0000 @0x26400...@0x276e0 0x12e0 menu code, entry point at 0x2680:0 | |
| ; * 2680:0D20...27AE:0000 @0x27120...@0x276e0 0x5c0 menu data and bss | |
| ; * 2680:12E0...2680:32E0 @0x276e0...@0x296e0 0x2000 menu stack | |
| ; * 29AE:0000...2A00:0000 @0x296e0...@0x29c00 0x520 NUL gap after menu, this will be loaded by the boot setor to the end | |
| ; * 2A00:0000...3FA0:0000 --- 0x15a00 memory gap, uninitialized | |
| ; * 3FA0:0000...3FA0:0200 @0x00000...@0x00200 0x200 boot sector, entry point at 0x3fa:0x18 | |
| ; | |
| ; Memory map shortly after jumping to the kernel: | |
| ; | |
| ; * 0060:0000...2644:0000 @0x00200...@0x26040 0x25e40 kernel, entry point at 0x60:0 | |
| ; * 2644:0000...2680:0000 @0x26040...@0x26400 0x3c0 NUL gap after kernel | |
| ; | |
| ; When the PC is powered on, it reads the first block from the floppy | |
| ; disk into address 0x7C00 and jumps to it. This boot block must contain | |
| ; the boot program in this file. The boot program first copies itself to | |
| ; address 256K - 1536 (to get itself out of the way). Then it loads the | |
| ; operating system from the boot diskette into memory, and then jumps to menu. | |
| ; Loading is not trivial because the PC is unable to read a track into | |
| ; memory across a 64K boundary, so the positioning of everything is critical. | |
| ; The number of sectors to load is contained at address 504 of this block. | |
| ; The value is put there by the build program after it has discovered how | |
| ; big the operating system is. When the bootblok program is finished loading, | |
| ; it jumps indirectly to the program (menu) which address is given by the | |
| ; last two words in the boot block. | |
| ; | |
| ; Summary of the words patched into the boot block by build: | |
| ; Word at 504: final: # sectors to load | |
| ; Word at 506: menu_ds: # DS value for menu | |
| ; Word at 508: menu_pc: # PC (IP) value for menu | |
| ; Word at 510: menu_cs: # CS value for menu | |
| ; | |
| ; This version of the boot block must be assembled without separate I & D | |
| ; space. | |
| LOADSEG = 0x0060 ; here the boot block will start loading | |
| BIOSSEG = 0x07C0 ; here the boot block itself is loaded | |
| BOOTSEG = 0x3FA0 ; here it will copy itself (256K-1.5K) | |
| DSKBASE = 120 ; 120 = 4 * 0x1E = ptr to disk parameters | |
| .globl begtext, begdata, begbss, endtext, enddata, endbss ; asld needs these | |
| .text | |
| begtext: | |
| .data | |
| begdata: | |
| .bss | |
| begbss: | |
| .text | |
| ; --- This boot sector code starts at file offset @0, the BIOS loads it to 0:0x7c00. | |
| ; | |
| ; Comments and code copied from source file: pc/disk.12.ex/p/tools/bootblok.s | |
| ; | |
| ; copy bootblock to bootseg | |
| 0000:7C00 B8C007 mov ax, 0x7c0 ; mov ax, #BIOSSEG | |
| 0000:7C03 8ED8 mov ds, ax ; mov ds, ax | |
| 0000:7C05 31F6 xor si, si ; xor si, si ; ds:si - original block | |
| 0000:7C07 B8A03F mov ax, 0x3fa0 ; mov ax, #BOOTSEG | |
| 0000:7C0A 8EC0 mov es, ax ; mov es, ax | |
| 0000:7CAC 31FF xor di, di ; xor di, di ; es:di - new block | |
| 0000:7C0E B90001 mov cx, 0x100 ; mov cx, #256 ; # words to move | |
| 0000:7C11 F2A5 repne movsw ; rep movw ; copy loopc | |
| ; start boot procedure | |
| 0000:7C13 EA1800A03F jmp 0x3fa0:0x18 ; jmpi start, BOOTSEG ; set cs to BOOTSEG | |
| start: | |
| 3FA0:0018 8CCA mov dx, cs ; mov dx, cs | |
| 3FA0:001A 8EDA mov ds, dx ; mov ds, dx ; set ds to cs | |
| 3FA0:001C 31C0 xor ax, ax ; xor ax, ax | |
| 3FA0:001E 8EC0 mov es, ax ; mov es, ax ; set es to 0 | |
| 3FA0:0020 8ED2 mov ss, dx ; mov ss, dx ; set ss to cs i.e., stack in high core | |
| 3FA0:0022 BC0006 mov sp, 0x600 ; mov sp, #1536 ; initialize sp to high core | |
| ; print greeting | |
| 3FA0:0025 B80200 mov ax, 0x2 ; mov ax, #2 ; reset video | |
| 3FA0:0028 CD10 int 0x10 ; int 0x10 | |
| 3FA0:002A B80002 mov ax, 0x200 ; mov ax, #0x0200 ; BIOS call in put cursor in ul corner | |
| 3FA0:002D 31DB xor bx, bx ; xor bx, bx | |
| 3FA0:002F 31D2 xor dx, dx ; xor dx, dx | |
| 3FA0:0031 CD10 int 0x10 ; int 0x10 | |
| 3FA0:0033 BBA201 mov bx, 0x1a2 ; mov bx, #greet | |
| 3FA0:0036 E81C01 call 0x155 ; call print | |
| ; Initialize disk parameters | |
| ; Try 1.2M diskette by trying to read sector 15 | |
| 3FA0:0039 31C0 xor ax, ax ; xor ax, ax | |
| 3FA0:003B 8EC0 mov es, ax ; mov es, ax | |
| 3FA0:003D 8CDA mov dx, ds ; mov dx, ds | |
| 3FA0:003F B87601 mov ax, 0x176 ; mov ax, #atpar | |
| 3FA0:0042 26A37800 mov [es:0x78], ax ; mov es:DSKBASE, ax | |
| 3FA0:0046 2689167A00 mov [es:0x7a], dx ; mov es:DSKBASE+2, dx | |
| 3FA0:004B 31C0 xor ax, ax ; xor ax, ax ; reset drive | |
| 3FA0:004D CD13 int 0x13 ; int 0x13 | |
| 3FA0:004F 31C0 xor ax, ax ; xor ax, ax | |
| 3FA0:0051 8EC0 mov es, ax ; mov es, ax | |
| 3FA0:0053 B80102 mov ax, 0x201 ; mov ax, #0x0201 ; read sector, #sector = 1 | |
| 3FA0:0056 BB0006 mov bx, 0x600 ; mov bx, #0x0600 ; es:bx buffer | |
| 3FA0:0059 B90F00 mov cx, 0xf ; mov cx, #0x000F ; track 0, sector 15 | |
| 3FA0:005C BA0000 mov dx, 0x0 ; mov dx, #0x0000 ; drive 0, head 0 | |
| 3FA0:005F CD13 int 0x13 ; int 0x13 | |
| 3FA0:0061 734C jnc 0xaf ; jnb L1 | |
| ; Error. It wasn't 1.2M. Now set up for 720K | |
| 3FA0:0063 C706DC010900 mov word [0x1dc], 0x9 ; mov tracksiz, #9 | |
| 3FA0:0069 31C0 xor ax, ax ; xor ax, ax ; ps disk parameters are in ROM F01520 | |
| 3FA0:006B 8EC0 mov es, ax ; mov es, ax | |
| 3FA0:006D B82015 mov ax, 0x1520 ; mov ax, #0x1520 | |
| 3FA0:0070 26A37800 mov [es:0x78], ax ; mov es:DSKBASE, ax | |
| 3FA0:0074 B800F0 mov ax, 0xf000 ; mov ax, #0xF000 | |
| 3FA0:0077 26A37A00 mov [es:0x7a], ax ; mov es:DSKBASE+2, ax | |
| ; Try 720K by trying to read track 64. | |
| ; 360K has 40 tracks, 720 has 80 tracks. | |
| 3FA0:007B 31C0 xor ax, ax ; xor ax, ax ; diskette reset | |
| 3FA0:007D CD13 int 0x13 ; int 0x13 | |
| 3FA0:007F C706DC010900 mov word [0x1dc], 0x9 ; mov tracksiz, #9 | |
| 3FA0:0085 31C0 xor ax, ax ; xor ax, ax | |
| 3FA0:0087 8EC0 mov es, ax ; mov es, ax | |
| 3FA0:0089 B80102 mov ax, 0x201 ; mov ax, #0x0201 ; read sector, number of sectors is 1 | |
| 3FA0:008C BB0006 mov bx, 0x600 ; mov bx, #0x0600 ; es:bx buffer | |
| 3FA0:008F B90140 mov cx, 0x4001 ; mov cx, #0x4001 ; track 64, sector 1 | |
| 3FA0:0092 BA0000 mov dx, 0x0 ; mov dx, #0x0000 ; drive 0, head 0 | |
| 3FA0:0095 CD13 int 0x13 ; int 0x13 | |
| 3FA0:0097 7316 jnc 0xaf ; jnb L1 | |
| ; Error. It wasn't 720K either. Now set up for 360K | |
| 3FA0:0099 31C0 xor ax, ax ; xor ax, ax | |
| 3FA0:009B 8EC0 mov es, ax ; mov es, ax | |
| 3FA0:009D 8CDA mov dx, ds ; mov dx, ds | |
| 3FA0:009F B86B01 mov ax, 0x16b ; mov ax, #pcpar | |
| 3FA0:00A2 26A37800 mov [es:0x78], ax ; mov es:DSKBASE, ax | |
| 3FA0:00A6 2689167A00 mov [es:0x7a], dx ; mov es:DSKBASE+2, dx | |
| 3FA0:00AB 31C0 xor ax, ax ; xor ax, ax ; diskette reset | |
| 3FA0:00AD CD13 int 0x13 ; int 0x13 | |
| L1: | |
| ; Load the operating system from diskette. | |
| load: | |
| 3FA0:00AF E84200 call 0xf4 ; call setreg ; set up ah, cx, dx | |
| 3FA0:00B2 8B1E6901 mov bx, [0x169] ; mov bx, disksec ; bx = number of next sector to read | |
| 3FA0:00B6 83C302 add bx, byte +0x2 ; add bx, #2 ; diskette sector 1 goes at 1536 ("sector" 3) | |
| 3FA0:00B9 D1E3 shl bx, 1 ; shl bx, #1 ; multiply sector number by 32 | |
| 3FA0:00BB D1E3 shl bx, 1 ; shl bx, #1 ; ditto | |
| 3FA0:00BD D1E3 shl bx, 1 ; shl bx, #1 ; ditto | |
| 3FA0:00BF D1E3 shl bx, 1 ; shl bx, #1 ; ditto | |
| 3FA0:00C1 D1E3 shl bx, 1 ; shl bx, #1 ; ditto | |
| 3FA0:00C3 8EC3 mov es, bx ; mov es, bx ; core address is es:bx (with bx = 0) | |
| 3FA0:00C5 31DB xor bx, bx ; xor bx, bx ; see above | |
| 3FA0:00C7 01066901 add [0x169], ax ; add disksec, ax ; ax tells how many sectors to read | |
| 3FA0:00CB B402 mov ah, 0x2 ; movb ah, #2 ; opcode for read | |
| 3FA0:00CD CD13 int 0x13 ; int 0x13 ; call the BIOS for a read | |
| 3FA0:00CF 7273 jc 0x144 ; jb error ; jump on diskette error | |
| 3FA0:00D1 A16901 mov ax, [0x169] ; mov ax, disksec ; see if we are done loading | |
| 3FA0:00D4 3B06F801 cmp ax, [0x1f8] ; cmp ax, final ; ditto | |
| 3FA0:00D8 72D5 jc 0xaf ; jb load ; jump if there is more to load | |
| ; Loading done. Finish up. | |
| 3FA0:00DA BAF203 mov dx, 0x3f2 ; mov dx, #0x03F2 ; kill the motor | |
| 3FA0:00DD B80C00 mov ax, 0xc ; mov ax, #0x000C | |
| 3FA0:00E0 EE out dx, al ; out | |
| 3FA0:00E1 FA cli ; cli | |
| 3FA0:00E2 8B1EDC01 mov bx, [0x1dc] ; mov bx, tracksiz ; menu expects # sectors/track in bx | |
| 3FA0:00E6 A1FA01 mov ax, [0x1fa] ; mov ax, menu_ds ; set segment registers | |
| 3FA0:00E9 8ED8 mov ds, ax ; mov ds, ax ; when sep I&D DS != CS | |
| 3FA0:00EB 8EC0 mov es, ax ; mov es, ax ; otherwise they are the same. | |
| 3FA0:00ED 8ED0 mov ss, ax ; mov ss, ax ; words 504 - 510 are patched by build | |
| 3FA0:00EF 2EFF2EFC01 jmp far [cs:0x1fc] ; jmpi es:@menu_pc ; jmp to menu | |
| ; Given the number of the next disk block to read, disksec, compute the | |
| ; cylinder, sector, head, and number of sectors to read as follows: | |
| ; ah = # sectors to read; cl = sector #; ch = cyl; dh = head; dl = 0 | |
| setreg: | |
| 3FA0:00F4 8B36DC01 mov si, [0x1dc] ; mov si, tracksiz ; 9 (PC) or 15 (AT) sectors per track | |
| 3FA0:00F8 A16901 mov ax, [0x169] ; mov ax, disksec ; ax = next sector to read | |
| 3FA0:00FB 31D2 xor dx, dx ; xor dx, dx ; dx:ax = 32-bit dividend | |
| 3FA0:00FD F7F6 div si ; div si ; divide sector # by track size | |
| 3FA0:00FF 89C1 mov cx, ax ; mov cx, ax ; cx = track #; dx = sector (0-origin) | |
| 3FA0:0101 89D3 mov bx, dx ; mov bx, dx ; bx = sector number (0-origin) | |
| 3FA0:0103 A16901 mov ax, [0x169] ; mov ax, disksec ; ax = next sector to read | |
| 3FA0:0106 01F0 add ax, si ; add ax, si ; ax = last sector to read + 1 | |
| 3FA0:0108 48 dec ax ; dec ax ; ax = last sector to read | |
| 3FA0:0109 31D2 xor dx, dx ; xor dx, dx ; dx:ax = 32-bit dividend | |
| 3FA0:010B F736DC01 div word [0x1dc] ; div tracksiz ; divide last sector by track size | |
| 3FA0:010F 38C8 cmp al, cl ; cmpb al, cl ; is starting track = ending track | |
| 3FA0:0111 7403 jz 0x116 ; je set1 ; jump if whole read on 1 cylinder | |
| 3FA0:0113 29D6 sub si, dx ; sub si, dx ; compute lower sector count | |
| 3FA0:0115 4E dec si ; dec si ; si = # sectors to read | |
| ; Check to see if this read crosses a 64K boundary (128 sectors). | |
| ; Such calls must be avoided. The BIOS gets them wrong. | |
| set1: | |
| 3FA0:0116 A16901 mov ax, [0x169] ; mov ax, disksec ; ax = next sector to read | |
| 3FA0:0119 050200 add ax, 0x2 ; add ax, #2 ; disk sector 1 goes in core sector 3 | |
| 3FA0:011C 89C2 mov dx, ax ; mov dx, ax ; dx = next sector to read | |
| 3FA0:011E 01F2 add dx, si ; add dx, si ; dx = one sector beyond end of read | |
| 3FA0:0120 4A dec dx ; dec dx ; dx = last sector to read | |
| 3FA0:0121 D1E0 shl ax, 1 ; shl ax, #1 ; ah = which 64K bank does read start at | |
| 3FA0:0123 D1E2 shl dx, 1 ; shl dx, #1 ; dh = which 64K bank foes read end in | |
| 3FA0:0125 38F4 cmp ah, dh ; cmpb ah, dh ; ah != dh means read crosses 64K boundary | |
| 3FA0:0127 7407 jz 0x130 ; je set2 ; jump if no boundary crossed | |
| 3FA0:0129 D0EA shr dl, 1 ; shrb dl, #1 ; dl = excess beyond 64K boundary | |
| 3FA0:012B 30F6 xor dh, dh ; xorb dh, dh ; dx = excess beyond 64K boundary | |
| 3FA0:012D 29D6 sub si, dx ; sub si, dx ; adjust si | |
| 3FA0:012F 4E dec si ; dec si ; si = number of sectors to read | |
| set2: | |
| 3FA0:0130 89F0 mov ax, si ; mov ax, si ; ax = number of sectors to read | |
| 3FA0:0132 31D2 xor dx, dx ; xor dx, dx ; dh = head, dl = drive | |
| 3FA0:0134 88CE mov dh, cl ; movb dh, cl ; dh = track | |
| 3FA0:0136 80E601 and dh, 0x1 ; andb dh, #0x01 ; dh = head | |
| 3FA0:0139 88CD mov ch, cl ; movb ch, cl ; ch = track to read | |
| 3FA0:013B D0ED shr ch, 1 ; shrb ch, #1 ; ch = cylinder | |
| 3FA0:013D 88D9 mov cl, bl ; movb cl, bl ; cl = sector number (0-origin) | |
| 3FA0:013F FEC1 inc cl ; incb cl ; cl = sector number (1-origin) | |
| 3FA0:0141 30D2 xor dl, dl ; xorb dl, dl ; dl = drive number (0) | |
| 3FA0:0143 C3 ret ; ret ; return values in ax, cx, dx | |
| ; --- error & print routines | |
| error: | |
| 3FA0:0144 50 push ax ; push ax | |
| 3FA0:0145 BB8101 mov bx, 0x181 ; mov bx, #fderr | |
| 3FA0:0148 E80A00 call 0x155 ; call print ; print msg | |
| 3FA0:014B 31C9 xor cx, cx ; xor cx, cx | |
| err1: | |
| 3FA0:014D F7260000 mul word [0x0] ; mul 0 ; delay | |
| 3FA0:0151 E2FA loop 0x14d ; loop err1 | |
| 3FA0:0153 CD19 int 0x19 ; int 0x19 | |
| print: | |
| ; print string (bx) | |
| 3FA0:0155 8A07 mov al, [bx] ; movb al, (bx) ; al contains char to be printed | |
| 3FA0:0157 84C0 test al, al ; testb al, al ; null char? | |
| 3FA0:0159 7501 jnz 0x15c ; jne prt1 ; no | |
| 3FA0:015B C3 ret ; ret ; else return | |
| prt1: | |
| 3FA0:015C B40E mov ah, 0xe ; movb ah, #14 ; 14 = print char | |
| 3FA0:015E 43 inc bx ; inc bx ; increment string pointer | |
| 3FA0:015F 53 push bx ; push bx ; save bx | |
| 3FA0:0160 B301 mov bl, 0x1 ; movb bl, #1 ; foreground color | |
| 3FA0:0162 30FF xor bh, bh ; xorb bh, bh ; page 0 | |
| 3FA0:0164 CD10 int 0x10 ; int 0x10 ; call BIOS VIDEO_IO | |
| 3FA0:0166 5B pop bx ; pop bx ; restore bx | |
| 3FA0:0167 EBEC jmp short 0x155 ; jmp print ; next character | |
| 3FA0:0169 0100 dw 1 ; disksec: .word 1 | |
| 3FA0:016B DF02190209... db ... ; pcpar: .byte 0xDF, 0x02, 25, 2, 9, 0x2A, 0xFF, 0x50, 0xF6, 1, 3 ; for pc | |
| 3FA0:0176 DF02190219... db ... ; atpar: .byte 0xDF, 0x02, 25, 2, 15, 0x1B, 0xFF, 0x54, 0xF6, 1, 8 ; for at | |
| 3FA0:0181 5265616420... db ... ; fderr: .asciz "Read error. Automatic reboot.\r\n" | |
| 3FA0:01A2 0D426F6F74... db ... ; greet: .asciz "\rBooting MINIX 1.5. Copyright 1991 Prentice-Hall, Inc.\r\n" | |
| 3FA0:01DB 000F dw 0xf ; tracksiz: .word 15 ; changed to 9 for ps and pc | |
| .text | |
| endtext: | |
| .data | |
| enddata: | |
| .bss | |
| endbss: | |
| 3FA0:01DD 0000000000... times 29 db 0 ; Padding. | |
| ; These have been filled in by buil.d. | |
| 3FA0:01F8 4D01 dw 0x14d ; final: .word 0x14d | |
| 3FA0:01FA 8026 dw 0x2680 ; menu_ds: .word 0x2680 | |
| 3FA0:01FC 0000 dw 0 ; menu_pc: .word 0 | |
| 3FA0:01FE 8026 dw 0x2680 ; menu_cs: .word 0x2680 | |
| 3FA0:0200 | |
| ; --- Now comes the kernel. | |
| ; | |
| ; $ ndisasm -b 16 -e 0x200 -o 0 -k 0x25e40,-1 pc/disk.03 >biosk.kernel.ndisasm | |
| ; | |
| ; It starts with assembly code, comments and code copied from pc/disk.11.ex/p/kernel/start.x | |
| ; | |
| ; This file contains the assembler startup code for Minix. | |
| ; It cooperates with cstart.c to set up a good environment for main(). | |
| ; It contains the following routines: | |
| ; | |
| ;.define _db ; trap to external debugger | |
| ;.define _get_chrome ; returns nonzero if display is color | |
| ;.define _get_ega ; returns nonzero if display is ega | |
| ;.define _get_ext_memsize ; returns amount of extended memory in K | |
| ;.define _get_low_memsize ; returns amount of low memory in K | |
| ;.define _get_processor ; returns processor type (86, 186, 286, 386) | |
| ;.define _get_word ; returns word at given segment:offset | |
| ;.define _put_word ; writes given word to given segment:offset | |
| ; All except db() only work in real mode, so must not be called by main() or | |
| ; later. | |
| ; Imported functions. | |
| .extern _cstart | |
| .extern _main | |
| ; Exported variables. | |
| ; Imported variables. | |
| .extern _gdt | |
| #include <minix/config.h> | |
| #include <minix/const.h> | |
| #include <minix/com.h> | |
| #include "const.h" | |
| #include "protect.h" | |
| #include "sconst.h" | |
| /* Memory is allocated in clicks. */ | |
| #if (CHIP == INTEL) || (CHIP == M68000) | |
| #define CLICK_SIZE 256 /* unit in which memory is allocated */ | |
| #define CLICK_SHIFT 8 /* log2 of CLICK_SIZE */ | |
| #endif | |
| #define K_STACK_BYTES 512 /* how many bytes for the kernel stack */ | |
| /* BIOS software interrupts, subfunctions and return values. */ | |
| #define EQUIPMENT_CHECK 0x11 | |
| # define EDISPLAY_MASK 0x30 /* mask for video display equipment */ | |
| # define EMONO_DISPLAY 0x30 /* value for mono disply */ | |
| #define GET_EXTMEM_VEC 0x15 /* get extended memory size */ | |
| # define GET_EXTMEM_FUNC 0x88 | |
| #define GET_MEM_VEC 0x12 /* get memory size */ | |
| #define SET_PROTECT_VEC 0x15 /* set protected mode */ | |
| # define SET_PROTECT_FUNC 0x89 | |
| #define VIDEO 0x10 | |
| # define ALTERNATE_SELECT 0x12 | |
| # define A_S_INFO 0x10 | |
| MINIX: ; Entry point for the MINIX kernel. | |
| ; Inputs: CS == 0x60; IP == 0. | |
| ; Inputs: SS:SP: arbitrary, must be valid only if IF == 0. | |
| ; Inputs: AX == 0 (indicating that DI:SI points to the boot_parameters). | |
| ; Inputs: BX == scancode of '=' (0xd on the PC keyboard). | |
| ; Inputs: DI:SI == far pointer to the boot_parameters struct; CX == 0xa == 10 (size of the boot_parameters struct) | |
| ; Inputs: BP (arbitrary); DX (arbitrary); FLAGS (mostly arbitrary, IF and DF don't matter); DS (arbitrary), ES (arbitrary). | |
| ; | |
| ; Description of the boot_parameters struct and the default values: | |
| ; | |
| ; boot_parameters: | |
| ; ; `struct bparam_s' type defined in pc/disk.12.ex/p/include/minix/boot.h . | |
| ; ; `struct bparam_s boot_parameters' variable defined in pc/disk.12.ex/p/tools/menu.c | |
| ; .bp_rootdev: dw 0x100 ; DROOTDEV. | |
| ; .bp_ramimagedev: dw 0x200 ; DRAMIMAGEDEV. Only used if .bp_rootdev == DEV_RAM (ramdisk). | |
| ; .bp_ramsize: dw 0 ; DRAMSIZE. Default RAM disk size. Not used if root is /dev/ram when size is from root image. | |
| ; .bp_scancode: dw 13 ; DSCANCODE. Scancode of '=' (0xd on the PC keyboard). Also put to BX. | |
| ; .bp_processor: dw 0xffff ; DPROCESSOR. 88 would force 386 to 88).Default processor type for no restriction is 0xfff. | |
| ; | |
| ; Values for .bp_rootdev and .bp_ramimagedev: | |
| DEV_FD0 equ 0x200 ; GRUB (fd0): First floppy. | |
| DEV_HD0 equ 0x300 ; GRUB (hd0): Start of first hard disk. | |
| DEV_HD1 equ 0x301 ; GRUB (hd0,1): First hard disk, partition 1. | |
| DEV_HD2 equ 0x302 ; GRUB (hd0,2): First hard disk, partition 2. | |
| DEV_HD3 equ 0x303 ; GRUB (hd0,3): First hard disk, partition 3. | |
| DEV_HD4 equ 0x304 ; GRUB (hd0,4): First hard disk, partition 4. | |
| DEV_RAM equ 0x100 ; Ramdisk. | |
| 0060:0000 EB04 jmp short 0x6 ; j over_kernel_ds ; skip over the next few bytes | |
| 0060:0002 005A dw 0x5a00 ; .word CLICK_SHIFT ; for build, later used by db for syms offset | |
| kernel_ds: | |
| 0060:0004 5008 dw 0x850 ; .word 0 ; build puts kernel DS here at fixed address 4 | |
| over_kernel_ds: | |
| 0060:0006 FA cli ; cli ; disable interrupts | |
| 0060:0007 FC cld ; cld ; C compiler needs es = ds and direction = up | |
| ; Set up kernel segment registers and stack. | |
| ; The old fsck1.s sets up an invalid stack, so the above cli is beside the | |
| ; point, and a debugger trap here would crash. | |
| 0060:0008 2E8B160400 mov dx, [cs:0x4] ; mov dx, cs:kernel_ds ; dx is the only free register | |
| 0060:000D 8EDA mov ds, dx ; mov ds, dx | |
| 0060:000F 8EC2 mov es, dx ; mov es, dx | |
| 0060:0011 8ED2 mov ss, dx ; mov ss, dx | |
| 0060:0013 BC1002 mov sp, 0x210 ; mov sp, #k_stktop ; set sp to point to the top of kernel stack | |
| ; Call C startup code to prepare for switching modes. | |
| 0060:0016 1E push ds ; push ds | |
| 0060:0017 0E push cs ; push cs | |
| 0060:0018 57 push di ; push di ; Segment of boot_parameters if AX == 0. | |
| 0060:0019 56 push si ; push si ; Offset of boot_parameters if AX == 0. | |
| 0060:001A 52 push dx ; push dx ; Passed but not used. | |
| 0060:001B 51 push cx ; push cx ; sizeof(boot_parameters) or size of the environment variables, typically 10. | |
| 0060:001C 53 push bx ; push bx ; Scancode, typically 13 (for '='). | |
| 0060:001D 50 push ax ; push ax ; Boot code: 0 means boot_parameters, 0x100 means environment variables. | |
| 0060:001E E88B00 call 0xac ; call _cstart | |
| 0060:0021 83C410 add sp, byte +0x10 ; add sp, #8*2 | |
| ; After switching to protected mode, the CPU may be in 32-bit mode, which has | |
| ; different instruction decoding, so "jmp _main" would fail. | |
| ; Fake a 32-bit return address to get around this ("ret" is the same in 32-bit | |
| ; mode apart from popping 32 bits). | |
| 0060:0024 29C0 sub ax, ax ; sub ax, ax | |
| 0060:0026 50 push ax ; push ax ; becomes harmless junk in 16-bit mode | |
| 0060:0027 B8A516 mov ax, 0x16a5 ; mov ax, #_main | |
| 0060:002A 50 push ax ; push ax | |
| ; Call the BIOS to switch to protected mode. | |
| ; This is just to do any cleanup necessary, typically to disable a hardware | |
| ; kludge which holds the A20 address line low. | |
| ; | |
| ; The call requires the gdt as set up by prot_init(): | |
| ; gdt pointer in gdt[1] | |
| ; ldt pointer in gdt[2] | |
| ; new ds in gdt[3] | |
| ; new es in gdt[4] | |
| ; new ss in gdt[5] | |
| ; new cs in gdt[6] | |
| ; nothing in gdt[7] (overwritten with BIOS cs) | |
| ; ICW2 for master 8259 in bh | |
| ; ICW2 for slave 8259 in bl | |
| ; The BIOS enables interrupts briefly - this is OK since the BIOS vectors | |
| ; are still valid. | |
| ; Most registers are destroyed. | |
| ; The 8259's are reinitialised. | |
| 0060:002B BE7C16 mov si, 0x167c ; mov si, #_gdt | |
| 0060:002E BB3028 mov bx, 0x2830 ; mov bx, #IRQ0_VECTOR * 256 + IRQ8_VECTOR | |
| 0060:0031 B489 mov ah, 0x89 ; movb ah, #SET_PROTECT_FUNC | |
| 0060:0033 CD15 int 0x15 ; int SET_PROTECT_VEC | |
| ; Now the processor is in protected mode. | |
| ; There is a little more protected mode initialization to do, but leave it | |
| ; to main(), to avoid using incompatible instructions here. | |
| 0060:0035 C3 ret ; ret ; "return" to _main | |
| ; PUBLIC void db(); | |
| ; Trap to external debugger. | |
| ; This may be called from all modes (real or protected, 16 or 32-bit). | |
| _db: | |
| 0060:0036 CC int3 ; int 3 | |
| 0060:0037 C3 ret ; ret | |
| ; PUBLIC u16_t get_chrome(); | |
| ; Call the BIOS to find out if the display is color. | |
| _get_chrome: | |
| 0060:0038 CD11 int 0x11 ; int EQUIPMENT_CHECK ; get bit pattern for equipment | |
| 0060:003A 253000 and ax, 0x30 ; and ax, #EDISPLAY_MASK ; isolate color/mono field | |
| 0060:003D 2D3000 sub ax, 0x30 ; sub ax, #EMONO_DISPLAY ; nonzero means it is color | |
| 0060:0040 C3 ret ; ret | |
| ; PUBLIC u16_t get_ega(); | |
| ; Call the BIOS to find out if the display is EGA. | |
| ; (Actually this only tells if the BIOS supports EGA, not whether the | |
| ; screen is EGA. Doing it right is far more complicated.) | |
| _get_ega: | |
| 0060:0041 B310 mov bl, 0x10 ; movb bl, #A_S_INFO ; get info about | |
| 0060:0043 B412 mov ah, 0x12 ; movb ah, #ALTERNATE_SELECT ; alternative display types | |
| 0060:0045 CD10 int 0x10 ; int VIDEO ; this will fail for non-EGA BIOS | |
| 0060:0047 88D8 mov al, bl ; movb al, bl ; success is determined by knowing | |
| 0060:0049 B400 mov ah, 0x0 ; movb ah, #0 ; a successful call will change bl | |
| 0060:004B 2D1000 sub ax, 0x10 ; sub ax, #A_S_INFO ; nonzero means it is EGA | |
| 0060:004E C3 ret ; ret | |
| ; PUBLIC u16_t get_ext_memsize(); | |
| ; Ask the BIOS how much extended memory there is. | |
| _get_ext_memsize: | |
| 0060:004F 9C pushf ; pushf ; gak!, PC's set the interrupt enable flag | |
| 0060:0050 B488 mov ah, 0x88 ; movb ah, #GET_EXTMEM_FUNC | |
| 0060:0052 F8 clc ; clc ; carry will stay clear if call exists | |
| 0060:0053 CD15 int 0x15 ; int GET_EXTMEM_VEC ; returns size (in K) in ax for AT's | |
| 0060:0055 7302 jnc 0x59 ; jnc got_ext_memsize ; error, probably a PC | |
| 0060:0057 29C0 sub ax, ax ; sub ax, ax | |
| got_ext_memsize: | |
| 0060:0059 9D popf ; popf | |
| 0060:005A C3 ret ; ret | |
| ; PUBLIC u16_t get_low_memsize(); | |
| ; Ask the BIOS how much normal memory there is. | |
| _get_low_memsize: | |
| 0060:005B CD12 int 0x12 ; int GET_MEM_VEC ; returns the size (in K) in ax | |
| 0060:005D C3 ret ; ret | |
| ; PUBLIC u16_t get_processor(); | |
| ; Decide processor type among 8088=8086, 80188=80186, 80286, 80386. | |
| ; Return 86, 186, 286 or 386. | |
| ; Preserves all registers except the flags and the return register ax. | |
| ; | |
| ; Method: | |
| ; 8088=8086 and 80188=80186 push sp as new sp, 80286 and 80386 as old sp. | |
| ; All but 8088=8086 do shifts mod 32 or 16. | |
| ; 386 stores 0 for the upper 8 bits of the GDT pointer in 16 bit mode, | |
| ; while 286 stores 0xFF. | |
| _get_processor: | |
| 0060:005E 54 push sp ; push sp ; see if pushed sp == sp | |
| 0060:005F 58 pop ax ; pop ax | |
| 0060:0060 39E0 cmp ax, sp ; cmp ax, sp | |
| 0060:0062 7410 jz 0x74 ; jz new_processor | |
| 0060:0064 51 push cx ; push cx ; see if shifts are mod 32 | |
| 0060:0065 B92001 mov cx, 0x120 ; mov cx, #0x0120 | |
| 0060:0068 D2E5 shl ch, cl ; shlb ch, cl ; zero tells if 86 | |
| 0060:006A 59 pop cx ; pop cx | |
| 0060:006B B85600 mov ax, 0x56 ; mov ax, #86 | |
| 0060:006E 741E jz 0x8e ; jz got_processor | |
| 0060:0070 B8BA00 mov ax, 0xba ; mov ax, #186 | |
| 0060:0073 C3 ret ; ret | |
| new_processor: | |
| 0060:0074 55 push bp ; push bp ; see if high bits are set in saved GDT | |
| 0060:0075 89E5 mov bp, sp ; mov bp, sp | |
| 0060:0077 83EC06 sub sp, byte +0x6 ; sub sp, #6 ; space for GDT ptr | |
| 0060:007A 0F0146FA sgdt [bp-0x6] ; defsgdt (-6(bp)) ; save 3 word GDT ptr | |
| 0060:007E 83C404 add sp, byte +0x4 ; add sp, #4 ; discard 2 words of GDT ptr | |
| 0060:0081 58 pop ax ; pop ax ; top word of GDT ptr | |
| 0060:0082 5D pop bp ; pop bp | |
| 0060:0083 80FC00 cmp ah, 0x0 ; cmpb ah, #0 ; zero only for 386 | |
| 0060:0086 B81E01 mov ax, 0x11e ; mov ax, #286 | |
| 0060:0089 7503 jnz 0x8e ; jnz got_processor | |
| 0060:008B B88201 mov ax, 0x182 ; mov ax, #386 | |
| got_processor: | |
| 0060:008E C3 ret ; ret | |
| ; PUBLIC u16_t get_word(u16_t segment, u16_t *offset); | |
| ; Load and return the word at the far pointer segment:offset. | |
| _get_word: | |
| 0060:008F 8CD9 mov cx, ds ; mov cx, ds ; save ds | |
| 0060:0091 5A pop dx ; pop dx ; return adr | |
| 0060:0092 1F pop ds ; pop ds ; segment | |
| 0060:0093 5B pop bx ; pop bx ; offset | |
| 0060:0094 83EC04 sub sp, byte +0x4 ; sub sp, #2+2 ; adjust for parameters popped | |
| 0060:0097 8B07 mov ax, [bx] ; mov ax, (bx) ; load the word to return | |
| 0060:0099 8ED9 mov ds, cx ; mov ds, cx ; restore ds | |
| 0060:009B FFE2 jmp dx ; jmp (dx) ; return | |
| ; PUBLIC void put_word(u16_t segment, u16_t *offset, u16_t value); | |
| ; Store the word value at the far pointer segment:offset. | |
| _put_word: | |
| 0060:009D 8CD9 mov cx, ds ; mov cx, ds ; save ds | |
| 0060:009F 5A pop dx ; pop dx ; return adr | |
| 0060:00A0 1F pop ds ; pop ds ; segment | |
| 0060:00A1 5B pop bx ; pop bx ; offset | |
| 0060:00A2 58 pop ax ; pop ax ; value | |
| 0060:00A3 83EC06 sub sp, byte +0x6 ; sub sp, #2+2+2 ; adjust for parameters popped | |
| 0060:00A6 8907 mov [bx], ax ; mov (bx), ax ; store the word | |
| 0060:00A8 8ED9 mov ds, cx ; mov ds, cx ; restore ds | |
| 0060:00AA FFE2 jmp dx ; jmp (dx) ; return | |
| .data | |
| begdata: | |
| .bss | |
| begbss: | |
| ; End of code (and data declarations) in pc/disk.11.ex/p/kernel/start.x | |
| _cstart: | |
| ; In pc/disk.11.ex/p/kernel/cstart.c | |
| 0060:00AC ... | |
| ... | |
| 0060:009D ... | |
| ... | |
| 0060:7E4C 0000000000...00 times 0x7f00-0x7e4c db 0 ; Alignment padding. | |
| kernel_data: ; kernel_ds points here. | |
| _sizes: ; Filled in by build: ; sizes of kernel, mm, fs. | |
| 0850:0000 7F00 kernel_code_size_para: dw 0x7f ; .word 0x526F ; this must be the first data entry (magic #); build has overwritten it. | |
| 0850:0002 8600 kernel_data_size_para: dw 0x86 ; .word CLICK_SHIFT ; consistency check for build; build has overwritten it. | |
| 0850:0004 2800 dw 0x28 | |
| 0850:0006 2C00 dw 0x2c | |
| 0850:0008 5800 dw 0x58 | |
| 0850:000A 9A00 dw 0x9a | |
| 0850:000C 0000 dw 0 | |
| 0850:000E 1700 dw 0x17 | |
| k_stack: | |
| 0850:0010 000000...00 times K_STACK_BYTES db 0 ; 0x200 == 512. Kernel stack. | |
| 0871:0000 | |
| ... | |
| 2644:0000 00... times 0x3c0 ; NUL gap after kernel. | |
| ; --- Now comes the menu. | |
| ; | |
| ; It starts with assembly code, comments and code copied from pc/disk.12.ex/p/tools/menu1.s | |
| MENU_STACKSIZE = 8192 | |
| .globl _main, _exit, _edata, _end, _putc, _getc, _reset_diskette, _diskio | |
| .globl csv, cret, begtext, begdata, begbss | |
| .globl _cylsiz, _tracksiz, _drive, _boot_parameters | |
| .text | |
| begtext: | |
| start: | |
| menu: | |
| ; It starts with assembly code in pc/disk.12.ex/p/tools/menu1.s | |
| menu_entry: | |
| ; Inputs: CS == DS == ES == 0x2680; IP == 0. | |
| ; Inputs: IF == 0 (interrupts disabled); rest of FLAGS is arbitrary. | |
| ; Inputs: SS == 0; SP is 0x600 or a bit less. | |
| ; Inputs: BX == sectors per track. | |
| 2680:0000 89DA mov dx, bx ; mov dx, bx ; bootblok puts # sectors/track in bx | |
| 2680:0002 31C0 xor ax, ax ; xor ax, ax | |
| 2680:0004 BBE012 mov bx, 0x12e0 ; mov bx, #_edata ; prepare to clear bss | |
| 2680:0007 B90637 mov cx, 0x3706 ; mov cx, #_end | |
| 2680:000A 29D9 sub cx, bx ; sub cx, bx | |
| 2680:000C D1F9 sar cx, 1 ; sar cx, *1 | |
| st.1: | |
| 2680:000E 8907 mov [bx], ax ; mov (bx), ax ; clear bss | |
| 2680:0010 83C302 add bx, byte +0x2 ; add bx, #2 | |
| 2680:0013 E2F9 loop 0xe ; loop st.1 | |
| 2680:0015 8916E636 mov [0x36e6], dx ; mov _tracksiz, dx ; dx (was bx) is # sectors/track | |
| 2680:0019 01D2 add dx, dx ; add dx, dx | |
| 2680:001B 8916E836 mov [0x36e8], dx ; mov _cylsiz, dx ; # sectors/cylinder | |
| 2680:001F BCE032 mov sp, 0x32e0 ; mov sp, #menu_stack+MENU_STACKSIZE | |
| 2680:0022 E82A05 call 0x54f ; call _main | |
| 2680:0025 89C3 mov bx, ax ; mov bx, ax ; put scancode for '=' in bx. The scancode of '=' is 0xd == 13. | |
| 2680:0027 29C0 sub ax, ax ; sub ax, ax ; ax == 0 to show new boot (was scancode) | |
| 2680:0029 BE260D mov si, 0xd26 ; mov si, #_boot_parameters ; pointer to boot parameters in di:si | |
| 2680:002C 8CDF mov di, ds ; mov di, ds | |
| 2680:002E B90A00 mov cx, 0xa ; mov cx, #10 ; sizeof structure in cx | |
| ; next 'cli' and setting up segs is redundant, and the segments are wrong for sep I&D | |
| 2680:0031 FA cli ; cli | |
| 2680:0032 BA6000 mov dx, 0x60 ; mov dx, #0x60 | |
| 2680:0035 8EDA mov ds, dx ; mov ds, dx | |
| 2680:0037 8EC2 mov es, dx ; mov es, dx | |
| 2680:0039 8ED2 mov ss, dx ; mov ss, dx | |
| 2680:003B EA00006000 jmp 0x60:0x0 ; jmpi 0, 0x60 ; jmp to kernel | |
| _exit: | |
| 2680:0040 8B1EE636 mov bx, [0x36e6] ; mov bx, _tracksiz | |
| 2680:0044 EBBA jmp short 0x0 ; jmp start | |
| _putc: | |
| 2680:0046 31C0 xor ax, ax ; xor ax, ax | |
| 2680:0048 E89D00 call 0xe8 ; call csv | |
| 2680:004B 8A4604 mov al, [bp+0x4] ; movb al, 4(bp) ; al contains char to be printed | |
| 2680:004E B40E mov ah, 0xe ; movb ah, #14 ; 14 = print char | |
| 2680:0050 B301 mov bl, 0x1 ; movb bl, *1 ; foreground color | |
| 2680:0052 55 push bp ; push bp ; not preserved | |
| 2680:0053 CD10 int 0x10 ; int 0x10 ; call BIOS VIDEO_IO | |
| 2680:0055 5D pop bp ; pop bp | |
| 2680:0056 E99900 jmp 0xf2 ; jmp cret | |
| _getc: | |
| 2680:0059 30E4 xor ah, ah ; xorb ah, ah | |
| 2680:005B CD16 int 0x16 ; int 0x16 | |
| 2680:005D C3 ret ; ret | |
| _reset_diskette: | |
| 2680:005E 31C0 xor ax, ax ; xor ax, ax | |
| 2680:0060 E88500 call 0xe8 ; call csv | |
| 2680:0063 06 push es ; push es ; not preserved | |
| 2680:0064 CD13 int 0x13 ; int 0x13 ; call BIOS DISKETTE_IO | |
| 2680:0066 07 pop es ; pop es | |
| 2680:0067 E98800 jmp 0xf2 ; jmp cret | |
| ; handle diskio(RW, sector_number, buffer, sector_count) call | |
| ; Do not issue a BIOS call that crosses a track boundary | |
| _diskio: | |
| 2680:006A 31C0 xor ax, ax ; xor ax, ax | |
| 2680:006C E87900 call 0xe8 ; call csv | |
| 2680:006F C706220D0000 mov word [0xd22], 0x0 ; mov tmp1, #0 ; tmp1 = # sectors actually transferred | |
| 2680:0075 8B7E0A mov di, [bp+0xa] ; mov di, 10(bp) ; di = # sectors to transfer | |
| 2680:0078 893E240D mov [0xd24], di ; mov tmp2, di ; di = # sectors to transfer | |
| d0: | |
| 2680:007C 8B4606 mov ax, [bp+0x6] ; mov ax, 6(bp) ; ax = sector number to start at | |
| 2680:007F 31D2 xor dx, dx ; xor dx, dx ; dx:ax is dividend | |
| 2680:0081 F736E836 div word [0x36e8] ; div _cylsiz ; ax = cylinder, dx = sector within cylinder | |
| 2680:0085 88E1 mov cl, ah ; movb cl, ah ; cl = hi-order bits of cylinder | |
| 2680:0087 D0C9 ror cl, 1 ; rorb cl, #1 ; BIOS expects hi bits in a funny place | |
| 2680:0089 D0C9 ror cl, 1 ; rorb cl, #1 ; ditto | |
| 2680:008B 88C5 mov ch, al ; movb ch, al ; cx = sector # in BIOS format | |
| 2680:008D 89D0 mov ax, dx ; mov ax, dx ; ax = sector offset within cylinder | |
| 2680:008F 31D2 xor dx, dx ; xor dx, dx ; dx:ax is dividend | |
| 2680:0091 F736E636 div word [0x36e6] ; div _tracksiz ; ax = head, dx = sector | |
| 2680:0095 88C6 mov dh, al ; movb dh, al ; dh = head | |
| 2680:0097 08D1 or cl, dl ; orb cl, dl ; cl = 2 high-order cyl bits || sector | |
| 2680:0099 FEC1 inc cl ; incb cl ; BIOS counts sectors starting at 1 | |
| 2680:009B 8A16EC36 mov dl, [0x36ec] ; movb dl, _drive ; dl = drive code (0-3 or 0x80 - 0x81) | |
| 2680:009F 8B5E08 mov bx, [bp+0x8] ; mov bx, 8(bp) ; bx = address of buffer | |
| 2680:00A2 88C8 mov al, cl ; movb al, cl ; al = sector # | |
| 2680:00A4 02460A add al, [bp+0xa] ; addb al, 10(bp) ; compute last sector | |
| 2680:00A7 FEC8 dec al ; decb al ; al = last sector to transfer | |
| 2680:00A9 3A06E636 cmp al, [0x36e6] ; cmpb al, _tracksiz ; see if last sector is on next track | |
| 2680:00AD 7E05 jng 0xb4 ; jle d1 ; jump if last sector is on this track | |
| 2680:00AF C7460A0100 mov word [bp+0xa], 0x1 ; mov 10(bp), #1 ; transfer 1 sector at a time | |
| d1: | |
| 2680:00B4 8A6604 mov ah, [bp+0x4] ; movb ah, 4(bp) ; ah = READING or WRITING | |
| 2680:00B7 80C402 add ah, 0x2 ; addb ah, *2 ; BIOS codes are 2 and 3, not 0 and 1 | |
| 2680:00BA 8A460A mov al, [bp+0xa] ; movb al, 10(bp) ; al = # sectors to transfer | |
| 2680:00BD A3200D mov [0xd20], ax ; mov tmp, ax ; al is # sectors to read/write | |
| 2680:00C0 06 push es ; push es ; BIOS ruins es | |
| 2680:00C1 CD13 int 0x13 ; int 0x13 ; issue BIOS call | |
| 2680:00C3 07 pop es ; pop es ; restore es | |
| 2680:00C4 80FC00 cmp ah, 0x0 ; cmpb ah, *0 ; ah != 0 means BIOS detected error | |
| 2680:00C7 751D jnz 0xe6 ; jne d2 ; exit with error | |
| 2680:00C9 A1200D mov ax, [0xd20] ; mov ax, tmp ; fetch count of sectors transferred | |
| 2680:00CC 30E4 xor ah, ah ; xorb ah, ah ; count is in ax | |
| 2680:00CE 0106220D add [0xd22], ax ; add tmp1, ax ; tmp1 accumulates sectors transferred | |
| 2680:00D2 8B36220D mov si, [0xd22] ; mov si, tmp1 ; are we done yet? | |
| 2680:00D6 3B36240D cmp si, [0xd24] ; cmp si, tmp2 ; ditto | |
| 2680:00DA 740A jz 0xe6 ; je d2 ; jump if done | |
| 2680:00DC FF4606 inc word [bp+0x6] ; inc 6(bp) ; next time around, start 1 sector higher | |
| 2680:00DF 8146080002 add word [bp+0x8], 0x200 ; add 8(bp), #0x200 ; move up in buffer by 512 bytes | |
| 2680:00E4 EB96 jmp short 0x7c ; jmp d0 | |
| d2: | |
| 2680:00E6 EB0A jmp short 0xf2 ; jmp cret | |
| csv: | |
| 2680:00E8 5B pop bx ; pop bx | |
| 2680:00E9 55 push bp ; push bp | |
| 2680:00EA 89E5 mov bp, sp ; mov bp, sp | |
| 2680:00EC 57 push di ; push di | |
| 2680:00ED 56 push si ; push si | |
| 2680:00EE 29C4 sub sp, ax ; sub sp, ax | |
| 2680:00F0 FFE3 jmp bx ; jmp (bx) | |
| cret: | |
| 2680:00F2 8D66FC lea sp, [bp-0x4] ; lea sp, *-4(bp) | |
| 2680:00F5 5E pop si ; pop si | |
| 2680:00F6 5F pop di ; pop di | |
| 2680:00F7 5D pop bp ; pop bp | |
| 2680:00F8 C3 ret ; ret | |
| .data | |
| begdata: | |
| .bss | |
| begbss: | |
| ; Now comes the code from pc/disk.12.ex/p/tools/menu.c | |
| 2680:00F9 55 push bp | |
| 2680:00FA 89E5 mov bp, sp | |
| 2680:00FC 837E040A cmp word [bp+0x4], byte +0xa | |
| 2680:0100 7508 jnz 0x10a | |
| 2680:0102 B80D00 mov ax, 0xd | |
| 2680:0105 50 push ax | |
| 2680:0106 E83DFF call 0x46 | |
| 2680:0109 5B pop bx | |
| 2680:010A FF7604 push word [bp+0x4] | |
| 2680:010D E836FF call 0x46 | |
| 2680:0110 5B pop bx | |
| 2680:0111 E9360B jmp 0xc4a | |
| 2680:0114 55 push bp | |
| 2680:0115 89E5 mov bp, sp | |
| 2680:0117 50 push ax | |
| 2680:0118 56 push si | |
| 2680:0119 E83DFF call 0x59 | |
| 2680:011C 25FF00 and ax, 0xff | |
| 2680:011F 89C6 mov si, ax | |
| 2680:0121 83FE0D cmp si, byte +0xd | |
| 2680:0124 7503 jnz 0x129 | |
| 2680:0126 BE0A00 mov si, 0xa | |
| 2680:0129 56 push si | |
| 2680:012A E8CCFF call 0xf9 | |
| 2680:012D 5B pop bx | |
| 2680:012E 89F0 mov ax, si | |
| 2680:0130 E9160B jmp 0xc49 | |
| 2680:0133 55 push bp | |
| 2680:0134 89E5 mov bp, sp | |
| 2680:0136 83EC26 sub sp, byte +0x26 | |
| 2680:0139 56 push si | |
| 2680:013A 57 push di | |
| 2680:013B 8D46DC lea ax, [bp-0x24] | |
| 2680:013E 89C6 mov si, ax | |
| 2680:0140 837E0A00 cmp word [bp+0xa], byte +0x0 | |
| 2680:0144 741A jz 0x160 | |
| 2680:0146 837E0600 cmp word [bp+0x6], byte +0x0 | |
| 2680:014A 7D0F jnl 0x15b | |
| 2680:014C F75E04 neg word [bp+0x4] | |
| 2680:014F F75E06 neg word [bp+0x6] | |
| 2680:0152 835E0600 sbb word [bp+0x6], byte +0x0 | |
| 2680:0156 FF4E0C dec word [bp+0xc] | |
| 2680:0159 EB05 jmp short 0x160 | |
| 2680:015B C7460A0000 mov word [bp+0xa], 0x0 | |
| 2680:0160 31FF xor di, di | |
| 2680:0162 C746FE0000 mov word [bp-0x2], 0x0 | |
| 2680:0167 837EFE20 cmp word [bp-0x2], byte +0x20 | |
| 2680:016B 7D32 jnl 0x19f | |
| 2680:016D D1E7 shl di, 1 | |
| 2680:016F 837E0600 cmp word [bp+0x6], byte +0x0 | |
| 2680:0173 7D01 jnl 0x176 | |
| 2680:0175 47 inc di | |
| 2680:0176 8B4604 mov ax, [bp+0x4] | |
| 2680:0179 8B4E06 mov cx, [bp+0x6] | |
| 2680:017C D1E0 shl ax, 1 | |
| 2680:017E D1D1 rcl cx, 1 | |
| 2680:0180 894604 mov [bp+0x4], ax | |
| 2680:0183 894E06 mov [bp+0x6], cx | |
| 2680:0186 397E08 cmp [bp+0x8], di | |
| 2680:0189 7F0F jg 0x19a | |
| 2680:018B 89F8 mov ax, di | |
| 2680:018D 2B4608 sub ax, [bp+0x8] | |
| 2680:0190 89C7 mov di, ax | |
| 2680:0192 83460401 add word [bp+0x4], byte +0x1 | |
| 2680:0196 83560600 adc word [bp+0x6], byte +0x0 | |
| 2680:019A FF46FE inc word [bp-0x2] | |
| 2680:019D EBC8 jmp short 0x167 | |
| 2680:019F 89FB mov bx, di | |
| 2680:01A1 8A87FE0D mov al, [bx+0xdfe] | |
| 2680:01A5 8804 mov [si], al | |
| 2680:01A7 46 inc si | |
| 2680:01A8 FF4E0C dec word [bp+0xc] | |
| 2680:01AB 8B4606 mov ax, [bp+0x6] | |
| 2680:01AE 0B4604 or ax, [bp+0x4] | |
| 2680:01B1 75AD jnz 0x160 | |
| 2680:01B3 8B460C mov ax, [bp+0xc] | |
| 2680:01B6 FF4E0C dec word [bp+0xc] | |
| 2680:01B9 09C0 or ax, ax | |
| 2680:01BB 7E09 jng 0x1c6 | |
| 2680:01BD FF760E push word [bp+0xe] | |
| 2680:01C0 E836FF call 0xf9 | |
| 2680:01C3 5B pop bx | |
| 2680:01C4 EBED jmp short 0x1b3 | |
| 2680:01C6 837E0A00 cmp word [bp+0xa], byte +0x0 | |
| 2680:01CA 7404 jz 0x1d0 | |
| 2680:01CC C6042D mov byte [si], 0x2d | |
| 2680:01CF 46 inc si | |
| 2680:01D0 8D46DC lea ax, [bp-0x24] | |
| 2680:01D3 39C6 cmp si, ax | |
| 2680:01D5 760B jna 0x1e2 | |
| 2680:01D7 4E dec si | |
| 2680:01D8 8A04 mov al, [si] | |
| 2680:01DA 98 cbw | |
| 2680:01DB 50 push ax | |
| 2680:01DC E81AFF call 0xf9 | |
| 2680:01DF 5B pop bx | |
| 2680:01E0 EBEE jmp short 0x1d0 | |
| 2680:01E2 E9630A jmp 0xc48 | |
| 2680:01E5 55 push bp | |
| 2680:01E6 89E5 mov bp, sp | |
| 2680:01E8 56 push si | |
| 2680:01E9 8B7604 mov si, [bp+0x4] | |
| 2680:01EC 837E0600 cmp word [bp+0x6], byte +0x0 | |
| 2680:01F0 740F jz 0x201 | |
| 2680:01F2 89F0 mov ax, si | |
| 2680:01F4 2D2000 sub ax, 0x20 | |
| 2680:01F7 3D5E00 cmp ax, 0x5e | |
| 2680:01FA 7711 ja 0x20d | |
| 2680:01FC 83FE5C cmp si, byte +0x5c | |
| 2680:01FF 740C jz 0x20d | |
| 2680:0201 56 push si | |
| 2680:0202 E8F4FE call 0xf9 | |
| 2680:0205 5B pop bx | |
| 2680:0206 B80100 mov ax, 0x1 | |
| 2680:0209 50 push ax | |
| 2680:020A E98000 jmp 0x28d | |
| 2680:020D B85C00 mov ax, 0x5c | |
| 2680:0210 50 push ax | |
| 2680:0211 E8E5FE call 0xf9 | |
| 2680:0214 5B pop bx | |
| 2680:0215 56 push si | |
| 2680:0216 EB6A jmp short 0x282 | |
| 2680:0218 B83000 mov ax, 0x30 | |
| 2680:021B 50 push ax | |
| 2680:021C E8DAFE call 0xf9 | |
| 2680:021F 5B pop bx | |
| 2680:0220 EB67 jmp short 0x289 | |
| 2680:0222 B86200 mov ax, 0x62 | |
| 2680:0225 50 push ax | |
| 2680:0226 E8D0FE call 0xf9 | |
| 2680:0229 5B pop bx | |
| 2680:022A EB5D jmp short 0x289 | |
| 2680:022C B86E00 mov ax, 0x6e | |
| 2680:022F 50 push ax | |
| 2680:0230 E8C6FE call 0xf9 | |
| 2680:0233 5B pop bx | |
| 2680:0234 EB53 jmp short 0x289 | |
| 2680:0236 B87200 mov ax, 0x72 | |
| 2680:0239 50 push ax | |
| 2680:023A E8BCFE call 0xf9 | |
| 2680:023D 5B pop bx | |
| 2680:023E EB49 jmp short 0x289 | |
| 2680:0240 B87400 mov ax, 0x74 | |
| 2680:0243 50 push ax | |
| 2680:0244 E8B2FE call 0xf9 | |
| 2680:0247 5B pop bx | |
| 2680:0248 EB3F jmp short 0x289 | |
| 2680:024A B86600 mov ax, 0x66 | |
| 2680:024D 50 push ax | |
| 2680:024E E8A8FE call 0xf9 | |
| 2680:0251 5B pop bx | |
| 2680:0252 EB35 jmp short 0x289 | |
| 2680:0254 B85C00 mov ax, 0x5c | |
| 2680:0257 50 push ax | |
| 2680:0258 E89EFE call 0xf9 | |
| 2680:025B 5B pop bx | |
| 2680:025C EB2B jmp short 0x289 | |
| 2680:025E 89F0 mov ax, si | |
| 2680:0260 25FF00 and ax, 0xff | |
| 2680:0263 31C9 xor cx, cx | |
| 2680:0265 BA3000 mov dx, 0x30 | |
| 2680:0268 52 push dx | |
| 2680:0269 BA0300 mov dx, 0x3 | |
| 2680:026C 52 push dx | |
| 2680:026D 31D2 xor dx, dx | |
| 2680:026F 52 push dx | |
| 2680:0270 BA0800 mov dx, 0x8 | |
| 2680:0273 52 push dx | |
| 2680:0274 51 push cx | |
| 2680:0275 50 push ax | |
| 2680:0276 E8BAFE call 0x133 | |
| 2680:0279 83C40C add sp, byte +0xc | |
| 2680:027C B80400 mov ax, 0x4 | |
| 2680:027F 50 push ax | |
| 2680:0280 EB0B jmp short 0x28d | |
| 2680:0282 BB380D mov bx, 0xd38 | |
| 2680:0285 58 pop ax | |
| 2680:0286 E97609 jmp 0xbff | |
| 2680:0289 B80200 mov ax, 0x2 | |
| 2680:028C 50 push ax | |
| 2680:028D 58 pop ax | |
| 2680:028E E9B809 jmp 0xc49 | |
| 2680:0291 55 push bp | |
| 2680:0292 89E5 mov bp, sp | |
| 2680:0294 83EC0A sub sp, byte +0xa | |
| 2680:0297 56 push si | |
| 2680:0298 57 push di | |
| 2680:0299 8B7604 mov si, [bp+0x4] | |
| 2680:029C 803C00 cmp byte [si], 0x0 | |
| 2680:029F 7503 jnz 0x2a4 | |
| 2680:02A1 E94F02 jmp 0x4f3 | |
| 2680:02A4 8A04 mov al, [si] | |
| 2680:02A6 98 cbw | |
| 2680:02A7 50 push ax | |
| 2680:02A8 E93D02 jmp 0x4e8 | |
| 2680:02AB B80D00 mov ax, 0xd | |
| 2680:02AE 50 push ax | |
| 2680:02AF E847FE call 0xf9 | |
| 2680:02B2 5B pop bx | |
| 2680:02B3 8A04 mov al, [si] | |
| 2680:02B5 98 cbw | |
| 2680:02B6 50 push ax | |
| 2680:02B7 E83FFE call 0xf9 | |
| 2680:02BA 5B pop bx | |
| 2680:02BB E93102 jmp 0x4ef | |
| 2680:02BE 46 inc si | |
| 2680:02BF 803C2D cmp byte [si], 0x2d | |
| 2680:02C2 7501 jnz 0x2c5 | |
| 2680:02C4 46 inc si | |
| 2680:02C5 803C30 cmp byte [si], 0x30 | |
| 2680:02C8 7506 jnz 0x2d0 | |
| 2680:02CA B83000 mov ax, 0x30 | |
| 2680:02CD 50 push ax | |
| 2680:02CE EB04 jmp short 0x2d4 | |
| 2680:02D0 B82000 mov ax, 0x20 | |
| 2680:02D3 50 push ax | |
| 2680:02D4 8F46F8 pop word [bp-0x8] | |
| 2680:02D7 31FF xor di, di | |
| 2680:02D9 8A04 mov al, [si] | |
| 2680:02DB 98 cbw | |
| 2680:02DC 2D3000 sub ax, 0x30 | |
| 2680:02DF 3D0900 cmp ax, 0x9 | |
| 2680:02E2 7716 ja 0x2fa | |
| 2680:02E4 B80A00 mov ax, 0xa | |
| 2680:02E7 F7E7 mul di | |
| 2680:02E9 89C7 mov di, ax | |
| 2680:02EB 89F3 mov bx, si | |
| 2680:02ED 46 inc si | |
| 2680:02EE 8A07 mov al, [bx] | |
| 2680:02F0 98 cbw | |
| 2680:02F1 2D3000 sub ax, 0x30 | |
| 2680:02F4 01F8 add ax, di | |
| 2680:02F6 89C7 mov di, ax | |
| 2680:02F8 EBDF jmp short 0x2d9 | |
| 2680:02FA 803C6C cmp byte [si], 0x6c | |
| 2680:02FD 7514 jnz 0x313 | |
| 2680:02FF 46 inc si | |
| 2680:0300 8A04 mov al, [si] | |
| 2680:0302 98 cbw | |
| 2680:0303 2D6100 sub ax, 0x61 | |
| 2680:0306 3D1900 cmp ax, 0x19 | |
| 2680:0309 7708 ja 0x313 | |
| 2680:030B 8A04 mov al, [si] | |
| 2680:030D 98 cbw | |
| 2680:030E 05E0FF add ax, 0xffe0 | |
| 2680:0311 8804 mov [si], al | |
| 2680:0313 8A04 mov al, [si] | |
| 2680:0315 98 cbw | |
| 2680:0316 2D4100 sub ax, 0x41 | |
| 2680:0319 31C9 xor cx, cx | |
| 2680:031B 3D1900 cmp ax, 0x19 | |
| 2680:031E 7701 ja 0x321 | |
| 2680:0320 41 inc cx | |
| 2680:0321 894EF6 mov [bp-0xa], cx | |
| 2680:0324 8A04 mov al, [si] | |
| 2680:0326 98 cbw | |
| 2680:0327 50 push ax | |
| 2680:0328 E9A601 jmp 0x4d1 | |
| 2680:032B 8B5E06 mov bx, [bp+0x6] | |
| 2680:032E 83460602 add word [bp+0x6], byte +0x2 | |
| 2680:0332 57 push di | |
| 2680:0333 FF76F6 push word [bp-0xa] | |
| 2680:0336 FF37 push word [bx] | |
| 2680:0338 E8AAFE call 0x1e5 | |
| 2680:033B 5B pop bx | |
| 2680:033C 5B pop bx | |
| 2680:033D 59 pop cx | |
| 2680:033E 29C1 sub cx, ax | |
| 2680:0340 89CF mov di, cx | |
| 2680:0342 E99301 jmp 0x4d8 | |
| 2680:0345 8B5E06 mov bx, [bp+0x6] | |
| 2680:0348 83460602 add word [bp+0x6], byte +0x2 | |
| 2680:034C 31C0 xor ax, ax | |
| 2680:034E FF76F8 push word [bp-0x8] | |
| 2680:0351 57 push di | |
| 2680:0352 31C9 xor cx, cx | |
| 2680:0354 51 push cx | |
| 2680:0355 B90200 mov cx, 0x2 | |
| 2680:0358 51 push cx | |
| 2680:0359 50 push ax | |
| 2680:035A FF37 push word [bx] | |
| 2680:035C E8D4FD call 0x133 | |
| 2680:035F 83C40C add sp, byte +0xc | |
| 2680:0362 31FF xor di, di | |
| 2680:0364 E97101 jmp 0x4d8 | |
| 2680:0367 8B5E06 mov bx, [bp+0x6] | |
| 2680:036A 83460604 add word [bp+0x6], byte +0x4 | |
| 2680:036E FF76F8 push word [bp-0x8] | |
| 2680:0371 57 push di | |
| 2680:0372 31C0 xor ax, ax | |
| 2680:0374 50 push ax | |
| 2680:0375 B80200 mov ax, 0x2 | |
| 2680:0378 50 push ax | |
| 2680:0379 FF7702 push word [bx+0x2] | |
| 2680:037C FF37 push word [bx] | |
| 2680:037E E8B2FD call 0x133 | |
| 2680:0381 83C40C add sp, byte +0xc | |
| 2680:0384 31FF xor di, di | |
| 2680:0386 E94F01 jmp 0x4d8 | |
| 2680:0389 8B5E06 mov bx, [bp+0x6] | |
| 2680:038C 83460602 add word [bp+0x6], byte +0x2 | |
| 2680:0390 31C0 xor ax, ax | |
| 2680:0392 FF76F8 push word [bp-0x8] | |
| 2680:0395 57 push di | |
| 2680:0396 31C9 xor cx, cx | |
| 2680:0398 51 push cx | |
| 2680:0399 B90800 mov cx, 0x8 | |
| 2680:039C 51 push cx | |
| 2680:039D 50 push ax | |
| 2680:039E FF37 push word [bx] | |
| 2680:03A0 E890FD call 0x133 | |
| 2680:03A3 83C40C add sp, byte +0xc | |
| 2680:03A6 31FF xor di, di | |
| 2680:03A8 E92D01 jmp 0x4d8 | |
| 2680:03AB 8B5E06 mov bx, [bp+0x6] | |
| 2680:03AE 83460604 add word [bp+0x6], byte +0x4 | |
| 2680:03B2 FF76F8 push word [bp-0x8] | |
| 2680:03B5 57 push di | |
| 2680:03B6 31C0 xor ax, ax | |
| 2680:03B8 50 push ax | |
| 2680:03B9 B80800 mov ax, 0x8 | |
| 2680:03BC 50 push ax | |
| 2680:03BD FF7702 push word [bx+0x2] | |
| 2680:03C0 FF37 push word [bx] | |
| 2680:03C2 E86EFD call 0x133 | |
| 2680:03C5 83C40C add sp, byte +0xc | |
| 2680:03C8 31FF xor di, di | |
| 2680:03CA E90B01 jmp 0x4d8 | |
| 2680:03CD 8B5E06 mov bx, [bp+0x6] | |
| 2680:03D0 83460602 add word [bp+0x6], byte +0x2 | |
| 2680:03D4 8B07 mov ax, [bx] | |
| 2680:03D6 99 cwd | |
| 2680:03D7 FF76F8 push word [bp-0x8] | |
| 2680:03DA 57 push di | |
| 2680:03DB B90100 mov cx, 0x1 | |
| 2680:03DE 51 push cx | |
| 2680:03DF B90A00 mov cx, 0xa | |
| 2680:03E2 51 push cx | |
| 2680:03E3 52 push dx | |
| 2680:03E4 50 push ax | |
| 2680:03E5 E84BFD call 0x133 | |
| 2680:03E8 83C40C add sp, byte +0xc | |
| 2680:03EB 31FF xor di, di | |
| 2680:03ED E9E800 jmp 0x4d8 | |
| 2680:03F0 8B5E06 mov bx, [bp+0x6] | |
| 2680:03F3 83460604 add word [bp+0x6], byte +0x4 | |
| 2680:03F7 FF76F8 push word [bp-0x8] | |
| 2680:03FA 57 push di | |
| 2680:03FB B80100 mov ax, 0x1 | |
| 2680:03FE 50 push ax | |
| 2680:03FF B80A00 mov ax, 0xa | |
| 2680:0402 50 push ax | |
| 2680:0403 FF7702 push word [bx+0x2] | |
| 2680:0406 FF37 push word [bx] | |
| 2680:0408 E828FD call 0x133 | |
| 2680:040B 83C40C add sp, byte +0xc | |
| 2680:040E 31FF xor di, di | |
| 2680:0410 E9C500 jmp 0x4d8 | |
| 2680:0413 8B5E06 mov bx, [bp+0x6] | |
| 2680:0416 83460602 add word [bp+0x6], byte +0x2 | |
| 2680:041A 31C0 xor ax, ax | |
| 2680:041C FF76F8 push word [bp-0x8] | |
| 2680:041F 57 push di | |
| 2680:0420 31C9 xor cx, cx | |
| 2680:0422 51 push cx | |
| 2680:0423 B90A00 mov cx, 0xa | |
| 2680:0426 51 push cx | |
| 2680:0427 50 push ax | |
| 2680:0428 FF37 push word [bx] | |
| 2680:042A E806FD call 0x133 | |
| 2680:042D 83C40C add sp, byte +0xc | |
| 2680:0430 31FF xor di, di | |
| 2680:0432 E9A300 jmp 0x4d8 | |
| 2680:0435 8B5E06 mov bx, [bp+0x6] | |
| 2680:0438 83460604 add word [bp+0x6], byte +0x4 | |
| 2680:043C FF76F8 push word [bp-0x8] | |
| 2680:043F 57 push di | |
| 2680:0440 31C0 xor ax, ax | |
| 2680:0442 50 push ax | |
| 2680:0443 B80A00 mov ax, 0xa | |
| 2680:0446 50 push ax | |
| 2680:0447 FF7702 push word [bx+0x2] | |
| 2680:044A FF37 push word [bx] | |
| 2680:044C E8E4FC call 0x133 | |
| 2680:044F 83C40C add sp, byte +0xc | |
| 2680:0452 31FF xor di, di | |
| 2680:0454 E98100 jmp 0x4d8 | |
| 2680:0457 8B5E06 mov bx, [bp+0x6] | |
| 2680:045A 83460602 add word [bp+0x6], byte +0x2 | |
| 2680:045E 31C0 xor ax, ax | |
| 2680:0460 FF76F8 push word [bp-0x8] | |
| 2680:0463 57 push di | |
| 2680:0464 31C9 xor cx, cx | |
| 2680:0466 51 push cx | |
| 2680:0467 B91000 mov cx, 0x10 | |
| 2680:046A 51 push cx | |
| 2680:046B 50 push ax | |
| 2680:046C FF37 push word [bx] | |
| 2680:046E E8C2FC call 0x133 | |
| 2680:0471 83C40C add sp, byte +0xc | |
| 2680:0474 31FF xor di, di | |
| 2680:0476 EB60 jmp short 0x4d8 | |
| 2680:0478 8B5E06 mov bx, [bp+0x6] | |
| 2680:047B 83460604 add word [bp+0x6], byte +0x4 | |
| 2680:047F FF76F8 push word [bp-0x8] | |
| 2680:0482 57 push di | |
| 2680:0483 31C0 xor ax, ax | |
| 2680:0485 50 push ax | |
| 2680:0486 B81000 mov ax, 0x10 | |
| 2680:0489 50 push ax | |
| 2680:048A FF7702 push word [bx+0x2] | |
| 2680:048D FF37 push word [bx] | |
| 2680:048F E8A1FC call 0x133 | |
| 2680:0492 83C40C add sp, byte +0xc | |
| 2680:0495 31FF xor di, di | |
| 2680:0497 EB3F jmp short 0x4d8 | |
| 2680:0499 8B5E06 mov bx, [bp+0x6] | |
| 2680:049C 83460602 add word [bp+0x6], byte +0x2 | |
| 2680:04A0 8B07 mov ax, [bx] | |
| 2680:04A2 8946FC mov [bp-0x4], ax | |
| 2680:04A5 8B5EFC mov bx, [bp-0x4] | |
| 2680:04A8 803F00 cmp byte [bx], 0x0 | |
| 2680:04AB 742B jz 0x4d8 | |
| 2680:04AD 8B5EFC mov bx, [bp-0x4] | |
| 2680:04B0 FF46FC inc word [bp-0x4] | |
| 2680:04B3 8A07 mov al, [bx] | |
| 2680:04B5 98 cbw | |
| 2680:04B6 57 push di | |
| 2680:04B7 FF76F6 push word [bp-0xa] | |
| 2680:04BA 50 push ax | |
| 2680:04BB E827FD call 0x1e5 | |
| 2680:04BE 5B pop bx | |
| 2680:04BF 5B pop bx | |
| 2680:04C0 59 pop cx | |
| 2680:04C1 29C1 sub cx, ax | |
| 2680:04C3 89CF mov di, cx | |
| 2680:04C5 EBDE jmp short 0x4a5 | |
| 2680:04C7 8A04 mov al, [si] | |
| 2680:04C9 98 cbw | |
| 2680:04CA 50 push ax | |
| 2680:04CB E82BFC call 0xf9 | |
| 2680:04CE 5B pop bx | |
| 2680:04CF EB07 jmp short 0x4d8 | |
| 2680:04D1 BB580D mov bx, 0xd58 | |
| 2680:04D4 58 pop ax | |
| 2680:04D5 E92707 jmp 0xbff | |
| 2680:04D8 89F8 mov ax, di | |
| 2680:04DA 4F dec di | |
| 2680:04DB 09C0 or ax, ax | |
| 2680:04DD 7E10 jng 0x4ef | |
| 2680:04DF FF76F8 push word [bp-0x8] | |
| 2680:04E2 E814FC call 0xf9 | |
| 2680:04E5 5B pop bx | |
| 2680:04E6 EBF0 jmp short 0x4d8 | |
| 2680:04E8 BB980D mov bx, 0xd98 | |
| 2680:04EB 58 pop ax | |
| 2680:04EC E91007 jmp 0xbff | |
| 2680:04EF 46 inc si | |
| 2680:04F0 E9A9FD jmp 0x29c | |
| 2680:04F3 E95207 jmp 0xc48 | |
| 2680:04F6 55 push bp | |
| 2680:04F7 89E5 mov bp, sp | |
| 2680:04F9 8D4606 lea ax, [bp+0x6] | |
| 2680:04FC 50 push ax | |
| 2680:04FD FF7604 push word [bp+0x4] | |
| 2680:0500 E88EFD call 0x291 | |
| 2680:0503 5B pop bx | |
| 2680:0504 5B pop bx | |
| 2680:0505 E94207 jmp 0xc4a | |
| 2680:0508 55 push bp | |
| 2680:0509 89E5 mov bp, sp | |
| 2680:050B C706E4360637 mov word [0x36e4], 0x3706 | |
| 2680:0511 E93607 jmp 0xc4a | |
| 2680:0514 55 push bp | |
| 2680:0515 89E5 mov bp, sp | |
| 2680:0517 56 push si | |
| 2680:0518 8B7606 mov si, [bp+0x6] | |
| 2680:051B 57 push di | |
| 2680:051C 8B7E04 mov di, [bp+0x4] | |
| 2680:051F 89FB mov bx, di | |
| 2680:0521 47 inc di | |
| 2680:0522 8A07 mov al, [bx] | |
| 2680:0524 8804 mov [si], al | |
| 2680:0526 46 inc si | |
| 2680:0527 FF4E08 dec word [bp+0x8] | |
| 2680:052A 75F3 jnz 0x51f | |
| 2680:052C E91907 jmp 0xc48 | |
| 2680:052F 55 push bp | |
| 2680:0530 89E5 mov bp, sp | |
| 2680:0532 837E0601 cmp word [bp+0x6], byte +0x1 | |
| 2680:0536 7505 jnz 0x53d | |
| 2680:0538 FF7608 push word [bp+0x8] | |
| 2680:053B EB03 jmp short 0x540 | |
| 2680:053D FF760A push word [bp+0xa] | |
| 2680:0540 FF7606 push word [bp+0x6] | |
| 2680:0543 FF7604 push word [bp+0x4] | |
| 2680:0546 E8ADFF call 0x4f6 | |
| 2680:0549 83C406 add sp, byte +0x6 | |
| 2680:054C E9FB06 jmp 0xc4a | |
| _main: ; Of the menu. | |
| 2680:054F 55 push bp | |
| 2680:0550 89E5 mov bp, sp | |
| 2680:0552 83EC0C sub sp, byte +0xc | |
| 2680:0555 56 push si | |
| 2680:0556 57 push di | |
| 2680:0557 31F6 xor si, si | |
| 2680:0559 31FF xor di, di | |
| 2680:055B C746FA0000 mov word [bp-0x6], 0x0 | |
| 2680:0560 833E340D00 cmp word [0xd34], byte +0x0 | |
| 2680:0565 7408 jz 0x56f | |
| 2680:0567 8B0EE636 mov cx, [0x36e6] | |
| 2680:056B 890E360D mov [0xd36], cx | |
| 2680:056F C706340D0000 mov word [0xd34], 0x0 | |
| 2680:0575 833EE63609 cmp word [0x36e6], byte +0x9 | |
| 2680:057A 7C07 jl 0x583 | |
| 2680:057C 833EE83612 cmp word [0x36e8], byte +0x12 | |
| 2680:0581 7D08 jnl 0x58b | |
| 2680:0583 B8100E mov ax, 0xe10 | |
| 2680:0586 50 push ax | |
| 2680:0587 E86CFF call 0x4f6 | |
| 2680:058A 5B pop bx | |
| 2680:058B C706E236E232 mov word [0x36e2], 0x32e2 | |
| 2680:0591 B82C0E mov ax, 0xe2c | |
| 2680:0594 50 push ax | |
| 2680:0595 E85EFF call 0x4f6 | |
| 2680:0598 5B pop bx | |
| 2680:0599 B8320E mov ax, 0xe32 | |
| 2680:059C 50 push ax | |
| 2680:059D E856FF call 0x4f6 | |
| 2680:05A0 5B pop bx | |
| 2680:05A1 B84A0E mov ax, 0xe4a | |
| 2680:05A4 50 push ax | |
| 2680:05A5 E84EFF call 0x4f6 | |
| 2680:05A8 5B pop bx | |
| 2680:05A9 B8720E mov ax, 0xe72 | |
| 2680:05AC 50 push ax | |
| 2680:05AD E846FF call 0x4f6 | |
| 2680:05B0 5B pop bx | |
| 2680:05B1 B89E0E mov ax, 0xe9e | |
| 2680:05B4 50 push ax | |
| 2680:05B5 E83EFF call 0x4f6 | |
| 2680:05B8 5B pop bx | |
| 2680:05B9 FF36320D push word [0xd32] | |
| 2680:05BD B8CC0E mov ax, 0xecc | |
| 2680:05C0 50 push ax | |
| 2680:05C1 E832FF call 0x4f6 | |
| 2680:05C4 5B pop bx | |
| 2680:05C5 5B pop bx | |
| 2680:05C6 813E260D0001 cmp word [0xd26], 0x100 | |
| 2680:05CC 7506 jnz 0x5d4 | |
| 2680:05CE B81C0F mov ax, 0xf1c | |
| 2680:05D1 50 push ax | |
| 2680:05D2 EB04 jmp short 0x5d8 | |
| 2680:05D4 B81E0F mov ax, 0xf1e | |
| 2680:05D7 50 push ax | |
| 2680:05D8 FF36300D push word [0xd30] | |
| 2680:05DC B8F00E mov ax, 0xef0 | |
| 2680:05DF 50 push ax | |
| 2680:05E0 E813FF call 0x4f6 | |
| 2680:05E3 83C406 add sp, byte +0x6 | |
| 2680:05E6 813E260D0001 cmp word [0xd26], 0x100 | |
| 2680:05EC 7506 jnz 0x5f4 | |
| 2680:05EE B8680F mov ax, 0xf68 | |
| 2680:05F1 50 push ax | |
| 2680:05F2 EB04 jmp short 0x5f8 | |
| 2680:05F4 B8880F mov ax, 0xf88 | |
| 2680:05F7 50 push ax | |
| 2680:05F8 FF362A0D push word [0xd2a] | |
| 2680:05FC B8420F mov ax, 0xf42 | |
| 2680:05FF 50 push ax | |
| 2680:0600 E8F3FE call 0x4f6 | |
| 2680:0603 83C406 add sp, byte +0x6 | |
| 2680:0606 8B0E2E0D mov cx, [0xd2e] | |
| 2680:060A 894EF4 mov [bp-0xc], cx | |
| 2680:060D 837EF400 cmp word [bp-0xc], byte +0x0 | |
| 2680:0611 7E0C jng 0x61f | |
| 2680:0613 FF76F4 push word [bp-0xc] | |
| 2680:0616 B88A0F mov ax, 0xf8a | |
| 2680:0619 50 push ax | |
| 2680:061A E8D9FE call 0x4f6 | |
| 2680:061D 5B pop bx | |
| 2680:061E 5B pop bx | |
| 2680:061F B8C20F mov ax, 0xfc2 | |
| 2680:0622 50 push ax | |
| 2680:0623 E8D0FE call 0x4f6 | |
| 2680:0626 5B pop bx | |
| 2680:0627 E82FFA call 0x59 | |
| 2680:062A 8946F8 mov [bp-0x8], ax | |
| 2680:062D 8B46F8 mov ax, [bp-0x8] | |
| 2680:0630 25FF00 and ax, 0xff | |
| 2680:0633 8946F6 mov [bp-0xa], ax | |
| 2680:0636 FF76F6 push word [bp-0xa] | |
| 2680:0639 B8C60F mov ax, 0xfc6 | |
| 2680:063C 50 push ax | |
| 2680:063D E8B6FE call 0x4f6 | |
| 2680:0640 5B pop bx | |
| 2680:0641 5B pop bx | |
| 2680:0642 C706E0320000 mov word [0x32e0], 0x0 | |
| 2680:0648 C706EA360000 mov word [0x36ea], 0x0 | |
| 2680:064E C706EC360000 mov word [0x36ec], 0x0 | |
| 2680:0654 FF76F6 push word [bp-0xa] | |
| 2680:0657 E98000 jmp 0x6da | |
| 2680:065A B90800 mov cx, 0x8 | |
| 2680:065D 8B46F8 mov ax, [bp-0x8] | |
| 2680:0660 D3F8 sar ax, cl | |
| 2680:0662 25FF00 and ax, 0xff | |
| 2680:0665 A32C0D mov [0xd2c], ax | |
| 2680:0668 FF362C0D push word [0xd2c] | |
| 2680:066C EB73 jmp short 0x6e1 | |
| 2680:066E 31C0 xor ax, ax | |
| 2680:0670 50 push ax | |
| 2680:0671 B8CA0F mov ax, 0xfca | |
| 2680:0674 50 push ax | |
| 2680:0675 B8300D mov ax, 0xd30 | |
| 2680:0678 50 push ax | |
| 2680:0679 E86E02 call 0x8ea | |
| 2680:067C 83C406 add sp, byte +0x6 | |
| 2680:067F A3280D mov [0xd28], ax | |
| 2680:0682 B8D40F mov ax, 0xfd4 | |
| 2680:0685 50 push ax | |
| 2680:0686 E86DFE call 0x4f6 | |
| 2680:0689 5B pop bx | |
| 2680:068A E90CFF jmp 0x599 | |
| 2680:068D E88103 call 0xa11 | |
| 2680:0690 A32E0D mov [0xd2e], ax | |
| 2680:0693 B8D80F mov ax, 0xfd8 | |
| 2680:0696 50 push ax | |
| 2680:0697 E85CFE call 0x4f6 | |
| 2680:069A 5B pop bx | |
| 2680:069B E9FBFE jmp 0x599 | |
| 2680:069E B80100 mov ax, 0x1 | |
| 2680:06A1 50 push ax | |
| 2680:06A2 B8DC0F mov ax, 0xfdc | |
| 2680:06A5 50 push ax | |
| 2680:06A6 B8320D mov ax, 0xd32 | |
| 2680:06A9 50 push ax | |
| 2680:06AA E83D02 call 0x8ea | |
| 2680:06AD 83C406 add sp, byte +0x6 | |
| 2680:06B0 A3260D mov [0xd26], ax | |
| 2680:06B3 B8E20F mov ax, 0xfe2 | |
| 2680:06B6 50 push ax | |
| 2680:06B7 E83CFE call 0x4f6 | |
| 2680:06BA 5B pop bx | |
| 2680:06BB E9DBFE jmp 0x599 | |
| 2680:06BE E86103 call 0xa22 | |
| 2680:06C1 A32A0D mov [0xd2a], ax | |
| 2680:06C4 B8E60F mov ax, 0xfe6 | |
| 2680:06C7 50 push ax | |
| 2680:06C8 E82BFE call 0x4f6 | |
| 2680:06CB 5B pop bx | |
| 2680:06CC E9CAFE jmp 0x599 | |
| 2680:06CF B8EA0F mov ax, 0xfea | |
| 2680:06D2 50 push ax | |
| 2680:06D3 E820FE call 0x4f6 | |
| 2680:06D6 5B pop bx | |
| 2680:06D7 E9BFFE jmp 0x599 | |
| 2680:06DA BBA40D mov bx, 0xda4 | |
| 2680:06DD 58 pop ax | |
| 2680:06DE E91E05 jmp 0xbff | |
| 2680:06E1 58 pop ax | |
| 2680:06E2 E96305 jmp 0xc48 | |
| 2680:06E5 55 push bp | |
| 2680:06E6 89E5 mov bp, sp | |
| 2680:06E8 50 push ax | |
| 2680:06E9 B8FC0F mov ax, 0xffc | |
| 2680:06EC 50 push ax | |
| 2680:06ED E806FE call 0x4f6 | |
| 2680:06F0 5B pop bx | |
| 2680:06F1 E865F9 call 0x59 | |
| 2680:06F4 8846FF mov [bp-0x1], al | |
| 2680:06F7 8A46FF mov al, [bp-0x1] | |
| 2680:06FA 98 cbw | |
| 2680:06FB 50 push ax | |
| 2680:06FC B84C10 mov ax, 0x104c | |
| 2680:06FF 50 push ax | |
| 2680:0700 E8F3FD call 0x4f6 | |
| 2680:0703 5B pop bx | |
| 2680:0704 5B pop bx | |
| 2680:0705 807EFF0D cmp byte [bp-0x1], 0xd | |
| 2680:0709 7512 jnz 0x71d | |
| 2680:070B B85010 mov ax, 0x1050 | |
| 2680:070E 50 push ax | |
| 2680:070F E8E4FD call 0x4f6 | |
| 2680:0712 5B pop bx | |
| 2680:0713 833EEA3600 cmp word [0x36ea], byte +0x0 | |
| 2680:0718 7E32 jng 0x74c | |
| 2680:071A E92D05 jmp 0xc4a | |
| 2680:071D 833EEA3600 cmp word [0x36ea], byte +0x0 | |
| 2680:0722 7E02 jng 0x726 | |
| 2680:0724 EB26 jmp short 0x74c | |
| 2680:0726 8A46FF mov al, [bp-0x1] | |
| 2680:0729 98 cbw | |
| 2680:072A 3D3100 cmp ax, 0x31 | |
| 2680:072D 7C1D jl 0x74c | |
| 2680:072F 8A46FF mov al, [bp-0x1] | |
| 2680:0732 98 cbw | |
| 2680:0733 3D3900 cmp ax, 0x39 | |
| 2680:0736 7F14 jg 0x74c | |
| 2680:0738 807EFF35 cmp byte [bp-0x1], 0x35 | |
| 2680:073C 7502 jnz 0x740 | |
| 2680:073E EB0C jmp short 0x74c | |
| 2680:0740 8A46FF mov al, [bp-0x1] | |
| 2680:0743 98 cbw | |
| 2680:0744 2D3000 sub ax, 0x30 | |
| 2680:0747 A3EA36 mov [0x36ea], ax | |
| 2680:074A EBA5 jmp short 0x6f1 | |
| 2680:074C C706EA360000 mov word [0x36ea], 0x0 | |
| 2680:0752 EB95 jmp short 0x6e9 | |
| 2680:0754 55 push bp | |
| 2680:0755 89E5 mov bp, sp | |
| 2680:0757 83EC26 sub sp, byte +0x26 | |
| 2680:075A 56 push si | |
| 2680:075B 57 push di | |
| 2680:075C 31FF xor di, di | |
| 2680:075E 47 inc di | |
| 2680:075F 83FF05 cmp di, byte +0x5 | |
| 2680:0762 7E0F jng 0x773 | |
| 2680:0764 B85210 mov ax, 0x1052 | |
| 2680:0767 50 push ax | |
| 2680:0768 E88BFD call 0x4f6 | |
| 2680:076B 5B pop bx | |
| 2680:076C B8FFFF mov ax, 0xffff | |
| 2680:076F 50 push ax | |
| 2680:0770 E97301 jmp 0x8e6 | |
| 2680:0773 B80100 mov ax, 0x1 | |
| 2680:0776 50 push ax | |
| 2680:0777 FF36E236 push word [0x36e2] | |
| 2680:077B 31C0 xor ax, ax | |
| 2680:077D 50 push ax | |
| 2680:077E 50 push ax | |
| 2680:077F E8E8F8 call 0x6a | |
| 2680:0782 83C408 add sp, byte +0x8 | |
| 2680:0785 8946FE mov [bp-0x2], ax | |
| 2680:0788 F746FE00FF test word [bp-0x2], 0xff00 | |
| 2680:078D 75CF jnz 0x75e | |
| 2680:078F 31F6 xor si, si | |
| 2680:0791 83FE04 cmp si, byte +0x4 | |
| 2680:0794 7C03 jl 0x799 | |
| 2680:0796 E9F700 jmp 0x890 | |
| 2680:0799 B90400 mov cx, 0x4 | |
| 2680:079C 89F0 mov ax, si | |
| 2680:079E D3E0 shl ax, cl | |
| 2680:07A0 05C601 add ax, 0x1c6 | |
| 2680:07A3 89C3 mov bx, ax | |
| 2680:07A5 031EE236 add bx, [0x36e2] | |
| 2680:07A9 31C0 xor ax, ax | |
| 2680:07AB 8A0F mov cl, [bx] | |
| 2680:07AD 30ED xor ch, ch | |
| 2680:07AF 894EE6 mov [bp-0x1a], cx | |
| 2680:07B2 8946E8 mov [bp-0x18], ax | |
| 2680:07B5 B90400 mov cx, 0x4 | |
| 2680:07B8 89F0 mov ax, si | |
| 2680:07BA D3E0 shl ax, cl | |
| 2680:07BC 05C701 add ax, 0x1c7 | |
| 2680:07BF 89C3 mov bx, ax | |
| 2680:07C1 031EE236 add bx, [0x36e2] | |
| 2680:07C5 31C0 xor ax, ax | |
| 2680:07C7 8A0F mov cl, [bx] | |
| 2680:07C9 30ED xor ch, ch | |
| 2680:07CB 894EE2 mov [bp-0x1e], cx | |
| 2680:07CE 8946E4 mov [bp-0x1c], ax | |
| 2680:07D1 B90400 mov cx, 0x4 | |
| 2680:07D4 89F0 mov ax, si | |
| 2680:07D6 D3E0 shl ax, cl | |
| 2680:07D8 05C801 add ax, 0x1c8 | |
| 2680:07DB 89C3 mov bx, ax | |
| 2680:07DD 031EE236 add bx, [0x36e2] | |
| 2680:07E1 31C0 xor ax, ax | |
| 2680:07E3 8A0F mov cl, [bx] | |
| 2680:07E5 30ED xor ch, ch | |
| 2680:07E7 894EDE mov [bp-0x22], cx | |
| 2680:07EA 8946E0 mov [bp-0x20], ax | |
| 2680:07ED B90400 mov cx, 0x4 | |
| 2680:07F0 89F0 mov ax, si | |
| 2680:07F2 D3E0 shl ax, cl | |
| 2680:07F4 05C901 add ax, 0x1c9 | |
| 2680:07F7 89C3 mov bx, ax | |
| 2680:07F9 031EE236 add bx, [0x36e2] | |
| 2680:07FD 31C0 xor ax, ax | |
| 2680:07FF 8A0F mov cl, [bx] | |
| 2680:0801 30ED xor ch, ch | |
| 2680:0803 894EDA mov [bp-0x26], cx | |
| 2680:0806 8946DC mov [bp-0x24], ax | |
| 2680:0809 B91000 mov cx, 0x10 | |
| 2680:080C 8B46DE mov ax, [bp-0x22] | |
| 2680:080F 8B56E0 mov dx, [bp-0x20] | |
| 2680:0812 E306 jcxz 0x81a | |
| 2680:0814 D1E0 shl ax, 1 | |
| 2680:0816 D1D2 rcl dx, 1 | |
| 2680:0818 E2FA loop 0x814 | |
| 2680:081A 52 push dx | |
| 2680:081B B91800 mov cx, 0x18 | |
| 2680:081E 8B56DA mov dx, [bp-0x26] | |
| 2680:0821 8B5EDC mov bx, [bp-0x24] | |
| 2680:0824 E306 jcxz 0x82c | |
| 2680:0826 D1E2 shl dx, 1 | |
| 2680:0828 D1D3 rcl bx, 1 | |
| 2680:082A E2FA loop 0x826 | |
| 2680:082C 59 pop cx | |
| 2680:082D 09D0 or ax, dx | |
| 2680:082F 09D9 or cx, bx | |
| 2680:0831 51 push cx | |
| 2680:0832 B90800 mov cx, 0x8 | |
| 2680:0835 8B56E2 mov dx, [bp-0x1e] | |
| 2680:0838 8B5EE4 mov bx, [bp-0x1c] | |
| 2680:083B E306 jcxz 0x843 | |
| 2680:083D D1E2 shl dx, 1 | |
| 2680:083F D1D3 rcl bx, 1 | |
| 2680:0841 E2FA loop 0x83d | |
| 2680:0843 59 pop cx | |
| 2680:0844 09D0 or ax, dx | |
| 2680:0846 09D9 or cx, bx | |
| 2680:0848 0B46E6 or ax, [bp-0x1a] | |
| 2680:084B 0B4EE8 or cx, [bp-0x18] | |
| 2680:084E 89F3 mov bx, si | |
| 2680:0850 D1E3 shl bx, 1 | |
| 2680:0852 D1E3 shl bx, 1 | |
| 2680:0854 8D56EA lea dx, [bp-0x16] | |
| 2680:0857 01D3 add bx, dx | |
| 2680:0859 8907 mov [bx], ax | |
| 2680:085B 894F02 mov [bx+0x2], cx | |
| 2680:085E 89F3 mov bx, si | |
| 2680:0860 D1E3 shl bx, 1 | |
| 2680:0862 D1E3 shl bx, 1 | |
| 2680:0864 8D46EA lea ax, [bp-0x16] | |
| 2680:0867 01C3 add bx, ax | |
| 2680:0869 FF7702 push word [bx+0x2] | |
| 2680:086C FF37 push word [bx] | |
| 2680:086E 31C0 xor ax, ax | |
| 2680:0870 50 push ax | |
| 2680:0871 B8FFFF mov ax, 0xffff | |
| 2680:0874 50 push ax | |
| 2680:0875 E86503 call 0xbdd | |
| 2680:0878 09C0 or ax, ax | |
| 2680:087A 7E10 jng 0x88c | |
| 2680:087C B87C10 mov ax, 0x107c | |
| 2680:087F 50 push ax | |
| 2680:0880 E873FC call 0x4f6 | |
| 2680:0883 5B pop bx | |
| 2680:0884 B80100 mov ax, 0x1 | |
| 2680:0887 50 push ax | |
| 2680:0888 E8B5F7 call 0x40 | |
| 2680:088B 5B pop bx | |
| 2680:088C 46 inc si | |
| 2680:088D E901FF jmp 0x791 | |
| 2680:0890 833EEA3606 cmp word [0x36ea], byte +0x6 | |
| 2680:0895 7C0A jl 0x8a1 | |
| 2680:0897 8B0EEA36 mov cx, [0x36ea] | |
| 2680:089B 83E905 sub cx, byte +0x5 | |
| 2680:089E 51 push cx | |
| 2680:089F EB04 jmp short 0x8a5 | |
| 2680:08A1 FF36EA36 push word [0x36ea] | |
| 2680:08A5 5E pop si | |
| 2680:08A6 8D46EA lea ax, [bp-0x16] | |
| 2680:08A9 50 push ax | |
| 2680:08AA E84302 call 0xaf0 | |
| 2680:08AD 5B pop bx | |
| 2680:08AE B90200 mov cx, 0x2 | |
| 2680:08B1 89F0 mov ax, si | |
| 2680:08B3 D3E0 shl ax, cl | |
| 2680:08B5 2D0400 sub ax, 0x4 | |
| 2680:08B8 8D5EEA lea bx, [bp-0x16] | |
| 2680:08BB 01C3 add bx, ax | |
| 2680:08BD 8B0F mov cx, [bx] | |
| 2680:08BF 890EE032 mov [0x32e0], cx | |
| 2680:08C3 B90200 mov cx, 0x2 | |
| 2680:08C6 A1E032 mov ax, [0x32e0] | |
| 2680:08C9 31D2 xor dx, dx | |
| 2680:08CB F7F1 div cx | |
| 2680:08CD 09D2 or dx, dx | |
| 2680:08CF 7412 jz 0x8e3 | |
| 2680:08D1 B90200 mov cx, 0x2 | |
| 2680:08D4 A1E032 mov ax, [0x32e0] | |
| 2680:08D7 31D2 xor dx, dx | |
| 2680:08D9 F7F1 div cx | |
| 2680:08DB D1E0 shl ax, 1 | |
| 2680:08DD 050200 add ax, 0x2 | |
| 2680:08E0 A3E032 mov [0x32e0], ax | |
| 2680:08E3 31C0 xor ax, ax | |
| 2680:08E5 50 push ax | |
| 2680:08E6 58 pop ax | |
| 2680:08E7 E95E03 jmp 0xc48 | |
| 2680:08EA 55 push bp | |
| 2680:08EB 89E5 mov bp, sp | |
| 2680:08ED 50 push ax | |
| 2680:08EE 56 push si | |
| 2680:08EF 8B7604 mov si, [bp+0x4] | |
| 2680:08F2 FF7606 push word [bp+0x6] | |
| 2680:08F5 B81411 mov ax, 0x1114 | |
| 2680:08F8 50 push ax | |
| 2680:08F9 E8FAFB call 0x4f6 | |
| 2680:08FC 5B pop bx | |
| 2680:08FD 5B pop bx | |
| 2680:08FE B84411 mov ax, 0x1144 | |
| 2680:0901 50 push ax | |
| 2680:0902 E8F1FB call 0x4f6 | |
| 2680:0905 5B pop bx | |
| 2680:0906 837E0800 cmp word [bp+0x8], byte +0x0 | |
| 2680:090A 7408 jz 0x914 | |
| 2680:090C B86C11 mov ax, 0x116c | |
| 2680:090F 50 push ax | |
| 2680:0910 E8E3FB call 0x4f6 | |
| 2680:0913 5B pop bx | |
| 2680:0914 B87411 mov ax, 0x1174 | |
| 2680:0917 50 push ax | |
| 2680:0918 E8DBFB call 0x4f6 | |
| 2680:091B 5B pop bx | |
| 2680:091C E83AF7 call 0x59 | |
| 2680:091F 8846FF mov [bp-0x1], al | |
| 2680:0922 98 cbw | |
| 2680:0923 50 push ax | |
| 2680:0924 E9C600 jmp 0x9ed | |
| 2680:0927 8A46FF mov al, [bp-0x1] | |
| 2680:092A 98 cbw | |
| 2680:092B 50 push ax | |
| 2680:092C E817F7 call 0x46 | |
| 2680:092F 5B pop bx | |
| 2680:0930 E826F7 call 0x59 | |
| 2680:0933 8846FF mov [bp-0x1], al | |
| 2680:0936 98 cbw | |
| 2680:0937 3D3000 cmp ax, 0x30 | |
| 2680:093A 7CF4 jl 0x930 | |
| 2680:093C 8A46FF mov al, [bp-0x1] | |
| 2680:093F 98 cbw | |
| 2680:0940 3D3100 cmp ax, 0x31 | |
| 2680:0943 7E02 jng 0x947 | |
| 2680:0945 EBE9 jmp short 0x930 | |
| 2680:0947 8A46FF mov al, [bp-0x1] | |
| 2680:094A 98 cbw | |
| 2680:094B 50 push ax | |
| 2680:094C E8F7F6 call 0x46 | |
| 2680:094F 5B pop bx | |
| 2680:0950 E8A500 call 0x9f8 | |
| 2680:0953 8A46FF mov al, [bp-0x1] | |
| 2680:0956 98 cbw | |
| 2680:0957 D1E0 shl ax, 1 | |
| 2680:0959 2D6000 sub ax, 0x60 | |
| 2680:095C 89C3 mov bx, ax | |
| 2680:095E 8B87C40D mov ax, [bx+0xdc4] | |
| 2680:0962 8904 mov [si], ax | |
| 2680:0964 8A46FF mov al, [bp-0x1] | |
| 2680:0967 98 cbw | |
| 2680:0968 050002 add ax, 0x200 | |
| 2680:096B 2D3000 sub ax, 0x30 | |
| 2680:096E 50 push ax | |
| 2680:096F E98200 jmp 0x9f4 | |
| 2680:0972 8A46FF mov al, [bp-0x1] | |
| 2680:0975 98 cbw | |
| 2680:0976 50 push ax | |
| 2680:0977 E8CCF6 call 0x46 | |
| 2680:097A 5B pop bx | |
| 2680:097B E8DBF6 call 0x59 | |
| 2680:097E 8846FF mov [bp-0x1], al | |
| 2680:0981 98 cbw | |
| 2680:0982 3D3100 cmp ax, 0x31 | |
| 2680:0985 7C09 jl 0x990 | |
| 2680:0987 8A46FF mov al, [bp-0x1] | |
| 2680:098A 98 cbw | |
| 2680:098B 3D3400 cmp ax, 0x34 | |
| 2680:098E 7E14 jng 0x9a4 | |
| 2680:0990 8A46FF mov al, [bp-0x1] | |
| 2680:0993 98 cbw | |
| 2680:0994 3D3600 cmp ax, 0x36 | |
| 2680:0997 7CE2 jl 0x97b | |
| 2680:0999 8A46FF mov al, [bp-0x1] | |
| 2680:099C 98 cbw | |
| 2680:099D 3D3900 cmp ax, 0x39 | |
| 2680:09A0 7E02 jng 0x9a4 | |
| 2680:09A2 EBD7 jmp short 0x97b | |
| 2680:09A4 8A46FF mov al, [bp-0x1] | |
| 2680:09A7 98 cbw | |
| 2680:09A8 50 push ax | |
| 2680:09A9 E89AF6 call 0x46 | |
| 2680:09AC 5B pop bx | |
| 2680:09AD E84800 call 0x9f8 | |
| 2680:09B0 8A46FF mov al, [bp-0x1] | |
| 2680:09B3 98 cbw | |
| 2680:09B4 D1E0 shl ax, 1 | |
| 2680:09B6 05A2FF add ax, 0xffa2 | |
| 2680:09B9 89C3 mov bx, ax | |
| 2680:09BB 8B87C40D mov ax, [bx+0xdc4] | |
| 2680:09BF 8904 mov [si], ax | |
| 2680:09C1 8A46FF mov al, [bp-0x1] | |
| 2680:09C4 98 cbw | |
| 2680:09C5 050003 add ax, 0x300 | |
| 2680:09C8 2D3000 sub ax, 0x30 | |
| 2680:09CB 50 push ax | |
| 2680:09CC EB26 jmp short 0x9f4 | |
| 2680:09CE 837E0800 cmp word [bp+0x8], byte +0x0 | |
| 2680:09D2 7503 jnz 0x9d7 | |
| 2680:09D4 E945FF jmp 0x91c | |
| 2680:09D7 8A46FF mov al, [bp-0x1] | |
| 2680:09DA 98 cbw | |
| 2680:09DB 50 push ax | |
| 2680:09DC E867F6 call 0x46 | |
| 2680:09DF 5B pop bx | |
| 2680:09E0 E81500 call 0x9f8 | |
| 2680:09E3 C7048811 mov word [si], 0x1188 | |
| 2680:09E7 B80001 mov ax, 0x100 | |
| 2680:09EA 50 push ax | |
| 2680:09EB EB07 jmp short 0x9f4 | |
| 2680:09ED BBDA0D mov bx, 0xdda | |
| 2680:09F0 58 pop ax | |
| 2680:09F1 E90B02 jmp 0xbff | |
| 2680:09F4 58 pop ax | |
| 2680:09F5 E95102 jmp 0xc49 | |
| 2680:09F8 55 push bp | |
| 2680:09F9 89E5 mov bp, sp | |
| 2680:09FB E85BF6 call 0x59 | |
| 2680:09FE 98 cbw | |
| 2680:09FF 3D0D00 cmp ax, 0xd | |
| 2680:0A02 7402 jz 0xa06 | |
| 2680:0A04 EBF5 jmp short 0x9fb | |
| 2680:0A06 B80A00 mov ax, 0xa | |
| 2680:0A09 50 push ax | |
| 2680:0A0A E839F6 call 0x46 | |
| 2680:0A0D 5B pop bx | |
| 2680:0A0E E93902 jmp 0xc4a | |
| 2680:0A11 55 push bp | |
| 2680:0A12 89E5 mov bp, sp | |
| 2680:0A14 B89211 mov ax, 0x1192 | |
| 2680:0A17 50 push ax | |
| 2680:0A18 E8DBFA call 0x4f6 | |
| 2680:0A1B 5B pop bx | |
| 2680:0A1C E81400 call 0xa33 | |
| 2680:0A1F E92802 jmp 0xc4a | |
| 2680:0A22 55 push bp | |
| 2680:0A23 89E5 mov bp, sp | |
| 2680:0A25 B8CC11 mov ax, 0x11cc | |
| 2680:0A28 50 push ax | |
| 2680:0A29 E8CAFA call 0x4f6 | |
| 2680:0A2C 5B pop bx | |
| 2680:0A2D E80300 call 0xa33 | |
| 2680:0A30 E91702 jmp 0xc4a | |
| 2680:0A33 55 push bp | |
| 2680:0A34 89E5 mov bp, sp | |
| 2680:0A36 83EC06 sub sp, byte +0x6 | |
| 2680:0A39 E81DF6 call 0x59 | |
| 2680:0A3C 8846FF mov [bp-0x1], al | |
| 2680:0A3F 98 cbw | |
| 2680:0A40 3D3000 cmp ax, 0x30 | |
| 2680:0A43 7CF4 jl 0xa39 | |
| 2680:0A45 8A46FF mov al, [bp-0x1] | |
| 2680:0A48 98 cbw | |
| 2680:0A49 3D3900 cmp ax, 0x39 | |
| 2680:0A4C 7E02 jng 0xa50 | |
| 2680:0A4E EBE9 jmp short 0xa39 | |
| 2680:0A50 8A46FF mov al, [bp-0x1] | |
| 2680:0A53 98 cbw | |
| 2680:0A54 2D3000 sub ax, 0x30 | |
| 2680:0A57 99 cwd | |
| 2680:0A58 8946FA mov [bp-0x6], ax | |
| 2680:0A5B 8956FC mov [bp-0x4], dx | |
| 2680:0A5E 8A46FF mov al, [bp-0x1] | |
| 2680:0A61 98 cbw | |
| 2680:0A62 50 push ax | |
| 2680:0A63 E8E0F5 call 0x46 | |
| 2680:0A66 5B pop bx | |
| 2680:0A67 E8EFF5 call 0x59 | |
| 2680:0A6A 8846FF mov [bp-0x1], al | |
| 2680:0A6D 98 cbw | |
| 2680:0A6E 3D0D00 cmp ax, 0xd | |
| 2680:0A71 746F jz 0xae2 | |
| 2680:0A73 8A46FF mov al, [bp-0x1] | |
| 2680:0A76 98 cbw | |
| 2680:0A77 3D3000 cmp ax, 0x30 | |
| 2680:0A7A 7CEB jl 0xa67 | |
| 2680:0A7C 8A46FF mov al, [bp-0x1] | |
| 2680:0A7F 98 cbw | |
| 2680:0A80 3D3900 cmp ax, 0x39 | |
| 2680:0A83 7FE2 jg 0xa67 | |
| 2680:0A85 8A46FF mov al, [bp-0x1] | |
| 2680:0A88 98 cbw | |
| 2680:0A89 2D3000 sub ax, 0x30 | |
| 2680:0A8C 99 cwd | |
| 2680:0A8D 52 push dx | |
| 2680:0A8E 50 push ax | |
| 2680:0A8F B80A00 mov ax, 0xa | |
| 2680:0A92 31D2 xor dx, dx | |
| 2680:0A94 FF76FC push word [bp-0x4] | |
| 2680:0A97 FF76FA push word [bp-0x6] | |
| 2680:0A9A E88A01 call 0xc27 | |
| 2680:0A9D 59 pop cx | |
| 2680:0A9E 5B pop bx | |
| 2680:0A9F 01C1 add cx, ax | |
| 2680:0AA1 11D3 adc bx, dx | |
| 2680:0AA3 53 push bx | |
| 2680:0AA4 51 push cx | |
| 2680:0AA5 B80100 mov ax, 0x1 | |
| 2680:0AA8 50 push ax | |
| 2680:0AA9 31C0 xor ax, ax | |
| 2680:0AAB 50 push ax | |
| 2680:0AAC E82E01 call 0xbdd | |
| 2680:0AAF 09C0 or ax, ax | |
| 2680:0AB1 7DB4 jnl 0xa67 | |
| 2680:0AB3 8A46FF mov al, [bp-0x1] | |
| 2680:0AB6 98 cbw | |
| 2680:0AB7 50 push ax | |
| 2680:0AB8 E88BF5 call 0x46 | |
| 2680:0ABB 5B pop bx | |
| 2680:0ABC 8A46FF mov al, [bp-0x1] | |
| 2680:0ABF 98 cbw | |
| 2680:0AC0 2D3000 sub ax, 0x30 | |
| 2680:0AC3 99 cwd | |
| 2680:0AC4 52 push dx | |
| 2680:0AC5 50 push ax | |
| 2680:0AC6 B80A00 mov ax, 0xa | |
| 2680:0AC9 31D2 xor dx, dx | |
| 2680:0ACB FF76FC push word [bp-0x4] | |
| 2680:0ACE FF76FA push word [bp-0x6] | |
| 2680:0AD1 E85301 call 0xc27 | |
| 2680:0AD4 59 pop cx | |
| 2680:0AD5 5B pop bx | |
| 2680:0AD6 01C1 add cx, ax | |
| 2680:0AD8 11D3 adc bx, dx | |
| 2680:0ADA 894EFA mov [bp-0x6], cx | |
| 2680:0ADD 895EFC mov [bp-0x4], bx | |
| 2680:0AE0 EB85 jmp short 0xa67 | |
| 2680:0AE2 B80A00 mov ax, 0xa | |
| 2680:0AE5 50 push ax | |
| 2680:0AE6 E85DF5 call 0x46 | |
| 2680:0AE9 5B pop bx | |
| 2680:0AEA 8B46FA mov ax, [bp-0x6] | |
| 2680:0AED E95A01 jmp 0xc4a | |
| 2680:0AF0 55 push bp | |
| 2680:0AF1 89E5 mov bp, sp | |
| 2680:0AF3 50 push ax | |
| 2680:0AF4 50 push ax | |
| 2680:0AF5 56 push si | |
| 2680:0AF6 8B7604 mov si, [bp+0x4] | |
| 2680:0AF9 57 push di | |
| 2680:0AFA C746FE0000 mov word [bp-0x2], 0x0 | |
| 2680:0AFF 837EFE04 cmp word [bp-0x2], byte +0x4 | |
| 2680:0B03 7C03 jl 0xb08 | |
| 2680:0B05 E9A300 jmp 0xbab | |
| 2680:0B08 31FF xor di, di | |
| 2680:0B0A 83FF03 cmp di, byte +0x3 | |
| 2680:0B0D 7C03 jl 0xb12 | |
| 2680:0B0F E99300 jmp 0xba5 | |
| 2680:0B12 89FB mov bx, di | |
| 2680:0B14 D1E3 shl bx, 1 | |
| 2680:0B16 D1E3 shl bx, 1 | |
| 2680:0B18 01F3 add bx, si | |
| 2680:0B1A 8B4702 mov ax, [bx+0x2] | |
| 2680:0B1D 0B07 or ax, [bx] | |
| 2680:0B1F 752E jnz 0xb4f | |
| 2680:0B21 89F8 mov ax, di | |
| 2680:0B23 40 inc ax | |
| 2680:0B24 89C3 mov bx, ax | |
| 2680:0B26 D1E3 shl bx, 1 | |
| 2680:0B28 D1E3 shl bx, 1 | |
| 2680:0B2A 01F3 add bx, si | |
| 2680:0B2C 8B4702 mov ax, [bx+0x2] | |
| 2680:0B2F 0B07 or ax, [bx] | |
| 2680:0B31 741C jz 0xb4f | |
| 2680:0B33 89F8 mov ax, di | |
| 2680:0B35 40 inc ax | |
| 2680:0B36 89C3 mov bx, ax | |
| 2680:0B38 D1E3 shl bx, 1 | |
| 2680:0B3A D1E3 shl bx, 1 | |
| 2680:0B3C 01F3 add bx, si | |
| 2680:0B3E 53 push bx | |
| 2680:0B3F 89FB mov bx, di | |
| 2680:0B41 D1E3 shl bx, 1 | |
| 2680:0B43 D1E3 shl bx, 1 | |
| 2680:0B45 01F3 add bx, si | |
| 2680:0B47 53 push bx | |
| 2680:0B48 E86300 call 0xbae | |
| 2680:0B4B 5B pop bx | |
| 2680:0B4C 5B pop bx | |
| 2680:0B4D EB52 jmp short 0xba1 | |
| 2680:0B4F 89FB mov bx, di | |
| 2680:0B51 D1E3 shl bx, 1 | |
| 2680:0B53 D1E3 shl bx, 1 | |
| 2680:0B55 01F3 add bx, si | |
| 2680:0B57 89F8 mov ax, di | |
| 2680:0B59 40 inc ax | |
| 2680:0B5A FF7702 push word [bx+0x2] | |
| 2680:0B5D FF37 push word [bx] | |
| 2680:0B5F 56 push si | |
| 2680:0B60 50 push ax | |
| 2680:0B61 5B pop bx | |
| 2680:0B62 D1E3 shl bx, 1 | |
| 2680:0B64 D1E3 shl bx, 1 | |
| 2680:0B66 58 pop ax | |
| 2680:0B67 01C3 add bx, ax | |
| 2680:0B69 FF7702 push word [bx+0x2] | |
| 2680:0B6C FF37 push word [bx] | |
| 2680:0B6E E86C00 call 0xbdd | |
| 2680:0B71 09C0 or ax, ax | |
| 2680:0B73 7E2C jng 0xba1 | |
| 2680:0B75 89F8 mov ax, di | |
| 2680:0B77 40 inc ax | |
| 2680:0B78 89C3 mov bx, ax | |
| 2680:0B7A D1E3 shl bx, 1 | |
| 2680:0B7C D1E3 shl bx, 1 | |
| 2680:0B7E 01F3 add bx, si | |
| 2680:0B80 8B4702 mov ax, [bx+0x2] | |
| 2680:0B83 0B07 or ax, [bx] | |
| 2680:0B85 741A jz 0xba1 | |
| 2680:0B87 89F8 mov ax, di | |
| 2680:0B89 40 inc ax | |
| 2680:0B8A 89C3 mov bx, ax | |
| 2680:0B8C D1E3 shl bx, 1 | |
| 2680:0B8E D1E3 shl bx, 1 | |
| 2680:0B90 01F3 add bx, si | |
| 2680:0B92 53 push bx | |
| 2680:0B93 89FB mov bx, di | |
| 2680:0B95 D1E3 shl bx, 1 | |
| 2680:0B97 D1E3 shl bx, 1 | |
| 2680:0B99 01F3 add bx, si | |
| 2680:0B9B 53 push bx | |
| 2680:0B9C E80F00 call 0xbae | |
| 2680:0B9F 5B pop bx | |
| 2680:0BA0 5B pop bx | |
| 2680:0BA1 47 inc di | |
| 2680:0BA2 E965FF jmp 0xb0a | |
| 2680:0BA5 FF46FE inc word [bp-0x2] | |
| 2680:0BA8 E954FF jmp 0xaff | |
| 2680:0BAB E99A00 jmp 0xc48 | |
| 2680:0BAE 55 push bp | |
| 2680:0BAF 89E5 mov bp, sp | |
| 2680:0BB1 50 push ax | |
| 2680:0BB2 50 push ax | |
| 2680:0BB3 56 push si | |
| 2680:0BB4 8B7606 mov si, [bp+0x6] | |
| 2680:0BB7 57 push di | |
| 2680:0BB8 8B7E04 mov di, [bp+0x4] | |
| 2680:0BBB 8B05 mov ax, [di] | |
| 2680:0BBD 8B4D02 mov cx, [di+0x2] | |
| 2680:0BC0 8946FC mov [bp-0x4], ax | |
| 2680:0BC3 894EFE mov [bp-0x2], cx | |
| 2680:0BC6 8B04 mov ax, [si] | |
| 2680:0BC8 8B4C02 mov cx, [si+0x2] | |
| 2680:0BCB 8905 mov [di], ax | |
| 2680:0BCD 894D02 mov [di+0x2], cx | |
| 2680:0BD0 8B46FC mov ax, [bp-0x4] | |
| 2680:0BD3 8B4EFE mov cx, [bp-0x2] | |
| 2680:0BD6 8904 mov [si], ax | |
| 2680:0BD8 894C02 mov [si+0x2], cx | |
| 2680:0BDB EB6B jmp short 0xc48 | |
| 2680:0BDD 5B pop bx | |
| 2680:0BDE 59 pop cx | |
| 2680:0BDF 5A pop dx | |
| 2680:0BE0 58 pop ax | |
| 2680:0BE1 56 push si | |
| 2680:0BE2 89E6 mov si, sp | |
| 2680:0BE4 875C02 xchg bx, [si+0x2] | |
| 2680:0BE7 5E pop si | |
| 2680:0BE8 39D3 cmp bx, dx | |
| 2680:0BEA 7F0F jg 0xbfb | |
| 2680:0BEC 7C06 jl 0xbf4 | |
| 2680:0BEE 39C8 cmp ax, cx | |
| 2680:0BF0 7709 ja 0xbfb | |
| 2680:0BF2 7404 jz 0xbf8 | |
| 2680:0BF4 B8FFFF mov ax, 0xffff | |
| 2680:0BF7 C3 ret | |
| 2680:0BF8 31C0 xor ax, ax | |
| 2680:0BFA C3 ret | |
| 2680:0BFB B80100 mov ax, 0x1 | |
| 2680:0BFE C3 ret | |
| 2680:0BFF 8B17 mov dx, [bx] | |
| 2680:0C01 8B4F02 mov cx, [bx+0x2] | |
| 2680:0C04 83C304 add bx, byte +0x4 | |
| 2680:0C07 49 dec cx | |
| 2680:0C08 7C13 jl 0xc1d | |
| 2680:0C0A 3B07 cmp ax, [bx] | |
| 2680:0C0C 75F6 jnz 0xc04 | |
| 2680:0C0E 8B5F02 mov bx, [bx+0x2] | |
| 2680:0C11 85DB test bx, bx | |
| 2680:0C13 7506 jnz 0xc1b | |
| 2680:0C15 B81400 mov ax, 0x14 | |
| 2680:0C18 50 push ax | |
| 2680:0C19 EB06 jmp short 0xc21 | |
| 2680:0C1B FFE3 jmp bx | |
| 2680:0C1D 89D3 mov bx, dx | |
| 2680:0C1F EBF0 jmp short 0xc11 | |
| 2680:0C21 E88700 call 0xcab | |
| 2680:0C24 E82B00 call 0xc52 | |
| 2680:0C27 89E3 mov bx, sp | |
| 2680:0C29 52 push dx | |
| 2680:0C2A 89C1 mov cx, ax | |
| 2680:0C2C F76704 mul word [bx+0x4] | |
| 2680:0C2F 5A pop dx | |
| 2680:0C30 50 push ax | |
| 2680:0C31 89D0 mov ax, dx | |
| 2680:0C33 F76702 mul word [bx+0x2] | |
| 2680:0C36 5A pop dx | |
| 2680:0C37 01C2 add dx, ax | |
| 2680:0C39 89C8 mov ax, cx | |
| 2680:0C3B 89D1 mov cx, dx | |
| 2680:0C3D F76702 mul word [bx+0x2] | |
| 2680:0C40 01CA add dx, cx | |
| 2680:0C42 5B pop bx | |
| 2680:0C43 83C404 add sp, byte +0x4 | |
| 2680:0C46 FFE3 jmp bx | |
| 2680:0C48 5F pop di | |
| 2680:0C49 5E pop si | |
| 2680:0C4A 89EC mov sp, bp | |
| 2680:0C4C 5D pop bp | |
| 2680:0C4D C3 ret | |
| 2680:0C4E 5E pop si | |
| 2680:0C4F 5F pop di | |
| 2680:0C50 EBF8 jmp short 0xc4a | |
| 2680:0C52 E8EBF3 call 0x40 | |
| 2680:0C55 B80600 mov ax, 0x6 | |
| 2680:0C58 BA2812 mov dx, 0x1228 | |
| 2680:0C5B EB30 jmp short 0xc8d | |
| 2680:0C5D B81200 mov ax, 0x12 | |
| 2680:0C60 BA3F12 mov dx, 0x123f | |
| 2680:0C63 EB28 jmp short 0xc8d | |
| 2680:0C65 B81400 mov ax, 0x14 | |
| 2680:0C68 BA5612 mov dx, 0x1256 | |
| 2680:0C6B EB20 jmp short 0xc8d | |
| 2680:0C6D B80100 mov ax, 0x1 | |
| 2680:0C70 BA6D12 mov dx, 0x126d | |
| 2680:0C73 EB18 jmp short 0xc8d | |
| 2680:0C75 B80200 mov ax, 0x2 | |
| 2680:0C78 BA8412 mov dx, 0x1284 | |
| 2680:0C7B EB10 jmp short 0xc8d | |
| 2680:0C7D B81200 mov ax, 0x12 | |
| 2680:0C80 BA9A12 mov dx, 0x129a | |
| 2680:0C83 EB08 jmp short 0xc8d | |
| 2680:0C85 B81100 mov ax, 0x11 | |
| 2680:0C88 BAB112 mov dx, 0x12b1 | |
| 2680:0C8B EB00 jmp short 0xc8d | |
| 2680:0C8D 31DB xor bx, bx | |
| 2680:0C8F 871EDE12 xchg bx, [0x12de] | |
| 2680:0C93 85DB test bx, bx | |
| 2680:0C95 7405 jz 0xc9c | |
| 2680:0C97 50 push ax | |
| 2680:0C98 FFD3 call bx | |
| 2680:0C9A 58 pop ax | |
| 2680:0C9B C3 ret | |
| 2680:0C9C BB1600 mov bx, 0x16 | |
| 2680:0C9F 53 push bx | |
| 2680:0CA0 52 push dx | |
| 2680:0CA1 B80200 mov ax, 0x2 | |
| 2680:0CA4 50 push ax | |
| 2680:0CA5 E83B00 call 0xce3 | |
| 2680:0CA8 E895F3 call 0x40 | |
| 2680:0CAB 89C2 mov dx, ax | |
| 2680:0CAD 83FA15 cmp dx, byte +0x15 | |
| 2680:0CB0 7311 jnc 0xcc3 | |
| 2680:0CB2 D1E2 shl dx, 1 | |
| 2680:0CB4 BBFE11 mov bx, 0x11fe | |
| 2680:0CB7 01D3 add bx, dx | |
| 2680:0CB9 8B1F mov bx, [bx] | |
| 2680:0CBB 85DB test bx, bx | |
| 2680:0CBD 7404 jz 0xcc3 | |
| 2680:0CBF 89DA mov dx, bx | |
| 2680:0CC1 EB1E jmp short 0xce1 | |
| 2680:0CC3 BBCF12 mov bx, 0x12cf | |
| 2680:0CC6 B90600 mov cx, 0x6 | |
| 2680:0CC9 89C2 mov dx, ax | |
| 2680:0CCB 81E20700 and dx, 0x7 | |
| 2680:0CCF 03163000 add dx, [0x30] | |
| 2680:0CD3 8817 mov [bx], dl | |
| 2680:0CD5 4B dec bx | |
| 2680:0CD6 D1FA sar dx, 1 | |
| 2680:0CD8 D1FA sar dx, 1 | |
| 2680:0CDA D1FA sar dx, 1 | |
| 2680:0CDC E2ED loop 0xccb | |
| 2680:0CDE BAC112 mov dx, 0x12c1 | |
| 2680:0CE1 EBAA jmp short 0xc8d | |
| 2680:0CE3 55 push bp | |
| 2680:0CE4 89E5 mov bp, sp | |
| 2680:0CE6 C706F0360400 mov word [0x36f0], 0x4 | |
| 2680:0CEC 8B5E04 mov bx, [bp+0x4] | |
| 2680:0CEF 891EF236 mov [0x36f2], bx | |
| 2680:0CF3 8B5E08 mov bx, [bp+0x8] | |
| 2680:0CF6 891EF436 mov [0x36f4], bx | |
| 2680:0CFA 8B5E06 mov bx, [bp+0x6] | |
| 2680:0CFD 891EF836 mov [0x36f8], bx | |
| 2680:0D01 B8EE36 mov ax, 0x36ee | |
| 2680:0D04 50 push ax | |
| 2680:0D05 B80100 mov ax, 0x1 | |
| 2680:0D08 50 push ax | |
| 2680:0D09 B80100 mov ax, 0x1 | |
| 2680:0D0C BBEE36 mov bx, 0x36ee | |
| 2680:0D0F B90300 mov cx, 0x3 | |
| 2680:0D12 CD20 int 0x20 | |
| 2680:0D14 89EC mov sp, bp | |
| 2680:0D16 5D pop bp | |
| 2680:0D17 C3 ret | |
| 2680:0D18 000000...00 times 8 db 0 ; Alignment padding. | |
| menu_data: | |
| ; Variables defined in pc/disk.12.ex/p/tools/menu1.s | |
| 2680:0D20 0000 tmp: dw 0 | |
| 2680:0D22 0000 tmp1: dw 0 | |
| 2680:0D24 0000 tmp2: dw 0 | |
| ; Global variables defined in pc/disk.12.ex/p/tools/menu1.s | |
| boot_parameters: | |
| 2680:0D26 0001 .bp_rootdev: dw 0x100 ; DROOTDEV. | |
| 2680:0D28 0002 .bp_ramimagedev: dw 0x200 ; DRAMIMAGEDEV. Only used if .bp_rootdev == DEV_RAM (ramdisk). | |
| 2680:0D2A 0000 .bp_ramsize: dw 0 ; DRAMSIZE. Default RAM disk size. Not used if root is /dev/ram when size is from root image. | |
| 2680:0D2C 0D00 .bp_scancode: dw 13 ; DSCANCODE. Also put to BX. | |
| 2680:0D2E FFFF .bp_processor: dw 0xffff ; DPROCESSOR. 88 would force 386 to 88).Default processor type for no restriction is 0xfff. | |
| ramimname: | |
| 2680:0D30 EA0D dw 0xdea ; char *ramimname = "/dev/fd0"; ; String fofs: 0x271ea. For displat in the menu. The kernel uses boot_parameters.bp_ramimagedev. | |
| rootname: | |
| 2680:0D32 F40D dw 0xdf4 ; char *rootname = "/dev/ram"; ; String fofs: 0x271f4. For displat in the menu. The kernel uses boot_parameters.bp_rootdev. | |
| virgin: | |
| 2680:0D34 0100 dw 1 | |
| floptrk: | |
| 2680:0D36 0900 dw 9 ; Sectors/track on the boot floppy. | |
| 2680:0D38 5E02 | |
| 2680:0D3A 07 | |
| 2680:0D3B 0000 | |
| 2680:0D3D 0018 | |
| 2680:0D3F 0208 | |
| 2680:0D41 0022 | |
| 2680:0D43 0209 | |
| 2680:0D45 004002 | |
| 2680:0D48 0A00 | |
| 2680:0D4A 2C02 | |
| 2680:0D4C 0C00 | |
| 2680:0D4E 4A | |
| 2680:0D4F 020D | |
| 2680:0D51 0036025C | |
| 2680:0D55 005402 | |
| 2680:0D58 C7040F00 | |
| 2680:0D5C 0000 | |
| 2680:0D5E D804 | |
| 2680:0D60 42 | |
| 2680:0D61 006703 | |
| 2680:0D64 43 | |
| 2680:0D65 002B | |
| 2680:0D67 034400 | |
| 2680:0D6A F0034F00 | |
| 2680:0D6E AB | |
| 2680:0D6F 035300 | |
| 2680:0D72 99 | |
| 2680:0D73 0455 | |
| 2680:0D75 0035 | |
| 2680:0D77 0458 | |
| 2680:0D79 007804 | |
| 2680:0D7C 6200 | |
| 2680:0D7E 45 | |
| 2680:0D7F 036300 | |
| 2680:0D82 2B03 | |
| 2680:0D84 6400CD | |
| 2680:0D87 036F00 | |
| 2680:0D8A 8903 | |
| 2680:0D8C 7300 | |
| 2680:0D8E 99 | |
| 2680:0D8F 0475 | |
| 2680:0D91 0013 | |
| 2680:0D93 0478 | |
| 2680:0D95 005704 | |
| 2680:0D98 B302 | |
| 2680:0D9A 0200 | |
| 2680:0D9C 0A00 | |
| 2680:0D9E AB | |
| 2680:0D9F 0225 | |
| 2680:0DA1 00BE02CF | |
| 2680:0DA5 06 | |
| 2680:0DA6 07 | |
| 2680:0DA7 003D | |
| 2680:0DA9 005A06 | |
| 2680:0DAC 64005A06 | |
| 2680:0DB0 69006E06 | |
| 2680:0DB4 7000 | |
| 2680:0DB6 8D067200 | |
| 2680:0DBA 9E | |
| 2680:0DBB 06 | |
| 2680:0DBC 7300 | |
| 2680:0DBE BE0675 | |
| 2680:0DC1 005A06 | |
| 2680:0DC4 AE | |
| 2680:0DC5 10B810C2 | |
| 2680:0DC9 10CC | |
| 2680:0DCB 10D6 | |
| 2680:0DCD 10E0 | |
| 2680:0DCF 10EA | |
| 2680:0DD1 10EC | |
| 2680:0DD3 10F6 | |
| 2680:0DD5 1000 | |
| 2680:0DD7 110A | |
| 2680:0DD9 111C | |
| 2680:0DDB 0903 | |
| 2680:0DDD 006600 | |
| 2680:0DE0 27 | |
| 2680:0DE1 096800 | |
| 2680:0DE4 7209 | |
| 2680:0DE6 7200 | |
| 2680:0DE8 CE | |
| 2680:0DE9 092F | |
| 2680:0DEB 6465762F | |
| 2680:0DEF 66643000 | |
| 2680:0DF3 002F | |
| 2680:0DF5 6465762F | |
| 2680:0DF9 7261 | |
| 2680:0DFB 6D | |
| 2680:0DFC 0000 | |
| 2680:0DFE 3031 | |
| 2680:0E00 3233 | |
| 2680:0E02 3435 | |
| 2680:0E04 3637 | |
| 2680:0E06 3839 | |
| 2680:0E08 41 | |
| 2680:0E09 42 | |
| 2680:0E0A 43 | |
| 2680:0E0B 44 | |
| 2680:0E0C 45 | |
| 2680:0E0D 46 | |
| 2680:0E0E 0000 | |
| 2680:0E10 42 | |
| 2680:0E11 6F | |
| 2680:0E12 6F | |
| 2680:0E13 7462 | |
| 2680:0E15 6C | |
| 2680:0E16 6F | |
| 2680:0E17 6B2067 | |
| 2680:0E1A 61 | |
| 2680:0E1B 7665 | |
| 2680:0E1D 206261 | |
| 2680:0E20 64207472 | |
| 2680:0E24 61 | |
| 2680:0E25 636B73 | |
| 2680:0E28 697A0A000A | |
| 2680:0E2D 0A0A | |
| 2680:0E2F 0A00 | |
| 2680:0E31 000A | |
| 2680:0E33 48 | |
| 2680:0E34 6974206B65 | |
| 2680:0E39 7920 | |
| 2680:0E3B 61 | |
| 2680:0E3C 7320 | |
| 2680:0E3E 666F | |
| 2680:0E40 6C | |
| 2680:0E41 6C | |
| 2680:0E42 6F | |
| 2680:0E43 7773 | |
| 2680:0E45 3A0A | |
| 2680:0E47 0A00 | |
| 2680:0E49 0020 | |
| 2680:0E4B 2020 | |
| 2680:0E4D 203D | |
| 2680:0E4F 2020 | |
| 2680:0E51 7374 | |
| 2680:0E53 61 | |
| 2680:0E54 7274 | |
| 2680:0E56 204D49 | |
| 2680:0E59 4E | |
| 2680:0E5A 49 | |
| 2680:0E5B 58 | |
| 2680:0E5C 2C20 | |
| 2680:0E5E 7374 | |
| 2680:0E60 61 | |
| 2680:0E61 6E | |
| 2680:0E62 6461 | |
| 2680:0E64 7264 | |
| 2680:0E66 206B65 | |
| 2680:0E69 7962 | |
| 2680:0E6B 6F | |
| 2680:0E6C 61 | |
| 2680:0E6D 7264 | |
| 2680:0E6F 0A00 | |
| 2680:0E71 0020 | |
| 2680:0E73 2020 | |
| 2680:0E75 207520 | |
| 2680:0E78 207374 | |
| 2680:0E7B 61 | |
| 2680:0E7C 7274 | |
| 2680:0E7E 204D49 | |
| 2680:0E81 4E | |
| 2680:0E82 49 | |
| 2680:0E83 58 | |
| 2680:0E84 2C20 | |
| 2680:0E86 55 | |
| 2680:0E87 2E53 | |
| 2680:0E89 2E206578 | |
| 2680:0E8D 7465 | |
| 2680:0E8F 6E | |
| 2680:0E90 646564206B65 | |
| 2680:0E96 7962 | |
| 2680:0E98 6F | |
| 2680:0E99 61 | |
| 2680:0E9A 7264 | |
| 2680:0E9C 0A00 | |
| 2680:0E9E 2020 | |
| 2680:0EA0 2020 | |
| 2680:0EA2 642020 | |
| 2680:0EA5 7374 | |
| 2680:0EA7 61 | |
| 2680:0EA8 7274 | |
| 2680:0EAA 204D49 | |
| 2680:0EAD 4E | |
| 2680:0EAE 49 | |
| 2680:0EAF 58 | |
| 2680:0EB0 2C20 | |
| 2680:0EB2 44 | |
| 2680:0EB3 7574 | |
| 2680:0EB5 636820 | |
| 2680:0EB8 6B657962 | |
| 2680:0EBC 6F | |
| 2680:0EBD 61 | |
| 2680:0EBE 7264 | |
| 2680:0EC0 20666F | |
| 2680:0EC3 7220 | |
| 2680:0EC5 50 | |
| 2680:0EC6 53 | |
| 2680:0EC7 2F | |
| 2680:0EC8 320A | |
| 2680:0ECA 0A00 | |
| 2680:0ECC 2020 | |
| 2680:0ECE 2020 | |
| 2680:0ED0 7220 | |
| 2680:0ED2 207365 | |
| 2680:0ED5 6C | |
| 2680:0ED6 65637420 | |
| 2680:0EDA 726F | |
| 2680:0EDC 6F | |
| 2680:0EDD 7420 | |
| 2680:0EDF 64657669 | |
| 2680:0EE3 636520 | |
| 2680:0EE6 286E6F | |
| 2680:0EE9 7720 | |
| 2680:0EEB 257329 | |
| 2680:0EEE 0A00 | |
| 2680:0EF0 2020 | |
| 2680:0EF2 2020 | |
| 2680:0EF4 69202073 | |
| 2680:0EF8 656C | |
| 2680:0EFA 65637420 | |
| 2680:0EFE 52 | |
| 2680:0EFF 41 | |
| 2680:0F00 4D | |
| 2680:0F01 20696D | |
| 2680:0F04 61 | |
| 2680:0F05 676520646576 | |
| 2680:0F0B 6963652028 | |
| 2680:0F10 6E | |
| 2680:0F11 6F | |
| 2680:0F12 7720 | |
| 2680:0F14 257329 | |
| 2680:0F17 25730A | |
| 2680:0F1A 0000 | |
| 2680:0F1C 0000 | |
| 2680:0F1E 2028 | |
| 2680:0F20 6E | |
| 2680:0F21 6F | |
| 2680:0F22 7420 | |
| 2680:0F24 7573 | |
| 2680:0F26 6564202D | |
| 2680:0F2A 20726F | |
| 2680:0F2D 6F | |
| 2680:0F2E 7420 | |
| 2680:0F30 6973206E6F | |
| 2680:0F35 7420 | |
| 2680:0F37 52 | |
| 2680:0F38 41 | |
| 2680:0F39 4D | |
| 2680:0F3A 206469 | |
| 2680:0F3D 736B | |
| 2680:0F3F 2900 | |
| 2680:0F41 0020 | |
| 2680:0F43 2020 | |
| 2680:0F45 207320 | |
| 2680:0F48 207365 | |
| 2680:0F4B 7420 | |
| 2680:0F4D 52 | |
| 2680:0F4E 41 | |
| 2680:0F4F 4D | |
| 2680:0F50 206469 | |
| 2680:0F53 736B | |
| 2680:0F55 207369 | |
| 2680:0F58 7A65 | |
| 2680:0F5A 2028 | |
| 2680:0F5C 6E | |
| 2680:0F5D 6F | |
| 2680:0F5E 7720 | |
| 2680:0F60 257529 | |
| 2680:0F63 25730A | |
| 2680:0F66 0000 | |
| 2680:0F68 2028 | |
| 2680:0F6A 7265 | |
| 2680:0F6C 61 | |
| 2680:0F6D 6C | |
| 2680:0F6E 207369 | |
| 2680:0F71 7A65 | |
| 2680:0F73 206973 | |
| 2680:0F76 206672 | |
| 2680:0F79 6F | |
| 2680:0F7A 6D | |
| 2680:0F7B 205241 | |
| 2680:0F7E 4D | |
| 2680:0F7F 20696D | |
| 2680:0F82 61 | |
| 2680:0F83 67652900 | |
| 2680:0F87 0000 | |
| 2680:0F89 0020 | |
| 2680:0F8B 2020 | |
| 2680:0F8D 207020 | |
| 2680:0F90 207365 | |
| 2680:0F93 7420 | |
| 2680:0F95 7072 | |
| 2680:0F97 6F | |
| 2680:0F98 636573 | |
| 2680:0F9B 736F | |
| 2680:0F9D 7220 | |
| 2680:0F9F 7479 | |
| 2680:0FA1 7065 | |
| 2680:0FA3 20746F | |
| 2680:0FA6 2038 | |
| 2680:0FA8 382C | |
| 2680:0FAA 2032 | |
| 2680:0FAC 38362C20 | |
| 2680:0FB0 6F | |
| 2680:0FB1 7220 | |
| 2680:0FB3 3338 | |
| 2680:0FB5 362028 | |
| 2680:0FB8 6E | |
| 2680:0FB9 6F | |
| 2680:0FBA 7720 | |
| 2680:0FBC 257529 | |
| 2680:0FBF 0A0A | |
| 2680:0FC1 000A | |
| 2680:0FC3 2320 | |
| 2680:0FC5 0025 | |
| 2680:0FC7 630A | |
| 2680:0FC9 007261 | |
| 2680:0FCC 6D | |
| 2680:0FCD 20696D | |
| 2680:0FD0 61 | |
| 2680:0FD1 6765000A | |
| 2680:0FD5 0A00 | |
| 2680:0FD7 000A | |
| 2680:0FD9 0A00 | |
| 2680:0FDB 00726F | |
| 2680:0FDE 6F | |
| 2680:0FDF 7400 | |
| 2680:0FE1 000A | |
| 2680:0FE3 0A00 | |
| 2680:0FE5 000A | |
| 2680:0FE7 0A00 | |
| 2680:0FE9 00496C | |
| 2680:0FEC 6C | |
| 2680:0FED 656761 | |
| 2680:0FF0 6C | |
| 2680:0FF1 20636F | |
| 2680:0FF4 6D | |
| 2680:0FF5 6D | |
| 2680:0FF6 61 | |
| 2680:0FF7 6E | |
| 2680:0FF8 640A00 | |
| 2680:0FFB 000A | |
| 2680:0FFD 0A506C | |
| 2680:1000 6561 | |
| 2680:1002 7365 | |
| 2680:1004 20656E | |
| 2680:1007 7465 | |
| 2680:1009 7220 | |
| 2680:100B 7061 | |
| 2680:100D 7274 | |
| 2680:100F 6974696F6E | |
| 2680:1014 206E75 | |
| 2680:1017 6D | |
| 2680:1018 626572 | |
| 2680:101B 2E204472 | |
| 2680:101F 6976652030 | |
| 2680:1024 3A20 | |
| 2680:1026 312D | |
| 2680:1028 342C | |
| 2680:102A 206472 | |
| 2680:102D 6976652031 | |
| 2680:1032 3A20 | |
| 2680:1034 362D392C | |
| 2680:1038 207468 | |
| 2680:103B 656E | |
| 2680:103D 206869 | |
| 2680:1040 7420 | |
| 2680:1042 52 | |
| 2680:1043 45 | |
| 2680:1044 54 | |
| 2680:1045 55 | |
| 2680:1046 52 | |
| 2680:1047 4E | |
| 2680:1048 3A20 | |
| 2680:104A 0000 | |
| 2680:104C 256300 | |
| 2680:104F 000A | |
| 2680:1051 004469 | |
| 2680:1054 736B | |
| 2680:1056 206572 | |
| 2680:1059 726F | |
| 2680:105B 7273 | |
| 2680:105D 2E2020 | |
| 2680:1060 43 | |
| 2680:1061 61 | |
| 2680:1062 6E | |
| 2680:1063 27 | |
| 2680:1064 7420 | |
| 2680:1066 7265 | |
| 2680:1068 61 | |
| 2680:1069 64207061 | |
| 2680:106D 7274 | |
| 2680:106F 6974696F6E | |
| 2680:1074 207461 | |
| 2680:1077 626C65 | |
| 2680:107A 0A00 | |
| 2680:107C 46 | |
| 2680:107D 7363 | |
| 2680:107F 6B2063 | |
| 2680:1082 61 | |
| 2680:1083 6E | |
| 2680:1084 27 | |
| 2680:1085 7420 | |
| 2680:1087 68616E | |
| 2680:108A 646C | |
| 2680:108C 65207061 | |
| 2680:1090 7274 | |
| 2680:1092 6974696F6E | |
| 2680:1097 7320 | |
| 2680:1099 61 | |
| 2680:109A 626F76 | |
| 2680:109D 65207365 | |
| 2680:10A1 63746F | |
| 2680:10A4 7220 | |
| 2680:10A6 36353533 | |
| 2680:10AA 350A00 | |
| 2680:10AD 002F | |
| 2680:10AF 6465762F | |
| 2680:10B3 66643000 | |
| 2680:10B7 002F | |
| 2680:10B9 6465762F | |
| 2680:10BD 66643100 | |
| 2680:10C1 002F | |
| 2680:10C3 6465762F | |
| 2680:10C7 686431 | |
| 2680:10CA 0000 | |
| 2680:10CC 2F | |
| 2680:10CD 6465762F | |
| 2680:10D1 686432 | |
| 2680:10D4 0000 | |
| 2680:10D6 2F | |
| 2680:10D7 6465762F | |
| 2680:10DB 686433 | |
| 2680:10DE 0000 | |
| 2680:10E0 2F | |
| 2680:10E1 6465762F | |
| 2680:10E5 686434 | |
| 2680:10E8 0000 | |
| 2680:10EA 0000 | |
| 2680:10EC 2F | |
| 2680:10ED 6465762F | |
| 2680:10F1 686436 | |
| 2680:10F4 0000 | |
| 2680:10F6 2F | |
| 2680:10F7 6465762F | |
| 2680:10FB 686437 | |
| 2680:10FE 0000 | |
| 2680:1100 2F | |
| 2680:1101 6465762F | |
| 2680:1105 686438 | |
| 2680:1108 0000 | |
| 2680:110A 2F | |
| 2680:110B 6465762F | |
| 2680:110F 686439 | |
| 2680:1112 0000 | |
| 2680:1114 0A506C | |
| 2680:1117 6561 | |
| 2680:1119 7365 | |
| 2680:111B 20656E | |
| 2680:111E 7465 | |
| 2680:1120 7220 | |
| 2680:1122 286162 | |
| 2680:1125 627265 | |
| 2680:1128 7669 | |
| 2680:112A 61 | |
| 2680:112B 7465 | |
| 2680:112D 642920 | |
| 2680:1130 6E | |
| 2680:1131 61 | |
| 2680:1132 6D | |
| 2680:1133 65206F66 | |
| 2680:1137 2025 | |
| 2680:1139 7320 | |
| 2680:113B 64657669 | |
| 2680:113F 63652E | |
| 2680:1142 0A00 | |
| 2680:1144 46 | |
| 2680:1145 6C | |
| 2680:1146 6F | |
| 2680:1147 7070 | |
| 2680:1149 7920 | |
| 2680:114B 66302C | |
| 2680:114E 206631 | |
| 2680:1151 2C20 | |
| 2680:1153 686172 | |
| 2680:1156 64206831 | |
| 2680:115A 20746F | |
| 2680:115D 206834 | |
| 2680:1160 2C20 | |
| 2680:1162 683620 | |
| 2680:1165 746F | |
| 2680:1167 206839 | |
| 2680:116A 0000 | |
| 2680:116C 2C20 | |
| 2680:116E 52 | |
| 2680:116F 41 | |
| 2680:1170 4D | |
| 2680:1171 207200 | |
| 2680:1174 2E0A5468 | |
| 2680:1178 656E | |
| 2680:117A 206869 | |
| 2680:117D 7420 | |
| 2680:117F 52 | |
| 2680:1180 45 | |
| 2680:1181 54 | |
| 2680:1182 55 | |
| 2680:1183 52 | |
| 2680:1184 4E | |
| 2680:1185 3A20 | |
| 2680:1187 002F | |
| 2680:1189 6465762F | |
| 2680:118D 7261 | |
| 2680:118F 6D | |
| 2680:1190 0000 | |
| 2680:1192 0A506C | |
| 2680:1195 6561 | |
| 2680:1197 7365 | |
| 2680:1199 20656E | |
| 2680:119C 7465 | |
| 2680:119E 7220 | |
| 2680:11A0 6C | |
| 2680:11A1 696D697420 | |
| 2680:11A6 6F | |
| 2680:11A7 6E | |
| 2680:11A8 207072 | |
| 2680:11AB 6F | |
| 2680:11AC 636573 | |
| 2680:11AF 736F | |
| 2680:11B1 7220 | |
| 2680:11B3 7479 | |
| 2680:11B5 7065 | |
| 2680:11B7 2E205468 | |
| 2680:11BB 656E | |
| 2680:11BD 206869 | |
| 2680:11C0 7420 | |
| 2680:11C2 52 | |
| 2680:11C3 45 | |
| 2680:11C4 54 | |
| 2680:11C5 55 | |
| 2680:11C6 52 | |
| 2680:11C7 4E | |
| 2680:11C8 3A20 | |
| 2680:11CA 0000 | |
| 2680:11CC 0A506C | |
| 2680:11CF 6561 | |
| 2680:11D1 7365 | |
| 2680:11D3 20656E | |
| 2680:11D6 7465 | |
| 2680:11D8 7220 | |
| 2680:11DA 7369 | |
| 2680:11DC 7A65 | |
| 2680:11DE 206F66 | |
| 2680:11E1 205241 | |
| 2680:11E4 4D | |
| 2680:11E5 206469 | |
| 2680:11E8 736B | |
| 2680:11EA 2E205468 | |
| 2680:11EE 656E | |
| 2680:11F0 206869 | |
| 2680:11F3 7420 | |
| 2680:11F5 52 | |
| 2680:11F6 45 | |
| 2680:11F7 54 | |
| 2680:11F8 55 | |
| 2680:11F9 52 | |
| 2680:11FA 4E | |
| 2680:11FB 3A20 | |
| 2680:11FD 0000 | |
| 2680:11FF 006D12 | |
| 2680:1202 8412 | |
| 2680:1204 0000 | |
| 2680:1206 0000 | |
| 2680:1208 0000 | |
| 2680:120A 2812 | |
| 2680:120C 0000 | |
| 2680:120E 0000 | |
| 2680:1210 0000 | |
| 2680:1212 0000 | |
| 2680:1214 0000 | |
| 2680:1216 0000 | |
| 2680:1218 0000 | |
| 2680:121A 0000 | |
| 2680:121C 0000 | |
| 2680:121E 0000 | |
| 2680:1220 B112 | |
| 2680:1222 3F | |
| 2680:1223 123F | |
| 2680:1225 125612 | |
| 2680:1228 45 | |
| 2680:1229 7272 | |
| 2680:122B 6F | |
| 2680:122C 723A | |
| 2680:122E 204469 | |
| 2680:1231 7669 | |
| 2680:1233 7369 | |
| 2680:1235 6F | |
| 2680:1236 6E | |
| 2680:1237 206279 | |
| 2680:123A 2030 | |
| 2680:123C 200A | |
| 2680:123E 00496C | |
| 2680:1241 6C | |
| 2680:1242 656761 | |
| 2680:1245 6C | |
| 2680:1246 20454D | |
| 2680:1249 20696E | |
| 2680:124C 7374 | |
| 2680:124E 7275 | |
| 2680:1250 637427 | |
| 2680:1253 6E | |
| 2680:1254 0A00 | |
| 2680:1256 45 | |
| 2680:1257 7272 | |
| 2680:1259 20696E | |
| 2680:125C 20454D | |
| 2680:125F 206361 | |
| 2680:1262 7365 | |
| 2680:1264 20696E | |
| 2680:1267 7374 | |
| 2680:1269 7220 | |
| 2680:126B 0A00 | |
| 2680:126D 56 | |
| 2680:126E 61 | |
| 2680:126F 7269 | |
| 2680:1271 61 | |
| 2680:1272 626C65 | |
| 2680:1275 206F75 | |
| 2680:1278 7420 | |
| 2680:127A 6F | |
| 2680:127B 66207261 | |
| 2680:127F 6E | |
| 2680:1280 67650A00 | |
| 2680:1284 45 | |
| 2680:1285 7272 | |
| 2680:1287 20696E | |
| 2680:128A 20454D | |
| 2680:128D 207365 | |
| 2680:1290 7420 | |
| 2680:1292 696E737472 | |
| 2680:1297 200A | |
| 2680:1299 00466C | |
| 2680:129C 6F | |
| 2680:129D 61 | |
| 2680:129E 7469 | |
| 2680:12A0 6E | |
| 2680:12A1 67207074 | |
| 2680:12A5 206E6F | |
| 2680:12A8 7420 | |
| 2680:12AA 696D706C2E | |
| 2680:12AF 0A00 | |
| 2680:12B1 48 | |
| 2680:12B2 6561 | |
| 2680:12B4 7020 | |
| 2680:12B6 6F | |
| 2680:12B7 7665 | |
| 2680:12B9 7266 | |
| 2680:12BB 6C | |
| 2680:12BC 6F | |
| 2680:12BD 7720 | |
| 2680:12BF 0A00 | |
| 2680:12C1 45 | |
| 2680:12C2 4D | |
| 2680:12C3 207472 | |
| 2680:12C6 61 | |
| 2680:12C7 7020 | |
| 2680:12C9 3030 | |
| 2680:12CB 3030 | |
| 2680:12CD 3030 | |
| 2680:12CF 3020 | |
| 2680:12D1 6F | |
| 2680:12D2 637461 | |
| 2680:12D5 6C | |
| 2680:12D6 0A00 | |
| 2680:12D8 06 | |
| 2680:12D9 37 | |
| 2680:12DA 06 | |
| 2680:12DB 37 | |
| 2680:12DC 00000000 times 4 db 0 ; Padding. Or are these .bss vars? | |
| menu_stack: | |
| 2680:12E0 000000...00 times MENU_STACKSIZE/2 dw 0 ; `kerstack' is a misnomer. This is just the menu stack. | |
| 27AE:0000 00... times 0x2520 db 0 ; NUL gap after menu, this will be loaded by the boot setor to the end. | |
| ; --- | |
| 2A00:0000 | |
| __END__ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment