;******************************************************** ;* * ;* 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 ALL 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,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 32 ;DIVIDE BY 32 GIVES 1200 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 ; ; ;