home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / genie-commodore-file-library / C64-128Toolkit / SMOOTHSCROLL.ARC / ASMFIX.SRC < prev    next >
Encoding:
Text File  |  2019-04-13  |  5.4 KB  |  415 lines

  1. ;*****************************
  2. ;*                           *
  3. ;*         COMMODORE         *
  4. ;*   MACRO ASSEMBLER FIXES   *
  5. ;*                           *
  6. ;*  FIXES AND ADDITIONS BY   *
  7. ;*        DAVE DIXON         *
  8. ;*                           *
  9. ;*      VERSION : 06/05/85   *
  10. ;*****************************
  11. ;
  12. BLANK = 0 ;SET TO 1 TO BLANK SCREEN DURING
  13.  ;ASSEMBLY (SOME PRINTERS NEED)
  14. LONGLB = 1 ;ALLOW 12 CHAR LABELS
  15. GENPRG = 1 ;GEN PRG FILE INSTEAD OF SEQ
  16. LINEPP = 80 ;LINES PER PAGE
  17. RECUR = $0400 ;LEN OF AREA FOR MACRO RECURSION
  18. MACARE = $0400 ;LEN OF AREA FOR MACRO STROAGE
  19. ENDMEM = $6FFF ;END OF USABLE MEMORY
  20. ;
  21. ; FIX MACRO COMMAND
  22. ;
  23. *=$2AB7
  24. ;
  25.  LDY $0976 ;FIX BUG
  26.  STY $097C
  27.  LDY $0977
  28.  STY $097D
  29. ;
  30. *=$2ADD
  31. ;
  32.  BNE $2AA8 ;FIX BRANCH
  33. ;
  34. ; MAKE COLON MACRO PARAM SEPERATOR.
  35. ; THIS ALLOWS ADDRESSING MODES TO BE PASSED
  36. ;  AS MACRO PARAMETERS.
  37. ;
  38. *=$2C20
  39. ;
  40.  CMP #':'
  41. ;
  42. ; ALLOW . AND # IN LABELS
  43. ;
  44. *=$1682
  45.  JMP CHKCOL ;CHECK FOR COLON
  46. CHKRTS CMP #$2E ;ALLOW . IN LABEL
  47. ;
  48. ; SET START/END OF MACRO STACK,MEMORY,RECURSION STACK
  49. ;
  50. STRTTM =ENDMEM-MACARE+1 ;LOC TO STORE MACRO DEF AT
  51. ENDMAC =STRTTM-1
  52. START =STRTTM-RECUR ;LOC TO STORE PARAMETERS OF
  53.  ;MACRO CALLS DURING RECURSION
  54. ENDSYM =START-1
  55. ;
  56. *=$09D0
  57. ;
  58.  LDY #>ENDSYM
  59.  LDX #<ENDSYM
  60. ;
  61. *=$09D8
  62. ;
  63.  LDY #>START
  64.  LDX #<START
  65. ;
  66. *=$2B55
  67. ;
  68.  LDA #<START
  69. ;
  70. *=$2B59
  71. ;
  72.  LDA #>START
  73. ;
  74. *=$29E2
  75. ;
  76.  SBC #<ENDMAC
  77. ;
  78. *=$29E7
  79. ;
  80.  SBC #>ENDMAC
  81. ;
  82. *=$0C48
  83. ;
  84.  LDY #>STRTTM
  85.  LDX #<STRTTM
  86. ;
  87. ; SET START OF SYMBOLS
  88. ;
  89. *=$09C3
  90. ;
  91.  LDY #>PROGND ;LOCATION OF END OF NEW
  92.  LDX #<PROGND ;FIX CODE
  93. ;
  94. *=$2D89
  95.  SBC #<START
  96. *=*+3
  97.  SBC #>START
  98. *=$2D98
  99.  LDA #<ENDMAC
  100. *=*+3
  101.  LDA #>ENDMAC
  102. *=$2A0D
  103.  SBC #<ENDMEM
  104. *=*+3
  105.  SBC #>ENDMEM
  106.  .IFE BLANK <
  107. ;
  108. ; STOP BLANKING OF SCREEN
  109. ;
  110. *=$0B64
  111. ;
  112.  RTS
  113. >
  114. ;
  115. ;         KILL HARD COPY PROMPT
  116. ;  (POKE 2679,78 FOR ON SCREEN LISTING)
  117. ;
  118. *=$0A7A
  119. ;
  120.  NOP
  121.  NOP
  122.  NOP
  123.  NOP
  124.  NOP
  125.  NOP
  126. ;
  127. ;     KILL CROSS REFERENCE PROMPT
  128. ;  (POKE 2719,89 FOR CROSS REF)
  129. ;
  130. *=$0AA2
  131. ;
  132.  NOP
  133.  NOP
  134.  NOP
  135.  NOP
  136.  NOP
  137.  NOP
  138. ;
  139. ; SHORTEN OBJECT FILE NAME PROMPT
  140. ;
  141. *=$2396
  142. ;
  143.  .BYT 7,7,7,7,7,7
  144.  .IFN GENPRG <
  145. ;
  146. ; CREATE PRG FILE INSTEAD OF SEQ
  147. ;
  148. *=$0A61
  149. ;
  150.  LDA #'P'
  151. ;
  152. *=$2930
  153. ;
  154.  LDX #$03
  155.  STX $05
  156.  LDA $0946
  157.  BEQ PRG100
  158. ;
  159.  CLC
  160.  ADC #$03
  161.  STA $04
  162.  JMP DOPRG ;GO TO PATCH
  163. ;
  164. PRG100 RTS
  165. ;
  166. ; INITIALIZE PATCH IN FOR PRG
  167. ;
  168. *=$0996
  169. ;
  170.  JSR INIT
  171. >
  172.  .IFN LONGLB <
  173. ;
  174. ; MAKE LABELS 12 CHAR LONG
  175. ;
  176. *=$0D4D
  177.  CPY #$0C
  178. *=$1692
  179.  CPY #$0B
  180. *=$1759
  181.  CMP #$0D
  182. *=$1EC9
  183.  CPY #$0D ;MNE COLUMN
  184. *=$1EF6
  185.  CPY #$2D ;COMMENT COLUMN
  186. ;
  187. *=$16AF
  188.  JSR MASHLB ;PATCH TO CRUNCH LABEL
  189. ;
  190. ; ELIMINATE SYMBOL TABLE
  191. ;
  192. *=$0C43
  193. ;
  194.  LDA #$9C ;CHANGE DEFAULT TO NOS
  195. ;
  196. ; FIX SYMBOL TABLE LISTING
  197. ;
  198. *=$1C47
  199.  JMP $1C4A ;NEXT INS
  200. *=$1C56
  201.  JSR $1F38
  202. *=$1C6A
  203.  ;THIS IS FOR 132 COLUMNS
  204.  ;DROP PATCH FOR 80 COL
  205.  CMP #$0B ;# ACROSS PAGE
  206. *=$1C6E
  207.  JSR $1F38
  208. >
  209. ;
  210. ; # LINES PER PAGE
  211. ;
  212. *=$1C2B
  213.  CMP #LINEPP-6
  214. *=$1C40
  215.  CMP #LINEPP
  216. *=$1CC3
  217.  CPY #LINEPP
  218. *=$1D5E
  219.  CMP #LINEPP
  220. *=$1E11
  221.  CMP #LINEPP
  222. *=$1F50
  223.  CMP #LINEPP
  224. ;
  225. ; FIX SYMBOL TABLE LISTING
  226. ;
  227. *=$1C47
  228.  JMP $1C4A ;NEXT INS
  229. *=$1C56
  230.  JSR $1F38
  231. *=$1C6A
  232.  CMP #$0B ;# ACROSS PAGE
  233. *=$1C6E
  234.  JSR $1F38
  235. ;
  236. ; FIX BYT,WORD,DBYT
  237. ; THIS IS SO A LINE SUCH AS .BYT 1,2,3
  238. ;  ONLY PRODUCES ONE LINE ON THE LISTING
  239. ;
  240. *=$0F4F
  241.  JSR BYTFX1
  242. *=$1008
  243.  JMP BYTFX2
  244. *=$101C
  245.  JMP BYTFX3
  246.  NOP
  247. ;
  248. ; ADDITIONAL CODE AT END
  249. ;
  250. *=$2DF1
  251. ;
  252. ; INITIALIZE EXTENTIONS
  253. ;
  254. INIT STA $0838
  255.  STA FIRST
  256.  RTS
  257.  .IFN LONGLB <
  258. ;
  259. ;MAKE 12 CHAR LABELS INTO 6
  260. ;
  261. SAVEY .BYT $00
  262. ;
  263. MASHLB STY SAVEY ;Y IS THE CURRENT LABEL LENGTH
  264.  CPY #$06 ;IF > 6 THEN FLIP
  265.  BCS MSH100
  266.  STA $0908,Y ;NO JUST SAVE
  267.  RTS
  268. ;
  269. MSH100 PHA ;7TH CHAR GOES OVER 6TH
  270.  TYA ;8 TH CHAR GOES OVER 5TH
  271.  SEC
  272.  SBC #$06
  273.  EOR #$07
  274.  SEC
  275.  SBC #$02
  276.  TAY
  277.  PLA
  278.  CLC ;SHIFT THE BITS SO THE LABELS
  279.  ROL A ;MASHL050 AND MASHL500
  280.  ROL A ;DO NOT COLLIDE
  281.  ROL A
  282.  ROL A
  283.  EOR $0908,Y
  284.  CMP #$0D ;REPLACE RETURN WITH GARBAGE
  285.  BNE MSH200
  286.  LDA #$71
  287. MSH200 STA $0908,Y
  288.  LDY SAVEY
  289.  RTS
  290. >
  291. ; CHECK FOR COMMA (USED BY . AND # LABEL
  292. ;  EXTENTION )
  293. ;
  294. CHKCOL LDA $0880,X
  295.  CMP #'#'
  296.  BEQ CHKC10
  297.  JMP CHKRTS
  298. ;
  299. CHKC10 JMP $1689
  300.  .IFN GENPRG <
  301. ;
  302. ; SAVE OBJ AS PRG FILE
  303. ; IF A GAP IN ADDRESSES IS GREATER THAN
  304. ;  700 BYTES THEN THE GAP IS IGNORED
  305. ;  ELSE THAT MANY $00 AREA SENT OUT
  306. ;
  307. FIRST .BYT $00
  308. LOC .WORD $0000
  309. ;
  310. DOPRG LDA FIRST ;IF FIRST TIME HERE?
  311.  BEQ PRG700 ;YES THEN SEND OUT LOAD ADDR
  312.  SEC ;CALC GAP FROM LAST BYTE TO THIS BYTE
  313.  LDA $0948
  314.  SBC LOC
  315.  STA LOC
  316.  LDA $0947
  317.  SBC LOC+1
  318.  STA LOC+1
  319.  BCC PRG500 ;BACKWARD JUMP IN ADDRESS - IGNOR
  320. ;
  321.  CMP #$03 ;MIN GAP TO SKIP 3*256
  322.  BCS PRG500
  323. PRG200 LDA LOC ;IS THERE ANY GAP?
  324.  ORA LOC+1
  325.  BEQ PRG500 ;NO - SO OUTPUT BYTE
  326.  LDA #$00 ; CHAR TO FILL WITH
  327.  JSR $297A ;SEND OUT CHAR
  328.  LDA LOC ;DEC COUNT BY ONE
  329.  BNE PRG300
  330.  DEC LOC+1
  331. PRG300 DEC LOC
  332.  JMP PRG200 ;LOOP UNTIL NO MORE GAP
  333. ;
  334. PRG500 CLC ;CALC END LOC OF THIS
  335.  LDA $0946 ;SEQUENCE OF BYTES
  336.  ADC $0948
  337.  STA LOC
  338.  LDA $0947
  339.  ADC #$00
  340.  STA LOC+1
  341. ;
  342.  LDX $05 ;SEND OUT SEQUENCE OF BYTES
  343. PRG600 LDA $0946,X
  344.  JSR $297A ;OUTPUT
  345.  INC $05
  346. PRG650 LDX $05
  347.  CPX $04
  348.  BNE PRG600
  349.  RTS
  350. ;
  351. PRG700 LDA $0948 ;SEND OUT LOAD ADDR
  352.  JSR $297A
  353.  LDA $0947
  354.  JSR $297A
  355.  DEC FIRST ;RESET FLAG
  356.  CLC
  357.  LDA $0946
  358.  ADC $0948
  359.  STA LOC
  360.  LDA $0947
  361.  ADC #$00
  362.  STA LOC+1
  363.  JMP PRG650 ;SEND OUT SEQUNCE OF BYTES
  364. >
  365. ;
  366. ; CODE TO FIX BYTE TO ONLY USE ONE LINE
  367. ;
  368. SAVFLG .BYT $00
  369. WHTLIN .BYT $00
  370. ;
  371. BYTFX1 STA $0865
  372.  LDY #$00
  373.  STY WHTLIN
  374.  LDY $0874
  375.  STY SAVFLG
  376.  RTS
  377. ;
  378. BYTFX2 PHA
  379.  LDA SAVFLG
  380.  STA $0874
  381.  PLA
  382.  JMP $15CB
  383. ;
  384. BYTFX3 BIT WHTLIN
  385.  BPL BYT300
  386.  CMP #$2C
  387.  BEQ BYT200
  388.  PHA
  389.  INC WHTLIN
  390. BYT100 LDA SAVFLG
  391.  STA $0874
  392.  PLA
  393.  JMP $1020
  394. ;
  395. BYT200 PHA
  396.  LDA $0880,X
  397.  CMP #$3B
  398.  BCS BYT100
  399.  BCC BYT350
  400. ;
  401. BYT300 CMP #$2C
  402.  BNE BYT400
  403.  DEC WHTLIN
  404.  LDA $0874
  405.  STA SAVFLG
  406.  AND #$FB
  407.  STA $0874
  408.  LDA #$2C
  409. BYT350 JMP $1020
  410. BYT400 JMP $1003
  411. ;
  412. PROGND .END
  413.  
  414.  
  415. ─╠ 6: