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

  1. *  Mad Apple Forth
  2. *     Part 2
  3.  
  4. * Originally started at 0xE6D
  5.  
  6.  REL
  7.  DAT
  8.  
  9.  DSK MAF.2
  10.  
  11. N = $01
  12. XSAVE = $EB
  13. DATASTK = $0300
  14.  
  15. *  Externals....
  16.  
  17. PUSH EXT ; = $094D
  18. PUT EXT ; = $094F
  19. NEXT EXT ; = $0956
  20. SETUP EXT ; = $0981
  21. POPTWO EXT ; = $0A91
  22. POP EXT ; = $0A93
  23. H0BBF EXT ; = $0BBF
  24. LINK1 EXT ; = $0E56 ; link to previous file
  25.  
  26. *  Local..
  27.  
  28. CH = $24
  29. CV = $25
  30. UP = $FE
  31.  
  32. KEY = $C000
  33. STROBE = $C010
  34. VTAB = $FC22
  35. VTABZ = $FC24
  36. CLREOP = $FC42
  37. HOME = $FC58
  38. SCROLL = $FC70
  39. CLREOL = $FC9C
  40. HFC9E = $FC9E
  41. RDKEY = $FD0C
  42. HFD35 = $FD35
  43. CROUT = $FD8E
  44. COUT = $FDED
  45. HFE80 = $FE80
  46. HFE84 = $FE84
  47.  
  48. ********************************
  49. *                              *
  50. *           SVR&P              *
  51. *                              *
  52. ********************************
  53.  
  54. RPSAVE ENT
  55.  DB $FD ; $1FD... (room for 1 16b)
  56. SPSAVE ENT
  57.  DB $C7 ; $3C7...
  58.  
  59. H0E6D DA LINK1
  60.  HEX 85
  61.  DCI 'SVR&P'
  62. SVRP ENT ;  ( n --- )
  63.  DA *+2 ; number of stack items
  64.  
  65.  LDA #2
  66.  JSR SETUP ; put one stack item in N
  67.  STX XSAVE
  68.  ASL N ; first byte (lo): 2*
  69.  TXA ; X to A: SP
  70.  
  71.  CLC
  72.  ADC N ; add N to SP
  73.  STA SPSAVE ; save..
  74.  
  75.  TSX ; stack ptr to X
  76.  STY $DE ; zero (?) to Applesoft ERR
  77. H0E8A STX RPSAVE ; put RP in e6b
  78.  
  79.  LDX XSAVE ; restore X
  80.  JMP NEXT
  81.  
  82. ********************************
  83. *                              *
  84. *            SVRP-             *
  85. *                              *
  86. ********************************
  87.  
  88. H0E92 DA H0E6D
  89.  HEX 85
  90.  DCI 'SVRP-'
  91. SVRPSUB ENT ; no args
  92.  DA *+2 ; leaves room for 1 16b val
  93. ; on SP restore
  94.  STX XSAVE ; save X
  95.  STX SPSAVE ; save SP
  96.  TSX ; get RP
  97.  DEX ; room for one
  98.  DEX
  99.  JMP H0E8A ; share code
  100.  
  101. ********************************
  102. *                              *
  103. *            RSR&P             *
  104. *                              *
  105. ********************************
  106.  
  107. H0EA7 DA H0E92
  108.  HEX 85
  109.  DCI 'RSR&P'
  110. RSRP ENT
  111.  DA *+2
  112.  
  113.  LDX RPSAVE ; restore RP
  114.  TXS
  115.  LDX SPSAVE ; restore SP
  116.  JMP NEXT
  117.  
  118. ********************************
  119. *                              *
  120. *             0=               *
  121. *                              *
  122. ********************************
  123.  
  124. H0EBB DA H0EA7
  125.  HEX 82
  126.  DCI '0='
  127. ZEQUALS ENT
  128.  DA *+2
  129.  
  130.  LDA DATASTK,X
  131.  ORA DATASTK+1,X
  132.  BNE H0ECB
  133.  
  134.  INY
  135. H0ECB TYA
  136. H0ECC PHA
  137.  LDA #0
  138.  JMP PUT
  139.  
  140. ********************************
  141. *                              *
  142. *              0<              *
  143. *                              *
  144. ********************************
  145.  
  146. H0ED2 DA H0EBB
  147.  HEX 82
  148.  DCI '0<'
  149. ZLESS ENT
  150.  DA *+2
  151.  
  152.  LDA DATASTK+1,X ; sign is b8
  153.  ASL ; sign to carry
  154.  TYA ; zero A (carry unaffected)
  155.  ROR ; roll carry bit to bit 0
  156.  JMP H0ECC ; put A as low byte
  157.  
  158. ********************************
  159. *                              *
  160. *            0>                *
  161. *                              *
  162. ********************************
  163.  
  164. H0EE2 DA H0ED2
  165.  HEX 82
  166.  DCI '0>'
  167. ZGREATER ENT
  168.  DA *+2
  169.  
  170.  LDA DATASTK+1,X ; hibyte
  171.  BMI H0EF5 ; if neg, exit(0)
  172.  
  173.  ORA DATASTK,X
  174.  BEQ H0EF5
  175.  
  176.  SEC
  177. H0EF5 TYA
  178.  ROR
  179.  JMP H0ECC
  180.  
  181. ********************************
  182. *                              *
  183. *            2^                *
  184. *                              *
  185. ********************************
  186.  
  187. H0EFA DA H0EE2
  188.  HEX 82
  189.  DCI '2^'
  190. TWOPWR ENT ; used?
  191.  DA *+2
  192.  
  193.  LDA DATASTK,X
  194.  TAY
  195.  LDA #$00
  196.  
  197.  SEC
  198. H0F09 ROL
  199.  DEY
  200.  BPL H0F09
  201.  
  202.  JMP H0ECC
  203.  
  204. *===============================
  205. *  Unsigned comparison for equality
  206.  
  207. H0F10 LDA DATASTK+1,X ; bottom stack item lo
  208.  CMP DATASTK+3,X ; second item lo
  209.  BNE H0F21 ; equality
  210.  
  211.  LDA DATASTK,X ; bottom stack item hi
  212.  CMP DATASTK+2,X ; second item hi
  213.  BNE H0F21 ; equality
  214.  
  215.  INY ; 1 is true
  216. H0F21 TYA ; put Y (t/f) in accum
  217.  RTS
  218.  
  219. ********************************
  220. *                              *
  221. *              =               *
  222. *                              *
  223. ********************************
  224.  
  225. H0F23 DA H0EFA
  226.  HEX 81
  227.  ASC "="
  228. EQUALS ENT
  229.  DA *+2
  230.  
  231.  JSR H0F10
  232. H0F2C INX
  233.  INX
  234.  JMP H0ECC
  235.  
  236. ********************************
  237. *                              *
  238. *             <>               *
  239. *                              *
  240. ********************************
  241.  
  242. H0F31 DA H0F23
  243.  HEX 82
  244.  DCI '<>'
  245. NOTEQ ENT
  246.  DA *+2
  247.  
  248.  JSR H0F10
  249. H0F3B EOR #1 ; invert flag
  250.  JMP H0F2C
  251.  
  252. *===============================
  253. *   Signed comparison
  254. *        really is "<" code
  255.  
  256. H0F40 LDA DATASTK+2,X ; second item lo
  257.  SEC
  258.  SBC DATASTK,X ; subtract first item lo
  259.  
  260.  LDA DATASTK+3,X ; second item hi
  261.  SBC DATASTK+1,X ; first item hi
  262. H0F4D BVC H0F51 ; overflow
  263.  
  264.  EOR #$80 ; sign-bit wrong: change
  265. H0F51 BPL H0F54 ; exit(0) if result positive
  266.  
  267.  INY
  268. H0F54 TYA
  269.  RTS
  270.  
  271. ********************************
  272. *                              *
  273. *              <               *
  274. *                              *
  275. ********************************
  276.  
  277. H0F56 DA H0F31
  278.  HEX 81
  279.  ASC "<"
  280. LESSTHAN ENT
  281.  DA *+2
  282.  
  283.  JSR H0F40
  284.  JMP H0F2C
  285.  
  286. ********************************
  287. *                              *
  288. *             >=               *
  289. *                              *
  290. ********************************
  291.  
  292. H0F62 DA H0F56
  293.  HEX 82
  294.  DCI '>='
  295. GRTROREQ ENT
  296.  DA *+2
  297.  
  298.  JSR H0F40
  299.  JMP H0F3B
  300.  
  301. ********************************
  302. *                              *
  303. *            MAX               *
  304. *                              *
  305. ********************************
  306.  
  307. H0F6F DA H0F62
  308.  HEX 83
  309.  DCI 'MAX'
  310. MAX ENT
  311.  DA *+2
  312.  
  313.  JSR H0F40
  314. H0F7A BNE H0F7F
  315.  
  316.  JMP POP
  317.  
  318. H0F7F LDA DATASTK,X
  319.  PHA
  320.  LDA DATASTK+1,X
  321. H0F86 INX
  322.  INX
  323.  JMP PUT
  324.  
  325. *===============================
  326. *   Signed comparison #2
  327. *      really code for ">"
  328.  
  329. H0F8B LDA DATASTK,X ; first item lo
  330.  SEC
  331.  SBC DATASTK+2,X ; subtract 2nd item lo
  332.  LDA DATASTK+1,X ; get first item hi
  333.  SBC DATASTK+3,X ; subtract 2nd item hi
  334.  JMP H0F4D ; steal code: other signed cmp.
  335.  
  336. ********************************
  337. *                              *
  338. *             >                *
  339. *                              *
  340. ********************************
  341.  
  342. H0F9B DA H0F6F
  343.  HEX 81
  344.  ASC ">"
  345. GREATER ENT
  346.  DA *+2
  347.  
  348.  JSR H0F8B
  349.  JMP H0F2C
  350.  
  351. ********************************
  352. *                              *
  353. *            =<                *
  354. *                              *
  355. ********************************
  356.  
  357. H0FA7 DA H0F9B
  358.  HEX 82
  359.  DCI '=<'
  360. EQORLESS ENT
  361.  DA *+2
  362.  
  363.  JSR H0F8B
  364.  JMP H0F3B
  365.  
  366. ********************************
  367. *                              *
  368. *            MIN               *
  369. *                              *
  370. ********************************
  371.  
  372. H0FB4 DA H0FA7
  373.  HEX 83
  374.  DCI 'MIN'
  375. MIN ENT
  376.  DA *+2
  377.  
  378.  JSR H0F8B
  379.  JMP H0F7A
  380.  
  381. ********************************
  382. *                              *
  383. *            U<                *
  384. *                              *
  385. ********************************
  386.  
  387. H0FC2 DA H0FB4
  388.  HEX 82
  389.  DCI 'U<'
  390. ULESS ENT
  391.  DA *+2
  392.  
  393.  LDA DATASTK+2,X
  394.  CMP DATASTK,X
  395.  LDA DATASTK+3,X
  396.  SBC DATASTK+1,X
  397.  BCS H0FD8
  398.  INY
  399. H0FD8 TYA
  400.  JMP H0F2C
  401.  
  402. ********************************
  403. *                              *
  404. *             +                *
  405. *                              *
  406. ********************************
  407.  
  408. H0FDC DA H0FC2
  409.  HEX 81
  410.  ASC "+"
  411. PLUS ENT
  412.  DA *+2
  413.  
  414.  CLC
  415.  LDA DATASTK,X
  416.  ADC DATASTK+2,X
  417.  STA DATASTK+2,X
  418.  
  419.  LDA DATASTK+1,X
  420.  ADC DATASTK+3,X
  421.  STA DATASTK+3,X
  422.  
  423.  JMP POP
  424.  
  425. ********************************
  426. *                              *
  427. *             -                *
  428. *                              *
  429. ********************************
  430.  
  431. H0FF8 DA H0FDC
  432.  HEX 81
  433.  ASC "-"
  434. MINUS ENT
  435.  DA *+2
  436.  
  437.  SEC
  438.  LDA DATASTK+2,X
  439.  SBC DATASTK,X
  440.  STA DATASTK+2,X
  441.  
  442.  LDA DATASTK+3,X
  443.  SBC DATASTK+1,X
  444.  STA DATASTK+3,X
  445.  
  446.  JMP POP
  447.  
  448. ********************************
  449. *                              *
  450. *          NEGATE              *
  451. *                              *
  452. ********************************
  453.  
  454. H1014 DA H0FF8
  455.  HEX 86
  456.  DCI 'NEGATE'
  457. NEGATE ENT
  458.  DA *+2
  459.  
  460. H101F SEC ; borrowed by ABS
  461. H1020 TYA
  462.  SBC DATASTK,X
  463.  STA DATASTK,X
  464.  
  465.  TYA
  466.  SBC DATASTK+1,X
  467.  STA DATASTK+1,X
  468.  
  469.  JMP NEXT
  470.  
  471. ********************************
  472. *                              *
  473. *            ABS               *
  474. *                              *
  475. ********************************
  476.  
  477. H1031 DA H1014
  478.  HEX 83
  479.  DCI 'ABS'
  480. ABS ENT
  481.  DA *+2
  482.  
  483.  LDA DATASTK+1,X
  484.  BPL H1041
  485.  
  486.  JMP H101F
  487. H1041 JMP NEXT
  488.  
  489. ********************************
  490. *                              *
  491. *             D+               *
  492. *                              *
  493. ********************************
  494.  
  495. H1044 DA H1031
  496.  HEX 82
  497.  DCI 'D+'
  498. DPLUS ENT
  499.  DA *+2
  500.  
  501.  CLC
  502.  LDA DATASTK+2,X
  503.  ADC DATASTK+6,X
  504.  STA DATASTK+6,X
  505.  
  506.  LDA DATASTK+3,X
  507.  ADC DATASTK+7,X
  508.  STA DATASTK+7,X
  509.  
  510.  LDA DATASTK,X
  511.  ADC DATASTK+4,X
  512.  STA DATASTK+4,X
  513.  
  514.  LDA DATASTK+1,X
  515.  ADC DATASTK+5,X
  516.  STA DATASTK+5,X
  517.  
  518.  JMP POPTWO
  519.  
  520. ********************************
  521. *                              *
  522. *          DNEGATE             *
  523. *                              *
  524. ********************************
  525.  
  526. H1073 DA H1044
  527.  HEX 87
  528.  DCI 'DNEGATE'
  529. DNEGATE ENT
  530.  DA *+2
  531.  
  532. H107F SEC
  533.  TYA
  534.  SBC DATASTK+2,X
  535.  STA DATASTK+2,X
  536.  
  537.  TYA
  538.  SBC DATASTK+3,X
  539.  STA DATASTK+3,X
  540.  
  541.  JMP H1020
  542.  
  543. ********************************
  544. *                              *
  545. *           DABS               *
  546. *                              *
  547. ********************************
  548.  
  549. H1091 DA H1073
  550.  HEX 84
  551.  DCI 'DABS'
  552. DABS ENT
  553. H1098 DA *+2
  554.  
  555. H109A LDA DATASTK+1,X
  556.  BPL H10A2
  557.  
  558.  JMP H107F
  559.  
  560. H10A2 JMP NEXT
  561.  
  562. ********************************
  563. *                              *
  564. *           DROP               *
  565. *                              *
  566. ********************************
  567.  
  568. H10A5 DA H1091
  569.  HEX 84
  570.  DCI 'DROP'
  571. DROP ENT
  572.  DA POP ; steal code
  573.  
  574. ********************************
  575. *                              *
  576. *          2DROP               *
  577. *                              *
  578. ********************************
  579.  
  580. H10AE DA H10A5
  581.  HEX 85
  582.  DCI '2DROP'
  583. TWODROP ENT
  584.  DA POPTWO ; steal code
  585.  
  586. ********************************
  587. *                              *
  588. *           PLUCK              *
  589. *                              *
  590. ********************************
  591.  
  592. H10B8 DA H10AE
  593.  HEX 85
  594.  DCI 'PLUCK'
  595. PLUCK ENT
  596.  DA *+2
  597.  
  598. H10C2 LDA DATASTK,X
  599.  PHA
  600.  LDA DATASTK+1,X
  601.  JMP H0F86
  602.  
  603. ********************************
  604. *                              *
  605. *           PICK               *
  606. *                              *
  607. ********************************
  608.  
  609. H10CC DA H10B8
  610.  HEX 84
  611.  DCI 'PICK'
  612. PICK ENT
  613.  DA *+2
  614.  
  615. H10D5 STX XSAVE
  616.  
  617.  CLC
  618.  TXA
  619.  ADC DATASTK,X
  620.  ADC DATASTK,X ; double: for 16bit quatities
  621.  TAX ; modify stack pointer
  622.  
  623.  LDA DATASTK,X ; get item
  624.  PHA
  625.  LDA DATASTK+1,X ; full 16bits
  626.  
  627.  LDX XSAVE ; restore X
  628.  JMP PUT ; put item on top
  629.  
  630. ********************************
  631. *                              *
  632. *           OVER               *
  633. *                              *
  634. ********************************
  635.  
  636. H10EC DA H10CC
  637.  HEX 84
  638.  DCI 'OVER'
  639. OVER ENT
  640.  DA *+2
  641.  
  642. H10F5 LDA DATASTK+2,X ; pick up 2nd item
  643.  PHA
  644.  LDA DATASTK+3,X
  645.  JMP PUSH ; put on top
  646.  
  647. ********************************
  648. *                              *
  649. *            DUP               *
  650. *                              *
  651. ********************************
  652.  
  653. H10FF DA H10EC
  654.  HEX 83
  655.  DCI 'DUP'
  656. DUP ENT
  657.  DA *+2
  658.  
  659. H1107 LDA DATASTK,X
  660.  PHA
  661.  LDA DATASTK+1,X
  662.  JMP PUSH
  663.  
  664.  
  665. ********************************
  666. *                              *
  667. *            ?DUP              *
  668. *                              *
  669. ********************************
  670.  
  671. H1111 DA H10FF ; points to DUP
  672.  HEX 84
  673.  DCI '?DUP'
  674. QDUP ENT
  675.  DA *+2
  676.  
  677. H111A ENT
  678.  LDA DATASTK,X
  679.  ORA DATASTK+1,X
  680.  BNE H1125
  681.  
  682.  JMP NEXT
  683.  
  684. H1125 JMP H1107
  685.  
  686. ********************************
  687. *                              *
  688. *           2DUP               *
  689. *                              *
  690. ********************************
  691.  
  692. H1128 DA H1111
  693.  HEX 84
  694.  DCI '2DUP'
  695. TWODUP ENT
  696.  DA *+2
  697.  
  698. H1131 LDA DATASTK,X
  699.  PHA
  700.  LDA DATASTK+1,X
  701.  PHA
  702.  
  703.  LDA DATASTK+2,X
  704.  PHA
  705.  LDA DATASTK+3,X
  706.  
  707. H1140 DEX
  708.  DEX
  709.  STA DATASTK+1,X
  710.  
  711.  PLA
  712.  STA DATASTK,X
  713.  
  714.  PLA
  715.  JMP PUSH
  716.  
  717. ********************************
  718. *                              *
  719. *           2OVER              *
  720. *                              *
  721. ********************************
  722.  
  723. H114D DA H1128
  724.  HEX 85
  725.  DCI '2OVER'
  726. TWOVER ENT
  727.  DA H1157
  728.  
  729. H1157 LDA DATASTK+4,X
  730.  PHA
  731.  LDA DATASTK+5,X
  732.  PHA
  733.  
  734.  LDA DATASTK+6,X
  735.  PHA
  736.  LDA DATASTK+7,X
  737.  JMP H1140
  738.  
  739. ********************************
  740. *                              *
  741. *            SWAP              *
  742. *                              *
  743. ********************************
  744.  
  745. H1169 DA H114D
  746.  HEX 84
  747.  DCI 'SWAP'
  748. SWAP ENT
  749.  DA *+2
  750.  
  751. H1172 LDA DATASTK+2,X
  752.  PHA
  753.  
  754.  LDA DATASTK,X
  755.  STA DATASTK+2,X
  756.  
  757.  LDA DATASTK+3,X
  758.  PHA
  759.  
  760.  LDA DATASTK+1,X
  761.  STA DATASTK+3,X
  762.  
  763.  PLA
  764.  JMP PUT
  765.  
  766. ********************************
  767. *                              *
  768. *           2SWAP              *
  769. *                              *
  770. ********************************
  771.  
  772. H118A DA H1169
  773.  HEX 85
  774.  DCI '2SWAP'
  775. TWOSWAP ENT
  776.  DA *+2
  777.  
  778. H1194 LDA DATASTK+4,X
  779.  PHA
  780.  LDA DATASTK+5,X
  781.  PHA
  782.  
  783.  LDA DATASTK+6,X
  784.  PHA
  785.  LDA DATASTK+7,X
  786.  PHA
  787.  
  788.  LDA DATASTK,X
  789.  STA DATASTK+4,X
  790.  LDA DATASTK+1,X
  791.  STA DATASTK+5,X
  792.  
  793.  LDA DATASTK+2,X
  794.  STA DATASTK+6,X
  795.  LDA DATASTK+3,X
  796.  STA DATASTK+7,X
  797.  
  798.  PLA
  799.  STA DATASTK+3,X
  800.  PLA
  801.  STA DATASTK+2,X
  802.  
  803.  PLA
  804.  JMP PUT
  805.  
  806. ********************************
  807. *                              *
  808. *             ROT              *
  809. *                              *
  810. ********************************
  811.  
  812. H11C8 DA H118A
  813.  HEX 83
  814.  DCI 'ROT'
  815. ROT ENT
  816.  DA *+2
  817.  
  818. H11D0 LDA DATASTK+4,X
  819.  PHA
  820.  LDA DATASTK+5,X
  821.  PHA
  822.  
  823.  LDA DATASTK+3,X
  824.  STA DATASTK+5,X
  825.  LDA DATASTK+2,X
  826.  STA DATASTK+4,X
  827.  
  828.  LDA DATASTK+1,X
  829.  STA DATASTK+3,X
  830.  LDA DATASTK,X
  831.  STA DATASTK+2,X
  832.  
  833.  PLA
  834.  JMP PUT
  835.  
  836. ********************************
  837. *                              *
  838. *            BURY              *
  839. *                              *
  840. ********************************
  841.  
  842. H11F4 DA H11C8
  843.  HEX 84
  844.  DCI 'BURY'
  845. BURY ENT
  846.  DA *+2
  847.  
  848. H11FD LDA DATASTK+2,X
  849.  PHA
  850.  LDA DATASTK+3,X
  851.  PHA
  852.  
  853.  LDA DATASTK+4,X
  854.  STA DATASTK+2,X
  855.  LDA DATASTK+5,X
  856.  STA DATASTK+3,X
  857.  
  858.  LDA DATASTK,X
  859.  STA DATASTK+4,X
  860.  LDA DATASTK+1,X
  861.  STA DATASTK+5,X
  862.  
  863.  PLA
  864.  JMP PUT
  865.  
  866. ********************************
  867. *                              *
  868. *            1+                *
  869. *                              *
  870. ********************************
  871.  
  872. H1221 DA H11F4
  873.  HEX 82
  874.  DCI '1+'
  875. ONEPLUS ENT
  876.  DA *+2
  877.  
  878. H1228 CLC
  879.  LDA DATASTK,X
  880.  ADC #1
  881. H122E STA DATASTK,X
  882.  
  883.  LDA DATASTK+1,X
  884.  ADC #0
  885.  STA DATASTK+1,X
  886.  
  887.  JMP NEXT
  888.  
  889. ********************************
  890. *                              *
  891. *            2+                *
  892. *                              *
  893. ********************************
  894.  
  895. H123C DA H1221
  896.  HEX 82
  897.  DCI '2+'
  898. TWOPLUS ENT
  899.  DA *+2
  900.  
  901.  CLC
  902.  LDA DATASTK,X
  903.  ADC #2
  904.  JMP H122E ; borrow code from 1+
  905.  
  906. ********************************
  907. *                              *
  908. *             3+               *
  909. *                              *
  910. ********************************
  911.  
  912.  DA H123C ; new word.... adding in
  913.  HEX 82
  914.  DCI '3+'
  915. THREEPL ENT
  916.  DA *+2
  917.  
  918.  CLC
  919.  LDA DATASTK,X
  920.  ADC #3
  921.  JMP H122E ; borrow from 1+
  922.  
  923. ********************************
  924. *                              *
  925. *             1-               *
  926. *                              *
  927. ********************************
  928.  
  929. H124C DA THREEPL-5 ; -2 (name) -1 (count) -2 (link)
  930.  HEX 82
  931.  DCI '1-'
  932. ONEMINUS ENT
  933.  DA *+2
  934.  
  935. H1253 SEC
  936.  LDA DATASTK,X
  937.  SBC #1
  938. H1259 STA DATASTK,X
  939.  
  940.  LDA DATASTK+1,X
  941.  SBC #$00
  942.  STA DATASTK+1,X
  943.  JMP NEXT
  944.  
  945. ********************************
  946. *                              *
  947. *             2-               *
  948. *                              *
  949. ********************************
  950.  
  951. H1267 DA H124C
  952.  HEX 82
  953.  DCI '2-'
  954. TWOMINUS ENT
  955.  DA *+2
  956.  
  957.  SEC
  958.  LDA DATASTK,X
  959.  SBC #2
  960.  JMP H1259
  961.  
  962. ********************************
  963. *                              *
  964. *             3-               *
  965. *                              *
  966. ********************************
  967.  
  968.  DA H1267
  969.  HEX 82
  970.  DCI '3-'
  971. THREEMI ENT
  972.  DA *+2
  973.  
  974.  SEC
  975.  LDA DATASTK,X
  976.  SBC #3
  977.  JMP H1259
  978.  
  979. ********************************
  980. *                              *
  981. *             2*               *
  982. *                              *
  983. ********************************
  984.  
  985. H1277 DA THREEMI-5
  986.  HEX 82
  987.  DCI '2*'
  988. TWOTIMES ENT
  989.  DA *+2
  990.  
  991. H127E LDA DATASTK,X
  992.  ASL
  993.  PHA
  994.  LDA DATASTK+1,X
  995.  ROL
  996.  JMP PUT
  997.  
  998. ********************************
  999. *                              *
  1000. *             2/               *
  1001. *                              *
  1002. ********************************
  1003.  
  1004. H128A DA H1277
  1005.  HEX 82
  1006.  DCI '2/'
  1007. TWOSLSH ENT
  1008.  DA *+2
  1009.  
  1010. *  This is a SIGNED 2/
  1011.  
  1012.  CLC
  1013.  LDA DATASTK+1,X
  1014.  BPL :ROLLIN
  1015.  SEC ; negative: roll in sign bit
  1016. :ROLLIN ROR DATASTK+1,X ; roll in sign bit
  1017.  ROR DATASTK,X ; shift 16b lo
  1018.  JMP NEXT
  1019.  
  1020. ********************************
  1021. *                              *
  1022. *             2U/              *
  1023. *                              *
  1024. ********************************
  1025.  
  1026. H12AA DA H128A
  1027.  HEX 83
  1028.  DCI '2U/'
  1029. TWOUSLSH ENT
  1030.  DA *+2
  1031.  
  1032.  LSR DATASTK+1,X
  1033.  ROR DATASTK,X
  1034.  JMP NEXT
  1035.  
  1036. ********************************
  1037. *                              *
  1038. *            +!                *
  1039. *                              *
  1040. ********************************
  1041.  
  1042. H12C3 DA H12AA
  1043.  HEX 82
  1044.  DCI '+!'
  1045. PLUSTORE ENT
  1046.  DA *+2
  1047.  
  1048. H12CA LDA #$04
  1049.  JSR SETUP
  1050.  STX XSAVE
  1051.  
  1052.  LDX #$00
  1053.  CLC
  1054.  LDA (N,X)
  1055.  ADC $03
  1056.  STA (N,X)
  1057.  
  1058.  INC N
  1059.  BNE H12E0
  1060.  INC $02
  1061.  
  1062. H12E0 LDA (N,X)
  1063.  ADC $04
  1064.  STA (N,X)
  1065.  LDX XSAVE
  1066.  JMP NEXT
  1067.  
  1068. ********************************
  1069. *                              *
  1070. *           TOGGLE             *
  1071. *                              *
  1072. ********************************
  1073.  
  1074. H12EB DA H12C3
  1075.  HEX 86
  1076.  DCI 'TOGGLE'
  1077. TOGGLE ENT
  1078.  DA *+2
  1079.  
  1080. H12F6 LDA #$04
  1081.  JSR SETUP
  1082.  STX XSAVE
  1083.  
  1084.  LDX #$00
  1085.  LDA ($03,X)
  1086.  EOR N
  1087.  STA ($03,X)
  1088.  
  1089.  LDX XSAVE
  1090.  JMP NEXT
  1091.  
  1092. ********************************
  1093. *                              *
  1094. *            !0                *
  1095. *                              *
  1096. ********************************
  1097.  
  1098. H130A DA H12EB
  1099.  HEX 82
  1100.  DCI '!0'
  1101. STOREZER ENT
  1102.  DA *+2
  1103.  
  1104. *  Obvious improvement is to use STZ
  1105.  
  1106. H1311 LDA #$02
  1107.  JSR SETUP
  1108.  TYA
  1109.  STA (N),Y
  1110.  INY
  1111.  STA (N),Y
  1112.  JMP NEXT
  1113.  
  1114. *===============================
  1115.  
  1116. H131F LDA #2 ; compile 8b from stack to dict
  1117.  JSR SETUP
  1118. ; get user var #41: put in 3,4
  1119.  LDY #$29
  1120.  LDA (UP),Y ; user var -- DP
  1121.  STA $03
  1122.  
  1123.  INY
  1124.  LDA (UP),Y ; 16bit user var
  1125.  STA $04
  1126.  
  1127.  LDY #0
  1128.  LDA N ; get former top data stack
  1129.  STA ($03),Y ; compile into dictonary at HERE
  1130.  
  1131.  CLC
  1132.  RTS
  1133.  
  1134. ********************************
  1135. *                              *
  1136. *             ,                *
  1137. *                              *
  1138. ********************************
  1139.  
  1140. H1337 DA H130A
  1141.  HEX 81
  1142.  ASC ","
  1143. COMMA ENT
  1144.  DA *+2
  1145.  
  1146. H133D JSR H131F ; compile 8b
  1147.  INY
  1148.  LDA $02 ; compile other half of 16b
  1149.  STA ($03),Y
  1150.  
  1151.  LDY #$29 ; add 2 to DP
  1152.  LDA (UP),Y
  1153.  CLC
  1154.  ADC #$02
  1155. H134C STA (UP),Y ; general inc DP
  1156.  
  1157.  INY
  1158.  LDA (UP),Y
  1159.  ADC #$00
  1160.  STA (UP),Y
  1161.  JMP NEXT
  1162.  
  1163. ********************************
  1164. *                              *
  1165. *            C,                *
  1166. *                              *
  1167. ********************************
  1168.  
  1169. H1358 DA H1337
  1170.  HEX 82
  1171.  DCI 'C,'
  1172. CCOMMA ENT
  1173.  DA *+2
  1174.  
  1175. H135F JSR H131F ; compile 8b
  1176.  LDY #$29
  1177.  LDA (UP),Y
  1178.  CLC
  1179.  ADC #1 ; add 1 to DP
  1180.  JMP H134C ; share code
  1181.  
  1182. ********************************
  1183. *                              *
  1184. *           HERE2+             *
  1185. *                              *
  1186. ********************************
  1187.  
  1188. H136C DA H1358
  1189.  HEX 86
  1190.  DCI 'HERE2+'
  1191. HERE2PL ENT
  1192.  DA *+2
  1193.  
  1194. H1377 LDY #$29
  1195.  CLC
  1196.  LDA (UP),Y
  1197.  ADC #$02
  1198.  PHA
  1199.  
  1200.  INY
  1201.  LDA (UP),Y
  1202.  ADC #$00
  1203.  JMP PUSH
  1204.  
  1205. ********************************
  1206. *                              *
  1207. *            @                 *
  1208. *                              *
  1209. ********************************
  1210.  
  1211. H1387 DA H136C
  1212.  HEX 81
  1213.  ASC "@"
  1214. FETCH ENT
  1215.  DA *+2
  1216.  
  1217. H138D LDA DATASTK,X
  1218.  STA N
  1219.  
  1220.  LDA DATASTK+1,X
  1221.  STA $02
  1222.  
  1223.  STX XSAVE
  1224.  
  1225.  LDX #$00
  1226.  LDA (N,X)
  1227.  PHA
  1228.  
  1229.  INC N
  1230.  BNE H13A4
  1231.  INC $02
  1232. H13A4 LDA (N,X)
  1233.  LDX XSAVE
  1234.  JMP PUT
  1235.  
  1236. ********************************
  1237. *                              *
  1238. *             C@               *
  1239. *                              *
  1240. ********************************
  1241.  
  1242. H13AB DA H1387
  1243.  HEX 82
  1244.  DCI 'C@'
  1245. CFETCH ENT
  1246.  DA *+2
  1247.  
  1248. H13B2 LDA DATASTK,X
  1249.  STA N
  1250.  
  1251.  LDA DATASTK+1,X
  1252.  STA $02
  1253.  
  1254.  STX XSAVE
  1255.  
  1256.  LDX #$00
  1257.  LDA (N,X)
  1258.  LDX XSAVE
  1259.  PHA
  1260.  
  1261.  TYA
  1262.  JMP PUT
  1263.  
  1264. ********************************
  1265. *                              *
  1266. *             !                *
  1267. *                              *
  1268. ********************************
  1269.  
  1270. H13C9 DA H13AB
  1271.  HEX 81
  1272.  ASC "!"
  1273. STORE ENT
  1274.  DA *+2
  1275.  
  1276. H13CF LDA #$04
  1277.  JSR SETUP
  1278.  STX XSAVE
  1279.  
  1280.  LDX #$00
  1281.  LDA $03
  1282.  STA (N,X)
  1283.  
  1284.  INC N
  1285.  BNE H13E2
  1286.  INC $02
  1287. H13E2 LDA $04
  1288.  STA (N,X)
  1289.  
  1290.  LDX XSAVE
  1291.  JMP NEXT
  1292.  
  1293. ********************************
  1294. *                              *
  1295. *             C!               *
  1296. *                              *
  1297. ********************************
  1298.  
  1299. H13EB DA H13C9
  1300.  HEX 82
  1301.  DCI 'C!'
  1302. CSTORE ENT
  1303.  DA *+2
  1304.  
  1305. H13F2 LDA #$04
  1306.  JSR SETUP
  1307.  STX XSAVE
  1308.  
  1309.  LDX #$00
  1310.  LDA $03
  1311.  STA (N,X)
  1312.  
  1313.  LDX XSAVE
  1314.  JMP NEXT
  1315.  
  1316. ********************************
  1317. *                              *
  1318. *            COUT              *
  1319. *                              *
  1320. ********************************
  1321.  
  1322. H1404 DA H13EB
  1323.  HEX 84
  1324.  DCI 'COUT'
  1325. FCOUT ENT
  1326.  DA *+2
  1327.  
  1328. H140D LDA DATASTK,X ; get char
  1329. H1410 JSR COUT ; vectored output
  1330.  
  1331.  LDY #$3F ; user var -- OUT
  1332.  LDA (UP),Y
  1333.  CLC
  1334.  ADC #1 ; inc OUT by 1
  1335.  STA (UP),Y ; put back
  1336.  JMP POP ; pop char off stack
  1337.  
  1338. ********************************
  1339. *                              *
  1340. *           SCOUT              *
  1341. *                              *
  1342. ********************************
  1343.  
  1344. H141F DA H1404
  1345.  HEX 85
  1346.  DCI 'SCOUT'
  1347. SCOUT ENT ; Screen COUT
  1348.  DA *+2
  1349.  
  1350. H1429 LDA DATASTK,X ; get char
  1351.  ORA #$80 ; turn to apple scrn char
  1352.  JMP H1410 ; do COUT
  1353.  
  1354. ********************************
  1355. *                              *
  1356. *           (CR)               *
  1357. *                              *
  1358. ********************************
  1359.  
  1360. H1431 DA H141F
  1361.  HEX 84
  1362.  DCI '(CR)'
  1363. PRNCR ENT
  1364.  DA *+2
  1365.  
  1366. H143A JSR CROUT
  1367.  
  1368.  LDA #0
  1369.  LDY #$3F ; user var -- OUT
  1370.  STA (UP),Y ; zero: at left edge
  1371.  JMP NEXT
  1372.  
  1373. ********************************
  1374. *                              *
  1375. *           NORMAL             *
  1376. *                              *
  1377. ********************************
  1378.  
  1379. H1446 DA H1431
  1380.  HEX 86
  1381.  DCI 'NORMAL'
  1382. NORMAL ENT
  1383.  DA *+2
  1384.  
  1385. H1451 JSR HFE84
  1386.  JMP NEXT
  1387.  
  1388. ********************************
  1389. *                              *
  1390. *          INVERSE             *
  1391. *                              *
  1392. ********************************
  1393.  
  1394. H1457 DA H1446
  1395.  HEX 87
  1396.  DCI 'INVERSE'
  1397. INVERSE ENT
  1398.  DA *+2
  1399.  
  1400. H1463 JSR HFE80
  1401.  JMP NEXT
  1402.  
  1403. ********************************
  1404. *                              *
  1405. *           RDCHAR             *
  1406. *                              *
  1407. ********************************
  1408.  
  1409. H1469 DA H1457
  1410.  HEX 86
  1411.  DCI 'RDCHAR'
  1412. FRDCHAR ENT
  1413.  DA *+2
  1414.  
  1415. H1474 JSR HFD35 ; get char in A
  1416.  CMP #$95 ; is -->
  1417.  BNE H147D ; nope.. skip
  1418.  
  1419.  LDA ($28),Y ; get screen char
  1420. H147D AND #$7F ; strip hibit
  1421.  JMP H0BBF ; push 8b from A
  1422.  
  1423. ********************************
  1424. *                              *
  1425. *           RDKEY              *
  1426. *                              *
  1427. ********************************
  1428.  
  1429. H1482 DA H1469
  1430.  HEX 85
  1431.  DCI 'RDKEY'
  1432. FRDKEY ENT
  1433.  DA *+2
  1434.  
  1435. H148C JSR RDKEY
  1436.  JMP H147D
  1437.  
  1438. ********************************
  1439. *                              *
  1440. *         (?TERMINAL)          *
  1441. *                              *
  1442. ********************************
  1443.  
  1444. H1492 DA H1482
  1445.  HEX 8B
  1446.  DCI '(?TERMINAL)'
  1447. PRNQTERM ENT
  1448.  DA *+2
  1449.  
  1450. H14A0 LDA KEY
  1451.  BPL H14AD ; no key
  1452.  
  1453.  CMP #$83
  1454.  BNE H14AD ; not ctrl-C
  1455.  
  1456.  LDA STROBE ; strobe only if ^C
  1457.  INY ; 1: true
  1458. H14AD TYA
  1459.  JMP H0BBF ; push 8b from A
  1460.  
  1461. ********************************
  1462. *                              *
  1463. *            WTOP!             *
  1464. *                              *
  1465. ********************************
  1466.  
  1467. H14B1 DA H1492
  1468.  HEX 85
  1469.  DCI 'WTOP!'
  1470. WTOPSTOR ENT
  1471.  DA *+2
  1472.  
  1473. H14BB LDA DATASTK,X
  1474.  STA $22
  1475.  JMP POP
  1476.  
  1477. ********************************
  1478. *                              *
  1479. *           WBTM!              *
  1480. *                              *
  1481. ********************************
  1482.  
  1483. H14C3 DA H14B1
  1484.  HEX 85
  1485.  DCI 'WBTM!'
  1486. WBOTSTOR ENT
  1487.  DA *+2
  1488.  
  1489. H14CD LDA DATASTK,X
  1490.  STA $23
  1491.  JMP POP
  1492.  
  1493. ********************************
  1494. *                              *
  1495. *            HOME              *
  1496. *                              *
  1497. ********************************
  1498.  
  1499. H14D5 DA H14C3
  1500.  HEX 84
  1501.  DCI 'HOME'
  1502. FHOME ENT
  1503.  DA *+2
  1504.  
  1505. H14DE JSR HOME
  1506.  JMP NEXT
  1507.  
  1508. ********************************
  1509. *                              *
  1510. *         SCROLL               *
  1511. *                              *
  1512. ********************************
  1513.  
  1514. H14E4 DA H14D5
  1515.  HEX 86
  1516.  DCI 'SCROLL'
  1517. FSCROLL ENT
  1518.  DA *+2
  1519.  
  1520. H14EF JSR SCROLL
  1521.  JMP NEXT
  1522.  
  1523. ********************************
  1524. *                              *
  1525. *          CLREOL              *
  1526. *                              *
  1527. ********************************
  1528.  
  1529. H14F5 DA H14E4
  1530.  HEX 86
  1531.  DCI 'CLREOL'
  1532. FCLREOL ENT
  1533.  DA *+2
  1534.  
  1535. H1500 JSR CLREOL
  1536.  JMP NEXT
  1537.  
  1538. ********************************
  1539. *                              *
  1540. *           CLREOP             *
  1541. *                              *
  1542. ********************************
  1543.  
  1544. H1506 DA H14F5
  1545.  HEX 86
  1546.  DCI 'CLREOP'
  1547. FCLREOP ENT
  1548.  DA *+2
  1549.  
  1550. H1511 JSR CLREOP
  1551.  JMP NEXT
  1552.  
  1553. ********************************
  1554. *                              *
  1555. *            VTAB              *
  1556. *                              *
  1557. ********************************
  1558.  
  1559. H1517 DA H1506
  1560.  HEX 84
  1561.  DCI 'VTAB'
  1562. FVTAB ENT
  1563.  DA *+2
  1564.  
  1565. H1520 TXA
  1566.  PHA
  1567.  PHP ; saves... why?
  1568.  LDA DATASTK,X
  1569.  STA CV ; put val in cursor vertical
  1570.  JSR VTAB ; go do...
  1571.  PLP
  1572.  PLA
  1573.  TAX
  1574.  JMP POP
  1575.  
  1576. ********************************
  1577. *                              *
  1578. *           HTAB               *
  1579. *                              *
  1580. ********************************
  1581.  
  1582. H1531 DA H1517
  1583.  HEX 84
  1584.  DCI 'HTAB'
  1585. HTAB ENT
  1586.  DA *+2
  1587.  
  1588. H153A LDA DATASTK,X
  1589.  STA CH
  1590.  JMP POP
  1591.  
  1592. ********************************
  1593. *                              *
  1594. *          <SCROLL             *
  1595. *                              *
  1596. ********************************
  1597.  
  1598. LINK2 ENT
  1599.  DA H1531
  1600.  HEX 87
  1601.  DCI '<SCROLL'
  1602. BKSCROLL ENT
  1603.  DA *+2
  1604.  
  1605. H154E LDA $23
  1606.  SEC
  1607.  SBC #1
  1608.  PHA
  1609.  JSR VTABZ
  1610.  
  1611. H1557 LDA $28
  1612.  STA $2A
  1613.  
  1614.  LDA $29
  1615.  STA $2B
  1616.  
  1617.  LDY $21
  1618.  DEY
  1619.  PLA
  1620.  PHA
  1621.  JSR VTABZ
  1622.  
  1623. H1567 LDA ($28),Y
  1624.  STA ($2A),Y
  1625.  
  1626.  DEY
  1627.  BPL H1567
  1628.  
  1629.  PLA
  1630.  SEC
  1631.  SBC #1
  1632.  PHA
  1633.  
  1634.  CLC
  1635.  ADC #1
  1636.  CMP $22
  1637.  BNE H1557
  1638.  
  1639.  PLA
  1640.  LDY #$00
  1641.  JSR HFC9E
  1642.  JSR VTAB
  1643.  JMP NEXT
  1644.