> FONTFX/SRC  v1.00 1988 J.G.Harston  Font effects via OSWRCH (: 2! mcode% &200:load%=&FFFF0961 <*osword=&FFF1:oswrch=&FFFE:vduout=&FFBC F,vduQ=&26A:vduN=&322:dest=&27C:wrchv=&20E P: Z P=0 1 dP%=load%:O%=mcode% n[OPT P*3+4 x.go% PHP:SEI LDX wrchv+0:LDY wrchv+1 CPX #newwrch 255:BNE setup CPY #newwrch 256:BEQ done .setup !STX oldwrchv+0:STY oldwrchv+1 LDX #newwrch 255 LDY #newwrch 256 STX wrchv+0:STY wrchv+1 .done PLP:RTS : .newwrch =PHA:LDA vduQ:BEQ newwrch1 :\ No queue, is it a char? 4CMP #&FF:BNE oldwrch1 :\ Not last param 0LDA block: #22:BEQ newwrch2 :\ Pending MODE "4CMP #18 22:BNE oldwrch1 :\ Pending not GCOL ,6LDA vduN :\ Get GCOL command 6;LSR A: #&46:BNE oldwrch1 :\ Not GCOL -ASC"s" or "t" @PLA:PHA:PHP:DEC vduQ JLDA block:TAX:JSR oldwrch :\ Allow Print/SPOOL/Serial/etc 0PLA:STA dest :: D,CPX #127:BNE output2 :\ Not delete NBIT flag:BPL output1 X0TXA:JSR vduout :\ Wide, do twice b .output1 lLDA #127:JSR vduout v JMP exit :  .output2 LDX #block 255 LDY #block 256 1LDA #10:JSR osword :\ Read definition \ \ Effect bitmap \ 0 1 underline \ 1 2 bold \ 2 4 italics \ 3 8 thin \ 4 16 superscript \ 5 32 subscript \ 6 64 inverse  \ 7 128 wide \  ;LDA flag:PHP:LSR A:PHP :\ Save Wide,Underline flags *2LSR A:BCC TestItalic :\ Skip if not bold 4PHA:LDX #8 > .BoldLp H LDA block,X:ASL A:A block,X R3STA block,X:DEX:BNE BoldLp :\ Thicken character \PLA f: p.TestItalic z4LSR A:BCC TestThin :\ Skip if not italic  LDX #2  .ItalicLp LSR block+1,X:ASL block+6,X 1DEX:BPL ItalicLp :\ Slant character :  .TestThin 2LSR A:BCC TestSuper :\ Skip if not thin PHA:LDX #8  .ThinLp LDA block,X:ASL A: block,X 2STA block,X:DEX:BNE ThinLp :\ Thinen character PLA : .TestSuper + #3:BEQ TestUnder :\ Not Sup/Sub PHA:LDX #&FB $ .SuperLp1 .2LDA block-&FB+3,X :\ Shrink character 8STA block-&FB+2,X BINX:BNE SuperLp1 LLDY block+5:STA block+5 V LDA block `CMP #"f":BCC TestSuper1 j3STY block+4 :\ Adjust lower case t.TestSuper1 ~6TXA:LDX #2 :\ Clear bottom of char  .SuperLp2 "STA block+6,X:DEX:BPL SuperLp2 /PLA:CMP #2:BCC TestUnder :\ Not subscript  LDX #5  .SubLp 0LDA block,X:STA block+3,X :\ Move to bottom LDA #0:STA block,X DEX:BNE SubLp : .TestUnder 8PLP:BCC TestInverse :\ Skip if not underlined 2LDA #255:STA block+8 :\ Add an underline :  .TestInverse -BIT flag:BVC TestWide :\ Not inverse  LDX #8 ( .InvLp 2LDA block,X: #255 <2STA block,X:DEX:BNE InvLp :\ Invert character F: P .TestWide Z2LDY #11 :\ Print one bitmap d*PLP:BPL OutputChar :\ Not wide n LDX #8 x .WideLp LDA block,X:LDY #4  .WideLp1 ,LSR A:PHP:ROR block+11,X :\ Right half PLP:ROR block+11,X DEY:BNE WideLp1  LDY #4  .WideLp2 +LSR A:PHP:ROR block,X :\ Left half PLP:ROR block,X DEY:BNE WideLp2 DEX:BNE WideLp 3LDY #22 :\ Print two bitmaps : .OutputChar LDX #255:STX block  .OutputLp "INX:TXA:PHA:TYA:PHA ,2LDA block-1,X:JSR vduout :\ Send to VDU only 6PLA:TAY:PLA:TAX @DEY:BNE OutputLp J: T .exit ^PLA:TAY:PLA:TAX:PLA:RTS h: r .flag |EQUB 0 :\ Font style flag $EQUB 23 :\ Start of VDU sequence  .block %EQUB 255:EQUS "12345678":EQUB 255  EQUB 23 %EQUB 255:EQUS "JGHv1.00":EQUB 255  .oldwrchv ]: FA$="SAVE FONTFX "+~mcode%+" "+~O%+" "+~(go%-65536)+" "+~load% A$;: A$: