home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib32b.dsk / EXTRA.AMPER.S < prev    next >
Text File  |  2023-02-26  |  6KB  |  488 lines

  1. ***********************
  2. * EXTRA.AMPER         *
  3. * by Harold Portnoy   *
  4. * Copyright (c) 1987  *
  5. * by MicroSPARC, Inc. *     Merlin Assembler
  6. * Concord, MA  01742  *
  7. ***********************
  8.  
  9. * COMMENTS FOUND IN MAGAZINE LISTING
  10. * (Most have been omitted here)
  11. *
  12.  
  13. *EQUATES
  14. *....Zero page
  15. A1L       = $3C
  16. A2L       = $3E
  17. A4L       = $42
  18. MEMSIZ    = $73
  19. CHRGET    = $B1
  20. CHRGOT    = $B7
  21. TXTPTR    = $B8
  22. BEGCH     = $FC
  23. OFFSET    = $FD
  24. CMDLEN    = $FD
  25. RPTR      = $FE
  26. TXTTEMP   = $FE
  27. *....Page 3
  28. AMPERV    = $3F5
  29. *....ProDOS
  30. ENTRY     = $BF00
  31. *....General
  32. AUXMOVE   = $C311
  33. SYNERR    = $DEC9
  34. COUT      = $FDED
  35. MOVE      = $FE2C
  36. *....Special
  37. PAGES     = 2
  38.  
  39. RELADR    = 17
  40.  
  41. AUXROUT   = $800
  42. INIT      = $2000
  43. COMHAND   = $2100
  44. ROUTINE   = $2200
  45.  
  46.  
  47. *EQUATES for routine 1 (hex-dec Converter)
  48. *....Zero Page
  49. LINNUM    = $50
  50. *....General
  51. FRMNUM    = $DD67
  52. ILLQUAN   = $E199
  53. GETADR    = $E752
  54.  
  55. LINPRT    = $ED24
  56. PRNTAX    = $F941
  57. CROUT     = $FD8E
  58.  
  59.           ORG INIT
  60.  
  61. * SECTION 1: INITIALIZATION
  62. *
  63. *
  64. *
  65. *
  66.  
  67. *
  68. *
  69.  
  70.           LDA MEMSIZ+1
  71.           SEC
  72.           SBC #PAGES
  73.  
  74.           STA MEMSIZ+1
  75.  
  76. *
  77.  
  78.           LDX ENTRY
  79.           CPX #$4C
  80.           BNE :1
  81.           CLC
  82.           ADC #$04
  83.  
  84. *
  85.  
  86. :1        STA BEGCH
  87.           PHA
  88.  
  89. *
  90. *
  91. *
  92.  
  93.           SEC
  94.           SBC #>COMHAND
  95.           STA OFFSET
  96.  
  97. *
  98. *
  99.  
  100.           LDX #$00
  101.           STX AMPERV+1
  102.           PLA
  103.           STA AMPERV+2
  104.  
  105. *
  106.  
  107.           LDY #$00
  108. RLOOP     LDA RTBL,X
  109.           STA RPTR
  110.           INX
  111.           LDA RTBL,X
  112.           STA RPTR+1
  113.           CLC
  114.           LDA (RPTR),Y
  115.           ADC OFFSET
  116.           STA (RPTR),Y
  117.           INX
  118.           CPX #RELADR*2
  119.           BCC RLOOP
  120.  
  121. *
  122. *
  123.  
  124.           JSR SPECIAL
  125.  
  126. *
  127. *
  128.  
  129.           LDA #COMHAND
  130.           STA A1L
  131.           LDA #>COMHAND
  132.           STA A1L+1
  133.           LDA #ENDLIST
  134.           STA A2L
  135.           LDA #>ENDLIST
  136.           STA A2L+1
  137.           LDA #0
  138.           STA A4L
  139.           LDA BEGCH
  140.           STA A4L+1
  141.           JSR MOVE
  142.  
  143.           LDA #ROUTINE
  144.           STA A1L
  145.           LDA #>ROUTINE
  146.           STA A1L+1
  147.           LDA #ENDROUT
  148.           STA A2L
  149.           LDA #>ENDROUT
  150.           SEC
  151.           SBC #>BRT0a
  152.           ADC #>ROUTINE
  153.           STA A2L+1
  154.           LDA #0
  155.           STA A4L
  156.           LDA #>AUXROUT
  157.           STA A4L+1
  158.           SEC
  159.           JMP AUXMOVE
  160.  
  161. *
  162. *
  163.  
  164. RTBL      DA R1+2
  165.           DA R2+2
  166.           DA R3+2
  167.           DA R4+2
  168.           DA R5+2
  169.           DA R6+2
  170.           DA R7+2
  171.           DA R8+2
  172.           DA R0a+2
  173.           DA R0b+2
  174.           DA R2a+2+BRT2-BRT0
  175.           DA R2b+2+BRT2-BRT0
  176.           DA R3a+2+BRT3-BRT0
  177.           DA R3b+2+BRT3-BRT0
  178.  
  179. *
  180. *
  181.  
  182. SPECIAL   RTS
  183.  
  184.  
  185. *
  186.  
  187.           DS COMHAND-*
  188.  
  189. *
  190. * SECTION 2: COMMAND HANDLER
  191. *
  192.  
  193.           CLD
  194.  
  195. *
  196.  
  197. *
  198.  
  199.           LDA TXTPTR
  200.           STA TXTTEMP
  201.           LDA TXTPTR+1
  202.           STA TXTTEMP+1
  203.  
  204. *
  205. *
  206.  
  207.           LDY #$00
  208. FINDCMD   INY
  209. R1        LDA CMDLIST,Y
  210.           STA CMDLEN
  211.           CMP #$FF
  212.           BEQ NOCMD
  213.  
  214. *
  215.  
  216.           LDX #$00
  217.           JSR CHRGOT
  218. CMDLOOP   INX
  219.           INY
  220. R2        CMP CMDLIST,Y
  221.           BNE CMDADV
  222.           CPX CMDLEN
  223.           BEQ ACTCMD
  224.           JSR CHRGET
  225.           CLC
  226.           BCC CMDLOOP
  227.  
  228. *
  229. *
  230.  
  231. CMDADV    INY
  232. R3        LDA CMDLIST,Y
  233.           BNE CMDADV
  234.           LDA TXTTEMP
  235.           STA TXTPTR
  236.           LDA TXTTEMP+1
  237.           STA TXTPTR+1
  238.           CLC
  239.           BCC FINDCMD
  240.  
  241. *
  242. *
  243.  
  244. NOCMD     LDY #$02
  245.  
  246. *
  247. *
  248. *
  249. *
  250. *
  251.  
  252. ACTCMD    JSR CHRGET
  253.           INY
  254. R4        LDA CMDLIST,Y
  255.           STA A1L
  256. R5        LDA CMDLIST+1,Y
  257.           STA A1L+1
  258. R6        LDA CMDLIST+2,Y
  259.           STA A2L
  260. R7        LDA CMDLIST+3,Y
  261.           STA A2L+1
  262.           LDA #$00
  263.           STA A4L
  264.           LDA BEGCH
  265.           CLC
  266.           ADC #$01
  267.           STA A4L+1
  268. R8        STA GOROUT+2
  269.           CLC
  270.           JSR AUXMOVE
  271.  
  272. *
  273. *
  274.  
  275. GOROUT    HEX 4C0000
  276.  
  277. *
  278.  
  279. *
  280.  
  281. CMDLIST   HEX 00
  282.           HEX 0100
  283.           DA BRT0
  284.           DA ERT0
  285.  
  286. *
  287.  
  288.           HEX 00
  289.           HEX 01
  290.           ASC '#'
  291.           DA BRT1
  292.           DA ERT1
  293.  
  294. *
  295.  
  296.           HEX 00
  297.           HEX 05
  298.           ASC 'ROUT2'
  299.           DA BRT2
  300.           DA ERT2
  301.  
  302. *
  303.  
  304.           HEX 00
  305.           HEX 02
  306.           HEX 8C33
  307.           DA BRT3
  308.           DA ERT3
  309.  
  310. *
  311. *
  312.  
  313.           HEX 00
  314.           HEX FF00
  315.  
  316. *
  317.  
  318. ENDLIST   DS 1
  319.  
  320.           DS ROUTINE-*
  321.  
  322. * SECTION 3: ROUTINES
  323.  
  324. *
  325. *
  326. *
  327. *
  328. *
  329. *
  330. *
  331. *
  332. *
  333. *
  334. *
  335. *
  336. *
  337. *
  338. *
  339.  
  340. *
  341. *
  342.  
  343.  
  344. BRT0a     LDY #$FF
  345.           CPY CMDLEN
  346.           BEQ BADCMD
  347.  
  348. *
  349.  
  350. NOCDSTR   INY
  351. R0a       LDA NOCMDSTR,Y
  352.           BEQ ERT0a
  353.           JSR COUT
  354.           CLC
  355.           BCC NOCDSTR
  356.  
  357. *
  358.  
  359. BADCMD    INY
  360. R0b       LDA BADCMDST,Y
  361.           BEQ ERT0a
  362.           JSR COUT
  363.           CLC
  364.           BCC BADCMD
  365.  
  366. *
  367.  
  368. NOCMDSTR  HEX 8D87
  369.           ASC "NO COMMAND STRING"
  370.           HEX 8D00
  371. BADCMDST  HEX 8D87
  372.           ASC "INCORRECT COMMAND STRING"
  373.           HEX 8D00
  374. ERT0a     JMP $3D0
  375.  
  376. BRT0      = AUXROUT
  377. ERT0      = ERT0a+2-BRT0a+BRT0
  378.  
  379. *
  380. *
  381. *
  382.  
  383.           ORG ROUTINE
  384.  
  385. *
  386. *
  387. *
  388.  
  389. BRT1a     JSR CHRGOT
  390.           CMP #'$'
  391.           BNE DtoH
  392.           BEQ HtoD
  393.  
  394. *
  395.  
  396. HtoD      LDX #$00
  397.           STX A2L
  398.           STX A2L+1
  399.           LDY #$04
  400. H2D       JSR CHRGET
  401.           BEQ PRT
  402.           EOR #$30
  403.           CMP #$0A
  404.           BCC DIG
  405.           ADC #$88
  406.           CMP #$FA
  407.           BCS DIG
  408.           JMP SYNERR
  409. DIG       LDX #$03
  410.           ASL
  411.           ASL
  412.           ASL
  413.           ASL
  414. NXTBIT    ASL
  415.           ROL A2L
  416.           ROL A2L+1
  417.           DEX
  418.           BPL NXTBIT
  419.           DEY
  420.           BMI ILLNUM
  421.           BPL H2D
  422. ILLNUM    JMP ILLQUAN
  423.  
  424. PRT       LDX A2L
  425.           LDA A2L+1
  426.           JSR LINPRT
  427.           BPL RTN
  428.  
  429. *
  430.  
  431. DtoH      LDY #$00
  432.           JSR FRMNUM
  433.           JSR GETADR
  434.           LDA #"$"
  435.           JSR COUT
  436.           LDX LINNUM
  437.           LDA LINNUM+1
  438.           JSR PRNTAX
  439. RTN       JSR CROUT
  440. ERT1a     RTS
  441.  
  442. BRT1      = ERT0+1
  443. ERT1      = ERT1a-BRT1a+BRT1
  444.  
  445. *
  446. *
  447. *
  448. *
  449.  
  450.           ORG ROUTINE
  451.  
  452. BRT2a     LDX #$00
  453. R2a       LDA R2MSG,X
  454.           BEQ ERT2a
  455.           JSR COUT
  456.           INX
  457. R2b       JMP R2a
  458. R2MSG     HEX 8D
  459.           ASC "SAMPLE ROUTINE"8D00
  460. ERT2a     RTS
  461.  
  462. BRT2      = ERT1+1
  463. ERT2      = ERT2a-BRT2a+BRT2
  464.  
  465. *
  466. *
  467.  
  468.           ORG ROUTINE
  469.  
  470. BRT3a     LDX #$00
  471. R3a       LDA R3MSG,X
  472.           BEQ ERT3a
  473.           JSR COUT
  474.           INX
  475. R3b       JMP R3a
  476. R3MSG     HEX 8D
  477.           ASC "SAMPLE OF A ROUTINE"8D
  478.           ASC "WITH A BASIC KEYWORD"8D
  479.           ASC "IN THE COMMAND STRING"8D00
  480. ERT3a     RTS
  481.  
  482. BRT3      = ERT2+1
  483. ERT3      = ERT3a-BRT3a+BRT3
  484.  
  485. *
  486.  
  487. ENDROUT   = ERT3+1+ROUTINE
  488.