home *** CD-ROM | disk | FTP | other *** search
/ 64'er Special 28 / 64er_Magazin_Sonderheft_28_19xx_Markt__Technik_de_Side_B.d64 / gt.routinen < prev    next >
Encoding:
Text File  |  1990-01-01  |  16.5 KB  |  1,129 lines

  1. ; ***********************
  2. ; *** andere Routinen ***
  3. ;
  4. ; *** Sternchen setzen/loeschen ***
  5. ;
  6. :sternchen
  7. loadw texte,zp2
  8. transw baud,zp1    ;2.2.1. Baudrate
  9. dadd zp1,zp2,zp1
  10. lda zw
  11. ldy #7
  12. sta (zp1),y
  13. transw datenb,zp1  ;2.2.2. Datenbits
  14. dadd zp1,zp2,zp1
  15. lda zw
  16. ldy #2
  17. sta (zp1),y
  18. transw parit,zp1   ;2.2.3. Paritaet
  19. dadd zp1,zp2,zp1
  20. lda zw
  21. ldy #18
  22. sta (zp1),y
  23. transw stopb,zp1   ;2.2.4. Stopbits
  24. dadd zp1,zp2,zp1
  25. lda zw
  26. ldy #5
  27. sta (zp1),y
  28. transw dupl,zp1    ;2.2.5. Duplex
  29. dadd zp1,zp2,zp1
  30. lda zw
  31. ldy #5
  32. sta (zp1),y
  33. lda echo           ;2.3. Echo
  34. beq echoaus
  35. cop zw,mtext231+4
  36. jmp geschw
  37. :echoaus
  38. cop zw,mtext232+4
  39. :geschw
  40. lda speed          ;2.5.1. Sendetempo
  41. beq lowspd
  42. cop zw,mtext2511+8
  43. jmp crunterdr
  44. :lowspd
  45. cop zw,mtext2512+8
  46. :crunterdr
  47. lda crunter        ;2.5.2. CR unterdruecken
  48. beq nein
  49. cop zw,mtext2521+6
  50. jmp konvertie
  51. :nein
  52. cop zw,mtext2522+6
  53. :konvertie
  54. lda konvert        ;2.5.3. konvertieren
  55. beq nkonv
  56. cop zw,mtext2531+6
  57. jmp geradr
  58. :nkonv
  59. cop zw,mtext2532+6
  60. :geradr
  61. lda geraet         ;2.6.1. Druckergeraeteadr.
  62. cmp #4
  63. beq vier
  64. cop zw,mtext2612+6
  65. jmp sek
  66. :vier
  67. cop zw,mtext2611+6
  68. :sek
  69. lda sekundaer      ;2.6.2. Sekundaeradr.
  70. beq seknull
  71. cmp #1
  72. beq sekeins
  73. cop zw,mtext2623+2
  74. jmp asc
  75. :sekeins
  76. cop zw,mtext2622+2
  77. jmp asc
  78. :seknull
  79. cop zw,mtext2621+2
  80. :asc
  81. lda ascii          ;2.6.3. Zeichensatz
  82. beq keinasc
  83. cop zw,mtext2631+5
  84. jmp drlf
  85. :keinasc
  86. cop zw,mtext2632+5
  87. :drlf
  88. lda drucklf        ;2.6.4. Linefeed
  89. beq keinlf
  90. cop zw,mtext2641+5
  91. jmp fertig
  92. :keinlf
  93. cop zw,mtext2642+5
  94. :fertig
  95. rts
  96. ;
  97. ; *********************
  98. ; *** Menueroutinen ***
  99. ;
  100. ; *** LEERroutinen fuer LEERe Menuepunkte ***
  101. :leer1
  102. redomenu
  103. :leer2
  104. menu1
  105. ; *** 1.1. geoTerm Info ***
  106. ;
  107. :rt11
  108. recvmenu 1
  109. dialbox infobox
  110. menu1
  111. ;
  112. ; *** 1.2. Desktop laden ***
  113. ;
  114. :rt12
  115. initio
  116. jsr clrch
  117. close 2        ;RS-232-File schliessen
  118. doneio
  119. lda flag6
  120. beq ndirerr
  121. turbopur
  122. initio
  123. fopen 15,8,15,1,initstr  ;DIR-Error vermeiden
  124. close 15
  125. doneio
  126. turbon
  127. :ndirerr
  128. proff
  129. loadw oldnmi,$fffa
  130. transw resetmain,r0
  131. jsr initramr
  132. desktop
  133. ;
  134. ; *** 1.3.-1.a. Accessory aufrufen ***
  135. ;
  136. :rt13
  137. loadw prg1,zp1
  138. jmp laden
  139. ;
  140. :rt14
  141. loadw prg2,zp1
  142. jmp laden
  143. ;
  144. :rt15
  145. loadw prg3,zp1
  146. jmp laden
  147. ;
  148. :rt16
  149. loadw prg4,zp1
  150. jmp laden
  151. ;
  152. :rt17
  153. loadw prg5,zp1
  154. jmp laden
  155. ;
  156. :rt18
  157. loadw prg6,zp1
  158. jmp laden
  159. ;
  160. :rt19
  161. loadw prg7,zp1
  162. jmp laden
  163. ;
  164. :rt1a
  165. loadw prg8,zp1
  166. ;
  167. :laden
  168. jsr ioinit
  169. proff
  170. loadw 0,vektast
  171. loadw init,$849b
  172. transw zp1,r6
  173. poke 2,0
  174. poke $16,0
  175. poke flag1,set
  176. getfile
  177. ;  **                  **
  178. ; * 2.1. Parameter laden *
  179. ;  **                  **
  180. :rt21
  181. clearam $a000+640,7360 ;Teil des Screens loeschen
  182. clearam $6000+640,7360
  183. jsr ioinit
  184. poke zw,32       ;alte Sternchen loeschen
  185. jsr sternchen
  186. poke flag3,set
  187. jsr parlesen     ;und neue laden+setzen
  188. poke flag3,clear
  189. jsr rsinit
  190. menu1
  191. ; **************************
  192. ; * 2.2.1.1. Baudrate 50   *
  193. ;
  194. :rt2211
  195. poke zw,%00000001
  196. loadw mtext2211,zp1
  197. jmp baudrate
  198. ;
  199. ; * 2.2.1.2. Baudrate 75   *
  200. ;
  201. :rt2212
  202. poke zw,%00000011
  203. loadw mtext2212,zp1
  204. jmp baudrate
  205. ;
  206. ; * 2.2.1.3. Baudrate 150  *
  207. ;
  208. :rt2213
  209. poke zw,%00000110
  210. loadw mtext2213,zp1
  211. jmp baudrate
  212. ;
  213. ; * 2.2.1.4. Baudrate 300  *
  214. ;
  215. :rt2214
  216. poke zw,%00000111
  217. loadw mtext2214,zp1
  218. jmp baudrate
  219. ;
  220. ; * 2.2.1.5. Baudrate 600  *
  221. ;
  222. :rt2215
  223. poke zw,%00001000
  224. loadw mtext2215,zp1
  225. jmp baudrate
  226. ;
  227. ; * 2.2.1.6. Baudrate 1200 *
  228. ;
  229. :rt2216
  230. poke zw,%00001001
  231. loadw mtext2216,zp1
  232. ;
  233. ; * Baudrate aendern       *
  234. ; **************************
  235. :baudrate
  236. lda steuerreg
  237. and #%11110000 ;untere vier Bytes loeschen
  238. ora zw         ;und Baudrate einstellen
  239. sta steuerreg
  240. sta fadr
  241. loadw texte,zp3
  242. transw baud,zp2
  243. dadd zp2,zp3,zp2
  244. ldy #7
  245. lda #32
  246. sta (zp2),y    ;alten Stern loeschen
  247. lda #42        ;neuen Stern setzen
  248. sta (zp1),y
  249. transw zp1,baud
  250. dsub baud,zp3,baud
  251. setmouse 103,22
  252. premenu
  253. ; *********************************
  254. ; * 2.2.2.1. 5 Datenbits makieren *
  255. ;
  256. :rt2221
  257. poke zw,%01100000
  258. loadw mtext2221,zp1
  259. jmp datenbits
  260. ;
  261. ; * 2.2.2.2. 6 Datenbits makieren *
  262. ;
  263. :rt2222
  264. poke zw,%01000000
  265. loadw mtext2222,zp1
  266. jmp datenbits
  267. ;
  268. ; * 2.2.2.3. 7 Datenbits makieren *
  269. ;
  270. :rt2223
  271. poke zw,%00100000
  272. loadw mtext2223,zp1
  273. jmp datenbits
  274. ;
  275. ; * 2.2.2.4. 8 Datenbits makieren *
  276. ;
  277. :rt2224
  278. poke zw,%00000000
  279. loadw mtext2224,zp1
  280. ;
  281. ; * Datenbits aendern             *
  282. ; *********************************
  283. :datenbits
  284. lda steuerreg
  285. and #%10011111 ;untere vier Bytes loeschen
  286. ora zw         ;und Baudrate einstellen
  287. sta steuerreg
  288. sta fadr
  289. loadw texte,zp3
  290. transw datenb,zp2
  291. dadd zp2,zp3,zp2
  292. lda #32
  293. ldy #2
  294. sta (zp2),y    ;alten Stern loeschen
  295. lda #42        ;neuen Stern setzen
  296. sta (zp1),y
  297. transw zp1,datenb
  298. dsub datenb,zp3,datenb
  299. setmouse 103,22
  300. premenu
  301. ; ********************************
  302. ; * 2.2.3.1. keine Paritaet      *
  303. ;
  304. :rt2231
  305. poke zw,%00000000
  306. loadw mtext2231,zp1
  307. jmp paritaet
  308. ;
  309. ; * 2.2.3.2. ungerade Paritaet   *
  310. :rt2232
  311. poke zw,%00100000
  312. loadw mtext2232,zp1
  313. jmp paritaet
  314. ;
  315. ; * 2.2.3.3. gerade Paritaet     *
  316. ;
  317. :rt2233
  318. poke zw,%01100000
  319. loadw mtext2233,zp1
  320. jmp paritaet
  321. ;
  322. ; * 2.2.3.4. gesetzte Paritaet   *
  323. ;
  324. :rt2234
  325. poke zw,%10100000
  326. loadw mtext2234,zp1
  327. jmp paritaet
  328. ;
  329. ; * 2.2.3.5. geloeschte Paritaet *
  330. ;
  331. :rt2235
  332. poke zw,%11100000
  333. loadw mtext2235,zp1
  334. ;
  335. ; * Paritaet aendern             *
  336. ; ********************************
  337. :paritaet
  338. lda befehlsreg
  339. and #%00011111
  340. ora zw         ;und Baudrate einstellen
  341. sta befehlsreg
  342. sta fadr+1
  343. loadw texte,zp3
  344. transw parit,zp2
  345. dadd zp2,zp3,zp2
  346. lda #32
  347. ldy #18
  348. sta (zp2),y    ;alten Stern loeschen
  349. lda #42        ;neuen Stern setzen
  350. sta (zp1),y
  351. transw zp1,parit
  352. dsub parit,zp3,parit
  353. setmouse 103,22
  354. premenu
  355. ; ***********************
  356. ; * 2.2.4.1. 1 Stopbit  *
  357. ;
  358. :rt2241
  359. poke zw,%00000000
  360. loadw mtext2241,zp1
  361. jmp stopbits
  362. ;
  363. ;
  364. ; * 2.2.4.2. 2 Stopbits *
  365. ;
  366. :rt2242
  367. poke zw,%10000000
  368. loadw mtext2242,zp1
  369. ;
  370. ; * Stopbits aendern    *
  371. ; ***********************
  372. :stopbits
  373. lda steuerreg
  374. and #%01111111
  375. ora zw         ;und Baudrate einstellen
  376. sta steuerreg
  377. sta fadr
  378. loadw texte,zp3
  379. transw stopb,zp2
  380. dadd zp2,zp3,zp2
  381. lda #32
  382. ldy #5
  383. sta (zp2),y    ;alten Stern loeschen
  384. lda #42        ;neuen Stern setzen
  385. sta (zp1),y
  386. transw zp1,stopb
  387. dsub stopb,zp3,stopb
  388. setmouse 103,22
  389. premenu
  390. ; ************************
  391. ; * 2.2.5.1. Voll-Duplex *
  392. ;
  393. :rt2251
  394. poke zw,%00000000
  395. loadw mtext2251,zp1
  396. jmp duplex
  397. ;
  398. ; * 2.2.5.2. Halb-Duplex *
  399. ;
  400. :rt2252
  401. poke zw,%00010000
  402. loadw mtext2252,zp1
  403. ;
  404. ; * Duplex aendern       *
  405. ; ************************
  406. :duplex
  407. lda befehlsreg
  408. and #%11101111
  409. ora zw         ;und Baudrate einstellen
  410. sta befehlsreg
  411. sta fadr+1
  412. loadw texte,zp3
  413. transw dupl,zp2
  414. dadd zp2,zp3,zp2
  415. lda #32
  416. ldy #5
  417. sta (zp2),y    ;alten Stern loeschen
  418. lda #42        ;neuen Stern setzen
  419. sta (zp1),y
  420. transw zp1,dupl
  421. dsub dupl,zp3,dupl
  422. setmouse 103,22
  423. premenu
  424. ; ******************
  425. ; * 2.3.1 Echo an  *
  426. ;
  427. :rt231
  428. poke mtext232+4,32
  429. poke mtext231+4,42
  430. poke echo,set
  431. setmouse 49,22
  432. premenu
  433. ;
  434. ; * 2.3.2 Echo aus *
  435. ; ******************
  436. :rt232
  437. poke mtext231+4,32
  438. poke mtext232+4,42
  439. poke echo,clear
  440. setmouse 49,22
  441. premenu
  442. ; ****************************
  443. ; * 2.5.1.1. schnelles Tempo *
  444. ;
  445. :rt2511
  446. poke mtext2512+8,32
  447. poke mtext2511+8,42
  448. poke speed,set
  449. setmouse 118,22
  450. premenu
  451. ;
  452. ; * 2.5.1.2. langsames Tempo *
  453. ; ****************************
  454. :rt2512
  455. poke mtext2511+8,32
  456. poke mtext2512+8,42
  457. poke speed,clear
  458. setmouse 118,22
  459. premenu
  460. ; ******************************
  461. ; * 2.5.2.1. CR unterdr.       *
  462. ;
  463. :rt2521
  464. poke mtext2522+6,32
  465. poke mtext2521+6,42
  466. poke crunter,set
  467. setmouse 118,22
  468. premenu
  469. ;
  470. ; * 2.5.2.2. CR nicht unterdr. *
  471. ; ******************************
  472. :rt2522
  473. poke mtext2521+6,32
  474. poke mtext2522+6,42
  475. poke crunter,clear
  476. setmouse 118,22
  477. premenu
  478. ; ************************************
  479. ; * 2.5.3.1. Text konvertieren       *
  480. ;
  481. :rt2531
  482. poke mtext2532+6,32
  483. poke mtext2531+6,42
  484. poke konvert,set
  485. setmouse 118,22
  486. premenu
  487. ;
  488. ; * 2.5.3.2. Text nicht konvertieren *
  489. ; ************************************
  490. :rt2532
  491. poke mtext2531+6,32
  492. poke mtext2532+6,42
  493. poke konvert,clear
  494. setmouse 118,22
  495. premenu
  496. ; ******************************
  497. ; * 2.6.1.1. Geraeteadr. vier  *
  498. ;
  499. :rt2611
  500. poke mtext2612+6,32
  501. poke mtext2611+6,42
  502. poke geraet,4
  503. setmouse 111,22
  504. premenu
  505. ;
  506. ; * 2.6.1.2. Geraeteadr. fuenf *
  507. ; ******************************
  508. :rt2612
  509. poke mtext2611+6,32
  510. poke mtext2612+6,42
  511. poke geraet,5
  512. setmouse 111,22
  513. premenu
  514. ; *******************************
  515. ; * 2.6.2.1. Sekundaeradr. null *
  516. ;
  517. :rt2621
  518. poke mtext2623+2,32
  519. poke mtext2622+2,32
  520. poke mtext2621+2,42
  521. poke sekundaer,0
  522. setmouse 111,22
  523. premenu
  524. ;
  525. ; * 2.6.2.2. Sekadr. eins       *
  526. ;
  527. :rt2622
  528. poke mtext2623+2,32
  529. poke mtext2622+2,42
  530. poke mtext2621+2,32
  531. poke sekundaer,1
  532. setmouse 111,22
  533. premenu
  534. ;
  535. ; * 2.6.2.3. Sekadr. sieben     *
  536. ; *******************************
  537. :rt2623
  538. poke mtext2623+2,42
  539. poke mtext2622+2,32
  540. poke mtext2621+2,32
  541. poke sekundaer,7
  542. setmouse 111,22
  543. premenu
  544. ; ***********************
  545. ; * 2.6.3.1. Ascii ja   *
  546. ;
  547. :rt2631
  548. poke mtext2632+5,32
  549. poke mtext2631+5,42
  550. poke ascii,set
  551. setmouse 111,22
  552. premenu
  553. ;
  554. ; * 2.6.3.2. Ascii nein *
  555. ; ***********************
  556. :rt2632
  557. poke mtext2631+5,32
  558. poke mtext2632+5,42
  559. poke ascii,clear
  560. setmouse 111,22
  561. premenu
  562. ; *********************************
  563. ; * 2.6.4.1. Linefeed auf Dr. ja  *
  564. ;
  565. :rt2641
  566. poke mtext2642+5,32
  567. poke mtext2641+5,42
  568. poke drucklf,set
  569. setmouse 111,22
  570. premenu
  571. ;
  572. ; * 2.6.4.2. Linefeed auf Dr. nein *
  573. ; **********************************
  574. :rt2642
  575. poke mtext2641+5,32
  576. poke mtext2642+5,42
  577. poke drucklf,clear
  578. setmouse 111,22
  579. premenu
  580. ;
  581. ; *** 2.7. Parameter speichern ***
  582.  
  583. ;
  584. :rt27
  585. jsr ioinit
  586. opendisk
  587. openrec geoterm
  588. error ok3,rt27
  589. :ok3
  590. pointrec 1
  591. delrec
  592. insrec
  593. writerec baud,drucklf-baud+1
  594. closerec
  595. jsr rsinit
  596. menu1
  597. ;
  598. ; *** 3.1. BSW einschalten ***
  599. ;
  600. :rt31
  601. clearam $a000+640,7360 ;Teil des Screens loeschen
  602. clearam $6000+640,7360
  603. jsr fontbsw
  604. menu1
  605. :fontbsw
  606. sysfont
  607. loadw 0,r11
  608. loadw 0,textx
  609. poke 5,22          ;Textpos. setzen
  610. sta texty
  611. poke crdiff,6
  612. poke crhoehe,9
  613. jsr promptr
  614. poke top,22
  615. poke bsw,set
  616. rts
  617. ;
  618. ; *** 3.2. University einschalten ***
  619. ;
  620. :rt32
  621. clearam $a000+640,7360 ;Teil des Screens loeschen
  622. clearam $6000+640,7360
  623. jsr fontuni
  624. menu1
  625. :fontuni
  626. loadset univ
  627. loadw 0,r11
  628. loadw 0,textx
  629. poke 5,20          ;Textpos. setzen
  630. sta texty
  631. poke crdiff,4
  632. poke crhoehe,6
  633. jsr promptr
  634. poke top,20
  635. poke bsw,clear
  636. menu1
  637. ;
  638. ; *** 6.1.1.1. Textscrap ueber ASCII senden ***
  639. ;
  640. :rt6111
  641. poke flag4,set     ;Zeichen fuer Scrap
  642. jmp seqsenden
  643. ;
  644. ; *** 6.1.1.2. Seq.-File ueber ASCII senden ***
  645. ;
  646. :rt6112
  647. poke flag4,clear   ;Zeichen fuer Seq
  648. :seqsenden
  649. moveram diskid,disknam,18
  650. moveram disknam,urname,16
  651. moveram $c1e4,vekgetblk,3
  652. :wieder
  653. dialbox quelldisk
  654. lda r0
  655. cmp #cancel
  656. bne nhauptm
  657. jmp rt6112ende
  658. :nhauptm
  659. jsr ioinit
  660. opendisk
  661. error ok4,wieder
  662. :ok4
  663. lda flag4
  664. bne scrap
  665. initgetfiles 0,filepuffer,0
  666. dialbox choosefile     ;Seq-File waehlen
  667. lda r0
  668. cmp #cancel
  669. bne nzurueck
  670. jmp wieder
  671. :nzurueck
  672. findfile filepuffer
  673. jmp einlesen
  674. :scrap
  675. findfile textscrap
  676. cpx #5            ;pruefen,ob Textscrap da
  677. bne einlesen
  678. jmp rt6112ende
  679. :einlesen
  680. recvbox 100,16,319,50 ;Menues loeschen
  681. cop direin+1,4    ;Anfangsblock
  682. cop direin+2,5    ;des Files
  683. getblk blkpf     ;einlesen
  684. poke $c,$ff
  685. lda blkpf        ;pruefen,ob letzter Block
  686. bne nzuende
  687. cop blkpf+1,$c   ;Laenge festlegen
  688. :nzuende
  689. inc $c
  690. poke $d,2        ;ab 1. Byte
  691. lda flag4
  692. beq nueberl
  693. poke $d,8        ;Steuercodes ueberlesen
  694. :nueberl
  695. moveram r4,readpar,4
  696. cop blkpf,4
  697. sta spur         ;Folgeblock festlegen
  698. cop blkpf+1,5
  699. sta sektor
  700. loadw newgetblk,$c1e5 ;neue Routine
  701. poke $c1e4,$4c        ;fuer Block einlesen
  702. jsr rsinit
  703. :readloop
  704. moveram readpar,r4,4 ;Werte aus
  705. cop spur,4           ;Zwischenspeicher
  706. cop sektor,5         ;zureckholen
  707. readbyte
  708. pha
  709. txa
  710. pha
  711. cop 4,spur           ;und wieder rein
  712. cop 5,sektor
  713. moveram r4,readpar,4
  714. pla
  715. tax
  716. pla
  717. cpx #$b          ;File zuende ?
  718. bne nende
  719. jmp rt6112ende
  720. :nende
  721. tay
  722. error ok5,rt6112ende
  723. :ok5
  724. tya
  725. cmp #cr          ;CR ?
  726. bne ncaret
  727. ;
  728. ; ** CR behandeln **
  729. lda crunter
  730. beq nunterdr    ;unterdruecken ?
  731. poke tastcd,32
  732. jsr taste       ;Leerzeichen senden
  733. jmp verzoeg
  734. ;
  735. :nunterdr
  736. poke tastcd,cr
  737. jsr taste       ;CR senden
  738. jmp verzoeg
  739. ;
  740. :ncaret
  741. cmp #32
  742. bcc readloop
  743. ldx flag4
  744. bne nseq
  745. ldx konvert
  746. beq zkleiner
  747. cmp #65         ;bei SEQ-File
  748. bcc nseq        ;konvertieren
  749. cmp #91
  750. bcs gross
  751. eor #$20        ;(65-91 zu 97-122)
  752. jmp nseq
  753. :gross
  754. cmp #97
  755. bcc nseq
  756. cmp #122
  757. bcs gross2
  758. eor #$20        ;(97-122 zu 65-91)
  759. jmp nseq
  760. :gross2
  761. cmp #193
  762. jmp zgroesser
  763. jmp readloop
  764. :zgroesser
  765. cmp #219
  766. bcc zkleiner
  767. jmp readloop
  768. :zkleiner
  769. and #%01111111  ;(193-219 zu 65-91)
  770. :nseq
  771. tax
  772. bpl nzugross   ;zu grosser Code
  773. jmp readloop
  774. :nzugross
  775. sta tastcd
  776. jsr taste      ;Zeichen senden
  777. :verzoeg
  778. nextchar
  779. tax            ;bei Tastendruck
  780. beq nstop      ;Schluss machen
  781. jmp rt6112ende
  782. :nstop
  783. jsr romein     ;auf (RS232) Eingaben pruefen
  784. jsr getin
  785. pha            ;Zeichen zwischenspeichern
  786. jsr romaus
  787. pla           ;zurueckholen
  788. tax
  789. beq keinzeich ;Zeichen angekommen ?
  790. jsr print     ;wenn ja,dann ausgeben
  791. :keinzeich
  792. lda speed
  793. bne nverz
  794. sei
  795. loadw verirq,zuirq
  796. poke zaehler,0
  797. cli
  798. :nochnicht
  799. lda zaehler   ; 6
  800. cmp #6        ;{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y} sek warten
  801. bcc nochnicht ; 50
  802. sei
  803. loadw 0,zuirq
  804. cli
  805. :nverz
  806. jmp readloop
  807. ;
  808. ; ** Ende der Uebertragung **
  809. :rt6112ende
  810. jsr ioinit
  811. moveram vekgetblk,$c1e4,3
  812. :altedisk
  813. opendisk
  814. loadw disknam,zp1
  815. loadw diskid,zp2
  816. cmpfstr zp1,zp2,18 ;Diskids vergleichen
  817. beq gleich
  818. dialbox urdisk
  819. jmp altedisk
  820. :gleich
  821. jsr rsinit
  822. jsr romein
  823. lda zeichen
  824. jsr bsout
  825. jsr romaus
  826. menu1
  827. ;
  828. ; ** neue Routine zu GETBLOCK **
  829. :newgetblk
  830. cop 4,spur
  831. cop 5,sektor
  832. moveram r4,readpar,4
  833. jsr ioinit
  834. moveram readpar,r4,4
  835. cop spur,4
  836. cop sektor,5
  837. jsr vekgetblk
  838. moveram r4,readpar,4
  839. txa           ;Fehlerbyte sichern
  840. pha
  841. jsr rsinit
  842. moveram readpar,r4,4
  843. cop spur,4
  844. cop sektor,5
  845. pla
  846. tax
  847. rts
  848. ;
  849. ; ** IRQ zum Verzoegern **
  850. :verirq
  851. inc zaehler
  852. rts
  853. ;
  854. ; *** 7.1.1. Puffer loeschen+oeffnen ***
  855. ;
  856. :rt711
  857. loadw $6000,bottom   ;Zeiger loeschen
  858. hline 0,319,14,0     ;Linie loeschen
  859. :oeffnen
  860. lda puffer
  861. bne schonoffen
  862. invbox 255,1,274,13  ;Icon invertieren
  863. poke puffer,set
  864. :schonoffen
  865. menu1
  866. ;
  867. ; *** 7.1.2. Puffer oeffnen ***
  868. ;
  869. :rt712
  870. jmp oeffnen
  871. ;
  872. ; *** 7.2. Puffer schliessen ***
  873. ;
  874. :rt72
  875. lda puffer
  876. beq schonzu
  877. invbox 255,1,274,13
  878. poke puffer,clear
  879. :schonzu
  880. menu1
  881. ;
  882. ; *** 7.3. freien Platz im Puffer anzeigen ***
  883. ;
  884. :rt73
  885. dialbox showfree
  886. menu1
  887. ;
  888. ; ** Bytezahl anzeigen **
  889. :freerechn
  890. transw bottom,zp1
  891. loadw grenze,zp2
  892. dsub zp1,zp2,zp1   ;Freier Platz nach zp1
  893. lda #boldon
  894. putchar
  895. transw zp1,r0
  896. putdec 80,63
  897. rts
  898. ;
  899. ; *** 7.4. Puffer anzeigen ***
  900. ;
  901. :rt74
  902. lda bottom+1
  903. cmp #$60             ;Puffer leer ?
  904. bne nleer
  905. menu1
  906. :nleer
  907. recvbox 0,16,319,199 ;Menues loeschen
  908. lda echo
  909. pha
  910. poke echo,clear      ;Echo sperren
  911. lda puffer
  912. pha
  913. poke puffer,clear   ;Puffer sperren
  914. loadw $6000,zp10
  915. lda #cr
  916. jsr print
  917. :anzloop
  918. nextchar
  919. tax                ;bei Taste anhalten
  920. beq keintast
  921. :stop
  922. transw textx,r11
  923. cop texty,5
  924. setcr
  925. nextchar
  926. tax                ;auf naechste warten
  927. beq stop
  928. cmp #22            ;und bei 'STOP' Abbruch
  929. bne keintast
  930. jmp alles
  931. :keintast
  932. lda zp10+1
  933. cmp bottom+1
  934. bne nalles         ;alles angezeigt ?
  935. lda zp10
  936. cmp bottom
  937. beq alles
  938. :nalles
  939. ddec zp10
  940. ldy #0
  941. lda (zp10),y
  942. jsr print
  943. jmp anzloop
  944. :alles
  945. lda #cr
  946. jsr print
  947. transw textx,r11
  948. cop texty,5
  949. setcr
  950. pla
  951. sta puffer        ;Flags zuruecksetzen
  952. pla
  953. sta echo
  954. menu1
  955. ;
  956. ; *** 7.5. Puffer drucken ***
  957. ;
  958. :rt75
  959. poke flag5,clear
  960. lda bottom+1
  961. cmp #$60       ;Puffer leer ?
  962. bne drnleer
  963. menu1
  964. :drnleer
  965. jsr ioinit     ;I/O vorbereiten
  966. turboff
  967. initio
  968. lda #4
  969. ldx geraet     ;File oeffnen
  970. ldy sekundaer
  971. jsr setlfsr
  972. lda #1
  973. ldx #<namdr
  974. ldy #>namdr
  975. jsr setnam
  976. jsr fopenr
  977. :drsp
  978. bcc keinfehler
  979. jmp drende     ;bei I/O-Fehler Ende
  980. :keinfehler
  981. chkout 4
  982. loadw $6000,zp10
  983. :drloop
  984. lda zp10+1     ;schon
  985. cmp bottom+1   ;alle
  986. bne drnalles   ;Zeichen ?
  987. lda zp10
  988. cmp bottom
  989. bne drnalles
  990. jmp dralles
  991. :drnalles
  992. lda version
  993. beq n12
  994. doneio
  995. :n12
  996. ddec zp10
  997. lda version
  998. beq nochmn12
  999. initio
  1000. :nochmn12
  1001. ldy #0
  1002. lda (zp10),y
  1003. ldx flag5
  1004. bne drncr
  1005. cmp #13
  1006. bne drncr       ;evtl. LF
  1007. lda drucklf     ;vor CR
  1008. beq drnlf       ;drucken
  1009. lda #lf
  1010. jsr bsout
  1011. :drnlf
  1012. lda #cr
  1013. jsr bsout
  1014. jmp drloop
  1015. :drncr
  1016. pha
  1017. lda ascii
  1018. bne nwandl
  1019. pla
  1020. jsr zurwandeln
  1021. pha
  1022. :nwandl
  1023. pla
  1024. jsr bsout
  1025. lda flag5
  1026. beq ndisk
  1027. bcc drloop
  1028. jmp drende
  1029. :ndisk
  1030. doneio
  1031. nextchar
  1032. tax
  1033. beq drntast
  1034. initio
  1035. jmp dralles
  1036. :drntast
  1037. initio
  1038. jmp drloop
  1039. ;
  1040. :dralles
  1041. lda flag5
  1042. bne drende
  1043. lda #13
  1044. jsr bsout
  1045. ; * Ende des "Drucks" *
  1046. :drende
  1047. close 4
  1048. jsr clrch
  1049. doneio
  1050. turbon
  1051. lda flag5
  1052. beq nalt
  1053. jmp altedisk
  1054. :nalt
  1055. jsr rsinit
  1056. menu1
  1057. ;
  1058. ; *** 7.6. Puffer speichern ***
  1059. ;
  1060. :rt76
  1061. poke flag5,set
  1062. lda bottom+1
  1063. cmp #$60       ;Puffer leer ?
  1064. bne dknleer
  1065. menu1
  1066. :dknleer
  1067. jsr ioinit
  1068. moveram diskid,disknam,18  ;Name der
  1069. moveram disknam,urname,16  ;alten Disk
  1070. dialbox zieldisk
  1071. lda r0
  1072. cmp #cancel
  1073. bne nzur
  1074. jmp altedisk
  1075. :nzur
  1076. opendisk
  1077. error ok6,altedisk
  1078. :ok6
  1079. loadw $7f40,r5    ;Ablage fuer Filenam
  1080. poke $7f40,0
  1081. dialbox filename
  1082. lda r0
  1083. cmp #cancel
  1084. bne nzur2
  1085. jmp altedisk
  1086. :nzur2
  1087. ldy #0
  1088. :strkopie
  1089. lda $7f40,y
  1090. beq strfrt       ;Name verschieben
  1091. jsr zurwandeln   ;und Zeichencode wandeln
  1092. sta $7f40,y
  1093. iny
  1094. jmp strkopie
  1095. :strfrt
  1096. tya
  1097. pha
  1098. delete $7f40
  1099. pla
  1100. tay
  1101. lda #44
  1102. sta $7f40,y    ;",s,w"
  1103. sta $7f40+2,y
  1104. lda #83
  1105. sta $7f40+1,y
  1106. lda #87
  1107. sta $7f40+3,y
  1108. tya
  1109. clc
  1110. adc #4
  1111. sta namlaeng
  1112. poke flag6,set ;Flag fuer DIR-Error
  1113. turbopur
  1114. initio
  1115. fopen 15,8,15,1,initstr
  1116. close 15
  1117. setlfs 4,8,2      ;File auf Disk oeffnen
  1118. lda namlaeng
  1119. ldx #<$7f40
  1120. ldy #>$7f40
  1121. jsr setnam
  1122. jsr fopenr
  1123. jmp drsp
  1124. ;
  1125. ; *** 8. Telefonnr. ***
  1126. ;
  1127. :rt8
  1128. redomenu
  1129.