Screen Blank (ROM version)  by Simon Young - for B/B+/M/C with Sideways RAM/BASIC II ( (c) BAU Feb 91 2: < atemp=&70 F xtemp=&71 P ytemp=&72 Z apos=&73 d xpos=&74 n ypos=&75 xastore=&76 xstore=&77 ystore=&78 loloc=&79 hiloc=&7A long=&7B matchpot=&7C typematch=&7D : osbyte=&FFF4 osword=&FFF1 gsinit=&FFC2 gsread=&FFC5 osasci=&FFE3 :  mode=&355  time=&05 " char=&02 ,: 6 pass=4 7 3 @ P%=&8000 J O%=&4000 T [OPT pass ^BRK hBRK rBRK |JMP service  EQUB &82 EQUB nn-&8000  EQUB &01 EQUS "Screen Blank" .nn  EQUB &00 &EQUS "(C)1990 Simon Anthony Young"  EQUB &00 :  .service :  .shove PHA TXA PHA TYA &PHA 0TSX :INX D LDY #&8F N .store XLDA &0000,Y bPHA lDEY v CPY #&6F  BNE store : LDA &0100,X  STA ytemp  STX ypos INX LDA &0100,X  STA xtemp  STX xpos INX LDA &0100,X  STA atemp  STX apos :  LDA atemp  LDX xtemp  LDY ytemp *: 4.destination > CMP #&09 HBEQ servhelp R CMP #&03 \BEQ servboot f CMP #&04 pBEQ servstar z:  .pull  LDA atemp  LDX apos STA &0100,X  LDA xtemp  LDX xpos STA &0100,X  LDA ytemp  LDX ypos STA &0100,X  LDY #&70  .restore PLA STA &0000,Y INY  CPY #&90 $BNE restore .PLA 8TAY BPLA LTAX VPLA `RTS j: t .servhelp ~SEC JSR gsinit BEQ respond LDA #strblank 256  STA loloc LDA #strblank 256  STA hiloc CLC JSR matchch  BCC pull LDA #messblank 256  STA loloc LDA #messblank 256  STA hiloc  JSR wrch  LDA #&00  STA atemp ( JMP pull 2: < .respond FLDA #messbasic 256 P STA loloc ZLDA #messbasic 256 d STA hiloc n JSR wrch x JMP pull :  .servboot LDA #messboot 256  STA loloc LDA #messboot 256  STA hiloc  JSR wrch JMP blankon :  .servstar LDA #strblankon 256  STA loloc LDA #strblankon 256  STA hiloc  LDY ytemp SEC "JSR matchch ,BCS blankon 6: @LDA #strblankoff 256 J STA loloc TLDA #strblankoff 256 ^ STA hiloc h LDY ytemp rSEC |JSR matchch BCS blankoff  JMP pull :  .blankon  LDA #&30  STA &0220  LDA #&FF  STA &0221  LDX #&00  LDY #&FF  LDA #&A8 JSR osbyte  STX loloc  STY hiloc  LDY #&30 LDA #event 256 &STA (loloc),Y 0INY :LDA #event 256 DSTA (loloc),Y NINY X LDA xtemp bSTA (loloc),Y l: v LDX #char  LDA #&0E JSR osbyte  LDX #time  LDA #&0E JSR osbyte : LDX #timetogo 256 LDY #timetogo 256  LDA #&04 JSR osword  LDA atemp  CMP #&03  BNE norm  JMP pull  .norm  LDA #&00  STA atemp * JMP pull 4: > .blankoff H LDX #char R LDA #&0D \JSR osbyte f LDX #time p LDA #&0D zJSR osbyte  LDA #&00  STA atemp  JMP pull :  .event PHA TXA PHA TYA PHA TSX INX  LDY #&8F  .store LDA &0000,Y PHA $DEY . CPY #&6F 8 BNE store BLDA &0100,X L STA ytemp V STX ypos `INX jLDA &0100,X t STA xtemp ~ STX xpos INX LDA &0100,X STA atemp STX apos : LDA atemp LDX xtemp LDY ytemp : CMP #char BEQ charevent CMP #time BEQ timeevent JMP pull : .charevent ( LDA #&D2 2 LDX #&00 < LDY #&00 FJSR osbyte P: ZLDX #timetogo 256 dLDY #timetogo 256 n LDA #&04 xJSR osword : LDA #&07 CMP mode BEQ seven : .notseven LDA #nsdata 256:STA loloc LDA #nsdata 256:STA hiloc JSR wrch JMP pull : .seven LDA #sdata 256  STA loloc LDA #sdata 256  STA hiloc " JSR wrch , JMP pull 6: @.timeevent J LDA #&D2 T LDX #&01 ^ LDY #&00 hJSR osbyte r: | LDA #&07 CMP mode BEQ sevblack LDA #blkdata 256 STA loloc LDA #blkdata 256 STA hiloc JSR wrch JMP pull .sevblack LDA #sblnkdata 256 STA loloc LDA #sblnkdata 256 STA hiloc  JSR wrch  JMP pull : & .matchch 0STA astore :STX xstore D: N LDA #&00 XSTA typematch bADC typematch lSTA typematch v LDX #&00 LDA (loloc,X) STA long LDA loloc TAX TYA STA loloc TXA SEC SBC loloc STA loloc BCS nocar DEC hiloc .nocar : CLC  LDA #&01 ADC loloc * STA loloc 4 LDA #&00 > ADC hiloc H STA hiloc R: \ LDX #&00 f .compare pINX zLDA (loloc),Y STA matchpot JSR gsread BCS endstr #&DF CMP matchpot BEQ compare CMP #(".") &DF BNE nomatch LDA typematch BNE nomatch TXA CMP #&04 BCC nomatch TAY DEY LDX xstore $LDY ystore .SEC 8RTS B: L .nomatch VTXA `TAY jDEY tLDX xstore ~LDA astore CLC RTS :  .endstr TXA  CMP long BCC nomatch  LDY long LDX xstore LDA astore SEC RTS :  .wrch STA astore STX xstore (STY ystore 2: < LDY #&00 FLDA (loloc),Y PTAX ZINY d.vdu nLDA (loloc),Y xJSR osasci INY DEX  BNE vdu : LDA astore LDX xstore LDY ystore RTS :  .strblank  EQUB &05 EQUS "BLANK"  EQUB &00 : .strblankon  EQUB &07 "EQUS "BLANKON" , EQUB &00 6: @.strblankoff J EQUB &08 TEQUS "BLANKOFF" ^ EQUB &00 h: r.messblank | EQUB &29  EQUB &0D EQUS "SAY Screen Blanker"  EQUB &0D EQUS " BLANKON"  EQUB &0D EQUS " BLANKOFF"  EQUB &0D  EQUB &00 : .messbasic  EQUB &07  EQUB &0D EQUS "BLANK"  EQUB &0D :  .messboot & EQUB &14 0EQUS "SAY Screen Blanker" : EQUB &0D D EQUB &0D N: X: b .timetogo l EQUB &24 v EQUB &FA  EQUB &FF  EQUB &FF  EQUB &FF :  .nsdata  EQUB &0A  EQUB &17  EQUB &00  EQUB &08  EQUB &01 EQUW &0000 EQUD &00000000 :  .sdata  EQUB &0A  EQUB &17  EQUB &00 * EQUB &08 4 EQUB &93 >EQUW &0000 HEQUD &00000000 R: \ .blkdata f EQUB &0A p EQUB &17 z EQUB &00  EQUB &08  EQUB &F1 EQUW &0000 EQUD &00000000 .sblnkdata  EQUB &0A  EQUB &17  EQUB &00  EQUB &08  EQUB &F3 EQUW &0000 EQUD &00000000 ]