> Mode/src v1.20  Select thin MODEs 8-14  by J.G.Harston (: 27 <7OSBYTE=&FFF4:OSARGS=&FFDA:OSWRCH=&FFEE:RAWVDU=&FFBC F,start%=&FFFF7000:zp=&A8:num=&AA:font=&AB P opt%=0 3 3 Z P%=start% d [OPT opt% n .error x.BRK:EQUB 220:EQUS "Syntax: Mode ":BRK : .get_digit BLDA (zp),Y:INY:BCC get_decimal :\ CC=check for decimal digit CCMP #"A":BCC get_decimal :\ <'A', check for decimal digit  #&DF:CMP #"F"+1 BCS get_digit_exit:SBC #6 .get_digit_ok  #15:CLC:RTS .get_decimal 6CMP #"9"+1:BCS get_digit_exit :\ CS=bad character "CMP #"0":BCS get_digit_ok:SEC .get_digit_exit RTS : .go% $LDA #1:LDX #zp:LDY #0:JSR OSARGS " LDA (zp),Y:CMP #13:BEQ error ,(CMP #"&":CLC:BNE get_num :\ CC=dec 69SEC:INY :\ CS=hex, step past '&' @ .get_num J'PHP:JSR get_digit:BCS error:STA num T.get_num_lp ^*PLP:PHP:JSR get_digit:BCS get_num_done h#TAX:LDA num:PLP:PHP:BCS get_hex r$ASL A:ASL A:ADC num:JMP get_num2 | .get_hex ASL A:ASL A:ASL A  .get_num2 )ASL A:STA num:CLC:TXA:ADC num:STA num BCS error:BCC get_num_lp : .get_num_done  PLP:LDA #0:LDX #1:JSR OSBYTE &CMP #96:BNE mode_continue:LDX #&C2 H.mode_continue R$\ X=0RRRRRRR - re-enter language \*\ X=10xxxxxx - don't re-enter language f5\ X=11000010 - BASIC, becomes &84 for OSBYTE call pPLA:TAY:TXA:PHA z: LDX #mode_table-mode_set  .mode_lp LDA mode_set,X:STA &100,X DEX:BPL mode_lp TYA:BEQ mode_setup  LDA num: #7:ASL A:ASL A:TAX LDA mode_table+3,X %LSR A:LSR A:LSR A:PHA :\ colours #LDA mode_table+0,X:PHA :\ width (LDA mode_table+1,X:PHA :\ bytes/char LDA num: #&80 &A mode_table+3,X :\ base mode  #&87:A #&40:STA num $LDA mode_table+2,X:TAX :\ cursor 1LSR A:BCC mode_setup:LDY #&AA:\ adjust bitmap .mode_setup $LDA #22:JSR OSWRCH .LDA num:JMP &100 8: B1\ This routine copied to &100+ to change mode L .mode_set V#JSR OSWRCH :\ base mode `"TYA:BEQ no_palette :\ old mode jBPL not_mode13 tSTA &362:LSR A:STA &363 ~'LDA #1:STA &361 :\ adust bitmaps .not_mode13 #LDA #154:JSR OSBYTE:\ video ULA )PLA:STA &34F :\ bytes/character PLA:STA &30A :\ width !PLA:BEQ no_palette :\ colours STA &360:LDA #20:JSR RAWVDU .no_palette PLA:BPL Sel_Lang ASL A:BPL Not_Basic JSR OSBYTE -STX 4:STY 5:STX 6:STY 7:\ Reset BASIC's .Not_Basic RTS  9.Sel_Lang :\ changed, so re-enter language TAX:LDA #142:JMP OSBYTE : (.mode_table 24\ colours+basemode, ULA value, bytes/char, width <6EQUD &0198084F:\ mode 8 80x32x4 4-colour 0 F6EQUD &02D41027:\ mode 9 40x32x16 16-colour 1 PQEQUD &82F42013:\ mode 10 20x32x16 256-colour 2 not possible -> 16 colours Z6EQUD &1B98084F:\ mode 11 80x25x4 4-colour 3 dHEQUD &05840827:\ mode 12 40x32x2 4-colour 4, small-memory 1 nHEQUD &7DC11013:\ mode 13 20x32x4 16-colour 5, small-memory 2 x6EQUD &1E840827:\ mode 14 40x25x4 4-colour 6 %EQUD &074A0127:\ mode 15 40x25x8 EQUS "v1.20"  .chars ] "LOAD ThinSet "+~P% F"*SAVE Mode ";~start%;" ";~P%+&380;" ";~go%&FFFF0000;" ";~start%