2021-07-29 20:19:41 +00:00
|
|
|
cpu 8086
|
|
|
|
org 0x100
|
|
|
|
|
2021-07-29 21:55:57 +00:00
|
|
|
; FCB defines
|
|
|
|
fcb_filename equ 1
|
2021-07-30 10:20:59 +00:00
|
|
|
fcb_extension equ fcb_filename + 8
|
2021-07-30 11:16:19 +00:00
|
|
|
fcb_record_size equ 14
|
|
|
|
fcb_record_low equ 33
|
|
|
|
fcb_record_high equ 35
|
2021-07-29 21:55:57 +00:00
|
|
|
|
|
|
|
; PSP defines
|
2021-07-30 11:16:19 +00:00
|
|
|
psp_segment_size equ 0x0006
|
2021-07-29 21:55:57 +00:00
|
|
|
psp_fcb_1 equ 0x005c
|
|
|
|
|
2021-07-30 12:57:57 +00:00
|
|
|
; Syscall defines
|
2021-07-30 14:14:37 +00:00
|
|
|
sys_print_char equ 2
|
2021-07-30 10:20:59 +00:00
|
|
|
sys_print_string equ 9
|
2021-07-30 14:21:55 +00:00
|
|
|
sys_read_line equ 0xa
|
2021-07-30 10:20:59 +00:00
|
|
|
sys_open_file equ 0xf
|
|
|
|
sys_delete_file equ 0x13
|
|
|
|
sys_create_file equ 0x16
|
2021-07-30 11:16:19 +00:00
|
|
|
sys_set_dta equ 0x1a
|
2021-07-30 14:14:37 +00:00
|
|
|
sys_set_interrupt equ 0x25
|
|
|
|
sys_random_block_read equ 0x27
|
|
|
|
|
|
|
|
; Interrupt defines
|
|
|
|
int_ctrl_break equ 0x23
|
2021-07-30 10:20:59 +00:00
|
|
|
|
|
|
|
; Special instruction encodings
|
2021-07-30 13:18:10 +00:00
|
|
|
%define r_ax 0
|
|
|
|
%define r_cx 1
|
|
|
|
%define r_dx 2
|
|
|
|
%define r_bx 3
|
|
|
|
%define r_sp 4
|
|
|
|
%define r_bp 5
|
|
|
|
%define r_si 6
|
|
|
|
%define r_di 7
|
|
|
|
|
|
|
|
%define r_al 0
|
|
|
|
%define r_cl 1
|
|
|
|
%define r_dl 2
|
|
|
|
%define r_bl 3
|
|
|
|
%define r_ah 4
|
|
|
|
%define r_ch 5
|
|
|
|
%define r_dh 6
|
|
|
|
%define r_bh 7
|
|
|
|
|
|
|
|
; Direction swapped reg, reg
|
|
|
|
%macro addw 2
|
|
|
|
db 0x03, 0xc0 + 8 * %1 + %2
|
2021-07-30 11:16:19 +00:00
|
|
|
%endmacro
|
2021-07-30 14:14:37 +00:00
|
|
|
%macro orw 2
|
|
|
|
db 0x0b, 0xc0 + 8 * %1 + %2
|
|
|
|
%endmacro
|
2021-07-30 13:18:10 +00:00
|
|
|
%macro orb 2
|
|
|
|
db 0x0a, 0xc0 + 8 * %1 + %2
|
2021-07-30 11:16:19 +00:00
|
|
|
%endmacro
|
2021-07-30 13:18:10 +00:00
|
|
|
%macro subw 2
|
|
|
|
db 0x2b, 0xc0 + 8 * %1 + %2
|
2021-07-30 11:16:19 +00:00
|
|
|
%endmacro
|
2021-07-30 13:18:10 +00:00
|
|
|
%macro xorw 2
|
|
|
|
db 0x33, 0xc0 + 8 * %1 + %2
|
2021-07-30 13:06:56 +00:00
|
|
|
%endmacro
|
2021-07-30 14:14:37 +00:00
|
|
|
%macro cmpw 2
|
|
|
|
db 0x3b, 0xc0 + 8 * %1 + %2
|
|
|
|
%endmacro
|
2021-07-30 13:18:10 +00:00
|
|
|
%macro movw 2
|
|
|
|
db 0x8b, 0xc0 + 8 * %1 + %2
|
2021-07-30 10:20:59 +00:00
|
|
|
%endmacro
|
|
|
|
|
2021-07-30 15:57:47 +00:00
|
|
|
; Sign extended byte to byte
|
|
|
|
%macro cmpb_addr_ext 2
|
2021-07-30 10:20:59 +00:00
|
|
|
db 0x82, 0x3e ; cmp byte […], byte +… (extended)
|
|
|
|
dw %1
|
|
|
|
db %2
|
|
|
|
%endmacro
|
2021-07-30 15:57:47 +00:00
|
|
|
%macro cmpb_ext 2
|
|
|
|
db 0x82, 0xf8 + %1
|
|
|
|
db %2
|
|
|
|
%endmacro
|
2021-07-30 10:20:59 +00:00
|
|
|
|
2021-07-29 21:55:57 +00:00
|
|
|
jmp entrypoint
|
2021-07-29 21:40:42 +00:00
|
|
|
|
|
|
|
__0102:
|
|
|
|
db 13, 10, "The IBM Personal Computer EDITOR", 13, 10
|
|
|
|
db "Version 1.00 (C)Copyright IBM Corp 1981", 13, 10
|
|
|
|
db '$'
|
|
|
|
|
|
|
|
__0150 db "Licensed Material - Program Property of IBM"
|
|
|
|
|
|
|
|
|
2021-07-29 21:55:57 +00:00
|
|
|
print_filename_missing_error: ; 017b
|
|
|
|
mov dx, filename_missing_error
|
|
|
|
|
|
|
|
_trampoline_error_1:
|
|
|
|
jmp error
|
|
|
|
|
|
|
|
entrypoint: ; 0181
|
2021-07-30 09:38:41 +00:00
|
|
|
mov byte [__0a7f], 0
|
2021-07-30 11:16:19 +00:00
|
|
|
mov sp, stack.end
|
2021-07-29 21:55:57 +00:00
|
|
|
|
|
|
|
ensure_file_argument:
|
2021-07-30 15:57:47 +00:00
|
|
|
cmpb_addr_ext psp_fcb_1 + fcb_filename, ' '
|
2021-07-29 21:55:57 +00:00
|
|
|
je print_filename_missing_error
|
|
|
|
|
2021-07-30 10:20:59 +00:00
|
|
|
; AL at program start a flag of whether drive specifier in first parameter valid
|
2021-07-30 13:18:10 +00:00
|
|
|
orb r_al, r_al
|
2021-07-29 21:55:57 +00:00
|
|
|
mov dx, invalid_name_error
|
|
|
|
jnz _trampoline_error_1
|
|
|
|
|
2021-07-30 10:20:59 +00:00
|
|
|
mov si, bak_extension
|
2021-07-30 09:38:41 +00:00
|
|
|
mov di, psp_fcb_1 + fcb_filename + 8
|
|
|
|
mov cx, 3
|
|
|
|
repe cmpsb
|
2021-07-30 11:16:19 +00:00
|
|
|
je print_bak_error
|
|
|
|
|
|
|
|
open_file:
|
|
|
|
mov ah, sys_open_file
|
|
|
|
mov dx, psp_fcb_1
|
|
|
|
int 0x21
|
|
|
|
|
|
|
|
mov [new_file_flag], al
|
2021-07-30 13:18:10 +00:00
|
|
|
orb r_al, r_al
|
2021-07-30 11:16:19 +00:00
|
|
|
jz delete_old_bak
|
|
|
|
|
|
|
|
mov dx, new_file_str
|
|
|
|
mov ah, sys_print_string
|
|
|
|
int 0x21
|
|
|
|
|
|
|
|
delete_old_bak: ; 01b9
|
|
|
|
mov si, psp_fcb_1
|
|
|
|
mov di, __0a58_fcb
|
|
|
|
mov cx, 9
|
|
|
|
rep movsb
|
|
|
|
|
|
|
|
mov si, bak_extension
|
|
|
|
movsw
|
|
|
|
movsb
|
|
|
|
|
|
|
|
mov ah, sys_delete_file
|
|
|
|
mov dx, __0a58_fcb
|
|
|
|
int 0x21
|
|
|
|
|
|
|
|
; TODO: Why .$$$? What is this used for?
|
|
|
|
mov al, '$'
|
|
|
|
mov di, __0a58_fcb + fcb_extension
|
|
|
|
stosb
|
|
|
|
stosb
|
|
|
|
stosb
|
|
|
|
|
|
|
|
mov ah, sys_create_file
|
|
|
|
int 0x21
|
2021-07-30 13:18:10 +00:00
|
|
|
orb r_al, r_al
|
2021-07-30 11:16:19 +00:00
|
|
|
jz setup_file_parameters
|
|
|
|
|
|
|
|
mov dx, directory_full_error
|
|
|
|
jmp error
|
|
|
|
|
|
|
|
print_bak_error: ; 01e6
|
|
|
|
mov dx, bak_error
|
|
|
|
jmp error
|
|
|
|
|
|
|
|
setup_file_parameters: ; 01ec
|
2021-07-30 13:18:10 +00:00
|
|
|
xorw r_ax, r_ax
|
2021-07-30 11:16:19 +00:00
|
|
|
mov [psp_fcb_1 + fcb_record_low], ax
|
|
|
|
mov [psp_fcb_1 + fcb_record_high], ax
|
|
|
|
mov [__0a58_fcb + fcb_record_low], ax
|
|
|
|
mov [__0a58_fcb + fcb_record_high], ax
|
|
|
|
|
|
|
|
inc ax
|
|
|
|
mov [psp_fcb_1 + fcb_record_size], ax
|
|
|
|
mov [__0a58_fcb + fcb_record_size], ax
|
|
|
|
|
2021-07-30 15:57:47 +00:00
|
|
|
mov dx, file_buffer
|
2021-07-30 13:18:10 +00:00
|
|
|
movw r_di, r_dx
|
2021-07-30 11:16:19 +00:00
|
|
|
mov ah, sys_set_dta
|
|
|
|
int 0x21
|
|
|
|
|
|
|
|
mov cx, [psp_segment_size]
|
|
|
|
dec cx
|
|
|
|
mov [__0a98], cx
|
|
|
|
|
|
|
|
test byte [new_file_flag], 0xff
|
2021-07-30 15:57:47 +00:00
|
|
|
jnz initialize_editor
|
2021-07-30 11:16:19 +00:00
|
|
|
|
2021-07-30 15:57:47 +00:00
|
|
|
sub cx, file_buffer
|
|
|
|
; cx is now the amount of memory available starting at file_buffer
|
2021-07-30 11:16:19 +00:00
|
|
|
|
|
|
|
; __0a94 = ¼ available memory
|
|
|
|
shr cx, 1
|
2021-07-30 13:18:10 +00:00
|
|
|
movw r_ax, r_cx
|
2021-07-30 11:16:19 +00:00
|
|
|
shr cx, 1
|
|
|
|
mov [__0a94], cx
|
2021-07-30 12:57:57 +00:00
|
|
|
; cx = ¾ available memory
|
2021-07-30 13:18:10 +00:00
|
|
|
addw r_cx, r_ax
|
2021-07-30 11:16:19 +00:00
|
|
|
|
2021-07-30 13:18:10 +00:00
|
|
|
movw r_dx, r_cx
|
2021-07-30 15:57:47 +00:00
|
|
|
add dx, file_buffer
|
2021-07-30 11:16:19 +00:00
|
|
|
mov [__0a96], dx
|
|
|
|
|
|
|
|
read_file:
|
|
|
|
mov dx, psp_fcb_1
|
2021-07-30 14:14:37 +00:00
|
|
|
mov ah, sys_random_block_read
|
2021-07-30 11:16:19 +00:00
|
|
|
int 0x21
|
2021-07-30 15:57:47 +00:00
|
|
|
|
2021-07-30 13:06:56 +00:00
|
|
|
call find_file_end_char
|
2021-07-30 13:18:10 +00:00
|
|
|
addw r_di, r_cx
|
2021-07-30 11:16:19 +00:00
|
|
|
|
2021-07-30 15:57:47 +00:00
|
|
|
initialize_editor: ; 0240
|
2021-07-30 14:14:37 +00:00
|
|
|
cld
|
|
|
|
|
2021-07-30 15:57:47 +00:00
|
|
|
; Put ^Z at the end of the file in memory
|
2021-07-30 14:14:37 +00:00
|
|
|
mov byte [di], 0x1a ; ^Z
|
2021-07-30 15:57:47 +00:00
|
|
|
|
2021-07-30 14:14:37 +00:00
|
|
|
mov [__0a9a], di
|
2021-07-30 14:21:55 +00:00
|
|
|
mov byte [input_buffer.size], input_buffer.bufend - input_buffer.bufstart
|
2021-07-30 14:14:37 +00:00
|
|
|
mov byte [__0c1e], 0xff ; magic
|
|
|
|
mov byte [__0d48], 0x0a ; magic
|
2021-07-30 15:57:47 +00:00
|
|
|
mov word [__0a92], file_buffer
|
|
|
|
mov word [current_line], 1
|
2021-07-30 14:14:37 +00:00
|
|
|
mov word [__0a80], 1 ; magic
|
|
|
|
|
|
|
|
test byte [new_file_flag], 0xff
|
2021-07-30 15:57:47 +00:00
|
|
|
jnz editor_mainloop
|
|
|
|
|
2021-07-30 14:14:37 +00:00
|
|
|
call __0370
|
|
|
|
|
2021-07-30 15:57:47 +00:00
|
|
|
editor_mainloop: ; 0273
|
2021-07-30 14:21:55 +00:00
|
|
|
mov sp, stack.end
|
|
|
|
mov ax, sys_set_interrupt * 0x100 + int_ctrl_break
|
|
|
|
mov dx, ctrl_break_handler
|
|
|
|
int 0x21
|
|
|
|
|
2021-07-30 17:19:52 +00:00
|
|
|
mov al, '*'
|
|
|
|
call print_char
|
2021-07-30 14:21:55 +00:00
|
|
|
|
|
|
|
mov dx, input_buffer
|
|
|
|
mov ah, sys_read_line
|
|
|
|
int 0x21
|
|
|
|
|
2021-07-30 15:57:47 +00:00
|
|
|
mov al, 10 ; LF
|
|
|
|
call print_char
|
|
|
|
|
|
|
|
mov word [__0a82], 0
|
|
|
|
mov byte [__0a7d], 0
|
|
|
|
|
|
|
|
mov si, input_buffer.bufstart
|
|
|
|
call parse_line_specifier
|
|
|
|
|
2021-07-30 16:33:40 +00:00
|
|
|
mov [__0a80], dx
|
|
|
|
call skip_spaces.no_load
|
|
|
|
|
|
|
|
cmp al, ','
|
|
|
|
jne .no_skip_comma
|
|
|
|
inc si
|
|
|
|
|
|
|
|
.no_skip_comma:
|
|
|
|
dec si
|
|
|
|
call parse_line_specifier
|
|
|
|
mov [__0a82], dx
|
|
|
|
|
|
|
|
call skip_spaces.no_load
|
|
|
|
|
|
|
|
cmp al, '?'
|
|
|
|
jne .not_question_mark
|
|
|
|
|
|
|
|
mov [__0a7d], al
|
|
|
|
call skip_spaces
|
|
|
|
|
|
|
|
.not_question_mark:
|
|
|
|
cmp al, 0x5f
|
|
|
|
jna .match_command
|
|
|
|
and al, 0x5f
|
|
|
|
|
|
|
|
.match_command:
|
|
|
|
mov di, commands
|
|
|
|
mov cx, 10
|
|
|
|
repne scasb
|
|
|
|
jne print_entry_error ; Not found
|
|
|
|
|
|
|
|
movw r_bx, r_cx
|
|
|
|
mov ax, [__0a82]
|
|
|
|
orw r_ax, r_ax
|
|
|
|
jz __02e0
|
|
|
|
|
|
|
|
cmp ax, [__0a80]
|
|
|
|
jb print_entry_error
|
|
|
|
|
|
|
|
__02e0:
|
|
|
|
shl bx, 1
|
|
|
|
call [bx + command_addresses]
|
|
|
|
|
|
|
|
jmp near editor_mainloop
|
2021-07-30 15:57:47 +00:00
|
|
|
|
|
|
|
skip_spaces: ; 02e9
|
|
|
|
lodsb
|
2021-07-30 16:33:40 +00:00
|
|
|
.no_load: ; 02ea
|
2021-07-30 15:57:47 +00:00
|
|
|
cmp al, ' '
|
|
|
|
je skip_spaces
|
|
|
|
.ret: ret
|
|
|
|
|
|
|
|
print_entry_error: ; 02ef
|
|
|
|
mov dx, entry_error
|
|
|
|
mov ah, sys_print_string
|
|
|
|
int 0x21
|
|
|
|
jmp editor_mainloop
|
|
|
|
|
|
|
|
parse_line_specifier: ; 02f9
|
|
|
|
call skip_spaces
|
|
|
|
cmp al, '.'
|
|
|
|
je .current_line
|
|
|
|
cmp al, '#'
|
|
|
|
je .last_line
|
|
|
|
|
|
|
|
mov dx, 0
|
|
|
|
mov cl, 0 ; No digits read yet
|
|
|
|
|
|
|
|
.loop: ; 0309
|
|
|
|
cmp al, '0'
|
|
|
|
jb .not_digit
|
|
|
|
cmp al, '9'
|
|
|
|
ja .not_digit
|
|
|
|
|
|
|
|
; Would we overflow?
|
|
|
|
cmp dx, 65536 / 10
|
|
|
|
jnb print_entry_error ; Yes
|
|
|
|
|
|
|
|
mov cl, 1 ; We have now read a digit
|
|
|
|
|
|
|
|
sub al, '0'
|
|
|
|
|
|
|
|
; dx = dx*10
|
|
|
|
movw r_bx, r_dx
|
|
|
|
shl dx, 1
|
|
|
|
shl dx, 1
|
|
|
|
addw r_dx, r_bx
|
|
|
|
shl dx, 1
|
|
|
|
|
|
|
|
cbw
|
|
|
|
addw r_dx, r_ax
|
|
|
|
|
|
|
|
lodsb
|
|
|
|
|
|
|
|
jmp .loop
|
|
|
|
|
|
|
|
.not_digit: ; 032b
|
|
|
|
; Have we started reading a number?
|
|
|
|
cmpb_ext r_cl, 0
|
|
|
|
je skip_spaces.ret ; No
|
|
|
|
|
|
|
|
; Yes, and it's zero
|
|
|
|
orw r_dx, r_dx
|
|
|
|
jz print_entry_error
|
|
|
|
|
|
|
|
; Yes, it's nonzero
|
|
|
|
ret
|
|
|
|
|
|
|
|
.current_line: ; 0335
|
|
|
|
mov dx, [current_line]
|
|
|
|
lodsb
|
|
|
|
ret
|
|
|
|
|
|
|
|
.last_line: ; 033b
|
|
|
|
mov dx, 0xfffe ; TODO: Why 0xfffe and not 0xffff?
|
|
|
|
lodsb
|
|
|
|
ret
|
|
|
|
|
2021-07-30 16:33:40 +00:00
|
|
|
commands db 'QWASRDLIE', 13 ; 0340
|
|
|
|
command_addresses: ; 034a
|
|
|
|
dw command_q ; Q
|
|
|
|
dw command_w ; W
|
|
|
|
dw command_a ; A
|
|
|
|
dw command_s ; S
|
|
|
|
dw command_r ; R
|
|
|
|
dw command_d ; D
|
|
|
|
dw command_l ; L
|
|
|
|
dw __0370 ; I
|
|
|
|
dw command_e ; E
|
|
|
|
dw command_cr ; CR
|
2021-07-30 11:16:19 +00:00
|
|
|
|
2021-07-30 13:06:56 +00:00
|
|
|
find_file_end_char: ; 035e
|
|
|
|
push di
|
|
|
|
push cx
|
|
|
|
|
|
|
|
mov al, 0x1a ; ^Z
|
|
|
|
repne scasb
|
2021-07-30 13:18:10 +00:00
|
|
|
movw r_di, r_cx
|
2021-07-30 13:06:56 +00:00
|
|
|
|
|
|
|
pop cx
|
|
|
|
lahf
|
2021-07-30 13:18:10 +00:00
|
|
|
subw r_cx, r_di
|
2021-07-30 13:06:56 +00:00
|
|
|
sahf
|
|
|
|
|
|
|
|
pop di
|
2021-07-30 14:14:37 +00:00
|
|
|
.ret: ret
|
|
|
|
|
|
|
|
__036d:
|
|
|
|
jmp print_eof_str
|
|
|
|
|
|
|
|
__0370:
|
|
|
|
test byte [new_file_flag], 0xff
|
|
|
|
jnz __036d
|
|
|
|
|
|
|
|
mov dx, [__0a9a]
|
|
|
|
cmp word [__0a80], 0
|
|
|
|
jnz __0388
|
|
|
|
|
|
|
|
cmp dx, [__0a96]
|
2021-07-30 15:57:47 +00:00
|
|
|
jnb find_file_end_char.ret
|
2021-07-30 14:14:37 +00:00
|
|
|
|
|
|
|
__0388:
|
|
|
|
movw r_di, r_dx
|
|
|
|
mov ah, sys_set_dta
|
|
|
|
int 0x21
|
|
|
|
|
|
|
|
mov cx, [__0a98]
|
|
|
|
subw r_cx, r_dx
|
|
|
|
jz _trampoline_oom_1
|
|
|
|
|
|
|
|
mov dx, psp_fcb_1
|
|
|
|
mov ah, sys_random_block_read
|
|
|
|
int 0x21
|
|
|
|
|
|
|
|
mov [new_file_flag], al
|
|
|
|
push cx
|
|
|
|
call find_file_end_char
|
|
|
|
jne __03ab ; If the ^Z was not found
|
|
|
|
mov byte [new_file_flag], 1 ; magic
|
|
|
|
|
|
|
|
__03ab:
|
|
|
|
xorw r_dx, r_dx
|
|
|
|
mov bx, [__0a80]
|
|
|
|
orw r_bx, r_bx
|
|
|
|
jnz __03ca
|
|
|
|
|
|
|
|
movw r_ax, r_di
|
|
|
|
addw r_ax, r_cx
|
|
|
|
cmp ax, [__0a96]
|
2021-07-30 15:57:47 +00:00
|
|
|
jna __03ca
|
2021-07-30 14:14:37 +00:00
|
|
|
|
|
|
|
mov di, [__0a96]
|
|
|
|
movw r_cx, r_ax
|
|
|
|
subw r_cx, r_di
|
|
|
|
mov bx, 1
|
|
|
|
|
|
|
|
__03ca:
|
|
|
|
call __04a4
|
|
|
|
cmp [di - 1], al
|
|
|
|
je __03de
|
|
|
|
|
|
|
|
std
|
|
|
|
dec di
|
|
|
|
mov cx, [__0a98]
|
|
|
|
repne scasb
|
|
|
|
inc di
|
|
|
|
inc di
|
|
|
|
dec dx
|
|
|
|
cld
|
|
|
|
|
|
|
|
__03de:
|
|
|
|
pop cx
|
|
|
|
mov word [di], 0x1a ; ^Z
|
|
|
|
subw r_cx, r_di
|
|
|
|
xchg di, [__0a9a]
|
|
|
|
addw r_di, r_cx
|
|
|
|
sub [psp_fcb_1 + fcb_record_low], di
|
|
|
|
sbb word [psp_fcb_1 + fcb_record_high], 0
|
|
|
|
|
|
|
|
cmpw r_bx, r_dx
|
|
|
|
jne __0406
|
|
|
|
|
|
|
|
mov byte [new_file_flag], 0 ; magic
|
2021-07-30 13:06:56 +00:00
|
|
|
ret
|
|
|
|
|
2021-07-30 14:14:37 +00:00
|
|
|
print_eof_str: ; 03fe
|
|
|
|
mov dx, eof_str
|
|
|
|
mov ah, sys_print_string
|
|
|
|
int 0x21
|
|
|
|
.ret: ret
|
|
|
|
|
|
|
|
__0406:
|
|
|
|
test byte [new_file_flag], 0xff
|
|
|
|
jnz print_eof_str
|
|
|
|
test byte [__0a7f], 0xff
|
|
|
|
jnz print_eof_str.ret
|
|
|
|
|
|
|
|
_trampoline_oom_1: ; 0414
|
|
|
|
jmp oom
|
|
|
|
|
2021-07-30 16:33:40 +00:00
|
|
|
command_e: ; 0417
|
2021-07-29 20:19:41 +00:00
|
|
|
db 0x8B, 0x1E, 0x80, 0x0A ; 0417 mov bx,[0xa80]
|
|
|
|
db 0x0B, 0xDB ; 041B or bx,bx
|
|
|
|
db 0x75, 0x1C ; 041D jnz 0x43b
|
|
|
|
db 0x8B, 0x0E, 0x94, 0x0A ; 041F mov cx,[0xa94]
|
|
|
|
db 0x8B, 0x3E, 0x9A, 0x0A ; 0423 mov di,[0xa9a]
|
|
|
|
db 0x2B, 0xF9 ; 0427 sub di,cx
|
|
|
|
db 0x76, 0xDA ; 0429 jna 0x405
|
|
|
|
db 0x81, 0xFF, 0x49, 0x0D ; 042B cmp di,0xd49
|
|
|
|
db 0x76, 0xD4 ; 042F jna 0x405
|
|
|
|
db 0x33, 0xD2 ; 0431 xor dx,dx
|
|
|
|
db 0xBB, 0x01, 0x00 ; 0433 mov bx,0x1
|
|
|
|
db 0xE8, 0x6B, 0x00 ; 0436 call 0x4a4
|
|
|
|
db 0xEB, 0x04 ; 0439 jmp short 0x43f
|
|
|
|
db 0x43 ; 043B inc bx
|
|
|
|
db 0xE8, 0x43, 0x00 ; 043C call 0x482
|
|
|
|
db 0x8B, 0xCF ; 043F mov cx,di
|
|
|
|
db 0xBA, 0x49, 0x0D ; 0441 mov dx,0xd49
|
|
|
|
db 0x2B, 0xCA ; 0444 sub cx,dx
|
|
|
|
db 0x74, 0xBD ; 0446 jz 0x405
|
|
|
|
db 0xB4, 0x1A ; 0448 mov ah,0x1a
|
|
|
|
db 0xCD, 0x21 ; 044A int 0x21
|
|
|
|
db 0xBA, 0x58, 0x0A ; 044C mov dx,0xa58
|
|
|
|
db 0xB4, 0x28 ; 044F mov ah,0x28
|
|
|
|
db 0xCD, 0x21 ; 0451 int 0x21
|
|
|
|
db 0x0A, 0xC0 ; 0453 or al,al
|
|
|
|
db 0x75, 0x1E ; 0455 jnz 0x475
|
|
|
|
db 0x8B, 0xF7 ; 0457 mov si,di
|
|
|
|
db 0xBF, 0x49, 0x0D ; 0459 mov di,0xd49
|
|
|
|
db 0x89, 0x3E, 0x92, 0x0A ; 045C mov [0xa92],di
|
|
|
|
db 0x8B, 0x0E, 0x9A, 0x0A ; 0460 mov cx,[0xa9a]
|
|
|
|
db 0x2B, 0xCE ; 0464 sub cx,si
|
|
|
|
db 0x41 ; 0466 inc cx
|
|
|
|
db 0xF3, 0xA4 ; 0467 rep movsb
|
|
|
|
db 0x4F ; 0469 dec di
|
|
|
|
db 0x89, 0x3E, 0x9A, 0x0A ; 046A mov [0xa9a],di
|
|
|
|
db 0xC7, 0x06, 0x90, 0x0A, 0x01, 0x00 ; 046E mov word [0xa90],0x1
|
|
|
|
db 0xC3 ; 0474 ret
|
|
|
|
db 0xB4, 0x10 ; 0475 mov ah,0x10
|
|
|
|
db 0xCD, 0x21 ; 0477 int 0x21
|
|
|
|
db 0xBA, 0xB9, 0x09 ; 0479 mov dx,0x9b9
|
2021-07-29 21:55:57 +00:00
|
|
|
|
|
|
|
error: ; 047c
|
2021-07-30 10:20:59 +00:00
|
|
|
mov ah, sys_print_string
|
2021-07-29 21:55:57 +00:00
|
|
|
int 0x21
|
|
|
|
int 0x20
|
|
|
|
|
2021-07-29 20:19:41 +00:00
|
|
|
db 0x8B, 0x16, 0x90, 0x0A ; 0482 mov dx,[0xa90]
|
|
|
|
db 0x8B, 0x3E, 0x92, 0x0A ; 0486 mov di,[0xa92]
|
|
|
|
db 0x3B, 0xDA ; 048A cmp bx,dx
|
|
|
|
db 0x74, 0xE6 ; 048C jz 0x474
|
|
|
|
db 0x77, 0x0E ; 048E ja 0x49e
|
|
|
|
db 0x0B, 0xDB ; 0490 or bx,bx
|
|
|
|
db 0x74, 0x0A ; 0492 jz 0x49e
|
|
|
|
db 0xBA, 0x01, 0x00 ; 0494 mov dx,0x1
|
|
|
|
db 0xBF, 0x49, 0x0D ; 0497 mov di,0xd49
|
|
|
|
db 0x3B, 0xDA ; 049A cmp bx,dx
|
|
|
|
db 0x74, 0xD6 ; 049C jz 0x474
|
|
|
|
db 0x8B, 0x0E, 0x9A, 0x0A ; 049E mov cx,[0xa9a]
|
|
|
|
db 0x2B, 0xCF ; 04A2 sub cx,di
|
2021-07-30 14:14:37 +00:00
|
|
|
|
|
|
|
__04a4:
|
2021-07-29 20:19:41 +00:00
|
|
|
db 0xB0, 0x0A ; 04A4 mov al,0xa
|
|
|
|
db 0x0A, 0xC0 ; 04A6 or al,al
|
|
|
|
db 0xE3, 0xCA ; 04A8 jcxz 0x474
|
|
|
|
db 0xF2, 0xAE ; 04AA repne scasb
|
|
|
|
db 0x42 ; 04AC inc dx
|
|
|
|
db 0x3B, 0xDA ; 04AD cmp bx,dx
|
|
|
|
db 0x75, 0xF7 ; 04AF jnz 0x4a8
|
|
|
|
db 0xC3 ; 04B1 ret
|
|
|
|
db 0x53 ; 04B2 push bx
|
|
|
|
db 0xB0, 0x20 ; 04B3 mov al,0x20
|
|
|
|
db 0xE8, 0x6C, 0x04 ; 04B5 call 0x924
|
|
|
|
db 0xE8, 0x13, 0x00 ; 04B8 call 0x4ce
|
|
|
|
db 0xB0, 0x3A ; 04BB mov al,0x3a
|
|
|
|
db 0xE8, 0x64, 0x04 ; 04BD call 0x924
|
|
|
|
db 0xB0, 0x2A ; 04C0 mov al,0x2a
|
|
|
|
db 0x5B ; 04C2 pop bx
|
|
|
|
db 0x3B, 0x1E, 0x90, 0x0A ; 04C3 cmp bx,[0xa90]
|
|
|
|
db 0x74, 0x02 ; 04C7 jz 0x4cb
|
|
|
|
db 0xB0, 0x20 ; 04C9 mov al,0x20
|
|
|
|
db 0xE9, 0x56, 0x04 ; 04CB jmp 0x924
|
|
|
|
db 0x33, 0xC0 ; 04CE xor ax,ax
|
|
|
|
db 0x8A, 0xD0 ; 04D0 mov dl,al
|
|
|
|
db 0xB9, 0x10, 0x00 ; 04D2 mov cx,0x10
|
|
|
|
db 0xD1, 0xE3 ; 04D5 shl bx,1
|
|
|
|
db 0x12, 0xC0 ; 04D7 adc al,al
|
|
|
|
db 0x27 ; 04D9 daa
|
|
|
|
db 0x86, 0xC4 ; 04DA xchg al,ah
|
|
|
|
db 0x12, 0xC0 ; 04DC adc al,al
|
|
|
|
db 0x27 ; 04DE daa
|
|
|
|
db 0x86, 0xC4 ; 04DF xchg al,ah
|
|
|
|
db 0x12, 0xD2 ; 04E1 adc dl,dl
|
|
|
|
db 0xE2, 0xF0 ; 04E3 loop 0x4d5
|
|
|
|
db 0xB3, 0x10 ; 04E5 mov bl,0x10
|
|
|
|
db 0x92 ; 04E7 xchg ax,dx
|
|
|
|
db 0xE8, 0x16, 0x00 ; 04E8 call 0x501
|
|
|
|
db 0x8A, 0xC6 ; 04EB mov al,dh
|
|
|
|
db 0xE8, 0x02, 0x00 ; 04ED call 0x4f2
|
|
|
|
db 0x8A, 0xC2 ; 04F0 mov al,dl
|
|
|
|
db 0x8A, 0xF0 ; 04F2 mov dh,al
|
|
|
|
db 0xD0, 0xE8 ; 04F4 shr al,1
|
|
|
|
db 0xD0, 0xE8 ; 04F6 shr al,1
|
|
|
|
db 0xD0, 0xE8 ; 04F8 shr al,1
|
|
|
|
db 0xD0, 0xE8 ; 04FA shr al,1
|
|
|
|
db 0xE8, 0x02, 0x00 ; 04FC call 0x501
|
|
|
|
db 0x8A, 0xC6 ; 04FF mov al,dh
|
|
|
|
db 0x24, 0x0F ; 0501 and al,0xf
|
|
|
|
db 0x74, 0x02 ; 0503 jz 0x507
|
|
|
|
db 0xB3, 0x00 ; 0505 mov bl,0x0
|
|
|
|
db 0x04, 0x30 ; 0507 add al,0x30
|
|
|
|
db 0x2A, 0xC3 ; 0509 sub al,bl
|
|
|
|
db 0xE9, 0x16, 0x04 ; 050B jmp 0x924
|
2021-07-30 16:33:40 +00:00
|
|
|
|
|
|
|
command_s: ; 050e
|
2021-07-29 20:19:41 +00:00
|
|
|
db 0x8B, 0x1E, 0x80, 0x0A ; 050E mov bx,[0xa80]
|
|
|
|
db 0x0B, 0xDB ; 0512 or bx,bx
|
|
|
|
db 0x75, 0x0C ; 0514 jnz 0x522
|
|
|
|
db 0x8B, 0x1E, 0x90, 0x0A ; 0516 mov bx,[0xa90]
|
|
|
|
db 0x83, 0xEB, 0x0B ; 051A sub bx,byte +0xb
|
|
|
|
db 0x77, 0x03 ; 051D ja 0x522
|
|
|
|
db 0xBB, 0x01, 0x00 ; 051F mov bx,0x1
|
|
|
|
db 0xE8, 0x5D, 0xFF ; 0522 call 0x482
|
|
|
|
db 0x75, 0x8A ; 0525 jnz 0x4b1
|
|
|
|
db 0x8B, 0xF7 ; 0527 mov si,di
|
|
|
|
db 0x8B, 0x3E, 0x82, 0x0A ; 0529 mov di,[0xa82]
|
|
|
|
db 0x47 ; 052D inc di
|
|
|
|
db 0x2B, 0xFB ; 052E sub di,bx
|
|
|
|
db 0x77, 0x08 ; 0530 ja 0x53a
|
|
|
|
db 0xBF, 0x17, 0x00 ; 0532 mov di,0x17
|
|
|
|
db 0xEB, 0x03 ; 0535 jmp short 0x53a
|
|
|
|
db 0xBF, 0x01, 0x00 ; 0537 mov di,0x1
|
|
|
|
db 0x8B, 0x0E, 0x9A, 0x0A ; 053A mov cx,[0xa9a]
|
|
|
|
db 0x2B, 0xCE ; 053E sub cx,si
|
|
|
|
db 0x74, 0x31 ; 0540 jz 0x573
|
|
|
|
db 0x8B, 0x2E, 0x90, 0x0A ; 0542 mov bp,[0xa90]
|
|
|
|
db 0x51 ; 0546 push cx
|
|
|
|
db 0xE8, 0x68, 0xFF ; 0547 call 0x4b2
|
|
|
|
db 0x59 ; 054A pop cx
|
|
|
|
db 0xAC ; 054B lodsb
|
|
|
|
db 0x3C, 0x20 ; 054C cmp al,0x20
|
|
|
|
db 0x73, 0x15 ; 054E jnc 0x565
|
|
|
|
db 0x3C, 0x0A ; 0550 cmp al,0xa
|
|
|
|
db 0x74, 0x11 ; 0552 jz 0x565
|
|
|
|
db 0x3C, 0x0D ; 0554 cmp al,0xd
|
|
|
|
db 0x74, 0x0D ; 0556 jz 0x565
|
|
|
|
db 0x3C, 0x09 ; 0558 cmp al,0x9
|
|
|
|
db 0x74, 0x09 ; 055A jz 0x565
|
|
|
|
db 0x50 ; 055C push ax
|
|
|
|
db 0xB0, 0x5E ; 055D mov al,0x5e
|
|
|
|
db 0xE8, 0xC2, 0x03 ; 055F call 0x924
|
|
|
|
db 0x58 ; 0562 pop ax
|
|
|
|
db 0x0C, 0x40 ; 0563 or al,0x40
|
|
|
|
db 0xE8, 0xBC, 0x03 ; 0565 call 0x924
|
|
|
|
db 0x3C, 0x0A ; 0568 cmp al,0xa
|
|
|
|
db 0xE0, 0xDF ; 056A loopne 0x54b
|
|
|
|
db 0xE3, 0x05 ; 056C jcxz 0x573
|
|
|
|
db 0x43 ; 056E inc bx
|
|
|
|
db 0x4F ; 056F dec di
|
|
|
|
db 0x75, 0xD4 ; 0570 jnz 0x546
|
|
|
|
db 0x4B ; 0572 dec bx
|
|
|
|
db 0xC3 ; 0573 ret
|
|
|
|
db 0xBF, 0x20, 0x0C ; 0574 mov di,0xc20
|
|
|
|
db 0xB9, 0xFF, 0x00 ; 0577 mov cx,0xff
|
|
|
|
db 0xBA, 0xFF, 0xFF ; 057A mov dx,0xffff
|
|
|
|
db 0xAC ; 057D lodsb
|
|
|
|
db 0xAA ; 057E stosb
|
|
|
|
db 0x42 ; 057F inc dx
|
|
|
|
db 0x3C, 0x0D ; 0580 cmp al,0xd
|
|
|
|
db 0xE0, 0xF9 ; 0582 loopne 0x57d
|
|
|
|
db 0x88, 0x16, 0x1F, 0x0C ; 0584 mov [0xc1f],dl
|
|
|
|
db 0x74, 0xE9 ; 0588 jz 0x573
|
|
|
|
db 0xAC ; 058A lodsb
|
|
|
|
db 0x42 ; 058B inc dx
|
|
|
|
db 0x3C, 0x0D ; 058C cmp al,0xd
|
|
|
|
db 0x75, 0xFA ; 058E jnz 0x58a
|
|
|
|
db 0x4F ; 0590 dec di
|
|
|
|
db 0xAA ; 0591 stosb
|
|
|
|
db 0xC3 ; 0592 ret
|
|
|
|
db 0xE9, 0xC9, 0x00 ; 0593 jmp 0x65f
|
2021-07-30 16:33:40 +00:00
|
|
|
|
|
|
|
command_d: ; 0596
|
2021-07-29 20:19:41 +00:00
|
|
|
db 0xE8, 0xFD, 0x00 ; 0596 call 0x696
|
|
|
|
db 0x75, 0xF8 ; 0599 jnz 0x593
|
|
|
|
db 0x8B, 0x36, 0x8C, 0x0A ; 059B mov si,[0xa8c]
|
|
|
|
db 0xE8, 0xD2, 0xFF ; 059F call 0x574
|
|
|
|
db 0x2B, 0x16, 0x84, 0x0A ; 05A2 sub dx,[0xa84]
|
|
|
|
db 0x8B, 0x0E, 0x86, 0x0A ; 05A6 mov cx,[0xa86]
|
|
|
|
db 0x03, 0xD1 ; 05AA add dx,cx
|
|
|
|
db 0x81, 0xFA, 0xFE, 0x00 ; 05AC cmp dx,0xfe
|
|
|
|
db 0x77, 0x70 ; 05B0 ja 0x622
|
|
|
|
db 0x8B, 0x1E, 0x8A, 0x0A ; 05B2 mov bx,[0xa8a]
|
|
|
|
db 0x52 ; 05B6 push dx
|
|
|
|
db 0xE8, 0xF8, 0xFE ; 05B7 call 0x4b2
|
|
|
|
db 0x5A ; 05BA pop dx
|
|
|
|
db 0x8B, 0x0E, 0x88, 0x0A ; 05BB mov cx,[0xa88]
|
|
|
|
db 0x8B, 0x36, 0x8C, 0x0A ; 05BF mov si,[0xa8c]
|
|
|
|
db 0x2B, 0xCE ; 05C3 sub cx,si
|
|
|
|
db 0x49 ; 05C5 dec cx
|
|
|
|
db 0xE8, 0x4F, 0x00 ; 05C6 call 0x618
|
|
|
|
db 0x56 ; 05C9 push si
|
|
|
|
db 0xBE, 0x9E, 0x0B ; 05CA mov si,0xb9e
|
|
|
|
db 0x8B, 0x0E, 0x86, 0x0A ; 05CD mov cx,[0xa86]
|
|
|
|
db 0xE8, 0x44, 0x00 ; 05D1 call 0x618
|
|
|
|
db 0x5E ; 05D4 pop si
|
|
|
|
db 0x03, 0x36, 0x84, 0x0A ; 05D5 add si,[0xa84]
|
|
|
|
db 0x8B, 0xCA ; 05D9 mov cx,dx
|
|
|
|
db 0x83, 0xC1, 0x02 ; 05DB add cx,byte +0x2
|
|
|
|
db 0xE8, 0x37, 0x00 ; 05DE call 0x618
|
|
|
|
db 0xE8, 0x90, 0x00 ; 05E1 call 0x674
|
|
|
|
db 0x75, 0x2A ; 05E4 jnz 0x610
|
|
|
|
db 0xE8, 0x7E, 0x00 ; 05E6 call 0x667
|
|
|
|
db 0x8B, 0x3E, 0x88, 0x0A ; 05E9 mov di,[0xa88]
|
|
|
|
db 0x4F ; 05ED dec di
|
|
|
|
db 0xBE, 0x9E, 0x0B ; 05EE mov si,0xb9e
|
|
|
|
db 0x8B, 0x16, 0x84, 0x0A ; 05F1 mov dx,[0xa84]
|
|
|
|
db 0x8B, 0x0E, 0x86, 0x0A ; 05F5 mov cx,[0xa86]
|
|
|
|
db 0x49 ; 05F9 dec cx
|
|
|
|
db 0x01, 0x0E, 0x88, 0x0A ; 05FA add [0xa88],cx
|
|
|
|
db 0x41 ; 05FE inc cx
|
|
|
|
db 0x4A ; 05FF dec dx
|
|
|
|
db 0x29, 0x16, 0x8E, 0x0A ; 0600 sub [0xa8e],dx
|
|
|
|
db 0x73, 0x06 ; 0604 jnc 0x60c
|
|
|
|
db 0xC7, 0x06, 0x8E, 0x0A, 0x00, 0x00 ; 0606 mov word [0xa8e],0x0
|
|
|
|
db 0x42 ; 060C inc dx
|
|
|
|
db 0xE8, 0xC7, 0x01 ; 060D call 0x7d7
|
|
|
|
db 0xE8, 0xDC, 0x00 ; 0610 call 0x6ef
|
|
|
|
db 0x75, 0x0C ; 0613 jnz 0x621
|
|
|
|
db 0xE9, 0x83, 0xFF ; 0615 jmp 0x59b
|
|
|
|
db 0xE3, 0x07 ; 0618 jcxz 0x621
|
|
|
|
db 0xAC ; 061A lodsb
|
|
|
|
db 0xE8, 0x06, 0x03 ; 061B call 0x924
|
|
|
|
db 0x4A ; 061E dec dx
|
|
|
|
db 0xE2, 0xF9 ; 061F loop 0x61a
|
|
|
|
db 0xC3 ; 0621 ret
|
|
|
|
db 0xBA, 0x21, 0x0A ; 0622 mov dx,0xa21
|
|
|
|
db 0xEB, 0x3B ; 0625 jmp short 0x662
|
2021-07-30 16:33:40 +00:00
|
|
|
|
|
|
|
command_l: ; 0627
|
2021-07-29 20:19:41 +00:00
|
|
|
db 0xE8, 0x6C, 0x00 ; 0627 call 0x696
|
|
|
|
db 0x75, 0x33 ; 062A jnz 0x65f
|
|
|
|
db 0x8B, 0x1E, 0x8A, 0x0A ; 062C mov bx,[0xa8a]
|
|
|
|
db 0x8B, 0x36, 0x8C, 0x0A ; 0630 mov si,[0xa8c]
|
|
|
|
db 0xE8, 0x00, 0xFF ; 0634 call 0x537
|
|
|
|
db 0xE8, 0x3A, 0x00 ; 0637 call 0x674
|
|
|
|
db 0x74, 0x2B ; 063A jz 0x667
|
|
|
|
db 0x8B, 0x3E, 0x88, 0x0A ; 063C mov di,[0xa88]
|
|
|
|
db 0x8B, 0x0E, 0x8E, 0x0A ; 0640 mov cx,[0xa8e]
|
|
|
|
db 0xB0, 0x0A ; 0644 mov al,0xa
|
|
|
|
db 0xF2, 0xAE ; 0646 repne scasb
|
|
|
|
db 0x75, 0x15 ; 0648 jnz 0x65f
|
|
|
|
db 0x89, 0x3E, 0x88, 0x0A ; 064A mov [0xa88],di
|
|
|
|
db 0x89, 0x3E, 0x8C, 0x0A ; 064E mov [0xa8c],di
|
|
|
|
db 0x89, 0x0E, 0x8E, 0x0A ; 0652 mov [0xa8e],cx
|
|
|
|
db 0xFF, 0x06, 0x8A, 0x0A ; 0656 inc word [0xa8a]
|
|
|
|
db 0xE8, 0x92, 0x00 ; 065A call 0x6ef
|
|
|
|
db 0x74, 0xCD ; 065D jz 0x62c
|
|
|
|
db 0xBA, 0x0E, 0x0A ; 065F mov dx,0xa0e
|
|
|
|
db 0xB4, 0x09 ; 0662 mov ah,0x9
|
|
|
|
db 0xCD, 0x21 ; 0664 int 0x21
|
|
|
|
db 0xC3 ; 0666 ret
|
|
|
|
db 0xA1, 0x8C, 0x0A ; 0667 mov ax,[0xa8c]
|
|
|
|
db 0xA3, 0x92, 0x0A ; 066A mov [0xa92],ax
|
|
|
|
db 0xA1, 0x8A, 0x0A ; 066D mov ax,[0xa8a]
|
|
|
|
db 0xA3, 0x90, 0x0A ; 0670 mov [0xa90],ax
|
|
|
|
db 0xC3 ; 0673 ret
|
|
|
|
db 0xF6, 0x06, 0x7D, 0x0A, 0xFF ; 0674 test byte [0xa7d],0xff
|
|
|
|
db 0x74, 0xF8 ; 0679 jz 0x673
|
|
|
|
db 0xBA, 0x1A, 0x0A ; 067B mov dx,0xa1a
|
|
|
|
db 0xB4, 0x09 ; 067E mov ah,0x9
|
|
|
|
db 0xCD, 0x21 ; 0680 int 0x21
|
|
|
|
db 0xB4, 0x01 ; 0682 mov ah,0x1
|
|
|
|
db 0xCD, 0x21 ; 0684 int 0x21
|
|
|
|
db 0x50 ; 0686 push ax
|
|
|
|
db 0xE8, 0x93, 0x02 ; 0687 call 0x91d
|
|
|
|
db 0x58 ; 068A pop ax
|
|
|
|
db 0x3C, 0x0D ; 068B cmp al,0xd
|
|
|
|
db 0x74, 0xE4 ; 068D jz 0x673
|
|
|
|
db 0x3C, 0x59 ; 068F cmp al,0x59
|
|
|
|
db 0x74, 0xE0 ; 0691 jz 0x673
|
|
|
|
db 0x3C, 0x79 ; 0693 cmp al,0x79
|
|
|
|
db 0xC3 ; 0695 ret
|
|
|
|
db 0xBF, 0x1E, 0x0B ; 0696 mov di,0xb1e
|
|
|
|
db 0xE8, 0xA3, 0x00 ; 0699 call 0x73f
|
|
|
|
db 0x0A, 0xC0 ; 069C or al,al
|
|
|
|
db 0xE3, 0xF5 ; 069E jcxz 0x695
|
|
|
|
db 0x89, 0x0E, 0x84, 0x0A ; 06A0 mov [0xa84],cx
|
|
|
|
db 0x33, 0xC9 ; 06A4 xor cx,cx
|
|
|
|
db 0x3C, 0x0D ; 06A6 cmp al,0xd
|
|
|
|
db 0x74, 0x06 ; 06A8 jz 0x6b0
|
|
|
|
db 0xBF, 0x9E, 0x0B ; 06AA mov di,0xb9e
|
|
|
|
db 0xE8, 0x8F, 0x00 ; 06AD call 0x73f
|
|
|
|
db 0x89, 0x0E, 0x86, 0x0A ; 06B0 mov [0xa86],cx
|
|
|
|
db 0x8B, 0x1E, 0x80, 0x0A ; 06B4 mov bx,[0xa80]
|
|
|
|
db 0x83, 0xFB, 0x01 ; 06B8 cmp bx,byte +0x1
|
|
|
|
db 0x83, 0xD3, 0x00 ; 06BB adc bx,byte +0x0
|
|
|
|
db 0xE8, 0xC1, 0xFD ; 06BE call 0x482
|
|
|
|
db 0x89, 0x3E, 0x88, 0x0A ; 06C1 mov [0xa88],di
|
|
|
|
db 0x89, 0x3E, 0x8C, 0x0A ; 06C5 mov [0xa8c],di
|
|
|
|
db 0x89, 0x16, 0x8A, 0x0A ; 06C9 mov [0xa8a],dx
|
|
|
|
db 0x8B, 0x1E, 0x82, 0x0A ; 06CD mov bx,[0xa82]
|
|
|
|
db 0x83, 0xFB, 0x01 ; 06D1 cmp bx,byte +0x1
|
|
|
|
db 0x83, 0xDB, 0xFF ; 06D4 sbb bx,byte -0x1
|
|
|
|
db 0xE8, 0xA8, 0xFD ; 06D7 call 0x482
|
|
|
|
db 0x8B, 0xCF ; 06DA mov cx,di
|
|
|
|
db 0x2B, 0x0E, 0x88, 0x0A ; 06DC sub cx,[0xa88]
|
|
|
|
db 0x0C, 0xFF ; 06E0 or al,0xff
|
|
|
|
db 0xE3, 0xB1 ; 06E2 jcxz 0x695
|
|
|
|
db 0x2B, 0x0E, 0x84, 0x0A ; 06E4 sub cx,[0xa84]
|
|
|
|
db 0x72, 0xAB ; 06E8 jc 0x695
|
|
|
|
db 0x41 ; 06EA inc cx
|
|
|
|
db 0x89, 0x0E, 0x8E, 0x0A ; 06EB mov [0xa8e],cx
|
|
|
|
db 0xA0, 0x1E, 0x0B ; 06EF mov al,[0xb1e]
|
|
|
|
db 0x8B, 0x0E, 0x8E, 0x0A ; 06F2 mov cx,[0xa8e]
|
|
|
|
db 0x8B, 0x3E, 0x88, 0x0A ; 06F6 mov di,[0xa88]
|
|
|
|
db 0x0B, 0xFF ; 06FA or di,di
|
|
|
|
db 0xF2, 0xAE ; 06FC repne scasb
|
|
|
|
db 0x75, 0x95 ; 06FE jnz 0x695
|
|
|
|
db 0x8B, 0xD1 ; 0700 mov dx,cx
|
|
|
|
db 0x8B, 0xDF ; 0702 mov bx,di
|
|
|
|
db 0x8B, 0x0E, 0x84, 0x0A ; 0704 mov cx,[0xa84]
|
|
|
|
db 0x49 ; 0708 dec cx
|
|
|
|
db 0xBE, 0x1F, 0x0B ; 0709 mov si,0xb1f
|
|
|
|
db 0x3A, 0xC0 ; 070C cmp al,al
|
|
|
|
db 0xF3, 0xA6 ; 070E repe cmpsb
|
|
|
|
db 0x8B, 0xCA ; 0710 mov cx,dx
|
|
|
|
db 0x8B, 0xFB ; 0712 mov di,bx
|
|
|
|
db 0x75, 0xE4 ; 0714 jnz 0x6fa
|
|
|
|
db 0x89, 0x0E, 0x8E, 0x0A ; 0716 mov [0xa8e],cx
|
|
|
|
db 0x8B, 0xCF ; 071A mov cx,di
|
|
|
|
db 0x89, 0x3E, 0x88, 0x0A ; 071C mov [0xa88],di
|
|
|
|
db 0x8B, 0x3E, 0x8C, 0x0A ; 0720 mov di,[0xa8c]
|
|
|
|
db 0x2B, 0xCF ; 0724 sub cx,di
|
|
|
|
db 0xB0, 0x0A ; 0726 mov al,0xa
|
|
|
|
db 0x8B, 0x16, 0x8A, 0x0A ; 0728 mov dx,[0xa8a]
|
|
|
|
db 0x42 ; 072C inc dx
|
|
|
|
db 0x8B, 0xDF ; 072D mov bx,di
|
|
|
|
db 0xF2, 0xAE ; 072F repne scasb
|
|
|
|
db 0x74, 0xF9 ; 0731 jz 0x72c
|
|
|
|
db 0x4A ; 0733 dec dx
|
|
|
|
db 0x89, 0x16, 0x8A, 0x0A ; 0734 mov [0xa8a],dx
|
|
|
|
db 0x89, 0x1E, 0x8C, 0x0A ; 0738 mov [0xa8c],bx
|
|
|
|
db 0x32, 0xC0 ; 073C xor al,al
|
|
|
|
db 0xC3 ; 073E ret
|
|
|
|
db 0x33, 0xC9 ; 073F xor cx,cx
|
|
|
|
db 0xAC ; 0741 lodsb
|
|
|
|
db 0x3C, 0x1A ; 0742 cmp al,0x1a
|
|
|
|
db 0x74, 0xF8 ; 0744 jz 0x73e
|
|
|
|
db 0x3C, 0x0D ; 0746 cmp al,0xd
|
|
|
|
db 0x74, 0xF4 ; 0748 jz 0x73e
|
|
|
|
db 0xAA ; 074A stosb
|
|
|
|
db 0x41 ; 074B inc cx
|
|
|
|
db 0xEB, 0xF3 ; 074C jmp short 0x741
|
2021-07-30 16:33:40 +00:00
|
|
|
|
|
|
|
command_r: ; 074e
|
2021-07-29 20:19:41 +00:00
|
|
|
db 0x8B, 0x1E, 0x80, 0x0A ; 074E mov bx,[0xa80]
|
|
|
|
db 0x0B, 0xDB ; 0752 or bx,bx
|
|
|
|
db 0x75, 0x04 ; 0754 jnz 0x75a
|
|
|
|
db 0x8B, 0x1E, 0x90, 0x0A ; 0756 mov bx,[0xa90]
|
|
|
|
db 0xE8, 0x25, 0xFD ; 075A call 0x482
|
|
|
|
db 0x75, 0xDF ; 075D jnz 0x73e
|
|
|
|
db 0x53 ; 075F push bx
|
|
|
|
db 0x57 ; 0760 push di
|
|
|
|
db 0x8B, 0x1E, 0x82, 0x0A ; 0761 mov bx,[0xa82]
|
|
|
|
db 0x0B, 0xDB ; 0765 or bx,bx
|
|
|
|
db 0x75, 0x02 ; 0767 jnz 0x76b
|
|
|
|
db 0x8B, 0xDA ; 0769 mov bx,dx
|
|
|
|
db 0x43 ; 076B inc bx
|
|
|
|
db 0xE8, 0x13, 0xFD ; 076C call 0x482
|
|
|
|
db 0x8B, 0xD7 ; 076F mov dx,di
|
|
|
|
db 0x5F ; 0771 pop di
|
|
|
|
db 0x2B, 0xD7 ; 0772 sub dx,di
|
|
|
|
db 0x76, 0x0C ; 0774 jna 0x782
|
|
|
|
db 0x8F, 0x06, 0x90, 0x0A ; 0776 pop word [0xa90]
|
|
|
|
db 0x89, 0x3E, 0x92, 0x0A ; 077A mov [0xa92],di
|
|
|
|
db 0x33, 0xC9 ; 077E xor cx,cx
|
|
|
|
db 0xEB, 0x55 ; 0780 jmp short 0x7d7
|
|
|
|
db 0xE9, 0x6A, 0xFB ; 0782 jmp 0x2ef
|
2021-07-30 16:33:40 +00:00
|
|
|
|
|
|
|
command_q: ; 0785
|
2021-07-29 20:19:41 +00:00
|
|
|
db 0x8B, 0x1E, 0x80, 0x0A ; 0785 mov bx,[0xa80]
|
|
|
|
db 0x0B, 0xDB ; 0789 or bx,bx
|
|
|
|
db 0x75, 0x05 ; 078B jnz 0x792
|
|
|
|
db 0x8B, 0x1E, 0x90, 0x0A ; 078D mov bx,[0xa90]
|
|
|
|
db 0x43 ; 0791 inc bx
|
|
|
|
db 0xE8, 0xED, 0xFC ; 0792 call 0x482
|
|
|
|
db 0x8B, 0xF7 ; 0795 mov si,di
|
|
|
|
db 0x89, 0x16, 0x90, 0x0A ; 0797 mov [0xa90],dx
|
|
|
|
db 0x89, 0x36, 0x92, 0x0A ; 079B mov [0xa92],si
|
|
|
|
db 0x75, 0x9D ; 079F jnz 0x73e
|
|
|
|
db 0x3B, 0x36, 0x9A, 0x0A ; 07A1 cmp si,[0xa9a]
|
|
|
|
db 0x74, 0x97 ; 07A5 jz 0x73e
|
|
|
|
db 0xE8, 0xCA, 0xFD ; 07A7 call 0x574
|
|
|
|
db 0x89, 0x16, 0x84, 0x0A ; 07AA mov [0xa84],dx
|
|
|
|
db 0x8B, 0x36, 0x92, 0x0A ; 07AE mov si,[0xa92]
|
|
|
|
db 0xE8, 0x82, 0xFD ; 07B2 call 0x537
|
|
|
|
db 0xE8, 0xFA, 0xFC ; 07B5 call 0x4b2
|
|
|
|
db 0xB4, 0x0A ; 07B8 mov ah,0xa
|
|
|
|
db 0xBA, 0x1E, 0x0C ; 07BA mov dx,0xc1e
|
|
|
|
db 0xCD, 0x21 ; 07BD int 0x21
|
|
|
|
db 0xB0, 0x0A ; 07BF mov al,0xa
|
|
|
|
db 0xE8, 0x60, 0x01 ; 07C1 call 0x924
|
|
|
|
db 0x8A, 0x0E, 0x1F, 0x0C ; 07C4 mov cl,[0xc1f]
|
|
|
|
db 0xB5, 0x00 ; 07C8 mov ch,0x0
|
|
|
|
db 0xE3, 0x3F ; 07CA jcxz 0x80b
|
|
|
|
db 0x8B, 0x16, 0x84, 0x0A ; 07CC mov dx,[0xa84]
|
|
|
|
db 0xBE, 0x20, 0x0C ; 07D0 mov si,0xc20
|
|
|
|
db 0x8B, 0x3E, 0x92, 0x0A ; 07D3 mov di,[0xa92]
|
|
|
|
db 0x3B, 0xCA ; 07D7 cmp cx,dx
|
|
|
|
db 0x74, 0x2E ; 07D9 jz 0x809
|
|
|
|
db 0x56 ; 07DB push si
|
|
|
|
db 0x57 ; 07DC push di
|
|
|
|
db 0x51 ; 07DD push cx
|
|
|
|
db 0x8B, 0xF7 ; 07DE mov si,di
|
|
|
|
db 0x03, 0xF2 ; 07E0 add si,dx
|
|
|
|
db 0x03, 0xF9 ; 07E2 add di,cx
|
|
|
|
db 0xA1, 0x9A, 0x0A ; 07E4 mov ax,[0xa9a]
|
|
|
|
db 0x2B, 0xC2 ; 07E7 sub ax,dx
|
|
|
|
db 0x03, 0xC1 ; 07E9 add ax,cx
|
|
|
|
db 0x3B, 0x06, 0x98, 0x0A ; 07EB cmp ax,[0xa98]
|
|
|
|
db 0x73, 0x1B ; 07EF jnc 0x80c
|
|
|
|
db 0x87, 0x06, 0x9A, 0x0A ; 07F1 xchg ax,[0xa9a]
|
|
|
|
db 0x8B, 0xC8 ; 07F5 mov cx,ax
|
|
|
|
db 0x2B, 0xCE ; 07F7 sub cx,si
|
|
|
|
db 0x3B, 0xF7 ; 07F9 cmp si,di
|
|
|
|
db 0x77, 0x05 ; 07FB ja 0x802
|
|
|
|
db 0x03, 0xF1 ; 07FD add si,cx
|
|
|
|
db 0x03, 0xF9 ; 07FF add di,cx
|
|
|
|
db 0xFD ; 0801 std
|
|
|
|
db 0x41 ; 0802 inc cx
|
|
|
|
db 0xF3, 0xA4 ; 0803 rep movsb
|
|
|
|
db 0xFC ; 0805 cld
|
|
|
|
db 0x59 ; 0806 pop cx
|
|
|
|
db 0x5F ; 0807 pop di
|
|
|
|
db 0x5E ; 0808 pop si
|
|
|
|
db 0xF3, 0xA4 ; 0809 rep movsb
|
|
|
|
db 0xC3 ; 080B ret
|
2021-07-30 14:14:37 +00:00
|
|
|
|
|
|
|
oom: ; 080c
|
|
|
|
mov dx, oom_str
|
|
|
|
mov ah, sys_print_string
|
|
|
|
int 0x21
|
2021-07-30 15:57:47 +00:00
|
|
|
jmp editor_mainloop
|
2021-07-30 14:14:37 +00:00
|
|
|
|
2021-07-30 16:33:40 +00:00
|
|
|
command_a: ; 08cd
|
2021-07-29 20:19:41 +00:00
|
|
|
db 0xB8, 0x23, 0x25 ; 0816 mov ax,0x2523
|
|
|
|
db 0xBA, 0x7D, 0x08 ; 0819 mov dx,0x87d
|
|
|
|
db 0xCD, 0x21 ; 081C int 0x21
|
|
|
|
db 0x8B, 0x1E, 0x80, 0x0A ; 081E mov bx,[0xa80]
|
|
|
|
db 0x0B, 0xDB ; 0822 or bx,bx
|
|
|
|
db 0x75, 0x04 ; 0824 jnz 0x82a
|
|
|
|
db 0x8B, 0x1E, 0x90, 0x0A ; 0826 mov bx,[0xa90]
|
|
|
|
db 0xE8, 0x55, 0xFC ; 082A call 0x482
|
|
|
|
db 0x8B, 0x0E, 0x9A, 0x0A ; 082D mov cx,[0xa9a]
|
|
|
|
db 0x8B, 0xF1 ; 0831 mov si,cx
|
|
|
|
db 0x2B, 0xCF ; 0833 sub cx,di
|
|
|
|
db 0x41 ; 0835 inc cx
|
|
|
|
db 0x8B, 0x3E, 0x98, 0x0A ; 0836 mov di,[0xa98]
|
|
|
|
db 0xFD ; 083A std
|
|
|
|
db 0xF3, 0xA4 ; 083B rep movsb
|
|
|
|
db 0x87, 0xFE ; 083D xchg di,si
|
|
|
|
db 0xFC ; 083F cld
|
|
|
|
db 0x47 ; 0840 inc di
|
|
|
|
db 0x8B, 0xEE ; 0841 mov bp,si
|
|
|
|
db 0x8B, 0xDA ; 0843 mov bx,dx
|
|
|
|
db 0x89, 0x3E, 0x92, 0x0A ; 0845 mov [0xa92],di
|
|
|
|
db 0x89, 0x1E, 0x90, 0x0A ; 0849 mov [0xa90],bx
|
|
|
|
db 0x89, 0x2E, 0x9A, 0x0A ; 084D mov [0xa9a],bp
|
|
|
|
db 0xE8, 0x5E, 0xFC ; 0851 call 0x4b2
|
|
|
|
db 0xBA, 0x1E, 0x0C ; 0854 mov dx,0xc1e
|
|
|
|
db 0xB4, 0x0A ; 0857 mov ah,0xa
|
|
|
|
db 0xCD, 0x21 ; 0859 int 0x21
|
|
|
|
db 0xE8, 0xC4, 0x00 ; 085B call 0x922
|
|
|
|
db 0xBE, 0x20, 0x0C ; 085E mov si,0xc20
|
|
|
|
db 0x82 ; 0861 db 0x82
|
|
|
|
db 0x3C, 0x1A ; 0862 cmp al,0x1a
|
|
|
|
db 0x74, 0x25 ; 0864 jz 0x88b
|
|
|
|
db 0x8A, 0x4C, 0xFF ; 0866 mov cl,[si-0x1]
|
|
|
|
db 0xB5, 0x00 ; 0869 mov ch,0x0
|
|
|
|
db 0x8B, 0xD6 ; 086B mov dx,si
|
|
|
|
db 0x03, 0xD1 ; 086D add dx,cx
|
|
|
|
db 0x42 ; 086F inc dx
|
|
|
|
db 0x3B, 0xD5 ; 0870 cmp dx,bp
|
|
|
|
db 0x73, 0x98 ; 0872 jnc 0x80c
|
|
|
|
db 0xF3, 0xA4 ; 0874 rep movsb
|
|
|
|
db 0xA4 ; 0876 movsb
|
|
|
|
db 0xB0, 0x0A ; 0877 mov al,0xa
|
|
|
|
db 0xAA ; 0879 stosb
|
|
|
|
db 0x43 ; 087A inc bx
|
|
|
|
db 0xEB, 0xC8 ; 087B jmp short 0x845
|
|
|
|
db 0x8C, 0xC8 ; 087D mov ax,cs
|
|
|
|
db 0x8E, 0xD8 ; 087F mov ds,ax
|
|
|
|
db 0x8E, 0xC0 ; 0881 mov es,ax
|
|
|
|
db 0x8E, 0xD0 ; 0883 mov ss,ax
|
|
|
|
db 0xBC, 0x48, 0x0D ; 0885 mov sp,0xd48
|
|
|
|
db 0xE8, 0x92, 0x00 ; 0888 call 0x91d
|
|
|
|
db 0x8B, 0x2E, 0x9A, 0x0A ; 088B mov bp,[0xa9a]
|
|
|
|
db 0x8B, 0x3E, 0x92, 0x0A ; 088F mov di,[0xa92]
|
|
|
|
db 0x8B, 0xF5 ; 0893 mov si,bp
|
|
|
|
db 0x46 ; 0895 inc si
|
|
|
|
db 0x8B, 0x0E, 0x98, 0x0A ; 0896 mov cx,[0xa98]
|
|
|
|
db 0x2B, 0xCD ; 089A sub cx,bp
|
|
|
|
db 0xF3, 0xA4 ; 089C rep movsb
|
|
|
|
db 0x4F ; 089E dec di
|
|
|
|
db 0x89, 0x3E, 0x9A, 0x0A ; 089F mov [0xa9a],di
|
|
|
|
db 0xE9, 0xCD, 0xF9 ; 08A3 jmp 0x273
|
2021-07-30 16:33:40 +00:00
|
|
|
|
|
|
|
command_cr: ; 08a6
|
2021-07-29 20:19:41 +00:00
|
|
|
db 0xBA, 0x45, 0x0A ; 08A6 mov dx,0xa45
|
|
|
|
db 0xB4, 0x09 ; 08A9 mov ah,0x9
|
|
|
|
db 0xCD, 0x21 ; 08AB int 0x21
|
|
|
|
db 0xB4, 0x01 ; 08AD mov ah,0x1
|
|
|
|
db 0xCD, 0x21 ; 08AF int 0x21
|
|
|
|
db 0x24, 0x5F ; 08B1 and al,0x5f
|
|
|
|
db 0x3C, 0x59 ; 08B3 cmp al,0x59
|
|
|
|
db 0x75, 0x66 ; 08B5 jnz 0x91d
|
|
|
|
db 0xBA, 0x58, 0x0A ; 08B7 mov dx,0xa58
|
|
|
|
db 0xB4, 0x10 ; 08BA mov ah,0x10
|
|
|
|
db 0xCD, 0x21 ; 08BC int 0x21
|
|
|
|
db 0xB4, 0x13 ; 08BE mov ah,0x13
|
|
|
|
db 0xCD, 0x21 ; 08C0 int 0x21
|
|
|
|
db 0xCD, 0x20 ; 08C2 int 0x20
|
|
|
|
db 0xC7, 0x06, 0x80, 0x0A, 0xFF, 0xFF ; 08C4 mov word [0xa80],0xffff
|
|
|
|
db 0xE8, 0xA3, 0xFA ; 08CA call 0x370
|
2021-07-30 16:33:40 +00:00
|
|
|
|
|
|
|
command_w: ; 08cd
|
2021-07-29 20:19:41 +00:00
|
|
|
db 0xC6, 0x06, 0x7F, 0x0A, 0x01 ; 08CD mov byte [0xa7f],0x1
|
|
|
|
db 0xBB, 0xFF, 0xFF ; 08D2 mov bx,0xffff
|
|
|
|
db 0xE8, 0x63, 0xFB ; 08D5 call 0x43b
|
|
|
|
db 0xF6, 0x06, 0x7E, 0x0A, 0xFF ; 08D8 test byte [0xa7e],0xff
|
|
|
|
db 0x74, 0xE5 ; 08DD jz 0x8c4
|
|
|
|
db 0x8B, 0x16, 0x9A, 0x0A ; 08DF mov dx,[0xa9a]
|
|
|
|
db 0xB4, 0x1A ; 08E3 mov ah,0x1a
|
|
|
|
db 0xCD, 0x21 ; 08E5 int 0x21
|
|
|
|
db 0xB9, 0x01, 0x00 ; 08E7 mov cx,0x1
|
|
|
|
db 0xBA, 0x58, 0x0A ; 08EA mov dx,0xa58
|
|
|
|
db 0xB4, 0x28 ; 08ED mov ah,0x28
|
|
|
|
db 0xCD, 0x21 ; 08EF int 0x21
|
|
|
|
db 0xB4, 0x10 ; 08F1 mov ah,0x10
|
|
|
|
db 0xCD, 0x21 ; 08F3 int 0x21
|
|
|
|
db 0xBE, 0x5C, 0x00 ; 08F5 mov si,0x5c
|
|
|
|
db 0x8D, 0x7C, 0x10 ; 08F8 lea di,[si+0x10]
|
|
|
|
db 0x8B, 0xD6 ; 08FB mov dx,si
|
|
|
|
db 0xB9, 0x09, 0x00 ; 08FD mov cx,0x9
|
|
|
|
db 0xF3, 0xA4 ; 0900 rep movsb
|
|
|
|
db 0xBE, 0x3E, 0x09 ; 0902 mov si,0x93e
|
|
|
|
db 0xA5 ; 0905 movsw
|
|
|
|
db 0xA4 ; 0906 movsb
|
|
|
|
db 0xB4, 0x17 ; 0907 mov ah,0x17
|
|
|
|
db 0xCD, 0x21 ; 0909 int 0x21
|
|
|
|
db 0xBE, 0x5C, 0x00 ; 090B mov si,0x5c
|
|
|
|
db 0xBF, 0x68, 0x0A ; 090E mov di,0xa68
|
|
|
|
db 0xB9, 0x06, 0x00 ; 0911 mov cx,0x6
|
|
|
|
db 0xF3, 0xA5 ; 0914 rep movsw
|
|
|
|
db 0xBA, 0x58, 0x0A ; 0916 mov dx,0xa58
|
|
|
|
db 0xCD, 0x21 ; 0919 int 0x21
|
|
|
|
db 0xCD, 0x20 ; 091B int 0x20
|
2021-07-30 14:14:37 +00:00
|
|
|
|
|
|
|
newline: ; 091d
|
|
|
|
mov al, 13 ; CR
|
|
|
|
call print_char
|
|
|
|
mov al, 10 ; LF
|
|
|
|
|
|
|
|
print_char: ; 0924
|
|
|
|
push dx
|
|
|
|
xchg ax, dx
|
|
|
|
mov ah, sys_print_char
|
|
|
|
int 0x21
|
|
|
|
xchg ax, dx
|
|
|
|
pop dx
|
|
|
|
ret
|
|
|
|
|
|
|
|
ctrl_break_handler: ; 092d
|
|
|
|
mov ax, cs
|
|
|
|
mov ds, ax
|
|
|
|
mov es, ax
|
|
|
|
mov ss, ax
|
|
|
|
mov sp, stack.end
|
|
|
|
|
|
|
|
call newline
|
|
|
|
|
2021-07-30 15:57:47 +00:00
|
|
|
jmp editor_mainloop
|
2021-07-29 21:40:42 +00:00
|
|
|
|
2021-07-30 10:20:59 +00:00
|
|
|
bak_extension db "BAK" ; 093e
|
2021-07-29 21:40:42 +00:00
|
|
|
|
|
|
|
invalid_name_error db "Invalid drive or file name$" ; 0941
|
|
|
|
filename_missing_error db "File name must be specified$" ; 095c
|
2021-07-30 10:20:59 +00:00
|
|
|
bak_error db "Cannot edit .BAK file--rename file$" ; 0978
|
|
|
|
directory_full_error db "No room in directory for file$" ; 099b
|
2021-07-29 21:40:42 +00:00
|
|
|
__09b9 db "Disk full--file write not completed$"
|
2021-07-30 14:14:37 +00:00
|
|
|
oom_str db 13, 10, "Insufficient memory", 13, 10, '$' ; 09dd
|
2021-07-30 15:57:47 +00:00
|
|
|
entry_error db "Entry error", 13, 10, '$' ; 09f5
|
2021-07-30 10:20:59 +00:00
|
|
|
new_file_str db "New file", 13, 10, '$' ; 0a03
|
2021-07-29 21:40:42 +00:00
|
|
|
__0a0e db "Not found", 13, 10, '$'
|
|
|
|
__0a1a db "O.K.? $"
|
|
|
|
__0a21 db "Line too long", 13, 10, '$'
|
2021-07-30 14:14:37 +00:00
|
|
|
eof_str db "End of input file", 13, 10, '$' ; 0a31
|
2021-07-29 21:40:42 +00:00
|
|
|
__0a45 db "Abort edit (Y/N)? $"
|
2021-07-30 09:38:41 +00:00
|
|
|
|
|
|
|
; 0a58
|
2021-07-30 10:20:59 +00:00
|
|
|
section .bss
|
2021-07-30 11:16:19 +00:00
|
|
|
__0a58_fcb: resb 37 ; 0a58 … 0a7c
|
2021-07-30 10:20:59 +00:00
|
|
|
|
2021-07-30 15:57:47 +00:00
|
|
|
__0a7d: resb 1
|
2021-07-30 10:20:59 +00:00
|
|
|
|
2021-07-30 11:16:19 +00:00
|
|
|
new_file_flag: resb 1 ; 0a7e
|
2021-07-30 10:20:59 +00:00
|
|
|
__0a7f: resb 1
|
2021-07-30 09:38:41 +00:00
|
|
|
|
2021-07-30 14:14:37 +00:00
|
|
|
__0a80: resw 1
|
2021-07-30 15:57:47 +00:00
|
|
|
__0a82: resw 1
|
|
|
|
resb 12
|
|
|
|
current_line: resw 1 ; 0a90
|
2021-07-30 14:14:37 +00:00
|
|
|
__0a92: resw 1
|
2021-07-30 11:16:19 +00:00
|
|
|
|
|
|
|
__0a94: resw 1
|
|
|
|
__0a96: resw 1
|
|
|
|
__0a98: resw 1
|
|
|
|
|
2021-07-30 14:14:37 +00:00
|
|
|
__0a9a: resw 1
|
|
|
|
|
2021-07-30 14:21:55 +00:00
|
|
|
input_buffer:
|
|
|
|
.size: resb 1 ; 0a9c
|
|
|
|
.fill: resb 1; 0a9d
|
|
|
|
.bufstart: resb 128 ; 0a9e
|
|
|
|
.bufend: ; 0b1e
|
2021-07-30 14:14:37 +00:00
|
|
|
|
2021-07-30 14:21:55 +00:00
|
|
|
resb 256
|
2021-07-30 14:14:37 +00:00
|
|
|
|
|
|
|
__0c1e: resb 1
|
|
|
|
|
|
|
|
resb 41
|
2021-07-30 11:16:19 +00:00
|
|
|
|
|
|
|
stack: resb 256 ; 0c48
|
|
|
|
.end: ; 0d48
|
|
|
|
|
2021-07-30 14:14:37 +00:00
|
|
|
__0d48: resb 1
|
2021-07-30 09:38:41 +00:00
|
|
|
|
2021-07-30 15:57:47 +00:00
|
|
|
file_buffer: ; 0d49
|