************************************************************* * * * COLD-BOOT SIGN-ON MESSAGE * * * ************************************************************* PROMPT: IF LDRBIOS DB ACR,ALF,ALF DB 'LOADER FOR MORROW DESIGNS DJ2D CONTROLLER.' DB ACR,ALF,0 ENDIF ;LDRBIOS ; IF NOT LDRBIOS DB ACR,ALF,ALF DB 'CP/M 3.0 (V' ;CP/M VERSION NUMBER DB CPMREV/10+'0' DB '.' DB (CPMREV MOD 10)+'0' DB '), BIOS REV ' DB REVNUM/10+'0','.' ;REVISION NUMBER DB REVNUM MOD 10+'0' DB ACR,ALF DB 'FOR MORROW DESIGNS DJ2D CONTROLLER ' DB '@ 0' IF ORIGIN/4096 > 10 ;CONTROLER ORIGIN (HEX) DB ORIGIN/4096+'A'-10 ELSE DB ORIGIN/4096+'0' ENDIF ;ORIGIN/4096 IF (ORIGIN/256 AND 0FH) > 10 DB (ORIGIN/256 AND 0FH)+'A'-10 ELSE DB (ORIGIN/256 AND 0FH)+'0' ENDIF ;ORIGIN/256 DB '00H.' DB ACR,ALF,0 ENDIF ;NOT LDRBIOS LOG$MSG: DB 13,10,13,10,'CP/M VERSION 3.0',13,10,00 ************************************************************* * * * UTILITY ROUTINE TO OUTPUT THE MESSAGE POINTED AT BY H&L, * * TERMINATED WITH A NULL. ONLY USED DURING COLD BOOT * * * ************************************************************* MESSAGE MOV A,M ;GET A CHARACTER OF THE ; MESSAGE INX H ;BUMP TEXT POINTER ANA A ;TEST FOR END RZ ;RETURN IF DONE PUSH H ;SAVE POINTER TO TEXT MOV C,A ;OUTPUT CHARACTER IN C CALL COUT ;OUTPUT THE CHARACTER POP H ;RESTORE THE POINTER JMP MESSAGE ;CONTINUE UNTIL NULL REACHED ************************************************************* * * * COLD BOOT ROUTINES * * * ************************************************************* CBOOT: IF LDRBIOS ;ITIALIZE TERMINAL OR WHATEVER CALL TINIT ENDIF ;LDRBIOS ; IF NOT LDRBIOS LXI SP,TPA ;SET UP STACK ENDIF ;NOT LDRBIOS ; LXI H,PROMPT ;PREP FOR SENDING SIGNON MESSAGE CALL MESSAGE ;SEND THE PROMPT XRA A ;SELECT DISK A STA CPMDRV STA CDISK ; IF NOT LDRBIOS CALL ?INIT ;INITIALIZE PAGE ZERO AND SCB JMP WBOOT ;WARM-BOOT ; ; SYSTEM INITIALIZATION SUBROUTINE ?INIT: MVI A,JMP ;SET JMPS AT ADDRESSES 0 AND 5 STA 0 STA 5 LXI H,WBOOTE SHLD 1 LHLD @MXTPA SHLD 6 LXI H,1 ;INIT SYSTEM CONTROL BLOCK SHLD @CIVEC SHLD @COVEC LXI H,2 SHLD @LOVEC LXI H,4 SHLD @AIVEC SHLD @AOVEC LXI H,LOG$MSG ; SIGN-ON MESSAGE ON CONSOLE CALL MESSAGE RET