home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / robot-pd / 14400.ZIP / 14400B.DSK / larainc1.src < prev    next >
Text File  |  1998-04-30  |  12KB  |  908 lines

  1.  
  2. ; INCLUDEFILE LARAINC1
  3. ; 25.11.88 : RET DARF AUCH NACH 10H FUEHREN
  4. ; 24.03.89 : FEHLERMELDUNGEN
  5.  
  6. UNTRAC:
  7. LD    A,-1
  8. JR    TR0
  9.  
  10. TRACE:
  11. XOR    A
  12. TR0:LD    (DSPFLG),A    ; AUSGABEFLAG
  13.  
  14. CALL    GET16    ; ANZAHL DER TRACES
  15. JR    NZ,$+5
  16. LD    HL,1    ; DEFAULT 1
  17. LD    A,H
  18. OR    L
  19. TR1:
  20. PUSH    AF
  21. PUSH    HL
  22. CALL    TRACE1
  23. CALL    TSTESC    ; ABBRUCH?
  24. JP    C,EDVECT
  25. POP    HL
  26. POP    AF
  27. JR    Z,TR1    ; WENN T(U)0
  28. DEC    HL
  29. LD    A,H
  30. OR    L
  31. JR    NZ,TR1
  32. JP    EDVECT
  33.  
  34. ; BITS VON (IX+5):
  35. ; 0 IFF
  36. ; 1 JP,CALL
  37. ;
  38. ; 3 RET
  39. ; 4 JP (HL)
  40. ; 5 cc
  41. ; 6 RST
  42.  
  43. DSPFLG:DEFS    1
  44.  
  45. TRACE1:
  46. CALL    GTMNEM    ; BEFEHL BERECHNEN
  47. CALL    SETBRK
  48. CALL    EXECON
  49. LD    A,(DSPFLG)
  50. OR    A
  51. RET    NZ    ; UNTRACE
  52. CALL    ZR1
  53. RET
  54.  
  55. SETBRK:
  56. BIT    1,(IX+5)
  57. JR    NZ,XJPCLL
  58. BIT    3,(IX+5)
  59. JR    NZ,XRET
  60. BIT    4,(IX+5)
  61. JR    NZ,XPCHL
  62. LD    DE,(NXTPC)    ; BRK
  63. OTHBRK:LD    HL,(LAGPC)    ; START
  64. SET    0,(IX)
  65. RES    1,(IX)
  66. BIT    5,(IX+5)    ; cc
  67. RET    Z
  68. SET    1,(IX)
  69. LD    BC,(NXTPC)
  70. RET
  71.  
  72. XPCHL:
  73. LD    HL,(LAGPC)
  74. LD    A,(HL)
  75. LD    HL,(LAGIX)
  76. CP    #DD    ; JP (IX)
  77. JR    Z,XCON
  78. LD    HL,(LAGIY)
  79. CP    #FD    ; JP (IY)
  80. JR    Z,XCON
  81. LD    HL,(LAGHL)    ; JP (HL)
  82. JR    XCON
  83.  
  84. XJPCLL:; JP, CALL
  85. LD    HL,(JPDEST)
  86. JR    XCON
  87. XRET:; RET
  88. LD    HL,(LAGSP)
  89. LD    A,(HL)
  90. INC    HL
  91. LD    H,(HL)
  92. LD    L,A
  93. XCON:EX    DE,HL
  94. JR    OTHBRK
  95.  
  96. NXTPC:DEFW    3
  97.  
  98. EXECUT:; ROUTINE AUSFUEHREN
  99. SET    0,(IX)    ; DEFAULT ARGUMENTE DA
  100. SET    1,(IX)
  101. CALL    GET16    ; ADRESSE HOLEN
  102. JR    Z,$+5
  103. LD    (LAGPC),HL    ; G BEEINFLUSST PC
  104. LD    HL,(LAGPC)    ; DEFAULT (PC)
  105. PUSH    HL    ; EXECUTION
  106. CALL    GET16    ; BREAKPOINT
  107. JR    NZ,$+6
  108. RES    0,(IX)    ; 1. FEHLT
  109. PUSH    HL
  110. CALL    GET16
  111. POP    DE    ; DE=1.A 
  112. JR    NZ,$+6
  113. RES    1,(IX)    ; 2. FEHLT
  114. LD    B,H    ; BC=2.A
  115. LD    C,L
  116. POP    HL    ; HL=EXE
  117. CALL    EXECON    ; AUFRUFEN
  118. CALL    ZR1    ; REGISTER AUSGEBEN
  119. JP    EDVECT
  120.  
  121. BRKST1:DEFS    1
  122. BRKST2:DEFS    1
  123. BRK1:DEFS    2
  124. BRK2:DEFS    2
  125.  
  126. STBRK:; BREAKPOINT EINSETZEN
  127. LD    A,L
  128. SUB    H
  129. CP    #10    ; GLEICH WENN HL=10
  130. RET    Z    ; DA SONST BEI #10 RST #10
  131. LD    A,#D7    ; RST #10
  132. JP    SCHREI    ; LD (HL),A
  133. EXECON:; HL=EX DE=1.B BC=2.B
  134. LD    (BRK2),BC
  135. PUSH    HL
  136. BIT    0,(IX)
  137. JR    Z,NO1B
  138. EX    DE,HL
  139. CALL    LESE    ; LD A,(HL)
  140. LD    (BRKST1),A
  141. CALL    STBRK
  142. LD    (BRK1),HL
  143. NO1B:
  144. BIT    1,(IX)
  145. JR    Z,NO2B
  146. LD    HL,(BRK2)
  147. CALL    LESE    ; LD A,(HL)
  148. LD    (BRKST2),A
  149. CALL    STBRK
  150. LD    (BRK2),HL
  151. NO2B:
  152. LD    HL,(LAGSP)
  153. POP    DE    ; AUFRUFADRESSE
  154. DEC    HL
  155. LD    (HL),D
  156. DEC    HL
  157. LD    (HL),E
  158. LD    (SPSTON),HL
  159. PUSH    IX
  160. PUSH    IY
  161. PUSH    DE
  162. PUSH    BC
  163. PUSH    HL
  164. PUSH    AF
  165. LD    A,I
  166. LD    H,A
  167. LD    A,R
  168. LD    L,A
  169. PUSH    HL
  170. CALL    BEFOR    ; RST #10 PATCHEN
  171. LD    IX,(LAGIX)
  172. LD    IY,(LAGIY)
  173. LD    BC,(LAGBC)
  174. LD    HL,(LAGIR)
  175. LD    A,H
  176. LD    I,A
  177. LD    A,L
  178. LD    R,A
  179. LD    HL,(#11)
  180. LD    DE,GO-DISON
  181. ADD    HL,DE
  182. LD    (ADSTOR),HL    ; EINSPRUNG
  183. LD    HL,(LAGAF)
  184. PUSH    HL
  185. POP    AF
  186. LD    HL,(LAGHL)
  187. LD    DE,(LAGDE)
  188.  
  189. CALL    ROMAUF    ; FAR CALL
  190.  
  191. LD    (LAGHL),HL
  192. PUSH    AF
  193. POP    HL
  194. LD    (LAGAF),HL
  195. LD    A,I
  196. LD    H,A
  197. LD    A,R
  198. LD    L,A
  199. LD    (LAGIR),HL
  200. LD    (LAGIX),IX
  201. LD    (LAGIY),IY
  202. LD    (LAGDE),DE
  203. LD    (LAGBC),BC
  204. LD    HL,(SPSTON)    ; SP NACH AUSFUEHRUNG
  205. LD    E,(HL)
  206. INC    HL
  207. LD    D,(HL)    ; ADRESSE NACH RST#10 POPPEN
  208. INC    HL
  209. DEC    DE
  210. LD    (LAGPC),DE
  211. LD    (LAGSP),HL
  212. LD    DE,(DEFSP)    ; TOPLEVEL STACK
  213. OR    A
  214. EX    DE,HL
  215. SBC    HL,DE
  216. JR    NC,NOTOMU    ; NOCH NICHT ZUVIELE RETs
  217. LD    HL,(DEFSP)
  218. LD    (LAGSP),HL    ; SP UND PC
  219. LD    HL,#F    ; INITIALISIEREN
  220. LD    (LAGPC),HL
  221. NOTOMU:
  222. CALL    AFTER    ; RST #10
  223. POP    HL
  224. LD    A,H
  225. LD    I,A
  226. LD    A,L
  227. LD    R,A
  228. POP    AF
  229. POP    HL
  230. POP    BC
  231. POP    DE
  232. POP    IY
  233. POP    IX
  234. BIT    0,(IX)
  235. JR    Z,NF1
  236. LD    A,(BRKST1)
  237. LD    HL,(BRK1)
  238. CALL    SCHREI
  239. NF1:BIT    1,(IX)
  240. RET    Z
  241. LD    A,(BRKST2)
  242. LD    HL,(BRK2)
  243. CALL    SCHREI
  244. RET
  245.  
  246. BEFOR:LD    HL,(#11)
  247. PUSH    HL
  248. LD    DE,BUFFER
  249. LD    BC,DISONE-DISON
  250. LDIR    ; RST #10 SAVEN
  251. POP    DE
  252. LD    HL,DISON
  253. BEFCON:LD    BC,DISONE-DISON
  254. LDIR
  255. RET
  256. AFTER:
  257. LD    HL,BUFFER
  258. LD    DE,(#11)
  259. JR    BEFCON
  260.  
  261. BRKSTO:DEFS    3
  262. GETROM:; ROMKONFIGURATION HOLEN
  263. LD    A,(ROMNUM)
  264. CALL    BYTOUT
  265. CALL    BLNOUT
  266. CALL    GET16    ; NEUES BYTE HOLEN
  267. JP    Z,EDVECT    ; KEIN NEUES
  268. LD    A,H
  269. OR    A
  270. PUSH    HL
  271. LD    HL,EBYTRQ    ; NUR 8 BIT
  272. JP    NZ,WRONG
  273. POP    HL
  274. LD    A,L
  275. LD    (ROMNUM),A
  276. CALL    BYTOUT
  277. JP    EDVECT
  278.  
  279. REGSTR:DEFM    "AF="
  280. DEFB    0
  281. DEFM    " HL="
  282. DEFB    0
  283. DEFM    " DE="
  284. DEFB    0
  285. DEFM    " BC="
  286. DEFB    0
  287. DEFM    " IX="
  288. DEFB    0
  289. DEFM    " IY="
  290. DEFB    0
  291. DEFM    " IR="
  292. DEFB    0
  293. DEFM    " SP="
  294. DEFB    0
  295. DEFM    " PC="
  296. DEFB    0
  297. DEFB    13,10
  298. DEFM    "(SP)="
  299. DEFB    0
  300. CBACK:DEFB    8,8,8,8,0
  301. ZR:CALL    LINEF    ; <= CHNREG
  302. JR    Z1
  303. ZEIREG:; ZEIGE REGISTER
  304. LD    A,(IX+4)
  305. DEC    A
  306. JP    NZ,CHNREG
  307. Z1:CALL    ZR1
  308. JP    EDIT
  309.  
  310. ZR1:LD    B,10
  311. LD    HL,REGSTR
  312. LD    DE,LAGAF
  313. REOU:
  314. CALL    TXTOUT
  315. PUSH    HL    ; => TEXT
  316. EX    DE,HL
  317. LD    E,(HL)
  318. INC    HL
  319. LD    D,(HL)
  320. INC    HL
  321. EX    DE,HL
  322. CALL    ZWBYTO
  323. POP    HL
  324. DJNZ    REOU
  325. LD    HL,CBACK
  326. CALL    TXTOUT
  327. LD    HL,(LAGSP)
  328. LD    A,(HL)
  329. INC    HL
  330. LD    H,(HL)
  331. LD    L,A
  332. CALL    ZWBYTO    ; (SP) AUSGEBEN
  333. CALL    BLNOUT
  334. CALL    BLNOUT
  335. LD    A,(LAGAF)
  336. LD    B,A
  337. RL    B
  338. LD    A,"S"
  339. CALL    FLGOUT
  340. RL    B
  341. LD    A,"Z"
  342. CALL    FLGOUT
  343. RL    B
  344. RL    B
  345. LD    A,"H"
  346. CALL    FLGOUT
  347. RL    B
  348. RL    B
  349. LD    A,"P"
  350. CALL    FLGOUT
  351. RL    B
  352. LD    A,"N"
  353. CALL    FLGOUT
  354. RL    B
  355. LD    A,"C"
  356. CALL    FLGOUT
  357.  
  358. CALL    GTMNEM
  359.  
  360. LD    B,24
  361. CALL    BLNOUT
  362. DJNZ    $-3
  363. LD    HL,SEP    ; "    >> "
  364. CALL    TXTOUT
  365. CALL    AUS1
  366. LD    HL,BUFFER+4
  367. CALL    TXTOUT
  368. CALL    LINEF
  369. LD    HL,(LAGPC)
  370. LD    (PROCOU),HL
  371. LD    (DUMANF),HL    ; DUMP UND DISASS STARTET AB PC
  372. RET
  373.  
  374. FLGOUT:JR    C,$+4
  375. LD    A," "
  376. JP    TXTOPU
  377.  
  378. SEP:DEFB    " "," ",">",">"," ",0
  379.  
  380. GTMNEM:; MENEMONIK+BRKADR HOLEN
  381. LD    HL,(PROCOU)
  382. PUSH    HL    ; PROCOU VON L
  383. LD    HL,(LAGPC)
  384. LD    (PROCOU),HL
  385. CALL    DISS1
  386. LD    HL,(PROCOU)
  387. LD    (NXTPC),HL
  388. POP    HL
  389. LD    (PROCOU),HL    ; OLD PROCOU
  390. RET
  391. CHNREG:
  392. LD    A,2
  393. CP    (IX+4)    ; MEHR ALS Z.B. "XH"
  394. LD    HL,ESYNER
  395. JP    NZ,WRONG
  396. LD    A,(DE)
  397. AND    #DF    ; UPPER$
  398. CP    "A"
  399. LD    HL,LAGAF
  400. JR    Z,CBTE
  401. CP    "I"
  402. LD    HL,LAGIR
  403. JR    Z,CBTE
  404. CP    "H"
  405. LD    HL,LAGHL
  406. JR    Z,CBTE
  407. CP    "D"
  408. LD    HL,LAGDE
  409. JR    Z,CBTE
  410. CP    "B"
  411. LD    HL,LAGBC
  412. JR    Z,CBTE
  413. CP    "X"
  414. LD    HL,LAGIX
  415. JR    Z,CBTE
  416. CP    "Y"
  417. LD    HL,LAGIY
  418. JR    Z,CBTE
  419. CP    "S"
  420. LD    HL,LAGSP
  421. JR    Z,CBTE
  422. CP    "P"
  423. LD    HL,ESYNER
  424. JP    NZ,WRONG
  425. LD    HL,LAGPC
  426.  
  427. CBTE:
  428. LD    E,(HL)
  429. INC    HL
  430. LD    D,(HL)    ; DOPPELREGISTER HOLEN
  431. PUSH    HL
  432. EX    DE,HL
  433. CALL    ZWBYTO    ; AUSGEBEN
  434. CALL    BLNOUT    ; " "
  435. LD    (IX+4),4    ; 4 ZEICHEN
  436. CALL    GETTXT    ; HOLEN
  437. CALL    GET16
  438. JP    Z,ZR
  439. EX    DE,HL
  440. POP    HL
  441. LD    (HL),D
  442. DEC    HL
  443. LD    (HL),E
  444. JP    ZR    ; REGISTER ZEIGEN
  445. PUTTXT:; TEXT EINGEBEN
  446. CALL    GET16    ; ZIELADRESSE
  447. PUSH    HL
  448. LD    HL,ENOADR
  449. JP    Z,WRONG
  450. POP    HL
  451. PULO:LD    A,(DE)
  452. OR    A
  453. JP    Z,EDVECT    ; 0 FERTIG
  454. CALL    SCHREI    ; LD (HL),A
  455. INC    HL
  456. INC    DE
  457. JR    PULO
  458.  
  459.  
  460. ZWBLN:; ZWEI BYTE +BLANK AUS
  461. CALL    ZWBYTO
  462. JP    BLNOUT
  463.  
  464. SWPBUF:PUSH    HL
  465. LD    HL,BUFFER
  466. JR    SWPCON
  467. SWAP:; (HL) UND (DE)
  468. PUSH    HL
  469. LD    HL,TXTBUF+1
  470. SWPCON:PUSH    BC
  471. PUSH    DE
  472. PUSH    AF
  473. LD    DE,#A000
  474. LD    B,#30
  475. CALL    SWLOOP
  476. POP    AF
  477. POP    DE
  478. POP    BC
  479. POP    HL
  480. RET
  481.  
  482. SWLOOP:LD    A,(HL)
  483. LD    C,A
  484. LD    A,(DE)
  485. LD    (HL),A
  486. LD    A,C
  487. LD    (DE),A
  488. INC    HL
  489. INC    DE
  490. DJNZ    SWLOOP
  491. RET
  492. DUMP:; SPEICHERBEREICH AUSDUMPEN
  493. LD    (IX),0
  494. CALL    GET16
  495. JR    NZ,OK3    ; ETWAS GEFUNDEN
  496. LD    HL,(DUMANF)
  497. OK3:LD    (DUMANF),HL
  498. CALL    GET16
  499. LD    (DUMEND),HL
  500. LD    (IX+3),13    ; DEFAULT: 12 ZEILEN
  501.  
  502. ZEIDUM:
  503. BIT    3,(IX)    ; ENDE ANGEGEBEN
  504. JR    NZ,N1
  505. DEC    (IX+3)    ; ZEILENZAEHLER
  506. JP    Z,EDIT    ; FERTIG
  507. N1:
  508. CALL    CLRBUF    ; BUFFER LOESCHEN
  509.  
  510. LD    HL,BUFFER    ; AM ANFANG 6 BLANKS
  511. LD    (BUFZEI),HL    ; PLATZ FUER HEX
  512. LD    HL,BUFFER+55
  513. LD    (BYTZEI),HL    ; PLATZ FUER ASCII 
  514.  
  515. LD    HL,(DUMANF)
  516. PUSH    HL
  517. CALL    VERS4    ; PC STAND
  518. LD    B,2
  519. CALL    BLOUT    ; "  "
  520. POP    HL
  521. LD    A,L
  522. AND    #F
  523. JR    Z,DMPBYT    ; GLATTER ANFANG
  524. LD    L,A
  525. LD    E,A
  526. ADD    A,A
  527. ADD    A,L    ; A=A*3
  528. LD    B,A
  529. CALL    BLOUT    ; A*3 BLANKS
  530. LD    B,E
  531. BLTOBU:CALL    ATOBUF    ; " " IN BUFFER
  532. DJNZ    BLTOBU
  533.  
  534. DMPBYT:
  535. BIT    3,(IX)
  536. JR    Z,EDVEC+3    ; KEIN ENDE ANGEGEBEN
  537. LD    DE,(DUMANF)
  538. LD    HL,(DUMEND)
  539. OR    A
  540. SBC    HL,DE
  541. PUSH    AF
  542. CALL    C,ZEIOUT    ; ANFANG>ENDE
  543. POP    AF
  544. EDVEC:JP    C,EDIT
  545. CALL    TSTESC    ; TEST AUF ABBRUCH
  546. JR    C,EDVEC
  547.  
  548. LD    HL,(DUMANF)
  549. CALL    GETBYT
  550. LD    (DUMANF),HL
  551. PUSH    AF    ; BYTE
  552. CALL    VERS3    ; HEX IN BUFFER
  553. CALL    BLANK
  554. POP    AF
  555. CALL    ATOBUF    ; ASCII IN BUFFER
  556. LD    A,(DUMANF)    ; LOWBYTE DUMPZEIGER
  557. AND    #F    ; NUR LOWNIBBLE
  558. JR    NZ,DMPBYT    ; NOCH KEINE 16 BYTES FERTIG
  559.  
  560. LINFER:CALL    ZEIOUT
  561. JP    ZEIDUM
  562. ZEIOUT:
  563. LD    HL,(BYTZEI)
  564. LD    (HL),0
  565. JP    AUS0
  566. ATOBUF:; ASCII IN BUFFER
  567. LD    HL,(BYTZEI)
  568. CALL    MAKASC    ; BIT 7; STEUERZEICHEN?
  569. LD    (HL),A
  570. INC    HL
  571. LD    (BYTZEI),HL
  572. RET
  573. MAKASC:; FUER DUMPEN
  574. AND    #7F    ; BIT 7 LOESCHEN
  575. CP    " "
  576. RET    NC
  577. LD    A,"."
  578. RET
  579.  
  580. MOVCON:
  581. CALL    MOV1
  582. JP    EDIT
  583. MOV1:
  584. CALL    GET16    ; ZIEL
  585. PUSH    HL
  586. LD    HL,ENODST
  587. JP    Z,WRONG
  588. POP    HL
  589. EX    DE,HL    ; STACK: ANFANG,ENDE,RET
  590. POP    IY    ; RET
  591. POP    HL    ; ENDE
  592. POP    BC    ; ANFANG  
  593. PUSH    IY    ; RET
  594. PUSH    BC
  595. PUSH    DE    ; ZIEL
  596. SBC    HL,BC    ; ENDE-ANFANG
  597. PUSH    HL
  598. LD    HL,EILEND
  599. JP    C,WRONG    ; ANFANG>ENDE
  600. POP    HL
  601. LD    B,H
  602. LD    C,L
  603. POP    HL    ; ZIEL
  604. POP    DE    ; ANFANG
  605. PUSH    HL
  606. SBC    HL,DE    ; ZIEL-ANFANG
  607. POP    HL    ; ZIEL
  608. EX    DE,HL
  609. INC    BC
  610. JP    C,VLDIR
  611. DEC    BC
  612. ADD    HL,BC    ; OBEN ANFANGEN
  613. EX    DE,HL
  614. ADD    HL,BC
  615. EX    DE,HL
  616. INC    BC
  617. JP    VLDDR
  618.  
  619. MOVE:SET    0,(IX)    ; ZEICHEN FUER MOVE
  620. FILL:; SPEICHERBEREICH FUELLEN
  621. CALL    GET16
  622. PUSH    HL    ; ANFANG
  623. LD    HL,ENOSTA
  624. JP    Z,WRONG    ; NICHTS GEFUNDEN
  625. CALL    GET16
  626. PUSH    HL
  627. LD    HL,ENOEND
  628. JP    Z,WRONG    ; KEIN ENDE
  629. BIT    0,(IX)
  630. JR    NZ,MOVCON    ; MOVE
  631. CALL    GET8
  632. BIT    3,(IX)
  633. LD    HL,EBYTRQ    ; KEIN FILLBYTE
  634. JP    Z,WRONG
  635. OR    A
  636. POP    HL
  637. POP    DE
  638. SBC    HL,DE    ; HL:=LAENGE
  639. PUSH    HL
  640. LD    HL,EILEND
  641. JP    C,WRONG    ; ANFANG>ENDE
  642. POP    HL
  643. LD    B,H
  644. LD    C,L    ; BC:=LAENGE 
  645. EX    DE,HL    ; HL:=ANFANG
  646. CALL    SCHREI    ; LD (HL),A FILLBYTE
  647. LD    A,B
  648. OR    C
  649. JP    Z,EDIT    ; NUR 1 BYTE
  650. LD    D,H
  651. LD    E,L
  652. INC    DE
  653. CALL    KLLDIR    ; KL LDIR
  654. JP    EDIT
  655.  
  656. ZHLOUT:
  657. INC    DE
  658. CALL    GET16
  659. LD    A,1
  660. CALL    PRINT
  661. LD    A,L    ; ?CHR$(1)+CHR$(L)
  662. CP    " "
  663. JR    NC,P2    ; KEIN STEUERZEICHEN
  664. LD    C,A
  665. LD    A,"^"
  666. CALL    PRINT
  667. LD    A,C
  668. OR    64
  669. P2:CALL    PRINT
  670. CALL    BLNOUT
  671.  
  672. LD    C,0
  673. PUSH    HL
  674. LD    DE,10000
  675. CALL    TSTDIG
  676. LD    DE,1000
  677. CALL    TSTDIG
  678. LD    DE,100
  679. CALL    TSTDIG
  680. LD    E,10
  681. CALL    TSTDIG
  682. LD    E,1
  683. CALL    TSTDIG
  684. POP    HL
  685. CALL    BLNOUT
  686.  
  687. LD    BC,16*256+0    ; 16 BIT
  688. BITOUT:XOR    A
  689. ADD    HL,HL    ; HOECHSTES BIT INS CY
  690. ADC    A,"0"
  691. CP    "1"
  692. JR    Z,PR1-2
  693. BIT    0,C
  694. JR    Z,PR1+3
  695. LD    C,1    ; EINE 1 WURDE AUSGEGEBEN
  696. PR1:CALL    PRINT
  697. DJNZ    BITOUT
  698. CALL    LINEF
  699. JP    EDIT
  700. TSTDIG:
  701. XOR    A
  702. INC    A
  703. SBC    HL,DE
  704. JR    NC,TSTDIG+1
  705. ADD    HL,DE
  706. ADD    A,"0"-1
  707. CP    "1"
  708. JR    NC,PRVEC    ; >"0"
  709. BIT    0,C    ; SCHON 1 DA ?
  710. RET    Z
  711. PRVEC:LD    C,1
  712. JP    PRINT
  713.  
  714. HEXCOM:; HEXADECIMAL COMPUTATION
  715. LD    A,(IX+4)
  716. DEC    A    ; NUR "H"
  717. JP    Z,HELP
  718. LD    A,(DE)
  719. CP    "."
  720. JR    Z,ZHLOUT    ; ZAHL AUSGEBEN
  721. CP    ":"
  722. JR    Z,DEZHEX    ; DEZZAHL ALS HEX AUSGEBEN
  723.  
  724. CALL    GET16
  725. PUSH    HL
  726. LD    HL,ESYNER
  727. JP    Z,WRONG    ; KEIN 1. ARGUMENT
  728. CALL    GET16
  729. PUSH    HL
  730. LD    HL,ESYNER
  731. JP    Z,WRONG    ; KEIN 2. ARGUMENT
  732. POP    HL
  733. POP    DE
  734. EX    DE,HL
  735. PUSH    HL
  736. PUSH    DE
  737. ADD    HL,DE
  738. CALL    ZWBYTO    ; AUSGEBEN
  739. CALL    BLNOUT
  740. POP    DE
  741. POP    HL
  742. OR    A
  743. SBC    HL,DE
  744. DZAUS:CALL    ZWBYTO    ; AUSGEBEN
  745. CALL    LINEF
  746. JP    EDIT
  747.  
  748. DEZHEX:
  749. LD    B,0
  750. LD    C,(IX+4)    ; EINGEGEBENE ZEICHEN
  751. DEC    C    ; "H"
  752. DEC    C    ; ":"
  753. EX    DE,HL
  754. ADD    HL,BC
  755. EX    DE,HL    ; DE ZEIGT AUF LETZTE ZIFFER
  756.  
  757. LD    HL,0    ; BIS JETZT ERGEBNIS 0
  758. LD    BC,1
  759. CALL    STELLE
  760. LD    BC,10
  761. CALL    STELLE
  762. LD    BC,100
  763. CALL    STELLE
  764. LD    BC,1000
  765. CALL    STELLE
  766. LD    BC,10000
  767. CALL    STELLE
  768. LD    A,(DE)
  769. CP    ":"
  770. JR    Z,DZAUS
  771. CP    "-"
  772. PUSH    HL
  773. LD    HL,EOVFLW    ; OVERFLOW
  774. JP    NZ,WRONG    ; ZUVIEL STELLEN
  775. POP    HL
  776. MINUS:
  777. LD    A,H
  778. OR    L
  779. JR    Z,DZAUS    ; -0 IST 0
  780. PUSH    HL
  781. LD    DE,32769
  782. OR    A
  783. SBC    HL,DE
  784. PUSH    HL
  785. LD    HL,EOVFLW
  786. JP    NC,WRONG    ; OVERFLOW
  787. POP    HL
  788. POP    DE
  789. OR    A
  790. LD    HL,0
  791. SBC    HL,DE    ; NEGATIVE ZAHL
  792. JR    DZAUS
  793.  
  794. STELLE:
  795. LD    A,(DE)
  796. DEC    DE
  797. CP    ":"    ; AM ANFANG ANGELANGT
  798. JR    Z,DZAUS
  799. CP    "-"
  800. JR    Z,MINUS
  801. SUB    "0"
  802. PUSH    HL
  803. LD    HL,EILDIG
  804. JP    C,WRONG
  805. POP    HL
  806. CP    10
  807. PUSH    HL
  808. LD    HL,EILDIG    ; FALSCHE ZIFFER
  809. JP    NC,WRONG
  810. POP    HL
  811. OR    A
  812. RET    Z    ; EINE STELLE MIT 0
  813. PUSH    DE
  814. PUSH    HL
  815. LD    D,A    ; DEZIMALSTELLE
  816. LD    HL,0
  817. ADDI:ADD    HL,BC
  818. DEC    D
  819. JR    NZ,ADDI
  820. EX    DE,HL    ; STELLENWERT NACH DE
  821. POP    HL
  822. ADD    HL,DE
  823. PUSH    HL
  824. LD    HL,EOVFLW
  825. JP    C,WRONG    ; UEBERLAUF
  826. POP    HL
  827. POP    DE
  828. RET
  829.  
  830. CLLUSR:; RUFT USERROUTINE AUF
  831. LD    A,(IX+4)    ; EINGEGEBENE ZEICHEN
  832. DEC    A
  833. JR    Z,EXUSR
  834. LD    A,(DE)
  835. AND    #DF
  836. INC    DE
  837. CP    "A"
  838. LD    HL,ESYNER    ; SYNTAX ERROR
  839. JP    NZ,WRONG
  840. CALL    GET16
  841. PUSH    AF
  842. EX    DE,HL
  843. LD    HL,(TOPATR)
  844. CALL    ZWBYTO
  845. CALL    BLNOUT
  846. EX    DE,HL
  847. POP    AF
  848. JP    Z,EDVECT    ; KEINE NEUE ADRESSE
  849. LD    (TOPATR),HL
  850. CALL    ZWBYTO
  851. JP    EDVECT
  852. TOPATR:DEFW    1000
  853. EXUSR:
  854. LD    C,#FF
  855. LD    HL,(TOPATR)
  856. ; CALL FRPCHL 
  857. LD    (ADSTOR),HL
  858. CALL    ROMAUF
  859. JP    EDIT
  860.  
  861. STORE:; BYTE EINGEBEN
  862. CALL    GET16    ; ADRESSE HOLEN
  863. PUSH    HL
  864. LD    HL,ENOADR
  865. JP    Z,WRONG    ; KEINE DA
  866. POP    HL
  867. DEC    HL
  868. SLOOP:
  869. INC    HL
  870. PUSH    HL    ; ADRESSE
  871. CALL    ZWBYTO    ; 16 BIT AUSGEBEN
  872. CALL    BLNOUT    ; " "
  873. CALL    GETBYT    ; BYTE AUS SPEICHER
  874. PUSH    AF
  875. LD    D,A
  876. LD    A,1
  877. CALL    TXTOPU    ; ?CHR$(1)+CHR$(...
  878. LD    A,D
  879. CALL    TXTOPU
  880. CALL    BLNOUT
  881. POP    AF
  882. CALL    BYTOUT    ; AUSGEBEN
  883. CALL    BLNOUT    ; " "
  884. LD    (IX+4),2    ; ZWEI ZEICHEN HOLEN
  885. CALL    GETTXT
  886. JP    NC,EDVECT    ; ESC
  887. RES    4,(IX)
  888. LD    A,(DE)
  889. CP    "."
  890. JP    Z,EDVECT    ; ENDE
  891. CP    "'"    ; ASCII ?
  892. JR    NZ,CGET8
  893. INC    DE
  894. LD    A,(DE)
  895. SET    3,(IX)
  896. JR    CGET8+3
  897.  
  898. CGET8:CALL    GET8
  899. PUSH    AF
  900. CALL    LINEF
  901. POP    AF
  902. POP    HL    ; ADRESSE
  903. BIT    3,(IX)
  904. JR    Z,SLOOP
  905. CALL    SCHREI    ; LD (HL),A
  906. JR    SLOOP
  907.  
  908. POP    HL    ; ADRESSEçBIT    3