PAGE SBTTL "--- MACHINE COLDSTART: APPLE II ---" ; --------- ; COLDSTART ; --------- COL80: DB 0 ; 80-COLUMN FLAG SIG: DB 0 ; IIc FLAG STRYSL: DB 0 ; BOOT SLOT STRYDR: DB 0 ; BOOT DRIVE P80: DB "80-COLUMN DISPLAY? (Y/N) >" P80L EQU $-P80 ; FINISH LOADING THE ZIP COLD: LDA BSLOT ; SET UP STA DCBSLT ; CURRENT AND STA DCBPSL ; PREVIOUS SLOT IDS LDA #HIGH COUT1 ; SET SCREEN OUTPUT STA CSW+HI ; IN CASE OF PR#6 LDA #LOW COUT1 ; WHICH SETS ALL IN & OUTPUT STA CSW+LO ; TO PR #6 LDX #0 STX DCBSEC ; START WITH SECTOR 0 STX DBUFF+LO ; CLEAR LSB OF [DBUFF] INX ; = 1 STX DCBTRK ; START WITH TRACK 1 STX DCBDRV ; SET UP CURRENT STX DCBPDR ; AND PREVIOUS DRIVE ID LDA #$18 ; START LOAD AT $1800 STA DBUFF+HI LDA #17 ; LOAD ALL OF STA I+LO ; TRACK 1 COLD0: JSR GETRES ; GO THRU ZDOS DEC I+LO ; DONE LOADING? BNE COLD0 ; NO, SO LOOP BACK LDA #$FF ;SET TO NORMAL DISPLAY STA INVFLG ; DETERMINE SCREEN CONFIGURATION LDA $FBB3 ; CHECK ID BYTE STA SIG ; SAVE MACHINE ID FOR LATER CMP #$06 ; IS IT A IIE OR IIC? BNE DO40 ; NO, SO DO 40-COL LDA $FBC0 ; IS IT A IIE OR! A IIC BNE COLD1 ; IIE STA SIG ; 0 = IIC COLD1: LDA $C017 ; IS TOP BIT SET? BMI DO40 ; YES, NO 80-COLUMN CARD ; MAKE SURE PLAYER WANTS 80-COLUMN DISPLAY JSR CLS ;CLEAR SCREEN 1ST LDA #10 ;CENTER DISPLAY STA CV LDA #5 STA CH JSR BASCAL ;FORCE IT LDX #LOW P80 LDA #HIGH P80 LDY #P80L JSR DLINE ; PRINT 80-COL PROMPT GET80: JSR RDKEY CMP #$EE ; "n" BEQ DO40 CMP #$CE ; "N" BEQ DO40 CMP #$F9 ; "y" BEQ DO80 CMP #$D9 ; "Y" BEQ DO80 ; CMP #$8D ; EOL? (COMMENTED OUT TO FORCE Y/N Le) ; BEQ DO80 JSR BOOP JMP GET80 ; SET [COL80] "TRUE" FOR 80-COLUMN DO80: JSR $C300 ; INIT 80 COL (PR#3) LDA #$FF BNE SETCOL ; SET [COL80] "FALSE" FOR 40-COLUMN DO40: LDA #0 SETCOL: STA COL80 ; --------------- ; WARMSTART ENTRY ; --------------- WARM: LDA DCBPSL ;SAVE STORY DRIVE AND SLOT LDX DCBPDR ;IN CASE CHANGED BY "SAVE" STA STRYSL STX STRYDR JSR CLS END