More symbolicity
This commit is contained in:
parent
aef2ee578c
commit
6fa68e1fc1
48
edlin.asm
48
edlin.asm
|
@ -3,10 +3,28 @@ org 0x100
|
||||||
|
|
||||||
; FCB defines
|
; FCB defines
|
||||||
fcb_filename equ 1
|
fcb_filename equ 1
|
||||||
|
fcb_extension equ fcb_filename + 8
|
||||||
|
|
||||||
; PSP defines
|
; PSP defines
|
||||||
psp_fcb_1 equ 0x005c
|
psp_fcb_1 equ 0x005c
|
||||||
|
|
||||||
|
; Syscall defined
|
||||||
|
sys_print_string equ 9
|
||||||
|
sys_open_file equ 0xf
|
||||||
|
sys_delete_file equ 0x13
|
||||||
|
sys_create_file equ 0x16
|
||||||
|
|
||||||
|
; Special instruction encodings
|
||||||
|
%macro or_al_al 0
|
||||||
|
db 0x0a, 0xc0 ; or al, al (longer encoding)
|
||||||
|
%endmacro
|
||||||
|
|
||||||
|
%macro cmp_byteaddr_bytext 2
|
||||||
|
db 0x82, 0x3e ; cmp byte […], byte +… (extended)
|
||||||
|
dw %1
|
||||||
|
db %2
|
||||||
|
%endmacro
|
||||||
|
|
||||||
jmp entrypoint
|
jmp entrypoint
|
||||||
|
|
||||||
__0102:
|
__0102:
|
||||||
|
@ -28,16 +46,15 @@ entrypoint: ; 0181
|
||||||
mov sp, stack_end
|
mov sp, stack_end
|
||||||
|
|
||||||
ensure_file_argument:
|
ensure_file_argument:
|
||||||
db 0x82, 0x3e ; cmp byte […], byte +… (extended)
|
cmp_byteaddr_bytext psp_fcb_1 + fcb_filename, ' '
|
||||||
dw psp_fcb_1 + fcb_filename
|
|
||||||
db ' '
|
|
||||||
je print_filename_missing_error
|
je print_filename_missing_error
|
||||||
|
|
||||||
db 0x0a, 0xc0 ; or al, al (longer encoding)
|
; AL at program start a flag of whether drive specifier in first parameter valid
|
||||||
|
or_al_al
|
||||||
mov dx, invalid_name_error
|
mov dx, invalid_name_error
|
||||||
jnz _trampoline_error_1
|
jnz _trampoline_error_1
|
||||||
|
|
||||||
mov si, __093e
|
mov si, bak_extension
|
||||||
mov di, psp_fcb_1 + fcb_filename + 8
|
mov di, psp_fcb_1 + fcb_filename + 8
|
||||||
mov cx, 3
|
mov cx, 3
|
||||||
repe cmpsb
|
repe cmpsb
|
||||||
|
@ -343,7 +360,7 @@ db 0xCD, 0x21 ; 0477 int 0x21
|
||||||
db 0xBA, 0xB9, 0x09 ; 0479 mov dx,0x9b9
|
db 0xBA, 0xB9, 0x09 ; 0479 mov dx,0x9b9
|
||||||
|
|
||||||
error: ; 047c
|
error: ; 047c
|
||||||
mov ah, 9
|
mov ah, sys_print_string
|
||||||
int 0x21
|
int 0x21
|
||||||
int 0x20
|
int 0x20
|
||||||
|
|
||||||
|
@ -855,16 +872,16 @@ db 0xBC, 0x48, 0x0D ; 0935 mov sp,0xd48
|
||||||
db 0xE8, 0xE2, 0xFF ; 0938 call 0x91d
|
db 0xE8, 0xE2, 0xFF ; 0938 call 0x91d
|
||||||
db 0xE9, 0x35, 0xF9 ; 093B jmp 0x273
|
db 0xE9, 0x35, 0xF9 ; 093B jmp 0x273
|
||||||
|
|
||||||
__093e db "BAK"
|
bak_extension db "BAK" ; 093e
|
||||||
|
|
||||||
invalid_name_error db "Invalid drive or file name$" ; 0941
|
invalid_name_error db "Invalid drive or file name$" ; 0941
|
||||||
filename_missing_error db "File name must be specified$" ; 095c
|
filename_missing_error db "File name must be specified$" ; 095c
|
||||||
__0978 db "Cannot edit .BAK file--rename file$"
|
bak_error db "Cannot edit .BAK file--rename file$" ; 0978
|
||||||
__099b db "No room in directory for file$"
|
directory_full_error db "No room in directory for file$" ; 099b
|
||||||
__09b9 db "Disk full--file write not completed$"
|
__09b9 db "Disk full--file write not completed$"
|
||||||
__09dd db 13, 10, "Insufficient memory", 13, 10, '$'
|
__09dd db 13, 10, "Insufficient memory", 13, 10, '$'
|
||||||
__09f5 db "Entry error", 13, 10, '$'
|
__09f5 db "Entry error", 13, 10, '$'
|
||||||
__0a03 db "New file", 13, 10, '$'
|
new_file_str db "New file", 13, 10, '$' ; 0a03
|
||||||
__0a0e db "Not found", 13, 10, '$'
|
__0a0e db "Not found", 13, 10, '$'
|
||||||
__0a1a db "O.K.? $"
|
__0a1a db "O.K.? $"
|
||||||
__0a21 db "Line too long", 13, 10, '$'
|
__0a21 db "Line too long", 13, 10, '$'
|
||||||
|
@ -872,7 +889,14 @@ __0a31 db "End of input file", 13, 10, '$'
|
||||||
__0a45 db "Abort edit (Y/N)? $"
|
__0a45 db "Abort edit (Y/N)? $"
|
||||||
|
|
||||||
; 0a58
|
; 0a58
|
||||||
|
section .bss
|
||||||
|
__0a58:
|
||||||
|
|
||||||
__0a7f equ 0x0a7f
|
resb 38
|
||||||
|
|
||||||
stack_end equ 0x0d48
|
__0a7e: resb 1
|
||||||
|
__0a7f: resb 1
|
||||||
|
|
||||||
|
resb 712
|
||||||
|
|
||||||
|
stack_end: ; 0d48
|
||||||
|
|
Loading…
Reference in New Issue