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