home *** CD-ROM | disk | FTP | other *** search
RISC OS BBC BASIC V Source | 1994-09-22 | 9.6 KB | 425 lines |
- >SmallFontS
- NM 1993
- $;" at line ";
- "OS_File",10,"SmallFont",&FFA,,code%,O%
- "OS_Module",11,code%,O%-code%
- code% &8000
- swichunk%=&CDE00
- Small_Char=swichunk%
- wp=12
- sp=13
- link=14
- PC=15
- pass=4
- O%=code%
- [ OPT pass
- EQUD 0
- EQUD 0
- EQUD 0
- EQUD 0
- EQUD Title_String
- EQUD Help_String
- EQUD 0
- EQUD swichunk%
- EQUD SWI_Handler
- EQUD SWI_Names
- EQUD 0
- .Title_String
- EQUS "SmallFont"
- EQUB 0
- .Help_String
- (7EQUS "Small Font"+
- 9+"1.12 ("+
- $,5,11)+")
- NSoft"
- EQUB 13
- *3EQUS "This module is designed for use mode 13."
- EQUB 0
- , ALIGN
- .SWI_Names
- EQUS "Small"
- EQUB 0
- EQUS "Char"
- EQUB 0
- EQUS "String"
- EQUB 0
- EQUB 0
- 6 ALIGN
- .SWI_Handler
- LDR R12,[R12]
- :"CMP R11,#(end_SWI-start_SWI)/4
- ADDCC PC,PC,R11,LSL #2
- B unknown_SWI
- .start_SWI
- B SWI_Char
- B SWI_String
- .end_SWI
- .unknown_SWI
- ADR R0,unknown_SWI_error
- RS PC,R14,#1<<28
- .unknown_SWI_error
- EQUD &1E6
- EQUS "SWI not known"
- EQUB 0
- J ALIGN
- .SWI_Char
- N%; R0=
- II Code, R1=X pos, R2=Y pos
- STMFD R13!,{R1-R11,R14}
- MOV R7,R0
- MOV R8,R1
- MOV R9,R2
- ; Find letter addr
- SUB R7,R7,#32
- CMP R7,#(end-start)/4
- ADDCC PC,PC,R7,LSL #2
- B unknown
- .start
- B char32
- B char33
- B char34
- B char35
- B char36
- B char37
- B char38
- B char39
- B char40
- B char41
- B char42
- B char43
- B char44
- B char45
- B char46
- B char47
- B char48
- B char49
- B char50
- B char51
- B char52
- B char53
- B char54
- B char55
- B char56
- B char57
- B char58
- B char59
- B char60
- B char61
- B char62
- B char63
- B char64
- B charA
- B charB
- B charC
- B charD
- B charE
- B charF
- B charG
- B charH
- B charI
- B charJ
- B charK
- B charL
- B charM
- B charN
- B charO
- B charP
- B charQ
- B charR
- B charS
- B charT
- B charU
- B charV
- B charW
- B charX
- B charY
- B charZ
- B char91
- B char92
- B char93
- B char94
- B char95
- .plot_char
- ; First row
- ; First point
- LDRB R0,[R10,#0]
- CMP R0,#
- ("1")
- ADDEQ R1,R8,#0
- ADDEQ R2,R9,#0
- Q R0,#69
- SWIEQ "OS_Plot"
- ; Second point
- LDRB R0,[R10,#1]
- CMP R0,#
- ("1")
- ADDEQ R1,R8,#4
- ADDEQ R2,R9,#0
- Q R0,#69
- SWIEQ "OS_Plot"
- ; Third point
- LDRB R0,[R10,#2]
- CMP R0,#
- ("1")
- ADDEQ R1,R8,#8
- ADDEQ R2,R9,#0
- Q R0,#69
- SWIEQ "OS_Plot"
- ; Second row
- ; First point
- LDRB R0,[R10,#3]
- CMP R0,#
- ("1")
- ADDEQ R1,R8,#0
- ADDEQ R2,R9,#4
- Q R0,#69
- SWIEQ "OS_Plot"
- ; Second point
- LDRB R0,[R10,#4]
- CMP R0,#
- ("1")
- ADDEQ R1,R8,#4
- ADDEQ R2,R9,#4
- Q R0,#69
- SWIEQ "OS_Plot"
- ; Third point
- LDRB R0,[R10,#5]
- CMP R0,#
- ("1")
- ADDEQ R1,R8,#8
- ADDEQ R2,R9,#4
- Q R0,#69
- SWIEQ "OS_Plot"
- ; Third row
- ; First point
- LDRB R0,[R10,#6]
- CMP R0,#
- ("1")
- ADDEQ R1,R8,#0
- ADDEQ R2,R9,#8
- Q R0,#69
- SWIEQ "OS_Plot"
- ; Second point
- LDRB R0,[R10,#7]
- CMP R0,#
- ("1")
- ADDEQ R1,R8,#4
- ADDEQ R2,R9,#8
- Q R0,#69
- SWIEQ "OS_Plot"
- ; Third point
- LDRB R0,[R10,#8]
- CMP R0,#
- ("1")
- ADDEQ R1,R8,#8
- ADDEQ R2,R9,#8
- Q R0,#69
- SWIEQ "OS_Plot"
- ; Fourth row
- ; First point
- LDRB R0,[R10,#9]
- CMP R0,#
- ("1")
- ADDEQ R1,R8,#0
- ADDEQ R2,R9,#12
- Q R0,#69
- SWIEQ "OS_Plot"
- ; Second point
- LDRB R0,[R10,#10]
- CMP R0,#
- ("1")
- ADDEQ R1,R8,#4
- ADDEQ R2,R9,#12
- Q R0,#69
- SWIEQ "OS_Plot"
- ; Third point
- LDRB R0,[R10,#11]
- CMP R0,#
- ("1")
- ADDEQ R1,R8,#8
- ADDEQ R2,R9,#12
- Q R0,#69
- SWIEQ "OS_Plot"
- ; Fifth row
- ; First point
- LDRB R0,[R10,#12]
- CMP R0,#
- ("1")
- ADDEQ R1,R8,#0
- ADDEQ R2,R9,#16
- Q R0,#69
- SWIEQ "OS_Plot"
- ; Second point
- LDRB R0,[R10,#13]
- CMP R0,#
- ("1")
- ADDEQ R1,R8,#4
- ADDEQ R2,R9,#16
- Q R0,#69
- SWIEQ "OS_Plot"
- ; Third point
- LDRB R0,[R10,#14]
- CMP R0,#
- ("1")
- ADDEQ R1,R8,#8
- ADDEQ R2,R9,#16
- Q R0,#69
- SWIEQ "OS_Plot"
- LDMFD R13!,{R1-R11,PC}
- MOV PC,R14
- (2.data32 EQUS "000000000000000" ; <spc>
- )'.char32 ADR R10,data32: B plot_char
- *..data33 EQUS "010000010010010" ; !
- +'.char33 ADR R10,data33: B plot_char
- ,..data34 EQUS "000000000000010" ; "
- -'.char34 ADR R10,data34: B plot_char
- ...data35 EQUS "000000000000000" ; #
- /'.char35 ADR R10,data35: B plot_char
- 0..data36 EQUS "000000000000000" ; $
- 1'.char36 ADR R10,data36: B plot_char
- 2..data37 EQUS "000000000000000" ; %
- 3'.char37 ADR R10,data37: B plot_char
- 4..data38 EQUS "000000000000000" ; &
- 5'.char38 ADR R10,data38: B plot_char
- 6..data39 EQUS "000000000000010" ; '
- 7'.char39 ADR R10,data39: B plot_char
- 8..data40 EQUS "001010010010001" ; (
- 9'.char40 ADR R10,data40: B plot_char
- :..data41 EQUS "100010010010100" ; )
- ;'.char41 ADR R10,data41: B plot_char
- <..data42 EQUS "010111010111010" ; *
- ='.char42 ADR R10,data42: B plot_char
- >..data43 EQUS "000010111010000" ; +
- ?'.char43 ADR R10,data43: B plot_char
- @..data44 EQUS "100010000000000" ; ,
- A'.char44 ADR R10,data44: B plot_char
- B..data45 EQUS "000000111000000" ; -
- C'.char45 ADR R10,data45: B plot_char
- D..data46 EQUS "010000000000000" ; .
- E'.char46 ADR R10,data46: B plot_char
- F..data47 EQUS "100010010010001" ; /
- G'.char47 ADR R10,data47: B plot_char
- H..data48 EQUS "111101101101111" ; 0
- I'.char48 ADR R10,data48: B plot_char
- J..data49 EQUS "010010010110010" ; 1
- K'.char49 ADR R10,data49: B plot_char
- L..data50 EQUS "111100111001111" ; 2
- M'.char50 ADR R10,data50: B plot_char
- N..data51 EQUS "111001011001111" ; 3
- O'.char51 ADR R10,data51: B plot_char
- P..data52 EQUS "001111101100100" ; 4
- Q'.char52 ADR R10,data52: B plot_char
- R..data53 EQUS "111001111100111" ; 5
- S'.char53 ADR R10,data53: B plot_char
- T..data54 EQUS "111101111100100" ; 6
- U'.char54 ADR R10,data54: B plot_char
- V..data55 EQUS "010010010001111" ; 7
- W'.char55 ADR R10,data55: B plot_char
- X..data56 EQUS "111101111101111" ; 8
- Y'.char56 ADR R10,data56: B plot_char
- Z..data57 EQUS "001001111101111" ; 9
- ['.char57 ADR R10,data57: B plot_char
- \..data58 EQUS "000010000010000" ; :
- ]'.char58 ADR R10,data58: B plot_char
- ^..data59 EQUS "100010010000010" ; ;
- _'.char59 ADR R10,data59: B plot_char
- `..data60 EQUS "001010100010100" ; <
- a'.char60 ADR R10,data60: B plot_char
- b..data61 EQUS "000111000111000" ; =
- c'.char61 ADR R10,data61: B plot_char
- d..data62 EQUS "100010001010100" ; >
- e'.char62 ADR R10,data62: B plot_char
- f..data63 EQUS "010000010001011" ; ?
- g'.char63 ADR R10,data63: B plot_char
- h..data64 EQUS "000000000000000" ; @
- i'.char64 ADR R10,data64: B plot_char
- j!.dataA EQUS "101101111101111"
- k%.charA ADR R10,dataA: B plot_char
- l!.dataB EQUS "110101110101110"
- m%.charB ADR R10,dataB: B plot_char
- n!.dataC EQUS "111100100100111"
- o%.charC ADR R10,dataC: B plot_char
- p!.dataD EQUS "110101101101110"
- q%.charD ADR R10,dataD: B plot_char
- r!.dataE EQUS "111100110100111"
- s%.charE ADR R10,dataE: B plot_char
- t!.dataF EQUS "100100110100111"
- u%.charF ADR R10,dataF: B plot_char
- v!.dataG EQUS "111101101100111"
- w%.charG ADR R10,dataG: B plot_char
- x!.dataH EQUS "101101111101101"
- y%.charH ADR R10,dataH: B plot_char
- z!.dataI EQUS "111010010010111"
- {%.charI ADR R10,dataI: B plot_char
- |!.dataJ EQUS "110010010010111"
- }%.charJ ADR R10,dataJ: B plot_char
- ~!.dataK EQUS "101101110101101"
- %.charK ADR R10,dataK: B plot_char
- !.dataL EQUS "111100100100100"
- %.charL ADR R10,dataL: B plot_char
- !.dataM EQUS "101101101111101"
- %.charM ADR R10,dataM: B plot_char
- !.dataN EQUS "101111111111101"
- %.charN ADR R10,dataN: B plot_char
- !.dataO EQUS "111101101101111"
- %.charO ADR R10,dataO: B plot_char
- !.dataP EQUS "100100111101111"
- %.charP ADR R10,dataP: B plot_char
- !.dataQ EQUS "001111101101111"
- %.charQ ADR R10,dataQ: B plot_char
- !.dataR EQUS "101101110101111"
- %.charR ADR R10,dataR: B plot_char
- !.dataS EQUS "111001111100111"
- %.charS ADR R10,dataS: B plot_char
- !.dataT EQUS "010010010010111"
- %.charT ADR R10,dataT: B plot_char
- !.dataU EQUS "111101101101101"
- %.charU ADR R10,dataU: B plot_char
- !.dataV EQUS "010101101101101"
- %.charV ADR R10,dataV: B plot_char
- !.dataW EQUS "101111101101101"
- %.charW ADR R10,dataW: B plot_char
- !.dataX EQUS "101101010101101"
- %.charX ADR R10,dataX: B plot_char
- !.dataY EQUS "010010010101101"
- %.charY ADR R10,dataY: B plot_char
- !.dataZ EQUS "111100010001111"
- %.charZ ADR R10,dataZ: B plot_char
- ..data91 EQUS "111100100100111" ; [
- '.char91 ADR R10,data91: B plot_char
- ..data92 EQUS "001010010010100" ; \
- '.char92 ADR R10,data92: B plot_char
- ..data93 EQUS "111001001001111" ; ]
- '.char93 ADR R10,data93: B plot_char
- ..data94 EQUS "010000010010010" ; !
- '.char94 ADR R10,data94: B plot_char
- ..data95 EQUS "111000000000000" ; !
- '.char95 ADR R10,data95: B plot_char
- ALIGN
- .unknown_error
- EQUD 0
- $EQUS "ASCII code not supported."
- EQUB 0
- ALIGN
- .unknown
- ADR R0,unknown_error
- LDMFD R13!,{R1-R11,R14}
- RS PC,R14,#1<<28
- MOV PC,R14
- .SWI_String
- #; R0=String, R1=X pos, R2=Y pos
- STMFD R13!,{R1-R11,R14}
- MOV R7,R0
- MOV R6,#0
- .loop
- LDRB R0,[R7,R6]
- CMP R0,#0
- BEQ exit
- SWI Small_Char
- ADD R1,R1,#16
- ADD R6,R6,#1
- B loop
- .exit
- LDMFD R13!,{R1-R11,PC}
- MOV PC,R14
-