home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / genie-commodore-file-library / C64-128BBS / DTJMODSRC.ARC / A / CALC.MOD next >
Encoding:
Text File  |  2019-04-13  |  4.8 KB  |  248 lines

  1.            '─╘╩ ├ALCULATOR ═ODULE
  2.            'BY ┴. ┬ERNHARDT
  3.            'AS OF 910525
  4.  
  5.            ORG 40961
  6.            NAM "CALC.MOD"
  7.  
  8.            JMP "START"
  9.  
  10. "BUFFER"   DFL 513
  11. "-READY"   DFL 49152
  12. "-BASIC"   DFL 49159
  13. "-ERROR"   DFL 49186
  14.  
  15. '--------------------------------------
  16. '╘HIS SUBROUTINE IS COPIED TO &C000:
  17.  
  18. "+READY"   LDA 6
  19.            STA (1)
  20.            JMP "READY"
  21. "+BASIC"   LDA 7
  22.            STA (1)
  23.            JSR 42361    'TOKENIZE
  24.            LDA 6
  25.            STA (1)
  26.            JSR "SYSCHECK"
  27.            LDA 7
  28.            STA (1)
  29.            JSR 115
  30.            JSR 42989
  31.            JMP "-READY"
  32. "+ERROR"   LDA 7
  33.            STA (1)
  34.            TXA
  35.            PHA
  36.            JSR 65484
  37.            LDX 2
  38.            JSR 65478
  39.            LDX 2
  40.            JSR 65481
  41.            LDA &0D
  42.            JSR 65490
  43.            LDA $?
  44.            JSR 65490
  45.            PLA
  46.            ASL
  47.            TAX
  48.            LDA (41766),X
  49.            STA (34)
  50.            LDA (41767),X
  51.            STA (35)
  52.            LDY 0
  53. "ER00"     LDA [34],Y
  54.            PHA
  55.            AND 127
  56.            JSR 65490
  57.            INY
  58.            PLA
  59.            BPL "ER00"
  60.            LDX 25
  61.            STX (22)
  62.            LDA 0
  63.            STA (62)
  64.            STA (16)
  65.            LDA 6
  66.            STA (1)
  67.            LDY 0
  68. "ER01"     LDA ("ERTEXT"),Y
  69.            BEQ "ER02"
  70.            JSR 65490
  71.            INY
  72.            BPL"ER01"
  73. "ER02"     JMP "READY"
  74.  
  75. '--------------------------------------
  76.  
  77. "TITLE"    DF $─╘╩-┬┬╙ ├ALCULATOR ╓1.0
  78.            DF &0D0D
  79.            DF $╨RESS ╥┼╘╒╥╬ BY ITSELF TO EXIT.
  80.            DF &0D0D00
  81. "PROMPT"   DF &0D
  82.            DF $READY.
  83.            DF &0D00
  84. "ERTEXT"   DF $ ERROR
  85.            DF &00
  86. "VECSAV"   DF &000000000000000000000000
  87. "RNDSAV"   DF &0000000000
  88.  
  89. '--------------------------------------
  90.  
  91. "START"    LDY 0
  92. "ST00"     LDA ("+READY"),Y
  93.            STA (49152),Y
  94.            INY
  95.            CPY 150
  96.            BNE "ST00"
  97.            LDY 11
  98. "ST01"     LDA (768),Y
  99.            STA ("VECSAV"),Y
  100.            DEY
  101.            BPL "ST01"
  102.            LDA L"-ERROR"
  103.            STA (768)
  104.            LDA H"-ERROR"
  105.            STA (769)
  106.            LDA L"-READY"
  107.            STA (770)
  108.            LDA H"-READY"
  109.            STA (771)
  110.            LDX 5
  111. "ST02"     LDA (57),X
  112.            PHA
  113.            DEX
  114.            BPL"ST02"
  115.            LDA (122)
  116.            PHA
  117.            LDA (123)
  118.            PHA
  119.            TSX
  120.            STX ("SAVS")
  121.            JSR 65484
  122.            LDX 2
  123.            JSR 65478
  124.            LDX 2
  125.            JSR 65481
  126.            LDY 0
  127. "ST03"     LDA ("TITLE"),Y
  128.            BEQ "READY"
  129.            JSR 65490
  130.            INY
  131.            BCC "ST03"
  132. "READY"    LDX ("SAVS")
  133.            TXS
  134.            JSR 65484
  135.            LDX 2
  136.            JSR 65478
  137.            LDX 2
  138.            JSR 65481
  139.            LDY 0
  140. "RE00"     LDA ("PROMPT"),Y
  141.            BEQ "RE01"
  142.            JSR 65490
  143.            INY
  144.            BCC "RE00"
  145. "RE01"     LDY 0
  146. "RE02"     JSR &C17D     'GET CHAR
  147.            BCS "EXIT"
  148.            CMP &0D
  149.            BEQ "RE04"
  150.            CMP &14
  151.            BEQ "RE03"
  152.            CMP &20
  153.            BCC "RE02"
  154.            CMP &3A
  155.            BEQ "RE02"
  156.            CPY 70
  157.            BCS "RE02"
  158.            JSR 65490
  159.            STA ("BUFFER"),Y
  160.            INY
  161.            BNE "RE02"
  162. "RE03"     CPY 0
  163.            BEQ "RE02"
  164.            JSR 65490
  165.            DEY
  166.            BPL "RE02"
  167. "RE04"     JSR 65490
  168.            CPY 0
  169.            BNE "CALC"
  170.  
  171. "EXIT"     LDY 11
  172. "EX00"     LDA ("VECSAV"),Y
  173.            STA (768),Y
  174.            DEY
  175.            BPL "EX00"
  176.            DF &A2
  177. "SAVS"     DF &00
  178.            PLA
  179.            STA (123)
  180.            PLA
  181.            STA (122)
  182.            LDX 0
  183. "EX01"     PLA
  184.            STA (57),X
  185.            INX
  186.            CPX 6
  187.            BNE "EX01"
  188.            JMP 65484
  189.  
  190. "CALC"     LDA 0
  191.            STA ("BUFFER"),Y
  192.            LDA $?
  193.            STA (512)
  194.            LDY 2
  195.            LDX 255
  196.            STX (58)
  197.            INX
  198.            STX (122)
  199.            STY (123)
  200.            JMP "-BASIC"
  201.  
  202. "SYSCHECK" JSR "NORNDUSR"
  203.            LDA (1028)
  204.            CMP &D3
  205.            BNE "SY01"
  206. "SY00"     RTS
  207. "SY01"     LDY 0
  208.            STY (212)
  209. "SY02"     LDA (512),Y
  210.            BEQ "SY00"
  211.            CMP &C2
  212.            BEQ "SY05"
  213.            CMP $E
  214.            BEQ "SY06"
  215.            CMP $A
  216.            BCC "SY03"
  217.            CMP $[
  218.            BCS "SY03"
  219.            LDA (212)
  220.            BNE "SY03"
  221. "SY05"     LDX 25
  222.            JMP "-ERROR"
  223. "SY03"     CMP 34
  224.            BNE "SY04"
  225.            LDA (212)
  226.            EOR 255
  227.            STA (212)
  228. "SY04"     INY
  229.            BNE "SY02"
  230. "SY06"     DEY
  231.            LDA (512),Y
  232.            INY
  233.            CMP $0
  234.            BCC "SY05"
  235.            CMP $:
  236.            BCS "SY05"
  237.            BCC "SY04"
  238.  
  239. "NORNDUSR" LDY 0
  240. "NO00"     LDA (512),Y
  241.            BEQ "NO01"
  242.            CMP &BB
  243.            BEQ "SY05"
  244.            CMP &B7
  245.            BEQ "SY05"
  246.            INY
  247. "NO01"     RTS
  248.