home *** CD-ROM | disk | FTP | other *** search
- ;This is the bootstrap that loads at track 0 sector 1
- ;it will be put into memory at 80H by the cold boot in the ROM based BIOS
- ;then it will be executed and read in the next 51 sectors.
- ;Note the ROM BIOS has already figured out density of disk & is stored
- ;as bit 6 @ 42H. (eg. for drive A: 40=dd 00=sd)
- ;
- MSIZE: EQU 60 ;<-----------------------------
- PROM: EQU 0F800H ;<-----------------------------
- LOADER: EQU PROM+39H
- ;
- CBASE: EQU (MSIZE-21)*1024 ;BIAS FOR CPM LARGER THAN 17K <-------
- ;NOTE I HAVE A 2K "BIOS" TO LEAVE ROOM FOR
- ;A VDM BOARD AT EC00H (YOU MAY WANT TO CHANGE
- ;THIS)
- CCP: EQU CBASE+3400H ;START OF CCP
- BDOS: EQU CCP+806H ;START OF BDOS
- BIOS: EQU CCP+1600H ;START OF BIOS
- ;
- CDISK: EQU 04H
- TADDR: EQU 40H
- UNIT: EQU 42H
- SCTR: EQU 43H
- NREC: EQU 45H
- CBFLAG: EQU 5AH ;0 FROM BIOS TO INDICATE WBOOT
- ;
- MONITOR:EQU 0F000H
- CO: EQU MONITOR+9H
- ;
- ORG 80H
- LD SP,80H
- LD A,0C3H ;SETUP JUMPS
- LD (0H),A
- LD HL,BIOS+3 ;SETUP JUMP TO WBOOT
- LD (1),HL
- LD (5),A
- LD HL,BDOS ;SETUP JUMP TO BDOS
- LD (6),HL
- LD A,02H
- LD (SCTR),A ;HAS ALREADY SELECTED DRIVE A: TRACK 0
- LD A,(CBFLAG) ;IS IT A COLD BOOT OR WBOOT
- OR A
- JR Z,WBOOT
- LD A,51 ;TRANSFERR 51 SECTORS FOR COLD BOOT
- JR CBOOT
- WBOOT: LD A,45 ;NEED TRANSFERR ONLY 45 FOR WARM BOOT
- CBOOT: LD (NREC),A
- LD HL,CCP
- LD (TADDR),HL
- CALL LOADER ;TO BIOS TO LOAD IN "N" CONTIGOUS SECTORS
- JR NZ,ERROR
- LD A,(CBFLAG) ;IS IT A COLD BOOT OR WARM BOOT
- OR A
- JR Z,WBOOT1 ;IF ZERO THEN NOT A COLD BOOT
- LD HL,MSG1 ;SIGNON WITH CP/M & ITS SIZE
- CALL PRINT
- WBOOT1: LD A,(CDISK) ;RESTORE CURRENT DISK (OR A: FOR COLD BOOT)
- LD C,A
- JP CCP
- ;
- ERROR: LD HL,MSG2
- CALL PRINT
- HALT
- ;
- ;
- PRINT: LD A,(HL)
- OR A
- RET Z
- LD C,A
- CALL CO
- INC HL
- JR PRINT
- ;
- MSG1: DB 0DH,07H,1CH,09H,09H,15H
- DB MSIZE/10 + '0',MSIZE MOD 10 +'0'
- DB 'K CP/M.'
- DB 11H,0AH,0DH,0H
- ;
- MSG2: DB 0DH,0AH,'LD ERROR',0H
- FINISH EQU $
- END:
-