Files
erkyrath.infocom-zcode-terps/acorn/disk.asm
Andrew Plotkin b642da811e Initial commit.
2023-11-16 18:19:54 -05:00

54 lines
1.1 KiB
NASM

PAGE
SBTTL "DISK ACCESS: ACORN"
;****************************
;READ/WRITE A BLOCK TO IOBUFF
;****************************
;ENTRY: TRACK SET TO TRACK # (0-79)
; SECTOR SET TO SECTOR # (0-7)
; DRIVE SET TO 0 OR 1
; CARRY CLEAR TO READ, SET TO WRITE
;NOTE: PARAMS (NUMBER OF PARAMETERS) PERMANENTLY 3
; L (SECTOR LENGTH) PERMANENTLY $21 (ACORN CODE = 256 + 1)
DISK: BCS DWRITE
LDA #RDCMD ;SET INSTRUCTION BYTE TO READ A BLOCK
STA COMMD
JMP TODISK ;ALWAYS BRANCH
DWRITE: LDA #WTCMD ;ELSE SET TO WRITE A BLOCK
STA COMMD
TODISK: LDA #0 ;MAKE SURE RESULT BYTE IS CLEAR
STA RWRSLT
LDA #3 ;SET PARAMETER COUNT TO 3
STA PARAM
LDA #$21 ;SET SECTOR LENGTH TO 256
STA L
LDA #0
STA MEMADD+2 ;SET MEMORY ADDR TO RECEIVE BLOCK (IOBUFF)
STA MEMADD+3
LDY #HIGH IOBUFF
LDX #LOW IOBUFF
STY MEMADD+1 ;4 BYTES = LOW HIGHER HIGHER HIGHEST
STX MEMADD ;USE ONLY 2 BYTES SO 1ST 2 - LOWEST.
;READ/WRITE A SECTOR
LDY #HIGH SECBLK ;GET INSTRUCTION BLOCK
LDX #LOW SECBLK
LDA #$7F ;TELL OSWORD TO R/W A SECTOR
JSR OSWORD
LDA RWRSLT ;OK?
CMP #0
BNE BADWRT ;NO, FAILED
CLC
RTS ;RET OK
BADWRT: SEC
RTS ;RET CARRY SET = NO GOOD
END