title Cold Start Loader (1/20/82) .z80 ;******************************************************** ;* * ;* -- COLD START LOADER FOR CP/M V2.2 -- * ;* * ;* Russell Smith 7-October-80 * ;* Modified 1/20/82 * ;******************************************************** ; ;Modifications ; 1-20-82 Add switch for 1.4 and syntax for M80 ; CPM14 EQU 1 ;Assemble for V1.4(0 for 2.2) ; MSIZE EQU 60 ;MEMORY CAPACITY IN KBYTES MONITR EQU 0F000H ;BASE ADDRESS OF MONITOR if CPM14 EXTRA EQU MSIZE-20 BASE EQU EXTRA*1024 CCP EQU 3500H+BASE CBIOS EQU 4A00H+BASE else EXTRA EQU MSIZE-20 BASE EQU EXTRA*1024-200H ;Use the -200H only if you org at E800 CCP EQU 3400H+BASE ;This is what DRC is shipping CBIOS EQU 4A00H+BASE ;BASE OF CUSTOM BIOS endif ; ; ; ASEG ORG 900H ;Load address for sysgen .PHASE 128 ;execution address ; START: JR BOOT ; if CPM14 DEFM '59K CP/M V1.4 ' else DEFM '60K CP/M V2.2 ' endif ; PAGE BOOT: LD E,0 ;LOAD E WITH TRACK# LD HL,CCP LD BC,0D02H CALL RDLOOP ;READ EVEN SECTORS ON TRK 0 LD HL,CCP+80H LD BC,0C03H CALL RDLOOP ;READ ODD SECTORS ON TRK 0 LD C,1 ;LOAD C WITH TRACK# CALL MONITR+33 ;CALL MONITOR SEEK ROUTINE JR NZ,ERROR Š LD HL,CCP+0C80H LD BC,0D01H CALL RDLOOP ;READ ODD SECTORS ON TRK 1 LD HL,CCP+0D00H LD BC,0D02H CALL RDLOOP ;READ EVEN SECTORS ON TRK 1 ; JP CBIOS ;JUMP TO CP/M COLD START ENTRY ; ; RDLOOP: PUSH HL ;SAVE PARAMETERS PUSH BC CALL MONITR+36 ;CALL MONITOR DISK READ ROUTINE POP BC POP HL JR NZ,ERROR ;READ ERROR IF Z FLAG SET INC H ;BUMP DATA POINTER BY 256 INC C INC C ;BUMP SECTOR# BY 2 DJNZ RDLOOP RET ; ; ERROR: LD HL,MSG ;POINT TO ERROR MESSAGE PMSG: LD A,(HL) CALL MONITR+9 ;OUTPUT TO MONITOR CONSOLE LD A,(HL) INC HL OR A ;CHECK FOR END OF STRING JR NZ,PMSG ;PRINT ANOTHER BYTE OF NOT JP MONITR+3 ;JUMP BACK TO MONITOR MSG: DEFM ' LOAD ABORTED' DEFB 0 ; .DEPHASE END