home *** CD-ROM | disk | FTP | other *** search
/ ARM Club 1 / ARM_CLUB_CD.iso / contents / apps / program / s / smallfont / SmallFontS (.txt) < prev    next >
Encoding:
RISC OS BBC BASIC V Source  |  1994-09-22  |  9.6 KB  |  425 lines

  1.  >SmallFontS
  2.  NM 1993
  3. $;" at line ";
  4.  "OS_File",10,"SmallFont",&FFA,,code%,O%
  5.  "OS_Module",11,code%,O%-code%
  6.  code% &8000
  7. swichunk%=&CDE00
  8. Small_Char=swichunk%
  9.     wp=12
  10.     sp=13
  11. link=14
  12.     PC=15
  13.  pass=4 
  14. O%=code%
  15. [ OPT pass
  16. EQUD 0
  17. EQUD 0
  18. EQUD 0
  19. EQUD 0
  20. EQUD Title_String
  21. EQUD Help_String
  22. EQUD 0
  23. EQUD swichunk%
  24. EQUD SWI_Handler
  25. EQUD SWI_Names
  26. EQUD 0
  27. .Title_String
  28. EQUS "SmallFont"
  29. EQUB 0
  30. .Help_String
  31. (7EQUS "Small Font"+
  32. 9+"1.12 ("+
  33. $,5,11)+") 
  34.  NSoft"
  35. EQUB 13
  36. *3EQUS "This module is designed for use mode 13."
  37. EQUB 0
  38. ,    ALIGN
  39. .SWI_Names
  40. EQUS "Small"
  41. EQUB 0
  42. EQUS "Char"
  43. EQUB 0
  44. EQUS "String"
  45. EQUB 0
  46. EQUB 0
  47. 6    ALIGN
  48. .SWI_Handler
  49. LDR R12,[R12]
  50. :"CMP R11,#(end_SWI-start_SWI)/4
  51. ADDCC PC,PC,R11,LSL #2
  52. B unknown_SWI
  53. .start_SWI
  54. B SWI_Char
  55. B SWI_String
  56. .end_SWI
  57. .unknown_SWI
  58. ADR R0,unknown_SWI_error
  59. RS PC,R14,#1<<28
  60. .unknown_SWI_error
  61. EQUD &1E6
  62. EQUS "SWI not known"
  63. EQUB 0
  64. J    ALIGN
  65. .SWI_Char
  66. N%; R0=
  67. II Code, R1=X pos, R2=Y pos
  68. STMFD R13!,{R1-R11,R14}
  69. MOV R7,R0
  70. MOV R8,R1
  71. MOV R9,R2
  72. ; Find letter addr
  73. SUB R7,R7,#32
  74. CMP R7,#(end-start)/4
  75. ADDCC PC,PC,R7,LSL #2
  76. B unknown
  77. .start
  78. B char32
  79. B char33
  80. B char34
  81. B char35
  82. B char36
  83. B char37
  84. B char38
  85. B char39
  86. B char40
  87. B char41
  88. B char42
  89. B char43
  90. B char44
  91. B char45
  92. B char46
  93. B char47
  94. B char48
  95. B char49
  96. B char50
  97. B char51
  98. B char52
  99. B char53
  100. B char54
  101. B char55
  102. B char56
  103. B char57
  104. B char58
  105. B char59
  106. B char60
  107. B char61
  108. B char62
  109. B char63
  110. B char64
  111. B charA
  112. B charB
  113. B charC
  114. B charD
  115. B charE
  116. B charF
  117. B charG
  118. B charH
  119. B charI
  120. B charJ
  121. B charK
  122. B charL
  123. B charM
  124. B charN
  125. B charO
  126. B charP
  127. B charQ
  128. B charR
  129. B charS
  130. B charT
  131. B charU
  132. B charV
  133. B charW
  134. B charX
  135. B charY
  136. B charZ
  137. B char91
  138. B char92
  139. B char93
  140. B char94
  141. B char95
  142. .plot_char
  143. ; First row
  144. ; First point
  145. LDRB R0,[R10,#0]
  146. CMP R0,#
  147. ("1")
  148. ADDEQ R1,R8,#0
  149. ADDEQ R2,R9,#0
  150. Q R0,#69
  151. SWIEQ "OS_Plot"
  152. ; Second point
  153. LDRB R0,[R10,#1]
  154. CMP R0,#
  155. ("1")
  156. ADDEQ R1,R8,#4
  157. ADDEQ R2,R9,#0
  158. Q R0,#69
  159. SWIEQ "OS_Plot"
  160. ; Third point
  161. LDRB R0,[R10,#2]
  162. CMP R0,#
  163. ("1")
  164. ADDEQ R1,R8,#8
  165. ADDEQ R2,R9,#0
  166. Q R0,#69
  167. SWIEQ "OS_Plot"
  168. ; Second row
  169. ; First point
  170. LDRB R0,[R10,#3]
  171. CMP R0,#
  172. ("1")
  173. ADDEQ R1,R8,#0
  174. ADDEQ R2,R9,#4
  175. Q R0,#69
  176. SWIEQ "OS_Plot"
  177. ; Second point
  178. LDRB R0,[R10,#4]
  179. CMP R0,#
  180. ("1")
  181. ADDEQ R1,R8,#4
  182. ADDEQ R2,R9,#4
  183. Q R0,#69
  184. SWIEQ "OS_Plot"
  185. ; Third point
  186. LDRB R0,[R10,#5]
  187. CMP R0,#
  188. ("1")
  189. ADDEQ R1,R8,#8
  190. ADDEQ R2,R9,#4
  191. Q R0,#69
  192. SWIEQ "OS_Plot"
  193. ; Third row
  194. ; First point
  195. LDRB R0,[R10,#6]
  196. CMP R0,#
  197. ("1")
  198. ADDEQ R1,R8,#0
  199. ADDEQ R2,R9,#8
  200. Q R0,#69
  201. SWIEQ "OS_Plot"
  202. ; Second point
  203. LDRB R0,[R10,#7]
  204. CMP R0,#
  205. ("1")
  206. ADDEQ R1,R8,#4
  207. ADDEQ R2,R9,#8
  208. Q R0,#69
  209. SWIEQ "OS_Plot"
  210. ; Third point
  211. LDRB R0,[R10,#8]
  212. CMP R0,#
  213. ("1")
  214. ADDEQ R1,R8,#8
  215. ADDEQ R2,R9,#8
  216. Q R0,#69
  217. SWIEQ "OS_Plot"
  218. ; Fourth row
  219. ; First point
  220. LDRB R0,[R10,#9]
  221. CMP R0,#
  222. ("1")
  223. ADDEQ R1,R8,#0
  224. ADDEQ R2,R9,#12
  225. Q R0,#69
  226. SWIEQ "OS_Plot"
  227. ; Second point
  228. LDRB R0,[R10,#10]
  229. CMP R0,#
  230. ("1")
  231. ADDEQ R1,R8,#4
  232. ADDEQ R2,R9,#12
  233. Q R0,#69
  234. SWIEQ "OS_Plot"
  235. ; Third point
  236. LDRB R0,[R10,#11]
  237. CMP R0,#
  238. ("1")
  239. ADDEQ R1,R8,#8
  240. ADDEQ R2,R9,#12
  241. Q R0,#69
  242. SWIEQ "OS_Plot"
  243. ; Fifth row
  244. ; First point
  245. LDRB R0,[R10,#12]
  246. CMP R0,#
  247. ("1")
  248. ADDEQ R1,R8,#0
  249. ADDEQ R2,R9,#16
  250. Q R0,#69
  251. SWIEQ "OS_Plot"
  252. ; Second point
  253. LDRB R0,[R10,#13]
  254. CMP R0,#
  255. ("1")
  256. ADDEQ R1,R8,#4
  257. ADDEQ R2,R9,#16
  258. Q R0,#69
  259. SWIEQ "OS_Plot"
  260. ; Third point
  261. LDRB R0,[R10,#14]
  262. CMP R0,#
  263. ("1")
  264. ADDEQ R1,R8,#8
  265. ADDEQ R2,R9,#16
  266. Q R0,#69
  267. SWIEQ "OS_Plot"
  268. LDMFD R13!,{R1-R11,PC}
  269. MOV PC,R14
  270. (2.data32 EQUS "000000000000000"         ; <spc>
  271. )'.char32 ADR R10,data32: B plot_char
  272. *..data33 EQUS "010000010010010"         ; !
  273. +'.char33 ADR R10,data33: B plot_char
  274. ,..data34 EQUS "000000000000010"         ; "
  275. -'.char34 ADR R10,data34: B plot_char
  276. ...data35 EQUS "000000000000000"         ; #
  277. /'.char35 ADR R10,data35: B plot_char
  278. 0..data36 EQUS "000000000000000"         ; $
  279. 1'.char36 ADR R10,data36: B plot_char
  280. 2..data37 EQUS "000000000000000"         ; %
  281. 3'.char37 ADR R10,data37: B plot_char
  282. 4..data38 EQUS "000000000000000"         ; &
  283. 5'.char38 ADR R10,data38: B plot_char
  284. 6..data39 EQUS "000000000000010"         ; '
  285. 7'.char39 ADR R10,data39: B plot_char
  286. 8..data40 EQUS "001010010010001"         ; (
  287. 9'.char40 ADR R10,data40: B plot_char
  288. :..data41 EQUS "100010010010100"         ; )
  289. ;'.char41 ADR R10,data41: B plot_char
  290. <..data42 EQUS "010111010111010"         ; *
  291. ='.char42 ADR R10,data42: B plot_char
  292. >..data43 EQUS "000010111010000"         ; +
  293. ?'.char43 ADR R10,data43: B plot_char
  294. @..data44 EQUS "100010000000000"         ; ,
  295. A'.char44 ADR R10,data44: B plot_char
  296. B..data45 EQUS "000000111000000"         ; -
  297. C'.char45 ADR R10,data45: B plot_char
  298. D..data46 EQUS "010000000000000"         ; .
  299. E'.char46 ADR R10,data46: B plot_char
  300. F..data47 EQUS "100010010010001"         ; /
  301. G'.char47 ADR R10,data47: B plot_char
  302. H..data48 EQUS "111101101101111"         ; 0
  303. I'.char48 ADR R10,data48: B plot_char
  304. J..data49 EQUS "010010010110010"         ; 1
  305. K'.char49 ADR R10,data49: B plot_char
  306. L..data50 EQUS "111100111001111"         ; 2
  307. M'.char50 ADR R10,data50: B plot_char
  308. N..data51 EQUS "111001011001111"         ; 3
  309. O'.char51 ADR R10,data51: B plot_char
  310. P..data52 EQUS "001111101100100"         ; 4
  311. Q'.char52 ADR R10,data52: B plot_char
  312. R..data53 EQUS "111001111100111"         ; 5
  313. S'.char53 ADR R10,data53: B plot_char
  314. T..data54 EQUS "111101111100100"         ; 6
  315. U'.char54 ADR R10,data54: B plot_char
  316. V..data55 EQUS "010010010001111"         ; 7
  317. W'.char55 ADR R10,data55: B plot_char
  318. X..data56 EQUS "111101111101111"         ; 8
  319. Y'.char56 ADR R10,data56: B plot_char
  320. Z..data57 EQUS "001001111101111"         ; 9
  321. ['.char57 ADR R10,data57: B plot_char
  322. \..data58 EQUS "000010000010000"         ; :
  323. ]'.char58 ADR R10,data58: B plot_char
  324. ^..data59 EQUS "100010010000010"         ; ;
  325. _'.char59 ADR R10,data59: B plot_char
  326. `..data60 EQUS "001010100010100"         ; <
  327. a'.char60 ADR R10,data60: B plot_char
  328. b..data61 EQUS "000111000111000"         ; =
  329. c'.char61 ADR R10,data61: B plot_char
  330. d..data62 EQUS "100010001010100"         ; >
  331. e'.char62 ADR R10,data62: B plot_char
  332. f..data63 EQUS "010000010001011"         ; ?
  333. g'.char63 ADR R10,data63: B plot_char
  334. h..data64 EQUS "000000000000000"         ; @
  335. i'.char64 ADR R10,data64: B plot_char
  336. j!.dataA EQUS "101101111101111"
  337. k%.charA ADR R10,dataA: B plot_char
  338. l!.dataB EQUS "110101110101110"
  339. m%.charB ADR R10,dataB: B plot_char
  340. n!.dataC EQUS "111100100100111"
  341. o%.charC ADR R10,dataC: B plot_char
  342. p!.dataD EQUS "110101101101110"
  343. q%.charD ADR R10,dataD: B plot_char
  344. r!.dataE EQUS "111100110100111"
  345. s%.charE ADR R10,dataE: B plot_char
  346. t!.dataF EQUS "100100110100111"
  347. u%.charF ADR R10,dataF: B plot_char
  348. v!.dataG EQUS "111101101100111"
  349. w%.charG ADR R10,dataG: B plot_char
  350. x!.dataH EQUS "101101111101101"
  351. y%.charH ADR R10,dataH: B plot_char
  352. z!.dataI EQUS "111010010010111"
  353. {%.charI ADR R10,dataI: B plot_char
  354. |!.dataJ EQUS "110010010010111"
  355. }%.charJ ADR R10,dataJ: B plot_char
  356. ~!.dataK EQUS "101101110101101"
  357. %.charK ADR R10,dataK: B plot_char
  358. !.dataL EQUS "111100100100100"
  359. %.charL ADR R10,dataL: B plot_char
  360. !.dataM EQUS "101101101111101"
  361. %.charM ADR R10,dataM: B plot_char
  362. !.dataN EQUS "101111111111101"
  363. %.charN ADR R10,dataN: B plot_char
  364. !.dataO EQUS "111101101101111"
  365. %.charO ADR R10,dataO: B plot_char
  366. !.dataP EQUS "100100111101111"
  367. %.charP ADR R10,dataP: B plot_char
  368. !.dataQ EQUS "001111101101111"
  369. %.charQ ADR R10,dataQ: B plot_char
  370. !.dataR EQUS "101101110101111"
  371. %.charR ADR R10,dataR: B plot_char
  372. !.dataS EQUS "111001111100111"
  373. %.charS ADR R10,dataS: B plot_char
  374. !.dataT EQUS "010010010010111"
  375. %.charT ADR R10,dataT: B plot_char
  376. !.dataU EQUS "111101101101101"
  377. %.charU ADR R10,dataU: B plot_char
  378. !.dataV EQUS "010101101101101"
  379. %.charV ADR R10,dataV: B plot_char
  380. !.dataW EQUS "101111101101101"
  381. %.charW ADR R10,dataW: B plot_char
  382. !.dataX EQUS "101101010101101"
  383. %.charX ADR R10,dataX: B plot_char
  384. !.dataY EQUS "010010010101101"
  385. %.charY ADR R10,dataY: B plot_char
  386. !.dataZ EQUS "111100010001111"
  387. %.charZ ADR R10,dataZ: B plot_char
  388. ..data91 EQUS "111100100100111"         ; [
  389. '.char91 ADR R10,data91: B plot_char
  390. ..data92 EQUS "001010010010100"         ; \
  391. '.char92 ADR R10,data92: B plot_char
  392. ..data93 EQUS "111001001001111"         ; ]
  393. '.char93 ADR R10,data93: B plot_char
  394. ..data94 EQUS "010000010010010"         ; !
  395. '.char94 ADR R10,data94: B plot_char
  396. ..data95 EQUS "111000000000000"         ; !
  397. '.char95 ADR R10,data95: B plot_char
  398.     ALIGN
  399. .unknown_error
  400. EQUD 0
  401. $EQUS "ASCII code not supported."
  402. EQUB 0
  403.     ALIGN
  404. .unknown
  405. ADR R0,unknown_error
  406. LDMFD R13!,{R1-R11,R14}
  407. RS PC,R14,#1<<28
  408. MOV PC,R14
  409. .SWI_String
  410. #; R0=String, R1=X pos, R2=Y pos
  411. STMFD R13!,{R1-R11,R14}
  412. MOV R7,R0
  413. MOV R6,#0
  414.     .loop
  415. LDRB R0,[R7,R6]
  416. CMP R0,#0
  417. BEQ exit
  418. SWI Small_Char
  419. ADD R1,R1,#16
  420. ADD R6,R6,#1
  421. B loop
  422.     .exit
  423. LDMFD R13!,{R1-R11,PC}
  424. MOV PC,R14
  425.