home *** CD-ROM | disk | FTP | other *** search
/ Loadstar Extras 3 / Ex3side2.d64 / dtext9.asm < prev    next >
Assembly Source File  |  2022-08-28  |  5KB  |  432 lines

  1. *--------------------------------
  2. * LOADSTAR DTEXT 12/02/96
  3. *
  4. * By Gene Barker
  5. * Courtesy of Mad Man Software
  6. *--------------------------------
  7.  ORG $2800
  8. *--------------------------------
  9. * LABELS
  10. *--------------------------------
  11. STATUS = $90
  12. EAL = $AE
  13. *
  14. SETLFS = $FFBA
  15. SETNAM = $FFBD
  16. OPEN = $FFC0
  17. CLOSE = $FFC3
  18. CHKIN = $FFC6
  19. CHKOUT = $FFC9
  20. CHROUT = $FFD2
  21. CLRCHN = $FFCC
  22. CHRIN = $FFCF
  23. *--------------------------------
  24. * JUMP TABLE
  25. *--------------------------------
  26.  JMP GETSTUFF
  27.  JMP XSETLFS
  28.  JMP XSETNAM
  29.  JMP XLOADE
  30.  JMP RAMLOAD
  31.  JMP PLOAD
  32.  JMP PRAM
  33. PRAM LDA #255
  34.  STA PMODE
  35.  JMP RAMLOAD
  36. *--------------------------------
  37. * GET STUFF (JEFF'S JUNK)
  38. *--------------------------------
  39. GETSTUFF JSR GSTRING
  40.  JSR XSETNAM
  41.  JSR GNUMBER
  42.  TYA
  43.  TAX
  44.  LDA #2
  45.  LDY #0
  46.  JSR XSETLFS
  47.  JSR GNUMBER
  48.  LDA #0
  49.  LDX $14
  50.  LDY $15
  51.  JSR XLOAD
  52.  LDY #0
  53.  TYA
  54.  JSR ROMOUT
  55.  STA (EAL),Y
  56.  JMP ROMIN
  57. ROMIN PHA
  58.  LDA #$77
  59.  STA 1
  60.  CLI
  61.  PLA
  62.  RTS
  63. ROMOUT PHA
  64.  LDA #$74
  65.  SEI
  66.  STA 1
  67.  PLA
  68.  RTS
  69. *--------------------------------
  70. * GSTRING
  71. *--------------------------------
  72. GSTRING JSR $AEFD
  73.  JSR $AD9E
  74.  JSR $B6A3
  75.  LDX $22
  76.  LDY $23
  77.  RTS
  78. *--------------------------------
  79. * GNUMBER
  80. *--------------------------------
  81. GNUMBER JSR $AEFD
  82.  JSR $AD8A
  83.  JMP $B7F7
  84. *--------------------------------
  85. * RAMLOAD
  86. *
  87. * decompress data from one loc
  88. * to another.
  89. *--------------------------------
  90. RAMLOAD JSR GNUMBER
  91.  STY 251
  92.  STA 252
  93. * get source
  94.  JSR GNUMBER
  95.  STY EAL
  96.  STA EAL+1
  97.  JSR GNUMBER
  98.  STY 253
  99.  LDA 53280
  100.  PHA
  101.  LDA #0
  102.  STA COUNT
  103.  TAY
  104. RAMLOOP JSR ROMOUT
  105.  LDA (251),Y
  106.  CMP 253
  107.  BEQ RLOUT
  108.  JSR ROMIN
  109.  INC 53280
  110.  JSR XCIN1
  111.  LDA #1
  112.  CLC
  113.  ADC 251
  114.  STA 251
  115.  LDA #0
  116.  TAY
  117.  ADC 252
  118.  STA 252
  119.  JMP RAMLOOP
  120. RLOUT JSR ROMIN
  121.  LDY #0
  122.  TYA
  123.  STA (EAL),Y
  124.  PLA
  125.  STA 53280
  126.  RTS
  127. *--------------------------------
  128. * SETLFS
  129. *
  130. * Save file number & secondary
  131. * address, then do Kernal SETLFS
  132. *--------------------------------
  133. XSETLFS STA FILE
  134.  STY SECADD
  135.  TAY
  136.  JMP SETLFS
  137. *--------------------------------
  138. * SETNAM
  139. *
  140. * Store away the filename
  141. *--------------------------------
  142. XSETNAM STA NAMESZ
  143.  STX XLOAD1+1
  144.  STY XLOAD1+2
  145.  RTS
  146. *--------------------------------
  147. * LOAD
  148. *
  149. * decompress text from disk
  150. *--------------------------------
  151. *
  152. * setup force load address
  153. *
  154. XLOADE PHA
  155.  LDA #0
  156.  STA PMODE
  157.  PLA
  158.  JMP XLOAD
  159. PLOAD LDA #255
  160.  STA PMODE
  161. XLOAD STX EAL
  162.  STY EAL+1
  163. *
  164. * build filename
  165. *
  166.  LDX #0
  167. XLOAD1 LDA $FFFF,X
  168.  STA NAME,X
  169.  INX
  170.  CPX NAMESZ
  171.  BCC XLOAD1
  172.  LDY #0
  173. XLOAD1A LDA EXT,Y
  174.  STA NAME,X
  175.  INX
  176.  INY
  177.  CPY #4
  178.  BCC XLOAD1A
  179.  STX NAMESZ
  180. *
  181. * open the file for reading
  182. *
  183.  LDA NAMESZ
  184.  LDX #<NAME
  185.  LDY #>NAME
  186.  JSR SETNAM
  187.  JSR OPEN
  188.  LDX FILE
  189.  JSR CHKIN
  190. *
  191. * get load address
  192. *
  193.  JSR CHRIN
  194.  TAY
  195.  JSR CHRIN
  196.  TAX
  197. *
  198. * check if a force load
  199. *
  200.  LDA SECADD
  201.  BEQ XLOAD2
  202. *
  203. * if not, update load address
  204. *
  205.  STY EAL
  206.  STX EAL+1
  207. *
  208. * initialize decomp variables
  209. *
  210. XLOAD2 LDA #0
  211.  STA COUNT
  212.  STA STATUS
  213. *-
  214. * decompress text file into
  215. * memory loop
  216. *-
  217. XLOAD3 JSR XCHRIN
  218.  LDA STATUS
  219.  BEQ XLOAD3
  220. *
  221. * close the text file
  222. *
  223.  LDA FILE
  224.  JSR CLOSE
  225.  JSR CLRCHN
  226. *
  227.  LDA #0
  228.  STA PMODE
  229.  RTS
  230. *
  231. FILE DFB 0
  232. SECADD DFB 0
  233. NAMESZ DFB 0
  234. NAME DS 20
  235. EXT USR 'A',p,r'
  236. *--------------------------------
  237. * CHRIN
  238. *
  239. * decompress data on the fly and
  240. * place in memory
  241. *--------------------------------
  242. *
  243. * get character from file
  244. *
  245. XCHRIN JSR CHRIN
  246. *
  247. * check for a disk error
  248. *
  249.  LDX STATUS
  250.  BEQ XCIN1
  251.  CPX #%01000000
  252.  BEQ XCIN1
  253. *
  254.  RTS
  255. *
  256. * check for 4th ch of run length
  257. *
  258. XCIN1 LDX COUNT
  259.  CPX #3
  260.  BNE XCIN2
  261. *
  262. * check for zero repeats
  263. *
  264.  TAX
  265.  BEQ XCIN1C
  266. *
  267. * place the repeated ch's
  268. *
  269.  LDA LAST
  270.  LDY #0
  271. XCIN1A JSR JSTASH
  272.  INC EAL
  273.  BNE XCIN1B
  274.  INC EAL+1
  275. XCIN1B DEX
  276.  BNE XCIN1A
  277. *
  278. * reset counter
  279. *
  280. XCIN1C STX COUNT
  281.  RTS
  282. *
  283. * check for normal ASCII
  284. *
  285. XCIN2 CMP #$60
  286.  BCC XCIN2A
  287.  CMP #$C1
  288.  BCC XCIN4A
  289.  CMP #$DC
  290.  BCC XCIN3A
  291.  CMP #$F7
  292.  BCC XCIN4B
  293.  BCS XCIN3A
  294. *
  295. * check for a remapped character
  296. *
  297. XCIN2A CMP #$00
  298.  BEQ XCIN3A
  299.  CMP #$0D
  300.  BCS XCIN3A
  301. *
  302. * remap the character
  303. *
  304.  TAX
  305.  LDA REMAPA-1,X
  306. *
  307. * got an ASCII - adjust counter
  308. *
  309. XCIN3A LDX COUNT
  310.  BEQ XCIN3B
  311.  CMP LAST
  312.  BEQ XCIN3C
  313. XCIN3B LDX #0
  314.  STA LAST
  315. XCIN3C INX
  316.  STX COUNT
  317. *
  318. * place the ch
  319. *
  320. XCINSUB LDY #0
  321.  JSR JSTASH
  322.  INC EAL
  323.  BNE XCIN3D
  324.  INC EAL+1
  325. *
  326. XCIN3D RTS
  327. *
  328. * got a diatomic #1 - adjust
  329. * pointer
  330. *
  331. XCIN4A SEC
  332.  SBC #$60
  333.  BCS XCIN4C
  334. *
  335. * got a diatomic #2 - adjust
  336. * pointer
  337. *
  338. XCIN4B SEC
  339.  SBC #$7B
  340. *
  341. * reset counter
  342. *
  343. XCIN4C LDX #0
  344.  STX COUNT
  345. *
  346. * place 1st ch
  347. *
  348.  TAX
  349.  LDA CH1LIST,X
  350.  JSR XCINSUB
  351. *
  352. * place 2nd ch
  353. *
  354.  LDA CH2LIST,X
  355.  JMP XCINSUB
  356. *
  357. JSTASH BIT PMODE
  358.  BPL REGULAR
  359.  PHA
  360.  TXA
  361.  PHA
  362.  TYA
  363.  PHA
  364.  JSR CLRCHN
  365.  LDX #4
  366.  JSR CHKOUT
  367.  PLA
  368.  TAY
  369.  PLA
  370.  TAX
  371.  PLA
  372.  JSR CHROUT
  373.  PHA
  374.  TXA
  375.  PHA
  376.  TYA
  377.  PHA
  378.  JSR CLRCHN
  379.  LDX FILE
  380.  JSR CHKIN
  381.  PLA
  382.  TAY
  383.  PLA
  384.  TAX
  385.  PLA
  386.  RTS
  387. REGULAR PHA
  388.  LDA #$74
  389.  SEI
  390.  STA 1
  391.  PLA
  392.  STA (EAL),Y
  393.  LDA #$77
  394.  STA 1
  395.  CLI
  396.  RTS
  397. PMODE DFB 0
  398. COUNT DFB 0
  399. LAST DFB 0
  400. *
  401. REMAPA DFB 146,163,171,173
  402.  DFB 174,176,177,178
  403.  DFB 179,189,192,221
  404. *
  405. CH1LIST USR 'A'          '
  406.  USR 'A'         a'
  407.  USR 'A'aaaaaaaabb'
  408.  USR 'A'cccccdddee'
  409.  USR 'A'eeeeeeeffg'
  410.  USR 'A'ghhhhhiiii'
  411.  USR 'A'iiiiikkkll'
  412.  USR 'A'lllllmmmmn'
  413.  USR 'A'nnnnoooooo'
  414.  USR 'A'ooopprrrrr'
  415.  USR 'A'rssssssttt'
  416.  USR 'A'tttttuuuvw'
  417.  USR 'A'wwyy'
  418. *
  419. CH2LIST USR 'A'abcdefghil'
  420.  USR 'A'mnoprstwy '
  421.  USR 'A'cdilnrsteo'
  422.  USR 'A'aehko ei a'
  423.  USR 'A'delnrst o '
  424.  USR 'A'e aeiocgkl'
  425.  USR 'A'mnrst ei a'
  426.  USR 'A'eiloy aeo '
  427.  USR 'A'degt fnors'
  428.  USR 'A'tuweo aeio'
  429.  USR 'A's ehist ae'
  430.  USR 'A'hiorslrtea'
  431.  USR 'A'ei o'
  432.