home *** CD-ROM | disk | FTP | other *** search
/ Set of Apple II Hard Drive Images / hard.hdv / HARD / LISTINGS / MAF4.SRC < prev    next >
Encoding:
Text File  |  1995-07-06  |  12.3 KB  |  858 lines  |  [04] ASCII Text (0x0000)

  1. *  The saga continues...
  2. *       Part IV
  3.  
  4. * Originally at $1AA0
  5.  
  6.  REL
  7.  DAT
  8.  
  9.  DSK MAF.4
  10.  
  11. DATASTK = $0300
  12. H7FFF = $7FFF
  13. H96A2 = $96A2
  14.  
  15. WORD EXT
  16. LINK3 EXT ; previous link
  17. LIT EXT ; =  $093A
  18. CLIT EXT ; =  $0978
  19. BRANCH EXT ; =  $09D9
  20. ZBRANCH EXT ; =  $09F3
  21. PRNLOOP EXT ; =  $0A16
  22. PRNPLOOP EXT ; =  $0A46
  23. PRNDO EXT ; =  $0A7F
  24. I EXT ; =  $0A9C
  25. DIGIT EXT ; =  $0AD1
  26. EMBRACE EXT ; =  $0B06
  27. CMOVE EXT ; =  $0C62
  28. USTAR EXT ; =  $0CC7
  29. AND EXT ; =  $0D59
  30. OR EXT ; =  $0D72
  31. SEMIS EXT ; =  $0DD9
  32. LEAVE EXT ; =  $0E04
  33. TOR EXT ; =  $0E1F
  34. RFROM EXT ; =  $0E31
  35. RFETCH EXT ; =  $0E45
  36. ZEQUALS EXT ; =  $0EC0
  37. EQUALS EXT ; =  $0F27
  38. LESSTHAN EXT ; =  $0F5A
  39. GREATER EXT ; =  $0F9F
  40. PLUS EXT ; =  $0FE0
  41. MINUS EXT ; =  $0FFC
  42. DPLUS EXT ; =  $1049
  43. DNEGATE EXT ; =  $107D
  44. DROP EXT ; =  $10AC
  45. OVER EXT ; =  $10F3
  46. DUP EXT ; =  $1105
  47. QDUP EXT ; =  $1118
  48. TWODUP EXT ; =  $112F
  49. SWAP EXT ; =  $1170
  50. ROT EXT ; =  $11CE
  51. ONEPLUS EXT ; =  $1226
  52. TWOPLUS EXT ; =  $1241
  53. ONEMINUS EXT ; =  $1251
  54. TWOMINUS EXT ; =  $126C
  55. PLUSTORE EXT ; =  $12C8
  56. STOREZER EXT ; =  $130F
  57. COMMA EXT ; =  $133B
  58. CCOMMA EXT ; =  $135D
  59. FETCH EXT ; =  $138B
  60. CFETCH EXT ; =  $13B0
  61. STORE EXT ; =  $13CD
  62. CSTORE EXT ; =  $13F0
  63. DOCREATE EXT ; =  $1595
  64. DOCOL EXT ; =  $15BD
  65. NEGONE EXT ; =  $165C
  66. ZERO EXT ; =  $1664
  67. ONE EXT ; =  $166C
  68. BL EXT ; =  $1685
  69. LIMIT EXT ; =  $16B6
  70. FIRST EXT ; =  $16C2
  71. HBT EXT ; =  $16D8
  72. BS EXT ; =  $16F5
  73. TIB EXT ; =  $1718
  74. BASE EXT ; =  $17CD
  75. OFFSET EXT ; =  $180E
  76. STREAM EXT ; =  $181A
  77. BLK EXT ; =  $1823
  78. TOIN EXT ; =  $182C
  79. STATE EXT ; =  $1840
  80. DPL EXT ; =  $1849
  81. EMIT EXT ; =  $185C
  82. TYPE EXT ; =  $1866
  83. FKEY EXT ; =  $1877
  84. WBUF EXT ; =  $1881
  85. EXPECT EXT ; =  $188D
  86. HERE EXT ; =  $18CA
  87. ALLOT EXT ; =  $18DA
  88. TRAVERSE EXT ; =  $1900
  89. LATEST EXT ; =  $1922
  90. SMUDGE EXT ; =  $1943
  91. QERROR EXT ; =  $19F6
  92. QCOMP EXT ; =  $1A10
  93. QEXEC EXT ; =  $1A27
  94. QCSP EXT ; =  $1A4F
  95. BLOCK EXT ; =  $28E5
  96.  
  97. ********************************
  98. *                              *
  99. *          COMPILE             *
  100. *                              *
  101. ********************************
  102.  
  103. H1AA0 DA LINK3
  104.  HEX 87
  105.  DCI 'COMPILE'
  106. COMPILE ENT
  107.  DA DOCOL
  108.  
  109.  DA QCOMP
  110.  DA RFROM
  111.  DA DUP
  112.  DA TWOPLUS
  113.  DA TOR
  114.  DA FETCH
  115.  DA COMMA
  116.  DA SEMIS
  117.  
  118. ********************************
  119. *                              *
  120. *             [                *
  121. *                              *
  122. ********************************
  123.  
  124. H1ABC DA H1AA0
  125.  HEX C1
  126.  ASC "["
  127. LFBRAKET ENT
  128.  DA DOCOL
  129.  
  130.  DA STATE
  131.  DA STOREZER
  132.  DA SEMIS
  133.  
  134. ********************************
  135. *                              *
  136. *             ]                *
  137. *                              *
  138. ********************************
  139.  
  140. H1AC8 DA H1ABC
  141.  
  142.  HEX 81
  143.  ASC "]"
  144. RTBRAKET ENT
  145.  DA DOCOL
  146.  
  147.  DA CLIT
  148.  HEX C0
  149.  DA STATE
  150.  DA STORE
  151.  DA SEMIS
  152.  
  153. ********************************
  154. *                              *
  155. *            HEX               *
  156. *                              *
  157. ********************************
  158.  
  159. H1AD7 DA H1AC8
  160.  HEX 83
  161.  DCI 'HEX'
  162. HEX16 ENT
  163.  DA DOCOL
  164.  
  165.  DA CLIT
  166.  DB 16
  167.  DA BASE
  168.  DA STORE
  169.  DA SEMIS
  170.  
  171. ********************************
  172. *                              *
  173. *             DEC              *
  174. *                              *
  175. ********************************
  176.  
  177. H1AE8 DA H1AD7
  178.  HEX 83
  179.  DCI 'DEC'
  180. DEC ENT
  181.  DA DOCOL
  182.  
  183.  DA CLIT
  184.  DB 10
  185.  DA BASE
  186.  DA STORE
  187.  DA SEMIS
  188.  
  189. ********************************
  190. *                              *
  191. *           (;CODE)            *
  192. *                              *
  193. ********************************
  194.  
  195. H1AF9 DA H1AE8
  196.  HEX 87
  197.  DCI '(;CODE)'
  198. PRNSCODE ENT
  199.  DA DOCOL
  200.  
  201.  DA RFROM
  202.  DA LATEST
  203.  DA TWOPLUS
  204.  DA ONE
  205.  DA TRAVERSE
  206.  DA ONEPLUS
  207.  DA STORE
  208.  DA SEMIS
  209.  
  210. ********************************
  211. *                              *
  212. *           ;CODE              *
  213. *                              *
  214. ********************************
  215.  
  216. H1B15 DA H1AF9
  217.  HEX C5
  218.  DCI ';CODE'
  219. SCODE ENT
  220.  DA DOCOL
  221.  
  222.  DA QCSP
  223.  DA COMPILE
  224.  DA PRNSCODE
  225.  DA LFBRAKET
  226.  DA SMUDGE
  227.  DA SEMIS
  228.  
  229. ********************************
  230. *                              *
  231. *             DR1              *
  232. *                              *
  233. ********************************
  234.  
  235. H1B2B DA H1B15
  236.  HEX 83
  237.  DCI 'DR1'
  238. DR1 ENT
  239.  DA DOCOL
  240.  
  241.  DA OFFSET
  242.  DA STOREZER
  243.  DA SEMIS
  244.  
  245. ********************************
  246. *                              *
  247. *           PREV               *
  248. *                              *
  249. ********************************
  250.  
  251. H1B39 DA H1B2B
  252.  HEX 84
  253.  DCI 'PREV'
  254. PREV ENT
  255.  DA DOCREATE
  256.  
  257.  DA $AEEF ; calculated FIRST: 4 buffers
  258.  
  259. ********************************
  260. *                              *
  261. *           USE                *
  262. *                              *
  263. ********************************
  264.  
  265. H1B44 DA H1B39
  266.  HEX 83
  267.  DCI 'USE'
  268. USE ENT
  269.  DA DOCREATE
  270.  
  271.  DA $AEEF
  272.  
  273. ********************************
  274. *                              *
  275. *           DOES>              *
  276. *                              *
  277. ********************************
  278.  
  279. H1B4E DA H1B44
  280.  HEX C5
  281.  DCI 'DOES>'
  282. DOES ENT
  283.  DA DOCOL
  284.  
  285.  DA QCSP
  286.  DA COMPILE
  287.  DA SMUDGE
  288.  DA COMPILE
  289.  DA PRNSCODE
  290.  DA CLIT
  291.  HEX 20
  292.  DA CCOMMA
  293.  DA LIT
  294.  DA DODOES
  295.  DA COMMA
  296.  DA SEMIS
  297.  
  298. DODOES ENT
  299.  DEX
  300.  DEX
  301.  
  302.  CLC
  303.  LDA $FA
  304.  ADC #$02
  305.  STA DATASTK,X
  306.  
  307.  TYA
  308.  ADC $FB
  309.  STA DATASTK+1,X
  310.  
  311.  SEC
  312.  PLA
  313.  SBC #$01
  314.  STA $FA
  315.  
  316.  PLA
  317.  SBC #$00
  318.  STA $FB
  319.  JMP DOCOL
  320.  
  321. ********************************
  322. *                              *
  323. *            COUNT             *
  324. *                              *
  325. ********************************
  326.  
  327. H1B8D DA H1B4E
  328.  HEX 85
  329.  DCI 'COUNT'
  330. COUNT ENT
  331.  DA DOCOL
  332.  
  333.  DA DUP
  334.  DA ONEPLUS
  335.  DA SWAP
  336.  DA CFETCH
  337.  DA SEMIS
  338.  
  339. ********************************
  340. *                              *
  341. *           (TYPE)             *
  342. *                              *
  343. ********************************
  344.  
  345. H1BA1 DA H1B8D
  346.  HEX 86
  347.  DCI '(TYPE)'
  348. PRNTYPE ENT
  349.  DA DOCOL
  350.  
  351.  DA QDUP
  352.  DA ZBRANCH
  353.  DA H1BC8
  354.  DA OVER
  355.  DA PLUS
  356.  DA SWAP
  357.  DA PRNDO
  358. H1BBA DA I
  359.  DA CFETCH
  360.  DA EMIT
  361.  DA PRNLOOP
  362.  DA H1BBA
  363.  DA BRANCH
  364.  DA H1BCA
  365. H1BC8 DA DROP
  366. H1BCA DA SEMIS
  367.  
  368. ********************************
  369. *                              *
  370. *          -TRAILING           *
  371. *                              *
  372. ********************************
  373.  
  374. H1BCC DA H1BA1
  375.  HEX 89
  376.  DCI '-TRAILING'
  377. DTRAIL ENT
  378.  DA DOCOL
  379.  
  380.  DA DUP
  381.  DA ZERO
  382.  DA PRNDO
  383. H1BE0 DA TWODUP
  384.  DA PLUS
  385.  DA ONEMINUS
  386.  DA CFETCH
  387.  DA BL
  388.  DA MINUS
  389.  DA ZBRANCH
  390.  DA H1BF6
  391.  DA LEAVE
  392.  DA BRANCH
  393.  DA H1BF8
  394. H1BF6 DA ONEMINUS
  395. H1BF8 DA PRNLOOP
  396.  DA H1BE0
  397.  DA SEMIS
  398.  
  399. ********************************
  400. *                              *
  401. *          EXPECT79            *
  402. *                              *
  403. ********************************
  404.  
  405. H1BFE DA H1BCC
  406.  HEX 88
  407.  DCI 'EXPECT79'
  408. EXPECT79 ENT
  409.  DA DOCOL
  410.  
  411.  DA OVER
  412.  DA PLUS
  413.  DA OVER
  414.  DA PRNDO
  415. H1C13 DA FKEY
  416.  DA DUP
  417.  DA BS
  418.  DA CFETCH
  419.  DA EQUALS
  420.  DA ZBRANCH
  421.  DA H1C3C
  422.  DA DROP
  423.  DA CLIT
  424.  DB 8
  425.  DA OVER
  426.  DA I
  427.  DA EQUALS
  428.  DA DUP
  429.  DA RFROM
  430.  DA TWOMINUS
  431.  DA PLUS
  432.  DA TOR
  433.  DA MINUS
  434.  DA BRANCH
  435.  DA H1C5F
  436. H1C3C DA DUP
  437.  DA CLIT
  438.  HEX 0D
  439.  DA EQUALS
  440.  DA ZBRANCH
  441.  DA H1C53
  442.  DA LEAVE
  443.  DA DROP
  444.  DA BL
  445.  DA ZERO
  446.  DA BRANCH
  447.  DA H1C55
  448. H1C53 DA DUP
  449. H1C55 DA I
  450.  DA CSTORE
  451.  DA I
  452.  DA ONEPLUS
  453.  DA STOREZER
  454. H1C5F DA EMIT
  455.  DA PRNLOOP
  456.  DA H1C13
  457.  DA DROP
  458.  DA SEMIS
  459.  
  460. ********************************
  461. *                              *
  462. *           QUERY              *
  463. *                              *
  464. ********************************
  465.  
  466. H1C69 DA H1BFE
  467.  HEX 85
  468.  DCI 'QUERY'
  469. QUERY ENT
  470.  DA DOCOL
  471.  
  472.  DA TIB
  473.  DA FETCH
  474.  DA CLIT
  475.  HEX 50
  476.  DA EXPECT
  477.  DA TOIN
  478.  DA STOREZER
  479.  DA SEMIS
  480.  
  481. ********************************
  482. *                              *
  483. *           null               *
  484. *                              *
  485. ********************************
  486.  
  487. H1C82 DA H1C69
  488.  HEX C1
  489.  HEX 80
  490. NULL ENT
  491.  DA DOCOL
  492.  
  493.  DA BLK
  494.  DA FETCH
  495.  DA ZBRANCH
  496.  DA H1C92
  497.  DA QEXEC
  498. H1C92 DA RFROM
  499.  DA DROP
  500.  DA SEMIS
  501.  
  502. ********************************
  503. *                              *
  504. *            FILL              *
  505. *                              *
  506. ********************************
  507.  
  508. H1C98 DA H1C82
  509.  HEX 84
  510.  DCI 'FILL'
  511. FILL ENT
  512.  DA DOCOL
  513.  
  514.  DA SWAP
  515.  DA TOR
  516.  DA OVER
  517.  DA CSTORE
  518.  DA DUP
  519.  DA ONEPLUS
  520.  DA RFROM
  521.  DA ONEMINUS
  522.  DA CMOVE
  523.  DA SEMIS
  524.  
  525. ********************************
  526. *                              *
  527. *            ERASE             *
  528. *                              *
  529. ********************************
  530.  
  531. H1CB5 DA H1C98
  532.  HEX 85
  533.  DCI 'ERASE'
  534. ERASE ENT
  535.  DA DOCOL
  536.  
  537.  DA CLIT
  538.  HEX 00
  539.  DA FILL
  540.  DA SEMIS
  541.  
  542. ********************************
  543. *                              *
  544. *           BLANKS             *
  545. *                              *
  546. ********************************
  547.  
  548. H1CC6 DA H1CB5
  549.  HEX 86
  550.  DCI 'BLANKS'
  551. BLANKS ENT
  552.  DA DOCOL
  553.  
  554.  DA BL
  555.  DA FILL
  556.  DA SEMIS
  557.  
  558. ********************************
  559. *                              *
  560. *           PAD                *
  561. *                              *
  562. ********************************
  563.  
  564. H1CD7 DA H1CC6
  565.  HEX 83
  566.  DCI 'PAD'
  567. PAD ENT
  568.  DA DOCOL
  569.  
  570.  DA HERE
  571.  DA CLIT
  572.  HEX 44
  573.  DA PLUS
  574.  DA SEMIS
  575.  
  576. ********************************
  577. *                              *
  578. *           HEAVE              *
  579. *                              *
  580. ********************************
  581.  
  582. H1CE8 DA H1CD7
  583.  HEX 85
  584.  DCI 'HEAVE'
  585. HEAVE ENT
  586.  DA DOCOL
  587.  
  588.  DA PREV
  589.  DA FETCH
  590.  DA DUP
  591.  DA USE
  592.  DA STORE
  593.  DA LIT
  594.  DA H7FFF
  595.  DA SWAP
  596.  DA STORE
  597.  DA SEMIS
  598.  
  599. ********************************
  600. *                              *
  601. *           BARF               *
  602. *                              *
  603. ********************************
  604.  
  605. H1D06 DA H1CE8
  606.  HEX 84
  607.  DCI 'BARF'
  608. BARF ENT
  609.  DA DOCOL
  610.  
  611.  DA LIMIT
  612.  DA FIRST
  613.  DA PRNDO
  614. H1D15 DA I
  615.  DA PREV
  616.  DA STORE
  617.  DA HEAVE
  618.  DA HBT
  619.  DA PRNPLOOP
  620.  DA H1D15
  621.  DA SEMIS
  622.  
  623. ********************************
  624. *                              *
  625. *          SCAN>>              *
  626. *                              *
  627. ********************************
  628.  
  629. H1D25 DA H1D06
  630.  HEX 86
  631.  DCI 'SCAN>>'
  632. SCANN ENT ;  ( delim --- addr count )
  633.  DA DOCOL
  634.  
  635.  DA STREAM ; STREAM @ ?DUP 0= IF
  636.  DA FETCH
  637.  DA QDUP
  638.  DA ZEQUALS
  639.  DA ZBRANCH
  640.  DA H1D56
  641.  DA BLK ;    BLK @ ?DUP IF
  642.  DA FETCH
  643.  DA QDUP
  644.  DA ZBRANCH
  645.  DA H1D4C
  646.  DA BLOCK ;        BLOCK
  647.  DA BRANCH ;    ELSE
  648.  DA H1D50
  649. H1D4C DA TIB ;       @
  650.  DA FETCH ;    THEN DUP STREAM !
  651. H1D50 DA DUP
  652.  DA STREAM
  653.  DA STORE
  654. H1D56 DA TOIN ; ELSE
  655.  DA FETCH ;    >IN @ + SWAP
  656.  DA PLUS
  657.  DA SWAP
  658.  DA EMBRACE ;    EMBRACE >IN +!
  659.  DA TOIN ; THEN ;
  660.  DA PLUSTORE
  661.  DA SEMIS
  662.  
  663. ********************************
  664. *                              *
  665. *          (WORD)              *
  666. *                              *
  667. ********************************
  668.  
  669. H1D66 DA H1D25
  670.  HEX 86
  671.  DCI '(WORD)'
  672. PRNWORD ENT
  673.  DA DOCOL
  674.  
  675.  DA SCANN ; SCAN>> does work
  676.  DA TOR
  677.  DA RFETCH ; save char count
  678.  DA WBUF
  679.  DA CSTORE ; put in len byte at WBUF
  680.  DA WBUF
  681.  DA ONEPLUS
  682.  DA RFROM
  683.  DA ONEPLUS
  684.  DA CMOVE ; copy string to WBUF
  685.  DA WBUF ; prep for type using WBUF
  686.  DA SEMIS
  687.  
  688. ********************************
  689. *                              *
  690. *            (.")              *
  691. *                              *
  692. ********************************
  693.  
  694. H1D87 DA H1D66
  695.  HEX 84
  696.  DCI '(.")'
  697. PRNDQUOT ENT
  698.  DA DOCOL
  699.  
  700.  DA RFETCH
  701.  DA COUNT
  702.  DA DUP
  703.  DA ONEPLUS
  704.  DA RFROM
  705.  DA PLUS
  706.  DA TOR
  707.  DA TYPE
  708.  DA SEMIS
  709.  
  710. ********************************
  711. *                              *
  712. *             ."               *
  713. *                              *
  714. ********************************
  715.  
  716. H1DA2 DA H1D87
  717.  HEX C2
  718.  DCI '."'
  719. DOTQUOT ENT
  720.  DA DOCOL
  721.  
  722.  DA CLIT
  723.  HEX 22
  724.  DA WORD
  725.  DA STATE
  726.  DA FETCH
  727.  DA ZBRANCH
  728.  DA H1DC4
  729.  DA CFETCH
  730.  DA ONEPLUS
  731.  DA COMPILE
  732.  DA PRNDQUOT
  733.  DA ALLOT
  734.  DA BRANCH
  735.  DA H1DC8
  736. H1DC4 DA COUNT
  737.  DA TYPE
  738. H1DC8 DA SEMIS
  739.  
  740. ********************************
  741. *                              *
  742. *           CONVERT            *
  743. *                              *
  744. ********************************
  745.  
  746. H1DCA DA H1DA2
  747.  HEX 87
  748.  DCI 'CONVERT'
  749. CONVERT ENT ;  ( d1 a1 --- d2 a2 )
  750.  DA DOCOL
  751.  
  752. H1DD6 DA ONEPLUS
  753.  DA DUP
  754.  DA TOR
  755.  DA CFETCH
  756.  DA BASE
  757.  DA FETCH
  758.  DA DIGIT
  759.  DA ZBRANCH
  760.  DA H1E12
  761.  DA SWAP
  762.  DA BASE
  763.  DA FETCH
  764.  DA USTAR
  765.  DA DROP
  766.  DA ROT
  767.  DA BASE
  768.  DA FETCH
  769.  DA USTAR
  770.  DA DPLUS
  771.  DA DPL
  772.  DA FETCH
  773.  DA ONEPLUS
  774.  DA ZBRANCH
  775.  DA H1E0C
  776.  DA ONE
  777.  DA DPL
  778.  DA PLUSTORE
  779. H1E0C DA RFROM
  780.  DA BRANCH
  781.  DA H1DD6
  782. H1E12 DA RFROM
  783.  DA SEMIS
  784.  
  785. ********************************
  786. *                              *
  787. *          (NUMBER)            *
  788. *                              *
  789. ********************************
  790.  
  791. LINK4 ENT
  792.  DA H1DCA
  793.  HEX 88
  794.  DCI '(NUMBER)'
  795. PRNUMBER ENT ; ( addr -- d )
  796.  DA DOCOL
  797.  
  798.  DA ZERO
  799.  DA ZERO
  800.  DA ROT
  801.  DA DUP
  802.  DA ONEPLUS
  803.  DA CFETCH
  804.  DA CLIT
  805.  HEX 2D ; test for -???
  806.  DA EQUALS
  807.  DA DUP
  808.  DA TOR
  809.  DA PLUS
  810.  DA NEGONE
  811. H1E3A DA DPL
  812.  DA STORE
  813.  DA CONVERT
  814.  DA DUP
  815.  DA CFETCH
  816.  DA DUP
  817.  DA BL
  818.  DA EQUALS
  819.  DA OVER
  820.  DA ZEQUALS
  821.  DA OR
  822.  DA SWAP
  823.  DA CLIT
  824.  HEX 0D
  825.  DA EQUALS
  826.  DA OR
  827.  DA ZEQUALS
  828.  DA ZBRANCH ; bad char -- not delimeter
  829.  DA H1E88
  830.  DA DUP
  831.  DA CFETCH
  832.  DA DUP
  833.  DA CLIT
  834.  HEX 2B
  835.  DA GREATER
  836.  DA OVER
  837.  DA CLIT
  838.  HEX 30
  839.  DA LESSTHAN
  840.  DA AND
  841.  DA SWAP
  842.  DA CLIT
  843.  HEX 3A
  844.  DA EQUALS
  845.  DA OR
  846.  DA ZEQUALS
  847.  DA ZERO
  848.  DA QERROR
  849.  DA ZERO
  850.  DA BRANCH
  851.  DA H1E3A
  852. H1E88 DA DROP
  853.  DA RFROM
  854.  DA ZBRANCH
  855.  DA H1E92
  856.  DA DNEGATE
  857. H1E92 DA SEMIS
  858.