home *** CD-ROM | disk | FTP | other *** search
/ Run Magazine ReRun 1991 November & December / rerun-1991-11-12b.d64 / lacegeopic (.txt) < prev    next >
GEOS ConVerT  |  2022-09-20  |  7KB  |  337 lines

  1. lACEgEOpIC
  2. prg FORMATTED geos FILE v1.0
  3. pAINT pages
  4. 'lACEgEOpIC.REL
  5. blaster's converter v2.1
  6. wRITE iMAGE v2.1
  7. GEOwRITE    v2.1
  8. .NOEQIN
  9. .NOGLBL
  10. .IFpASS1;oNLY NEED TO INCLUDE THESE FILES
  11. .INCLUDElACEsYM;GET geos DEFINITIONS
  12. .INCLUDElACEmAC;GET geos MACRO DEFINITIONS
  13. .ENDIF
  14. .GLBL
  15. .EQIN
  16. .RAMSECT
  17. iNPUT:.BLOCK640*2+8+80*2;INPUT BUFFER FOR 1 COMPACTED RECORD
  18. oUTpUT1:.BLOCK640*2+8+80*2;OUTPUT BUFFER FOR 2 CARD ROWS WITH COLOR
  19. .PSECT
  20. ;ON ENTRY gEOpIANT PIC FILE NAME IS IN "nAME"
  21. ;AND DISK IS OPENED AND READY TO USE
  22. gETpIC:lOADwR0,nAME
  23. JSRoPENrECORDfILE
  24. BNE999$;oN eRROR ABORT
  25. lOADwA5,0+80;vdc ADDRESS FOR FOREGROUND SCREEN
  26. lOADwA4,$5000-3*80;vdc ADDRESS FOR BACKGROUND SCREEN
  27. lOADwA6,$C4A0;vdc ADDRESS FOR FORECOLOR MEMORY
  28. lOADwA7,$D800+80;vdc ADDRESS FOR BACKCOLOR MEMORY
  29. lOADbA9l,25;NUMBER OF RECORDS TO DISPLAY (50 CARD ROWS)
  30. LDAsTARTrEC
  31. JSRpOINTrECORD
  32. BNE99$
  33. 10$lOADwR2,640*2+8+80*2;mAXIMUM NUMBER OF BYTES THAT CAN BE READ
  34. lOADwR7,iNPUT
  35. JSRrEADrECORD
  36. TAY;SAVE REC STATUS FLAG
  37. TXA;cHECK FOR DISK ERROR
  38. BNE99$;IF X<>0 THEN DISK ERROR, ABORT
  39. TYA;cHECK REC STATUS FLAG
  40. BEQ20$;IF STATUS=0 THEN RECORD IS EMPTY, dO EMPTY REC
  41. ;uNPACK RECORD AND DISPLAY
  42. JSRuNpACK
  43. JSRpUTvDC
  44. BRA30$
  45. ;FILL OUTPUT BUFFER WITH eMPTY DATA, (bLANK SCREEN, WITH DEFAULT GEOS COLORS)
  46. 20$SEI
  47. JSReMPTYrEC
  48. JSRpUTvDC
  49. 30$DECA9l;eXIT IF NO MORE 
  50. BEQ99$;       RECORDS TO DISPLAY
  51. JSRnEXTrECORD
  52. BEQ10$;IF NO ERROR DO AGAIN
  53. 99$RTS;EXIT dISPLAY
  54. 999$PLA;iF THERE IS AN ERROR WHILE TRYING TO 
  55. PLA;OPEN A FILE THEN ABORT BACK TO 
  56. JMPcLICK;THE FILE BOX
  57. pROCtABLE:.WORDkEYpROC
  58. .WORD1
  59. kEYpROC:JSRtEMPhIDEmOUSE
  60. LDAKEYdATA
  61. LDX#0
  62. STXKEYdATA
  63. CMP#key_f1
  64. BEQ10$
  65. CMP#key_f3
  66. BEQ20$
  67. CMP#key_f5
  68. BEQ30$
  69. 00$RTS
  70. 10$LDA#0
  71. pROCtABLE:.WORDkEYpROC
  72. .WORD1
  73. kEYpROC:JSRtEMPhIDEmOUSE
  74. LDAKEYdATA
  75. LDX#0
  76. STXKEYdATA
  77. CMP#key_f1
  78. BEQ10$
  79. CMP#key_f3
  80. BEQ20$
  81. CMP#key_f5
  82. BEQ30$
  83. 00$RTS
  84. 10$LDA#0
  85. CMPsTARTrEC
  86. BEQ00$
  87. STAsTARTrEC;f1=tOP OF PAGE
  88. JSRcLEARvdc
  89. JMPgETpIC
  90. 20$LDA#10
  91. CMPsTARTrEC
  92. BEQ00$
  93. STAsTARTrEC;f3=mIDDLE OF PAGE
  94. JSRcLEARvdc
  95. JMPgETpIC
  96. 30$LDA#20
  97. CMPsTARTrEC
  98. BEQ00$
  99. STAsTARTrEC;f4=bOTTOM OF PAGE
  100. JSRcLEARvdc
  101. JMPgETpIC
  102. uNpACK:lOADwA0,iNPUT
  103. lOADwA1,oUTpUT1
  104. uNl:LDY#0
  105. LDA(A0),Y
  106. BEQueXIT;zERO = END OF RECORD
  107. CMP#$40
  108. BCS10$
  109. JSRup1;cOMPACTION COMMAND 1
  110. BRAuNl
  111. 10$BEQueXIT;INVALID COMMAND, ABORT RECORD
  112. CMP#$80
  113. BCS20$
  114. JSRup2;cOMPACTION COMMAND 2
  115. BRAuNl
  116. 20$BEQueXIT;INVALID COMMAND, ABORT RECORD
  117. JSRup3;cOMPACTION COMMAND 3
  118. BRAuNl
  119. ueXIT:RTS
  120. eMPTYrEC:;FILL OUTPUT BUFFER
  121. JSRI_fILLrAM
  122. .WORD640*2
  123. .WORDoUTpUT1
  124. .BYTE0
  125. JSRI_fILLrAM
  126. .WORD80*2
  127. .WORDoUTpUT1+640*2+8
  128. .BYTE$0F
  129. up1:PHA
  130. aDDvw1,A0
  131. 10$LDA(A0),Y
  132. STA(A1),Y
  133. BPL10$
  134. ADCA0l
  135. STAA0l
  136. LDA#0
  137. ADCA0h
  138. STAA0h
  139. ADCA1l
  140. STAA1l
  141. LDA#0
  142. ADCA1h
  143. STAA1h
  144. up1:PHA
  145. aDDvw1,A0
  146. 10$LDA(A0),Y
  147. STA(A1),Y
  148. BPL10$
  149. ADCA0l
  150. STAA0l
  151. LDA#0
  152. ADCA0h
  153. STAA0h
  154. ADCA1l
  155. STAA1l
  156. LDA#0
  157. ADCA1h
  158. STAA1h
  159. up2:SEC
  160. SBC#$40
  161. aDDvw1,A0
  162. 5$LDY#7
  163. 10$LDA(A0),Y
  164. STA(A1),Y
  165. BPL10$
  166. LDA#8
  167. ADCA1l
  168. STAA1l
  169. LDA#0
  170. ADCA1h
  171. STAA1h
  172. BNE5$
  173. 30$aDDvw8,A0
  174. 99$RTS
  175. up3:S
  176. up3:SEC
  177. SBC#$80
  178. STAA3l
  179. LDY#1
  180. LDA(A0),Y
  181. LDYA3l
  182. 10$STA(A1),Y
  183. BPL10$
  184. LDAA3l
  185. ADCA1l
  186. STAA1l
  187. LDA#0
  188. ADCA1h
  189. STAA1h
  190. aDDvw2,A0
  191. pUTvDC:JSRcONVcOL;
  192. pUTvDC:JSRcONVcOL;40 COL COLORS MUST BE CONVERTED TO vdc COLORS
  193. JSRpUTeVcO;pUT EVEN SCAN LINES TO FORESCREEN
  194. JSRpUToDcO;PUT ODD SCAN LINES TO BACKSCREEN
  195. JSRpUTeVsC;PUT COLORS TO FRONT COLOR RAM
  196. JSRpUToDsC;PUT COLORS TO BACK COLOR RAM
  197. cONVcOL:lOADwA0,oUTpUT1+640*2+8
  198. LDY#0
  199. 10$LDA(A0),Y
  200. JSRcVT
  201. STA(A0),Y
  202. CPY#160
  203. BNE10$
  204. cVT:PHA
  205. AND#%00001111
  206. LDAcOLtABLE,X
  207. ROLA
  208. ROLA
  209. ROLA
  210. ROLA
  211. STAtEMP
  212. AND#%11110000
  213. LSRA
  214. LSRA
  215. LSRA
  216. LSRA
  217. LDAcOLtABLE,X
  218. ORAtEMP
  219. cOLtABLE:.BYTE0,15,8,6,11,4,2,13,12,10,9,0,1,5,3,14
  220. tEMP:.BYTE0
  221. ;40 COL COLOR80COL CONVERSION
  222. ;0=bLACK0=BLACK
  223. ;1=wHITE15=WHITE
  224. ;2=rED8=DARK RED
  225. ;3=cYAN6=DARK CYAN
  226. ;4=pURPLE11=LIGHT PURPLE
  227. ;5=gREEN4=DARK GREEN
  228. ;6=BLUE2=DARK BLUE
  229. ;7=YELLOW13=LIGHT YELLOW
  230. ;8=ORANGE12=DARK YELLOW
  231. ;9=BROWN10=dARK PURPLE
  232. ;10=LIGHT RED9=LIGHT RED
  233. ;11=DARK GREY0=BLACK
  234. ;12=MEDIUM GREY1=DARK GREY
  235. ;13=LIGHT GREEN5=LIGHT GREEN
  236. ;14=LIGHT BLUE3=LIGHT BLUE
  237. ;15=LIGHT GREY14=LIGHT GREY
  238. pUTeVsC:lOADwA0,oUTpUT1
  239. lOADwA1,oUTpUT1
  240. LDX#18
  241. LDAA4h
  242. JSRwRvdc
  243. LDAA4l
  244. JSRwRvdc
  245. LDX#31
  246. LDY#0
  247. 3$lOADbA3l,2;2 CARD ROWS
  248. 4$lOAD
  249. pUTeVsC:lOADwA0,oUTpUT1
  250. lOADwA1,oUTpUT1
  251. LDX#18
  252. LDAA4h
  253. JSRwRvdc
  254. LDAA4l
  255. JSRwRvdc
  256. LDX#31
  257. LDY#0
  258. 3$lOADbA3l,2;2 CARD ROWS
  259. 4$lOADbA2h,4;4 TIMES PER CARD ROW (eVERY OTHER ROW)
  260. 5$lOADbA2l,80;dO 80 BYTES ACCROSS
  261. 10$LDA(A1),Y
  262. JSRwRvdc
  263. aDDvw8,A1
  264. aDDvw1,A4
  265. DECA2l
  266. BNE10$
  267. DECA2h
  268. BEQ20$
  269. aDDvw2,A0
  270. mOVEwA0,A1
  271. BRA5$
  272. 20$DECA3l
  273. BEQ30$
  274. lOADwA0,oUTpUT1
  275. aDDvw640,A0
  276. mOVEwA0,A1
  277. BRA4$
  278. 30$RTS
  279. pUToD
  280. pUToDsC:lOADwA0,oUTpUT1+1
  281. lOADwA1,oUTpUT1+1
  282. LDX#18
  283. LDAA5h
  284. JSRwRvdc
  285. LDAA5l
  286. JSRwRvdc
  287. LDX#31
  288. LDY#0
  289. 3$lOADbA3l,2;2 CARD ROWS
  290. 4$lOADbA2h,4;4 TIMES PER CARD ROW (eVERY OTHER ROW)
  291. 5$lOADbA2l,80;dO 80 BYTES ACCROSS
  292. 10$LDA(A1),Y
  293. JSRwRvdc
  294. aDDvw8,A1
  295. aDDvw1,A5
  296. DECA2l
  297. BNE10$
  298. DECA2h
  299. BEQ20$
  300. aDDvw2,A0
  301. mOVEwA0,A1
  302. BRA5$
  303. 20$DECA3l
  304. BEQ30$
  305. lOADwA0,oUTpUT1+1
  306. aDDvw640,A0
  307. mOVEwA0,A1
  308. BRA4$
  309. 30$RTS
  310. pUTeVcO:lOADwA0,oUTpUT1+640*2+8
  311. LDX#18
  312. LDAA6h
  313. JSRwRvdc
  314. LDAA6l
  315. JSRwRvdc
  316. LDY#0
  317. LDX#31
  318. 10$LDA(A0),Y
  319. JSRwRvdc
  320. aDDvw1,A6
  321. CPY#160
  322. BNE10$
  323. pUToDcO:lOADw
  324. pUToDcO:lOADwA0,oUTpUT1+640*2+8
  325. LDX#18
  326. LDAA7h
  327. JSRwRvdc
  328. LDAA7l
  329. JSRwRvdc
  330. LDY#0
  331. LDX#31
  332. 10$LDA(A0),Y
  333. JSRwRvdc
  334. aDDvw1,A7
  335. CPY#160
  336. BNE10$
  337.