;******************************************************** ;* * ;* ONE-SECTOR LOADER FOR FIRST STAGE DD BOOT * ;* * ;******************************************************** ; ; ; ... READ CBIOS FROM SINGLE DENSITY TRACK ZERO ... ; ONESECT: LD HL,DIRBUF LD C,2 CALL MONITR+36 ;READ SIGNON MESSAGE INTO TEMP BUFFER JR NZ,BTERR LD HL,CBIOS LD B,BIOSLEN/128 LD C,3 OSEC2: PUSH HL ;SAVE PARAMETERS PUSH BC CALL MONITR+36 ;CALL MONITOR DISK READ ROUTINE POP BC POP HL JR NZ,BTERR LD DE,128 ADD HL,DE INC C DJNZ OSEC2 ;REPEAT UNTIL 12 SECTOR BIOS READ IN ; ; ... 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,DIRBUF CALL PMSG ;OUTPUT SIGNON MSG PARKED IN 'DIRBUF' 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,12 LD (NREVS),A ;MAKE DRIVE READY WAIT 12 REVOLUTIONS 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 ; ; ;