;******************************************************** ;* * ;* ONE-SECTOR LOADER FOR FIRST STAGE DD BOOT * ;* * ;******************************************************** ; TPA EQU 100H ; ; ... READ CBIOS FROM DOUBLE DENSITY TRACK ZERO ... ; ONESECT: LD HL,TPA LD B,BIOSLEN/1024+1 LD C,1 OSEC2: PUSH HL ;SAVE PARAMETERS PUSH BC CALL MONITR+36 ;CALL MONITOR DISK READ ROUTINE POP BC POP HL JR NZ,BTERR LD DE,1024 ADD HL,DE INC C DJNZ OSEC2 ;REPEAT UNTIL ALL BIOS READ IN LD DE,CBIOS ;BIOS STARTS HERE LD HL,TPA+256 ;BIOS PARKED HERE LD BC,MOVLEN LDIR ;MOVE INTO PLACE ; ; ... PUT COLDSTART INIT HERE TO CONSERVE BIOS SPACE .. ; IF WINCH LD A,RST+ON OUT (SASI+1),A ;RESET SASI BUS CONTROLLER(S) LD A,RST+OFF OUT (SASI+1),A ENDIF IF SERIAL LD HL,(MONITR+16) ;PATCH MONITOR CONOUT VECTOR TO LD (MONITR+13),HL ; DIRECT OUTPUT TO BUILT-IN CRT DRIVER ENDIF LD HL,TPA+128 CALL PMSG ;OUTPUT SIGNON MSG XOR A LD (IOBYTE),A ;CLEAR IOBYTE LD A,USRDRV LD (IOBYTE+1),A ;SET DEFAULT DRIVE/USER FOR COLDSTART LD HL,SCRATCH LD (HL),0 LD DE,SCRATCH+1 LD BC,SCRLEN-1 LDIR ;ZERO-OUT SCRATCH MEMORY FOR BIOS LD HL,LSTINIT LD B,6 LD C,LSTCTL OTIR ;SET PRINTER PARITY/LENGTH/STOP BITS LD B,2 LD C,LSTBAUD OTIR ;SET PRINTER BAUDRATE LD A,1 LD (TRKTAB+4),A ;SET DRIVE ZERO TO DOUBLE DENSITY JP CBIOS ;EXECUTE BIOS COLDSTART ROUTINE ; ; ; LSTINIT: ;SERIAL PRINTER INIT CONSTANTS DEFB 4 DEFB 01000101B ;16X CLOCK / 1 STOP BIT / ODD PARITY DEFB 3 DEFB 01000001B ;RX 7 BIT CHARACTERS DEFB 5 DEFB 10101010B ;TX 7 BIT CHARACTERS / DTR AND RTS HIGH DEFB 01000111B ;PROGRAM CTC AND LOAD TIME CONST DEFB 4 ;DIVIDE BY 4 GIVES 9600 BAUD ; ; ; BTERR: LD A,'?' CALL MONITR+12 ;OUTPUT ERROR INDICATION TO CONSOLE LD A,'G'-64 CALL MONITR+12 JP MONITR+3 ;JUMP BACK TO MONITOR ROM ; ; ;