System information
;* *
;* THE WRITE ENTRY POINT TAKES THE PLACE OF *
;* THE PREVIOUS BIOS DEFINTION FOR WRITE. *
;* *
;*****************************************************
WRITE:
;WRITE THE SELECTED CP/M SECTOR
004B AF XRA A ;0 TO ACCUMULATOR
004C 327301 STA READOP ;NOT A READ OPERATION
004F 79 MOV A,C ;WRITE TYPE IN C
0050 327401 STA WRTYPE
0053 FE02 CPI WRUAL ;WRITE UNALLOCATED?
0055 C26F00 JNZ CHKUNA ;CHECK FOR UNALLOC
;
; WRITE TO UNALLOCATED, SET PARAMETERS
0058 3E10 MVI A,BLKSIZ/128 ;NEXT UNALLOC RECS
005A 326C01 STA UNACNT
005D 3A6101 LDA SEKDSK ;DISK TO SEEK
0060 326D01 STA UNADSK ;UNADSK = SEKDSK
0063 2A6201 LHLD SEKTRK
0066 226E01 SHLD UNATRK ;UNATRK = SECTRK
0069 3A6401 LDA SEKSEC
006C 327001 STA UNASEC ;UNASEC = SEKSEC
;
CHKUNA:
;CHECK FOR WRITE TO UNALLOCATED SECTOR
006F 3A6C01 LDA UNACNT ;ANY UNALLOC REMAIN?
0072 B7 ORA A
0073 CAAE00 JZ ALLOC ;SKIP IF NOT
;
; MORE UNALLOCATED RECORDS REMAIN
0076 3D DCR A ;UNACNT = UNACNT-1
0077 326C01 STA UNACNT
007A 3A6101 LDA SEKDSK ;SAME DISK?
007D 216D01 LXI H,UNADSK
0080 BE CMP M ;SEKDSK = UNADSK?
0081 C2AE00 JNZ ALLOC ;SKIP IF NOT
;
; DISKS ARE THE SAME
0084 216E01 LXI H,UNATRK
0087 CD5301 CALL SEKTRKCMP ;SEKTRK = UNATRK?
008A C2AE00 JNZ ALLOC ;SKIP IF NOT
;
; TRACKS ARE THE SAME
008D 3A6401 LDA SEKSEC ;SAME SECTOR?
Appendix G : Blocking and Deblocking Algorithms CP/M Operating System Manual
G-4