home *** CD-ROM | disk | FTP | other *** search
- LIST NOCOND,NOGEN
- ;
- ;
- LARGESW: EQU 0 ;ONE IF MAXI DRIVE
- ;
- BEGINADR: EQU 0E400H ;THIS IS THE START OF 64K CPM
- ;
- CBOOT EQU BEGINADR+01600H ;THIS IS THE COLD BOOT
- ;
- ORG 0
- ;
- ;CROMEMCO 4FDC I/O ASSIGNMENTS
- CSTATPORT: EQU 00H
- CDATAPORT: EQU 01H
- IMODEPORT: EQU 02H
- IMASKPORT: EQU 03H
- PARLPORT: EQU 04H
- STATPORT: EQU 30H
- TRAKPORT: EQU 31H
- SECTPORT: EQU 32H
- DATAPORT: EQU 33H
- FLAGPORT: EQU 34H
- BANKPORT: EQU 40H
- ;
- START:
- LD A,01H
- OUT BANKPORT,A
- ;
- ;
- LD HL,BEGINADR ;START OF CP/M
- LD DE,51*256+2 ;SECTOR COUNT, FIRST SECTOR
- ;
- ; RESTORE TO TRACK ZERO
- ;
- LD A,21H+LARGESW*10H
- OUT FLAGPORT,A
- LD A,0FH-LARGESW*2
- RST0: OUT STATPORT,A
- RST1: IN A,FLAGPORT
- RRA
- JR NC,RST1
- IN A,STATPORT
- AND A,98H
- JR NZ,START
- ;
- ; READ ONE SECTOR
- ;
- RDI0: LD A,E
- OUT SECTPORT,A
- LD BC,8000H+DATAPORT
- LD A,0A1H+LARGESW*10H
- OUT FLAGPORT,A
- LD A,88H
- OUT STATPORT,A
- RDI1: IN A,FLAGPORT
- RRA
- JR C,RDI3
- INI
- JR NZ,RDI1
- RDI2: IN A,FLAGPORT
- RRA
- JR NC,RDI2
- ;
- ; CHECK STATUS AND READY FOR NEXT SECTOR AND TRACK
- ;
- RDI3: IN A,STATPORT
- AND A,9CH
- JR NZ,START ;RETRY BOOT IF ERROR
- DEC D
- JP Z,CBOOT ;SEE IF ALL DONE
- INC E
- LD A,E ;INCREMENT SECTOR NUMBER
- CP A,19+LARGESW*8
- JR C,RDI0 ;JUMP IF NOT END OF TRACK
- LD E,1
- LD A,5FH-LARGESW*2 ;GO TO NEXT TRACK
- JR RST0
- ;
- END
-