1000 * RECDOS4.M65 1010 .PAGE "READ DATA SECTOR" 1020 * 1030 * RDNXTS - read next sector 1040 * 1050 RDNXTS LDA FCBFLG,X if not upd mode 1060 BEQ RDNSO br 1070 JMP WRTNXS else write first 1080 RDNSO LDA FCBLSN,X if LSN not zero 1090 ORA FCBLSN+1,X 1100 BNE RDNS1 br 1110 SEC else eof 1120 RTS 1130 RDNS1 JSR MVLSN move link to current 1140 CLC read 1150 JSR RWCSIO current sector 1160 BMI RDIOER br if i/o error 1170 LDY #125 1180 LDA (ZSBA),Y test for same file no 1190 AND #$FC mask off sector bits 1200 CMP FCBFNO,X 1210 BNE RDFNMM if not, then error 1220 * update FCB 1230 LDA (ZSBA),Y move link sector 1240 AND #3 mask off file no bits 1250 STA FCBLSN+1,X 1260 INY get lower part of link sector # 1270 LDA (ZSBA),Y 1280 STA FCBLSN,X 1290 INY inc to len byte 1300 LDA (ZSBA),Y get len byte 1310 PHA save it 1320 LDA FCBSLT,X get sector len type 1330 BNE RDNS3 br if new type 1340 PLA get len 1350 BMI RDNS2 br if old short sector 1360 LDA #125 else set full sector 1370 RDNS2 AND #$7F turn off msb 1380 PHA balance stack 1390 RDNS3 PLA 1400 STA FCBMLN,X set max len 1410 LDA #0 set curr data len = 0 1420 STA FCBDLN,X 1430 CLC 1440 RTS 1450 RDIOER JSR ERRIO i/o error 1460 * file number mismatch 1470 RDFNMM LDA ICCOM,X recall cmnd 1480 CMP #$21 was this delete? 1490 BEQ RDDELE br if delete 1500 JSR ERROR otherwise, file number mismatch 1510 .BYTE $A4 (error # 164) 1520 RDDELE SEC indicate eof to delete 1530 RTS 1540 .PAGE "READ/WRITE DIR" 1550 .LOCAL 1560 * 1570 * RDDIR/WRTDIR - read/write directory 1580 * 1590 RDDIR CLC set read 1600 BCC DIRIO 1610 * 1620 WRTDIR SEC set write 1630 * calls DSYSIO with lo byte dir sector in Y, file 1640 * dir buff in X/A (lo/hi) and r/w in carry 1650 DIRIO PHP save read/write 1660 CLC 1670 LDA CDIRS CDIRS + 1680 ADC #$69 ((40*18)/2)+1 (is dir sector number) 1690 TAY into Y (lo byte) 1700 PLP 1710 LDX # >FILDIR file directory buffer in X/A 1720 LDA # FMSORG move DOS start addr to DCB 4760 STA DCBBUF+1 4770 LDY #