home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CP/M
/
CPM_CDROM.iso
/
simtel
/
sigm
/
vols000
/
vol026
/
myboot.z80
< prev
next >
Wrap
Text File
|
1984-04-29
|
2KB
|
81 lines
;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: