home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / genie-commodore-file-library / MusGraph / DOODLE-PSA.SFX / doodle-psa.src < prev    next >
Text File  |  1990-02-12  |  4KB  |  286 lines

  1. ;
  2. ;DOODLE TO PRINT SHOP ML ROUTINE
  3. ;
  4.  *=$C000
  5. ;
  6.  TEMPA=$FB
  7.  TEMPB=TEMPA+2
  8.  BYTE=$F7
  9.  PSDATA=$F9
  10.  CHROUT=$FFD2
  11.  SETLFS=$FFDA
  12.  SETNAM=$FFBD
  13.  SAVE  =$FFD8
  14.  FILLEN=828
  15.  FILNAM=829
  16. ;
  17.  BASE=24576  ;START OF DOODLE DATA
  18.  PS=22528     ;START OF P.S. DATA
  19.  EDOFPS=23103 ;END OF P.S. DATA
  20.  HMAX=320   ;CONSTANT VALUE OF 360
  21. ;
  22.  TABSIZ=$C200  ;VARIABLE STORAGE
  23.  XPOS=TABSIZ+2 ;TABLE
  24.  YPOS=XPOS+2
  25.  CHAR=YPOS+1
  26.  ROW=CHAR+1
  27.  LINE=ROW+1
  28.  MPRL=LINE+1
  29.  MPRH=MPRL+1
  30.  MPDL=MPRH+1
  31.  MPDH=MPDL+1
  32.  PRODL=MPDH+1
  33.  PRODH=PRODL+1
  34.  OFFSET=PRODH+1
  35.  BIIT=OFFSET+1
  36.  MASK1=BIIT+1
  37.  MASK2=MASK1+1
  38.  CNTRB=MASK2+1
  39. ;
  40.  JMP MAIN ;GOTO MAIN ROUTINE
  41. ;
  42. ; 16 BIT MULTIPLICATION
  43. ;
  44. MULT16 LDA #0
  45.  STA PRODL
  46.  STA PRODH
  47.  LDX #17
  48.  CLC
  49. MULT ROR PRODH
  50.  ROR PRODL
  51.  ROR MPRH
  52.  ROR MPRL
  53.  BCC CTDOWN
  54.  CLC
  55.  LDA MPDL
  56.  ADC PRODL
  57.  STA PRODL
  58.  LDA MPDH
  59.  ADC PRODH
  60.  STA PRODH
  61. CTDOWN DEX
  62.  BNE MULT
  63.  RTS
  64. ;
  65. ; CALCULATE MASK VALUES
  66. ;
  67. ; EQUIV TO LINES 820 TO 840
  68. ;
  69. LETOFF LDA XPOS ;CALCULATE OFFSET
  70.  AND #7
  71.  STA OFFSET
  72.  EOR #7         ;CALCULATE BIT
  73.  STA BIIT
  74.  LDA #0         ;CLEAR MASKS
  75.  STA MASK1
  76.  STA MASK2
  77.  LDX #0         ;IF OFFSET IS
  78.  CPX OFFSET     ;ZERO THEN DONT
  79.  BEQ CONT       ;CALCULATE MASKS
  80.  LDA #1
  81. MAK SEC
  82.  ROL A
  83.  INX
  84.  CPX BIIT
  85.  BNE MAK
  86.  STA MASK1
  87.  EOR #255
  88.  STA MASK2
  89. CONT RTS
  90. ;
  91. ; EQUIVELENT TO LINE 870 IN PRG.
  92. ; ROW = INT(Y/8)
  93. ;
  94. LETROW LDA YPOS
  95.  LSR A
  96.  LSR A
  97.  LSR A
  98.  STA ROW
  99. ;
  100. ; CHAR = INT(X/8)
  101. ;
  102.  LDA XPOS
  103.  LSR A
  104.  LSR A
  105.  LSR A
  106.  STA CHAR
  107. ;
  108. ; LINE = Y AND 7
  109. ;
  110.  LDA YPOS
  111.  AND #7
  112.  STA LINE
  113. ;
  114. ;LINE 880 IN BASIC PROGRAM
  115. ;
  116. ; BYTE=BASE+ROW*320+CHAR*8+LINE
  117. ;
  118.  STX TABSIZ      ;KEEP X VALUE
  119.  LDA ROW         ;SAFE
  120.  STA MPRL
  121.  LDA #0
  122.  STA MPRH
  123.  LDA #<HMAX
  124.  STA MPDL
  125.  LDA #>HMAX
  126.  STA MPDH
  127.  JSR MULT16
  128.  LDA MPRL
  129.  STA TEMPA
  130.  LDA MPRL+1
  131.  STA TEMPA+1
  132. ;
  133. ; ADD RESULT TO BASE
  134. ;
  135.  CLC
  136.  LDA #<BASE
  137.  ADC TEMPA
  138.  STA TEMPA
  139.  LDA #>BASE
  140.  ADC TEMPA+1
  141.  STA TEMPA+1
  142. ;
  143. ; MULT CHAR*8
  144. ;
  145.  LDA #8
  146.  STA MPRL
  147.  LDA #0
  148.  STA MPRH
  149.  LDA CHAR
  150.  STA MPDL
  151.  LDA #0
  152.  STA MPDH
  153.  JSR MULT16
  154.  LDA MPRL
  155.  STA TEMPB
  156.  LDA MPRH
  157.  STA TEMPB+1
  158. ;
  159. ; ADD LINE
  160. ;
  161.  CLC
  162.  LDA TEMPB
  163.  ADC LINE
  164.  STA TEMPB
  165.  LDA TEMPB+1
  166.  ADC #0
  167.  STA TEMPB+1
  168. ;
  169. ; BYTE = TEMPA +TEMPB
  170. ;
  171.  CLC
  172.  LDA TEMPA
  173.  ADC TEMPB
  174.  STA BYTE
  175.  LDA TEMPA+1
  176.  ADC TEMPB+1
  177.  STA BYTE+1
  178.  LDX TABSIZ      ;RETRIEV X VALUE
  179.  RTS
  180. ;
  181. ; PEEK(BYTE+B*8)
  182. ;
  183. LTPEEK STY TABSIZ+1 ;STORE Y VALUE
  184.  TYA                ;FOR SAFTY
  185.  CLC
  186.  ASL A
  187.  ASL A
  188.  ASL A
  189.  TAY
  190.  RTS
  191. ;
  192. ; MAIN CONVERT ROUTINE
  193. ;
  194. MAIN LDA #<PS
  195.  STA PSDATA
  196.  LDA #>PS
  197.  STA PSDATA+1
  198.  JSR LETOFF ;CALCULATE MASKS
  199.  LDX #52
  200. LOOPA JSR LETROW ;LNS 870-880
  201.  LDA #'.
  202.  JSR CHROUT
  203.  LDA #11        ;INITIALIZE
  204.  STA CNTRB      ;'B' VARIABLE
  205.  LDY #10
  206. LOOPB LDA #0    ;IF OFFSET>0 THEN
  207.  CMP OFFSET     ;BRANCH TO BIT
  208.  BCC MANIP      ;MANIP ROUTINE
  209.                 ;LINE 890
  210.  JSR LTPEEK
  211.  LDA (BYTE),Y   ;PEEK BYTE
  212.  LDY TABSIZ+1
  213.  STA (PSDATA),Y ;POKE TO PS
  214. ;
  215. ;
  216. ;
  217. DONE DEY
  218.  STY TABSIZ+1
  219.  DEC CNTRB
  220.  BNE LOOPB
  221.  CLC           ;INCREMENT PS DATA
  222.  LDA #11       ;ADDRESS BY 11
  223.  ADC PSDATA
  224.  STA PSDATA
  225.  LDA #0
  226.  ADC PSDATA+1
  227.  STA PSDATA+1
  228.  INC YPOS      ;LINE 940 IN PRG.
  229.  DEX
  230.  BNE LOOPA     ;IFA=0 THEN EXIT
  231.  RTS
  232. ;
  233. ; MANIPULATION ROUTINE
  234. ;
  235. MANIP JSR LTPEEK ;
  236.  LDA (BYTE),Y    ;LOAD LOW BYTE
  237.  AND MASK1       ;REMOVE BITS
  238.  STA TEMPA
  239.  TYA
  240.  ADC #8
  241.  TAY
  242.  LDA (BYTE),Y    ;LOAD HIGH BYTE
  243.  AND MASK2       ;REMOVE BITS
  244.  STA TEMPA+1
  245.  LDY TABSIZ+1
  246.  STX TEMPB+1     ;STORE X VALUE
  247.  LDX OFFSET
  248.  LDA TEMPA
  249. LOOPC ASL A      ;SHIFT LOW BYTE
  250.  DEX             ;TO LEFT.
  251.  BNE LOOPC
  252.  STA TEMPA       ;STORE LOW BYTE
  253.  LDX BIIT
  254.  INX
  255.  LDA TEMPA+1
  256. LOOPD LSR A      ;SHIFT HIGH BYTE
  257.  DEX             ;TO RIGHT
  258.  BNE LOOPD
  259.  ADC TEMPA       ;ADD LOW TO HIGH
  260.  STA (PSDATA),Y  ;STORE NEW BYTE
  261.  LDX TEMPB+1     ;RETRIEV X VALUE
  262.  JMP DONE
  263. ;
  264. ; SAVE PRINT SHOP DATA
  265. ;
  266.  LDA #8     ;OPEN 8,8,8
  267.  TAX
  268.  TAY
  269.  JSR SETLFS
  270. ;
  271.  LDA FILLEN  ;LENGTH OF FILENAME
  272.  LDX #<FILNAM ;LOCATION OF
  273.  LDY #>FILNAM ;FILENAME
  274.  JSR SETNAM
  275. ;
  276.  LDA #<PS     ;PUT STARTING LOC.
  277.  STA TEMPA    ;OF SAVING DATA IN
  278.  LDA #>PS     ;ZERO PAGE POINTER
  279.  STA TEMPA+1
  280.  LDX #<EDOFPS ;SET ENDING ADDRESS
  281.  LDY #>EDOFPS ;OF DATA TO BE SAVED
  282.  LDA #TEMPA   ;LOAD START POINTER
  283.  JSR SAVE
  284.  RTS
  285. .END
  286.