home *** CD-ROM | disk | FTP | other *** search
/ Loadstar Extras 3 / Ex3side1.d64 / toolbox.s < prev    next >
Text File  |  2022-08-28  |  22KB  |  2,111 lines

  1. open =$ffc0
  2. readst =$ffb7
  3. setlfs =$ffba
  4. setnam =$ffbd
  5. setmsg =$ff90
  6. load =$ffd5
  7. getin =$ffe4
  8. input'buffer =512
  9. clrchn =$ffcc
  10. close =$ffc3   ;a
  11. chrin =$ffcf
  12. chkout =$ffc9  ;x
  13. chkin =$ffc6   ;x
  14. plot =$fff0
  15. chrout =$ffd2
  16. color'pointer =243
  17. screen'line'pointer =209
  18. print'number =$bdcd ;x,a
  19. clear'line =59903
  20. background =53281
  21. border =53280
  22. strout = $ab1e; .A low .Y high
  23. unlisten =$ffae
  24. clall =$ffe7
  25. color1 =53282
  26. color2 =53283
  27. color3 =53284
  28. white =5
  29. crsr'down =17
  30. rvs'on =18
  31. home =19
  32. del =20
  33. red =28
  34. crsr'right =29
  35. green =30
  36. blue =31
  37. black =144
  38. lowercase =14
  39. uppercase =142
  40. crsr'up =145
  41. rvs'off =146
  42. clr =147
  43. insert =148
  44. brown =149
  45. light'red =150
  46. dark'grey =151
  47. medium'grey =152
  48. light'green =153
  49. light'blue =154
  50. light'grey =155
  51. purple =156
  52. crsr'left =157
  53. yellow =158
  54. cyan =159
  55. top'left =176
  56. top'right =174
  57. bottom'left =173
  58. bottom'right =189
  59. bottom'pointer =247
  60. top'pointer =249
  61. buffer =$200
  62. loc1 =$14
  63. loc2 =$22
  64. source =251
  65. end =253
  66. destination =$14
  67. temp =2
  68.  
  69. ;****dir menu*****
  70. ;sys wildcard$,device,address,x,y,depth,color,highlight
  71.  
  72. .org $9000
  73. .obj "@0:toolbox 9000"
  74. ;mem
  75. ;dis e
  76. jmp dir'menu
  77. jmp redisplay'entry      ;+3
  78. jmp just'load'it;        ;+6
  79. jmp index'name           ;+9
  80. jmp blocks'free          ;+12
  81. jmp box'entry ;          
  82. jmp screen'stash
  83. jmp screen'restore
  84. jmp print'at
  85. jmp center
  86. jmp bload
  87. jmp d'keyboard
  88. jmp scroll
  89. jmp clear'row
  90. jmp disk'command
  91. jmp brancher             ;+45
  92. jmp menu'entry           ;+48
  93. jmp reader               ;+51
  94. jmp copymem              ;+54
  95. jmp copymem+7 ;swappymem ;+57
  96. jmp copymem+14;ROM in copy;60
  97. jmp inpanyii              ;63
  98. jmp get'word              ;66
  99. jmp linx                  ;69
  100. jmp shade'area            ;72
  101.  
  102. redisplay'entry jsr zero'restore
  103. jmp redisplay
  104.  
  105. abort lda #4
  106. sta 251
  107. - jsr get'number
  108. dec 251
  109. bpl -
  110. abort2 jsr clear'buffer
  111. lda #0
  112. sta wlength
  113. jmp make'wstring
  114.  
  115. just'load'it lda #255
  116. sta sub'low
  117. bne +
  118. dir'menu lda #0
  119. sta sub'low
  120. + jsr get'string
  121. jsr setnam
  122. jsr get'number
  123. sty device
  124. lda #2
  125. jsr close
  126. lda #2
  127. ldx device
  128. ldy #0
  129. jsr setlfs
  130. jsr open
  131.  
  132. jsr get'number
  133. sty 251
  134. sta 252
  135. sty address
  136. sta address+1
  137.  
  138. lda #0
  139. sta that's'it
  140. lda #255
  141. sta files
  142. sta files+1
  143. jsr clrchn
  144. ldx #2
  145. jsr chkin
  146.  
  147. jsr getin
  148. jsr getin
  149.  
  150. loop inc files
  151. bne +
  152. inc files+1
  153. + jsr fill'buffer
  154. jsr readst
  155. and #64
  156. bne +
  157. lda that's'it
  158. bne +
  159. beq loop
  160.  
  161. + lda #2
  162. jsr close
  163. jsr zero'stash
  164. lda files
  165. sta 201
  166. lda files+1
  167. sta 202
  168. dec 201
  169. lda 201
  170. cmp #255
  171. bne +
  172. dec 202
  173.  
  174. + jsr make'variable
  175. jsr zero'restore
  176. lda #0
  177. tax
  178. tay
  179. jsr setnam
  180. jsr open'duh'error
  181. jsr read'open'error
  182. lda #15
  183. jsr close
  184. jsr clrchn
  185. lda error'string
  186. cmp "0"
  187. beq +
  188. bit sub'low
  189. bmi +
  190. jmp abort
  191.  
  192. + lda files+1
  193. bne +
  194. lda files
  195. cmp #2
  196. bcs +
  197. bit sub'low
  198. bmi +
  199. jmp abort
  200.  
  201. + bit sub'low
  202. beq redisplay
  203. jmp clear'buffer
  204.  
  205. redisplay jsr get'number
  206. cpy #20
  207. bcc +
  208. ldy #20
  209. + sty menu'x
  210. sty parms
  211. tya
  212. clc
  213. adc #19
  214. sta parms+1
  215. jsr get'number
  216. cpy #20
  217. bcc +
  218. ldy #19
  219.  
  220. + sty menu'y
  221. sty parms+2
  222. jsr get'number
  223. cpy #2
  224. bcs +
  225. ldy #2
  226. / sty menu'depth
  227. iny
  228. iny
  229. iny
  230. tya
  231. clc
  232. adc parms+2
  233. cmp #25
  234. bcc +
  235. ldy menu'depth
  236. dey
  237. bpl -
  238.  
  239. + sta parms+3
  240. lda #160
  241. sta parms+4
  242. jsr get'number
  243. sty menu'color
  244. sty parms+5
  245. jsr get'number
  246. sty menu'highlight
  247.  
  248. jsr fill'box
  249.  
  250. ldy menu'x
  251. iny
  252. sty parms
  253. tya
  254. dey
  255. clc
  256. adc #17
  257. sta parms+1
  258. ldy menu'y
  259. iny
  260. sty parms+2
  261. dey
  262. tya
  263. clc
  264. adc menu'depth
  265. sta parms+3
  266. lda #32
  267. sta parms+4
  268. lda menu'color
  269. sta parms+5
  270. ldy #3
  271.  
  272. - lda parms,y
  273. sta startingx,y ;set scroll parameters
  274. dey
  275. bpl -
  276.  
  277. jsr fill'box
  278.  
  279. ldx parms+3
  280. inx
  281. inx
  282. ldy parms
  283. clc
  284. jsr plot
  285. lda #1
  286. sta 199
  287. lda menu'color
  288. sta 646
  289. lda <prompt
  290. ldy >prompt
  291. jsr strout
  292.  
  293. inc menu'x
  294. inc menu'y
  295. menu'reenter ldx menu'y
  296. ldy menu'x
  297. clc
  298. iny
  299. jsr plot
  300. lda #0
  301. sta 199
  302. lda menu'color
  303. sta 646
  304.  
  305. fill'menu lda #0
  306. sta item
  307. sta menu'item
  308. lda address
  309. sta 253
  310. lda address+1
  311. sta 254
  312. lda #32
  313. sta char
  314.  
  315. sei
  316. ldx #$74
  317. stx 1
  318. ldy #0
  319. - lda (253),y
  320. jsr adjust'pointer
  321. cmp #0
  322. bne -
  323.  
  324. lda 253
  325. sta top
  326. sta top'pointer
  327. lda 254
  328. sta top'pointer+1
  329. sta top+1
  330.  
  331. - sei
  332. ldy #0
  333. lda #$74
  334. sta 1
  335. lda (253),y
  336. jsr adjust'pointer
  337. cmp #0
  338. bne +
  339. jmp next'name
  340. + ldx #$77
  341. stx 1
  342. stx 212
  343. jsr chrout
  344. bne -
  345.  
  346. next'name lda #$77
  347. sta 1
  348.  
  349. lda 254
  350. cmp 252
  351. bne +
  352. lda 253
  353. cmp 251
  354. beq bottom
  355.  
  356. + ldx item
  357. inx
  358. cpx menu'depth
  359. beq bottom
  360. stx item
  361.  
  362. inc 214
  363. ldx menu'x
  364. inx
  365. stx 211
  366. jsr 58732
  367. jmp -
  368.  
  369. bottom lda #0
  370. sta item
  371. sta 198
  372. lda #$77
  373. sta 1
  374. cli
  375.  
  376. lda item
  377. jsr item'on
  378.  
  379. get'key jsr getin
  380. beq get'key
  381.  
  382. cmp #133
  383. bne +
  384. jsr pup
  385. + cmp #136
  386. bne +
  387. jsr pdown
  388.  
  389. + cmp #3
  390. bne +
  391. jsr item'off
  392. - bit 197
  393. bvc -
  394.  
  395. jsr delay
  396. jsr zero'stash
  397. jmp abort2
  398.  
  399. + cmp #19;    home
  400. bne +
  401. jmp move'home
  402. + cmp #crsr'down
  403. beq down'pressed
  404. cmp #crsr'up
  405. beq up'pressed
  406. cmp #13
  407. beq return'pressed
  408. bne get'key
  409.  
  410. down'pressed lda files+1
  411. bne +
  412. ldy item
  413. iny
  414. iny
  415. cpy files
  416. beq get'key
  417.  
  418. + ldy item
  419. iny 
  420.  
  421. cpy menu'depth
  422. bcs down'we'go
  423. jsr item'off
  424. ldy item
  425. iny
  426. sty item
  427. jsr item'on
  428. jmp get'key
  429.  
  430. lda file+1
  431. cmp files+1
  432. bcc +
  433. lda file
  434. cmp files
  435. bcs get'key
  436.  
  437. up'pressed ldy item
  438. bne +
  439. jmp up'we'go
  440. + jsr item'off
  441. ldy item
  442. dey
  443. sty item
  444.  
  445. cpy menu'depth
  446. bcs +
  447. jsr item'on
  448. + jmp get'key
  449.  
  450. return'pressed jsr zero'stash
  451. jsr get'file
  452. jmp clear'buffer
  453.  
  454. down'we'go lda 254
  455. cmp 252
  456. bcc +
  457. lda 253
  458. cmp 251
  459. bcs bottom'out
  460. + lda #0
  461. sta direction
  462. jsr zero'stash
  463. jsr item'off
  464. jsr scroll'up
  465. jsr clear'ml'enter
  466. jsr zero'restore
  467.  
  468. print'bottom lda #0
  469. sta 212
  470. lda #crsr'right
  471. jsr chrout
  472. sei
  473. lda #$74
  474. sta 1
  475. ldy #0
  476.  
  477. - lda (top'pointer),y
  478. jsr adjust'top
  479. cmp #0
  480. bne -
  481.  
  482. - sei
  483. ldy #0
  484. lda #$74
  485. sta 1
  486. lda (253),y
  487. jsr adjust'pointer
  488. cmp #0
  489. bne +
  490. jmp bottom'out
  491. + ldx #$77
  492. stx 1
  493. stx 212
  494. jsr chrout
  495. bne -
  496.  
  497. bottom'out lda #$77
  498. sta 1
  499. cli
  500. jsr item'on
  501. jmp get'key
  502.  
  503. up'we'go lda top'pointer+1
  504. cmp top+1
  505. bne +
  506. lda top'pointer
  507. cmp top
  508. beq bottom'out
  509. + lda #1
  510. sta direction
  511. jsr zero'stash
  512. jsr item'off
  513. jsr scroll'down
  514. jsr clear'ml'enter
  515. jsr zero'restore
  516.  
  517. print'top lda #0
  518. sta 212
  519. lda #crsr'right
  520. jsr chrout
  521. sei
  522. lda #$74
  523. sta 1
  524. ldy #0
  525.  
  526. jsr dec'pointer
  527. jsr dec'pointer
  528. - lda (253),y
  529. jsr dec'pointer
  530. cmp #0
  531. bne -
  532. jsr adjust'pointer
  533. jsr adjust'pointer
  534.  
  535. jsr dec'top
  536. jsr dec'top
  537. ldy #0
  538. - lda (top'pointer),y
  539. jsr dec'top
  540. cmp #0
  541. bne -
  542. jsr adjust'top
  543. jsr adjust'top
  544.  
  545. - sei
  546. ldy #0
  547. lda #$74
  548. sta 1
  549. lda (top'pointer),y
  550. jsr adjust'top
  551. cmp #0
  552. bne +
  553. jmp top'out
  554. + ldx #$77
  555. stx 1
  556. stx 212
  557. jsr chrout
  558. bne -
  559.  
  560. top'out jsr dec'top
  561. jsr dec'top
  562. ldy #0
  563. - lda (top'pointer),y
  564. jsr dec'top
  565. cmp #0
  566. bne -
  567. jsr adjust'top
  568. jsr adjust'top
  569.  
  570. jmp bottom'out
  571.  
  572. move'home jsr item'off
  573. lda item
  574. beq +
  575. lda #0
  576. sta item
  577. jsr item'on
  578. jmp get'key
  579. + lda #0
  580. sta 212
  581. jsr fill'box
  582. jmp menu'reenter
  583.  
  584.  
  585. fill'buffer ldy #0
  586. - jsr getin
  587. sta buffer,y
  588. iny
  589. cpy #32
  590. bne -
  591.  
  592. copy'name sei
  593. lda #$74
  594. sta 1
  595. ldy #0
  596.  
  597. find'quote ldx #2
  598. - lda buffer,x
  599. cmp #34
  600. beq +
  601. inx
  602. cpx #30
  603. bcc -
  604.  
  605. lda #1
  606. sta that's'it
  607. jmp normal
  608.  
  609. + inx
  610.  
  611. - lda buffer,x
  612. cmp #34
  613. beq +
  614. sta (251),y
  615. jsr bump
  616. inx
  617. bne -
  618.  
  619. + lda #0
  620. sta (251),y
  621. jsr bump
  622.  
  623. normal lda #$77
  624. sta 1
  625. cli
  626. rts
  627.  
  628. bump inc 251
  629. bne +
  630. inc 252
  631. + rts
  632.  
  633.  
  634. box'entry lda #5
  635. sta parm'count
  636. lda #0
  637. sta shade
  638. box'ii lda #0
  639. sta temp
  640. - jsr get'number
  641. tya
  642. ldy temp
  643. sta parms,y
  644. inc temp
  645. cpy parm'count
  646. bne -
  647.  
  648. fill'box jsr linx
  649. box'start ldx parms+2
  650. ldy #0
  651. clc
  652. jsr $fff0
  653. jsr old'rom'patch
  654. dec parms
  655.  
  656. - ldy parms+1
  657. - bit parms+5
  658. bvc check'rev
  659. lda (209),y
  660. and #127
  661. sta (209),y
  662. lda #255
  663. sta parms+4
  664. jmp alter'screen
  665.  
  666. check'rev ldx parms+5
  667. bpl alter'screen
  668. lda (209),y
  669. ora #128
  670. sta (209),y
  671. lda #255
  672. sta parms+4
  673. alter'screen lda parms+4
  674. bit shade
  675. bmi get'shade
  676. cmp #255
  677. beq +
  678. sta (209),y
  679. + lda parms+5
  680. store'color sta (243),y
  681. dey
  682. cpy parms
  683. bne -
  684. lda 214
  685. cmp parms+3
  686. beq +
  687.  
  688. inc 214
  689. jsr 58732
  690. jsr old'rom'patch
  691. jmp --
  692. + inc parms
  693. lda #home
  694. jmp $ffd2
  695.  
  696. get'shade lda (243),y
  697. and #15
  698. tax
  699. lda shade'table,x
  700. jmp store'color
  701.  
  702. linx lda #0
  703. sta 212
  704. ldy #24
  705. - lda 217,y
  706. ora #128
  707. sta 217,y
  708. dey
  709. bpl -
  710. rts
  711.  
  712. get'number jsr $aefd
  713. jsr $ad8a
  714. jmp $b7f7
  715.  
  716. old'rom'patch lda 210
  717. sec
  718. sbc 648
  719. clc
  720. adc #$d8
  721. sta 244
  722. lda 209
  723. sta 243
  724. rts
  725.  
  726. d'keyboard lda #2
  727. jsr close
  728. jsr get'string
  729. jsr setnam
  730. jsr get'number
  731. tya
  732. tax
  733. ldy #2
  734. lda #2
  735. jsr setlfs
  736. lda #0
  737. jsr load
  738. lda 174
  739. sta 45
  740. lda 175
  741. sta 46
  742. jsr $a533
  743. jsr clear'buffer
  744. lda #138
  745. sta buffer
  746. lda "r"
  747. sta 631
  748. lda "U"
  749. sta 632
  750. lda ":"
  751. sta 633
  752. lda #13
  753. sta 634
  754. lda #4
  755. sta 198
  756. jmp $a474
  757.  
  758. ;***** get string from BASIC ****
  759.  
  760. get'string jsr $aefd
  761. jsr $ad9e
  762. jsr $b6a3
  763.  
  764. ldx $22
  765. ldy $23
  766. rts
  767.  
  768. bload jsr get'string
  769. jsr setnam
  770. jsr get'number
  771. sty device
  772. tya
  773. tax
  774. lda #1
  775. ldy #0
  776. jsr setlfs
  777. jsr get'number
  778. ldx $14
  779. ldy $15
  780. lda #0
  781. jsr load
  782. lda 174
  783. sta 201
  784. lda 175
  785. sta 202
  786. jsr make'variable
  787. jsr open'duh'