home *** CD-ROM | disk | FTP | other *** search
/ Loadstar 85 / 085.d81 / plan.s < prev    next >
Text File  |  2022-08-26  |  8KB  |  895 lines

  1. .org 49152       
  2. .mem
  3. ;.obj "planner.o"
  4.  
  5. jmp input
  6. jmp inline
  7. jmp box
  8. jmp viewdir
  9. jmp texts
  10.  
  11. szp = 251
  12. czp = 253
  13.  
  14. screen = 1024
  15. color = 55296
  16.  
  17. ;open2,8,2,"filename"
  18. ;sys49152,length,filenumber
  19. ;returns string in first variable defined in prg
  20.  
  21. input =*
  22.  
  23. comnum = 47089
  24. chkcom = 44797
  25. getnum = 47006
  26. vartab = 45
  27. clrchn = 65484
  28. chkin  = 65478
  29. chrin  = 65487
  30.  
  31. jsr comnum
  32. stx length
  33. jsr comnum
  34. stx filenum
  35. jsr chkin
  36. ldx #0
  37. - jsr chrin
  38. cmp #13
  39. beq +
  40. sta string,x
  41. inx
  42. cpx length
  43. bne -
  44. + ldy #2
  45. txa
  46. sta (vartab),y
  47. iny
  48. lda <string
  49. sta (vartab),y
  50. iny
  51. lda >string
  52. sta (vartab),y
  53. jsr clrchn
  54. rts
  55.  
  56. filenum .byte 0
  57. length  .byte 0
  58.  
  59.  
  60. ;sys49152,row,colm,length  
  61. ;returns string in first variable defined in prg
  62.  
  63. ;comnum = 47089
  64. ;chkcom = 44797
  65. ;getnum = 47006
  66. ;vartab = 45
  67.  
  68. inline =*
  69.  
  70. jsr comnum
  71. stx row    
  72. jsr comnum
  73. stx colm    
  74. jsr comnum
  75. stx len
  76.  
  77. lda <screen
  78. sta szp
  79. lda >screen
  80. sta szp+1
  81.  
  82. ldy #255
  83. - jsr add40
  84. iny
  85. cpy row 
  86. bne -    
  87.  
  88. + ldx #0
  89. ldy colm
  90. - lda (szp),y
  91. jsr convert
  92. sta string,x
  93. iny
  94. inx
  95. cpx len
  96. bne -
  97.  
  98. ldy #2
  99. txa
  100. sta (vartab),y
  101. iny
  102. lda <string
  103. sta (vartab),y
  104. iny
  105. lda >string
  106. sta (vartab),y
  107. rts
  108.  
  109. add40 =*
  110.  
  111. clc
  112. lda szp
  113. adc #40
  114. sta szp
  115. lda szp+1
  116. adc #0
  117. sta szp+1
  118. clc
  119. lda czp
  120. adc #40
  121. sta czp
  122. lda czp+1
  123. adc #0
  124. sta czp+1
  125. rts
  126.  
  127. convert =*
  128.  
  129. sty ytemp
  130. cmp #0
  131. php
  132. and #127
  133. ldy #4
  134. - dey
  135. cmp upplim,y
  136. bcs -
  137. eor fliptb,y
  138. plp
  139. ldy ytemp
  140. rts
  141.  
  142. row     .byte 0
  143. colm    .byte 0
  144. len     .byte 0
  145. ytemp   .byte 0
  146. upplim  .byte 128,96,64,32
  147. fliptb  .byte 192,32,0,64
  148.  
  149. ;sys49152,row,colm,row1,colm1,color
  150.  
  151. box =*
  152.  
  153. jsr comnum
  154. stx row    
  155. jsr comnum
  156. stx colm
  157. jsr comnum
  158. stx row1
  159. jsr comnum
  160. stx colm1
  161. jsr comnum
  162. stx text
  163.  
  164. lda row
  165. sta counter
  166.  
  167. lda <screen-40
  168. sta szp
  169. lda >screen-40
  170. sta szp+1
  171. lda <color-40
  172. sta czp
  173. lda >color-40
  174. sta czp+1
  175.  
  176. ldy #255
  177. - jsr add40
  178. iny
  179. cpy row 
  180. bne -    
  181.  
  182. ldy colm
  183. - lda #112
  184. sta (szp),y
  185. lda text
  186. sta (czp),y
  187. iny
  188. - lda #64
  189. sta (szp),y
  190. lda text
  191. sta (czp),y
  192. iny
  193. cpy colm1
  194. bne -
  195. lda #110
  196. sta (szp),y
  197. lda text
  198. sta (czp),y
  199.  
  200. - jsr add40
  201. inc counter
  202. lda counter
  203. cmp row1
  204. beq +
  205.  
  206. ldy colm
  207. lda #93
  208. sta (szp),y
  209. lda text
  210. sta (czp),y
  211. iny
  212. - lda #32
  213. sta (szp),y
  214. lda text
  215. sta (czp),y
  216. iny
  217. cpy colm1
  218. bne -
  219. lda #93
  220. sta (szp),y
  221. lda text
  222. sta (czp),y
  223. jmp --
  224.  
  225. + ldy colm
  226. lda #109
  227. sta (szp),y
  228. lda text
  229. sta (czp),y
  230. iny
  231. - lda #64
  232. sta (szp),y
  233. lda text
  234. sta (czp),y
  235. iny
  236. cpy colm1
  237. bne -
  238. lda #125
  239. sta (szp),y
  240. lda text
  241. sta (czp),y
  242. rts
  243.  
  244. row1    .byte 0
  245. colm1   .byte 0
  246. counter .byte 0
  247.  
  248. ;read directory
  249.  
  250. setlfs = $ffba
  251. setnam = $ffbd
  252. ;clrchn = $ffcc
  253. open = $ffc0
  254. chrout = 65490
  255. ;chrin = $ffcf
  256. ;chkin = $ffc6
  257. chkout = $ffc9
  258. close = $ffc3
  259. outnum = $bdcd
  260. status = 144
  261.  
  262. viewdir =*
  263.  
  264. jsr clrchn
  265. lda #2
  266. ldx <filename
  267. ldy >filename
  268. jsr setnam
  269. lda #1
  270. ldx #8
  271. ldy #0
  272. jsr setlfs
  273. jsr open
  274.  
  275. ldx #1
  276. jsr chkin
  277.  
  278. jsr chrin
  279. jsr chrin
  280.  
  281. starts =*
  282.  
  283. jsr chrin
  284. jsr chrin
  285. lda status
  286. cmp #0
  287. bne ++
  288. jsr indent
  289. jsr chrin:sta high
  290. jsr chrin:sta low
  291. lda low
  292. ldx high
  293. jsr outnum
  294. - jsr chrin
  295. bne +
  296. lda #13
  297. jsr chrout
  298. jmp starts
  299. + jsr chrout
  300. jmp -
  301. + lda #1
  302. jsr close
  303. jsr clrchn
  304. rts
  305.  
  306. indent =*
  307.  
  308. ldy #0
  309. lda #32
  310. - jsr chrout
  311. iny
  312. cpy #6
  313. bne -
  314. rts
  315.  
  316. filename .asc "$0"
  317. low .byte 0
  318. high .byte 0
  319.  
  320.  
  321. ;sys49152,lm,tm,rm,bm,text color
  322.  
  323. zp  = 247
  324. zp1 = 249  
  325. ;szp = 251
  326. ;czp = 253
  327.  
  328. ;screen = 1024
  329. ;color  = 55296
  330.  
  331. ;chrout = $ffd2
  332. getin  = $ffe4
  333. ;comnum = 47089
  334.  
  335. texts =*
  336.  
  337. jsr comnum
  338. stx lm
  339. jsr comnum
  340. stx tm
  341. jsr comnum
  342. stx rm
  343. jsr comnum
  344. stx bm
  345. jsr comnum
  346. stx text
  347. jsr init
  348.  
  349. texted =*
  350.  
  351. - ldy x
  352. lda (szp),y
  353. eor #128
  354. sta (szp),y
  355. ldx speed
  356. jsr delay    
  357. ldy x
  358. lda (szp),y
  359. eor #128
  360. sta (szp),y
  361. ldx speed
  362. jsr delay    
  363. jsr getin
  364. sta temp
  365. beq -
  366. cmp #133;f1 exit
  367. bne +
  368. rts
  369. + cmp #147
  370. bne +
  371. jsr clearscreen
  372. jmp -
  373. + cmp #17
  374. bne +
  375. jsr down 
  376. jmp -
  377. + cmp #29
  378. bne +
  379. jsr right
  380. jmp -
  381. + cmp #145
  382. bne + 
  383. jsr up 
  384. jmp -
  385. + cmp #157
  386. bne +
  387. jsr left
  388. jmp -
  389. + cmp #20 
  390. bne +
  391. jsr delete
  392. jmp -
  393. + cmp #148
  394. bne +
  395. jsr insert
  396. jmp -
  397. + cmp #9;control i
  398. bne +
  399. jsr insertline
  400. jmp -
  401. + cmp #4;control d
  402. bne +
  403. jsr deleteline
  404. jmp -
  405. + cmp #6;contol f
  406. bne +
  407. jsr eraseend
  408. jmp -
  409. + cmp #2;control b
  410. bne +
  411. jsr erasestart
  412. jmp -
  413. + cmp #13
  414. bne +
  415. jsr return
  416. jmp -
  417. + cmp #19
  418. bne +
  419. jsr home
  420. jmp -
  421. + cmp #255
  422. bne +
  423. lda #126
  424. jmp writechar
  425. + cmp #32
  426. bne +
  427. jmp writechar
  428. + cmp #33
  429. bne +
  430. jmp writechar
  431. + cmp #35
  432. bcs +
  433. jmp -
  434. + cmp #64
  435. bcs +
  436. jmp writechar
  437. + cmp #96
  438. bcs +
  439. sec
  440. sbc #64
  441. jmp writechar
  442. + cmp #123
  443. bcs +
  444. sec
  445. sbc #32
  446. jmp writechar
  447. + cmp #193
  448. bcs +
  449. jmp texted
  450. + cmp #219
  451. bcc +
  452. jmp texted
  453. + sec
  454. sbc #128
  455.  
  456. writechar =*
  457.  
  458. sta char
  459. jsr plotchar
  460. jmp wordcheck
  461. jsr right
  462. jmp texted
  463.  
  464. plotchar =*
  465.  
  466. ldy x
  467. lda char
  468. sta (szp),y
  469. lda text
  470. sta (czp),y
  471. rts
  472.  
  473. wordcheck =*
  474.  
  475. lda x
  476. cmp rm
  477. beq +
  478. jsr right
  479. jmp texted
  480. + lda y
  481. cmp bm
  482. bne +
  483. jsr right
  484. jmp texted
  485. + ldy x
  486. lda (szp),y
  487. cmp #32
  488. bne +
  489. jsr return
  490. jmp texted
  491. + inc rm
  492. dec lm
  493. ldy x
  494. ldx x
  495. - lda (szp),y
  496. cmp #32
  497. beq +
  498. sta textbuf,y
  499. dey
  500. dex
  501. cpx lm
  502. bne -
  503. + iny
  504. sty temp
  505. lda #32
  506. - sta (szp),y
  507. iny
  508. cpy rm
  509. bne -
  510. jsr return
  511. ldx temp
  512. inc lm
  513. ldy lm
  514. - lda textbuf,x
  515. sta (szp),y
  516. lda text
  517. sta (czp),y
  518. iny
  519. inx
  520. cpx rm
  521. bne -
  522. ;- jsr right
  523. ;inc temp
  524. ;lda temp
  525. ;cmp rm
  526. ;bne -
  527. sty x
  528. dec x
  529. dec rm
  530. jsr right
  531. jmp texted
  532.  
  533. delay =*
  534.  
  535. ldy #0
  536. - iny
  537. bne -
  538. dex
  539. bne delay
  540. rts
  541.  
  542. up =*
  543.  
  544. lda y
  545. cmp tm
  546. bne +
  547. rts
  548. + jsr sub40
  549. dec y
  550. rts
  551.  
  552. down =*
  553.  
  554. lda y
  555. cmp bm 
  556. bne +
  557. rts
  558. + jsr add40
  559. inc y
  560. rts
  561.  
  562. right =*
  563.  
  564. lda x
  565. cmp rm
  566. bne +
  567. jsr return
  568. rts
  569. + inc x
  570. rts
  571.  
  572. left =*
  573.  
  574. lda x
  575. cmp lm
  576. bne +
  577. rts
  578. + dec x
  579. rts           
  580.  
  581. sub40 =*
  582.  
  583. sec
  584. lda szp
  585. sbc #40
  586. sta szp
  587. lda szp+1
  588. sbc #0
  589. sta szp+1
  590. sec
  591. lda czp
  592. sbc #40
  593. sta czp
  594. lda czp+1
  595. sbc #0
  596. sta czp+1
  597. rts
  598.  
  599. clearscreen =*
  600.  
  601. jsr init
  602. inc rm
  603. inc bm
  604. ldx tm  
  605. - ldy lm
  606. - lda #32
  607. sta (szp),y
  608. lda text
  609. sta (czp),y
  610. iny
  611. cpy rm
  612. bne -
  613. jsr add40
  614. inx
  615. cpx bm
  616. bne --
  617. dec rm
  618. dec bm
  619.  
  620. home jsr init
  621. rts
  622.  
  623. add401 =*
  624.  
  625. clc
  626. lda zp
  627. adc #40
  628. sta zp
  629. lda zp+1
  630. adc #0
  631. sta zp+1
  632. clc
  633. lda zp1
  634. adc #40
  635. sta zp1
  636. lda zp1+1
  637. adc #0
  638. sta zp1+1
  639. rts
  640.  
  641. sub401 =*
  642.  
  643. sec
  644. lda zp
  645. sbc #40
  646. sta zp
  647. lda zp+1
  648. sbc #0
  649. sta zp+1
  650. sec
  651. lda zp1
  652. sbc #40
  653. sta zp1
  654. lda zp1+1
  655. sbc #0
  656. sta zp1+1
  657. rts
  658.  
  659. insert =*
  660.  
  661. ldy rm
  662. cpy x
  663. bne +
  664. rts
  665. + lda (szp),y
  666. cmp #32
  667. beq +
  668. rts
  669. + ldy rm
  670. - dey
  671. lda (szp),y
  672. iny
  673. sta (szp),y
  674. dey
  675. lda (czp),y
  676. iny
  677. sta (czp),y
  678. dey
  679. cpy x
  680. bne -
  681. ldy x
  682. lda (szp),y
  683. iny
  684. sta (szp),y
  685. dey
  686. lda (czp),y
  687. iny
  688. sta (czp),y
  689. ldy x
  690. lda #32
  691. sta (szp),y
  692. rts
  693.  
  694. delete =*
  695.  
  696. ldy x
  697. cpy lm
  698. bne +
  699. rts
  700. + inc rm
  701. - lda (szp),y
  702. dey
  703. sta (szp),y
  704. iny
  705. lda (czp),y
  706. dey
  707. sta (czp),y
  708. iny
  709. iny
  710. cpy rm
  711. bne -
  712. dey
  713. lda #32
  714. sta (szp),y
  715. jsr left
  716. dec rm
  717. rts
  718.  
  719. deleteline =*
  720.  
  721. lda y
  722. cmp bm
  723. bne +
  724. rts
  725. + lda szp
  726. sta zp
  727. lda szp+1
  728. sta zp+1
  729. lda czp
  730. sta zp1
  731. lda czp+1
  732. sta zp1+1
  733. jsr add401
  734. inc rm
  735. ldx y
  736. - ldy lm
  737. - lda (zp),y
  738. sta temp
  739. jsr sub401
  740. lda temp
  741. sta (zp),y
  742. jsr add401
  743. lda (zp1),y
  744. sta temp
  745. jsr sub401
  746. lda temp
  747. sta (zp1),y
  748. jsr add401
  749. iny
  750. cpy rm 
  751. bne -
  752. jsr add401
  753. inx
  754. cpx bm
  755. bne --
  756. jsr sub401
  757. ldy lm
  758. - lda #32
  759. sta (zp),y
  760. iny
  761. cpy rm
  762. bne -
  763. dec rm
  764. rts
  765.  
  766. insertline =*
  767.  
  768. lda y
  769. cmp bm
  770. bne +
  771. rts
  772. + dec y
  773. dec bm
  774. lda <screen
  775. sta zp
  776. lda >screen
  777. sta zp+1
  778. lda <color
  779. sta zp1
  780. lda >color
  781. sta zp1+1
  782. ldx #0
  783. - jsr add401
  784. inx
  785. cpx bm
  786. bne -
  787.  
  788. inc rm
  789. ldx bm
  790. - ldy lm
  791. - lda (zp),y
  792. sta temp
  793. jsr add401
  794. lda temp
  795. sta (zp),y
  796. jsr sub401
  797. lda (zp1),y
  798. sta temp
  799. jsr add401
  800. lda temp
  801. sta (zp1),y
  802. jsr sub401
  803. iny
  804. cpy rm
  805. bne -
  806. jsr sub401
  807. dex
  808. cpx y
  809. bne --
  810.  
  811. ldy lm
  812. - lda #32
  813. sta (szp),y
  814. iny
  815. cpy rm
  816. bne -
  817. inc y
  818. dec rm
  819. inc bm
  820. rts
  821.  
  822. eraseend =*
  823.  
  824. inc rm
  825. ldy x
  826. - lda #32
  827. sta (szp),y
  828. iny
  829. cpy rm
  830. bne -
  831. dec rm
  832. rts
  833.  
  834. erasestart =*
  835.  
  836. dec lm
  837. ldy x
  838. - lda #32
  839. sta (szp),y
  840. dey
  841. cpy lm
  842. bne -
  843. inc lm
  844. rts
  845.  
  846. return =*
  847.  
  848. lda y
  849. cmp bm 
  850. bne +
  851. rts
  852. + lda lm
  853. sta x
  854. jsr down
  855. rts
  856.  
  857. init =*
  858.  
  859. lda <screen
  860. sta szp
  861. lda >screen
  862. sta szp+1
  863. lda <color
  864. sta czp
  865. lda >color
  866. sta czp+1
  867. ldy tm
  868. beq +
  869. ldy #0
  870. - jsr add40
  871. iny
  872. cpy tm
  873. bne -
  874. + lda lm
  875. sta x
  876. lda tm
  877. sta y
  878. rts
  879.  
  880. speed   .byte 10
  881. char    .byte 0
  882. temp    .byte 0
  883. x       .byte 0
  884. y       .byte 0
  885. text    .byte 14
  886. rm      .byte 39
  887. lm      .byte 0
  888. tm      .byte 0
  889. bm      .byte 24
  890.  
  891. textbuf .buf 40
  892.  
  893. string .byte 0
  894.  
  895.