Compare commits

...

2 Commits

Author SHA1 Message Date
Juhani Krekelä e161d14321 Reset floppy disks upon read failure 2022-03-29 09:01:56 +03:00
Juhani Krekelä 48436ef9bd Put debug output behind debug define in io.asm 2022-03-29 09:01:56 +03:00
1 changed files with 27 additions and 0 deletions

27
io.asm
View File

@ -1,6 +1,8 @@
; SPDX-License-Identifier: MIT
; Copyright (c) 2021 Juhani 'nortti' Krekelä.
debug equ 1
iosegment equ 60h
dossegment equ iosegment + 1*1024/16 ; DOS starts 1KiB after IO system
@ -64,8 +66,10 @@ init:
shl ax, cl
; Memory size is passed in dx
mov dx, ax
if debug
call hexprint16
call newline
endif
; Disk table is passed in si
mov si, offset iogroup:disks_table
@ -94,9 +98,11 @@ init:
test al, al
jnz open_error
if debug
mov al, '+'
mov ah, 0eh
int 10h
endif
; Set random record field 0
mov word ptr iogroup:command_fcb+33, 0
@ -114,12 +120,14 @@ init:
cmp al, 1
jne read_error
if debug
mov ax, cx
call hexprint16
mov al, '.'
mov ah, 0eh
int 10h
endif
; Set up segments for command.com
mov ds, bx
@ -205,6 +213,7 @@ putch endp
; OUT:
; TODO: Document
diskread proc far
if debug
push ax
mov ax, 0e00h + 'r'
int 10h
@ -226,6 +235,7 @@ diskread proc far
call hexprint16
call newline
pop ax
endif
; TODO: Everything except sregs can be trashed
push es
@ -266,13 +276,25 @@ diskread proc far
dec di
jz sector_read_fail
reset_disk:
if debug
mov al, '"'
mov ah, 0eh
int 10h
endif
xor ax, ax
int 13h
pop cx
pop ax
jmp try_sector_read
sector_read_fail:
mov al, ah
if debug
call hexprint8;debg
endif
mov al, '?'
mov ah, 0eh
int 10h
@ -532,7 +554,9 @@ error:
mov ah, 0eh
mov al, '!'
int 10h
if debug
call far_caller
endif
hang:
hlt
@ -583,6 +607,8 @@ days_since_epoch: dw 0
data ends
code segment
if debug
hexprint16 proc
xchg al, ah
call hexprint8
@ -672,6 +698,7 @@ logaddr proc
ret
logaddr endp
endif
code ends
end