Educational program - FULL DESCRIPTION + FULL ROM DISASSEMBLER TR-DOS 5.04 (5.03)

City #47
 @@@ @@@@
 @ @ @
           @@@
           @ @ @ @ @ @@ @@@@ @@@ @@@
           @ @ @ @ @@@ @ @ @ @ @ @ @
           @ @ @ @ @ @ @ @@ @@@@ @ @
        @ @ @ @ @ @@ @ @ @ @ @ @ @@
         @@ @@ @@@ @@ @ @@ @@@@ @@@@ @
                                                  @@@@
                                                 @@
(c) P. Fedin  @@@@

 FULL DESCRIPTION + FULL ROM DISASSEMBLER TR-DOS 5.04 (5.03)
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 FOR PROFESSIONALS, AND ALSO FOR THOSE WHO WANT TO BECOME THEM
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 continued

Address 7541. If there is a syntax check, then the program returns
program that called this subroutine. Install 23611.
7541 CALL 7536;checking what is being done
 RET NZ ;if execution is in progress, then return
      POP HL ;removing the return address in your program
      RET ;return to next address
───────────────────────── ─────────────────── ────────────────────
Address 7547. Place a number on the calculator stack. Install
23645 per character before the number. If a string is checked for syntax
sis, the Z flag will be set, and when executed it will be cleared.
7547 CALL 7722;take the next character of the line
 CALL 7617;putting a number on the calculator stack
      JR 7536 ;check, in progress or check and return
───────────────────────── ─────────────────── ────────────────────
Address 7555. Opening stream 0. Also used from address 7556
(stream opening; number in register A).
7555 XOR A ;stream number - 0
7556 RST 32 ;opening the stream
      DEFW #1601
      RET ;return

───────────────────────── ─────────────────── ────────────────────
Address 7560. Opening stream 2.
7560 LD A,2 ;stream number - 2
 JR 7556;opening stream
───────────────────────── ─────────────────── ────────────────────
Address 7564. Fetching the current character of the line. Put his address
at 23645.
7564 RST 32
 DEFW #0018
      RET
───────────────────────── ─────────────────── ────────────────────
Address 7568. Command input.
7568 CALL 7555 ;opening stream 0
 RST 32 ;editing the command line
      DEFW #0F2C
      RET ;return
───────────────────────── ─────────────────── ────────────────────
Address 7575. Clearing the screen and opening stream 0.
7575 RST 32
 DEFW #ODбB
      RET
───────────────────────── ─────────────────── ────────────────────
Address 7579. Searcharray. Set 23645 to the array name. If
the array is found, then HL will contain its address.
7579 RST 32
 DEFW #28B2
      RET
───────────────────────── ─────────────────── ────────────────────
Address 7583. Cleaning the bottom of the screen.
7583 RST 32
 DEFW #ODbE
      RET
──────────────────────── ─────────────────── ────────────────────
Address 7587. Print a number from register A. Also used with ad-
res 7588 (printing a number from register C) and 7593 (printing a number from
register BC).
7587 LD C,A ;transfer number to C
7588 LD B,0 ;converting a number to double-byte form
      JP 7593 ;strange command!
7593 PUSH BC ;save number
      CALL 8433 ;memory change
      POP BC ;restore number
      RST 24 ;print number
      DEFW #1A1B
      CALL 8433 ;memory recovery
      RET ;return
───────────────────────── ─────────────────── ────────────────────
Address 7605. Popping a string from the stackcalculator. There will be hell in DE
res of a string, in BC - its length.
7605 RST 32
 DEFW #2BF1
      RET
───────────────────────── ─────────────────── ────────────────────
Address 7613. Place a string on the calculator stack. Install
23645 to the beginning of the line.
7613 RST 32
 DEFW #1C8C
      RET
───────────────────────── ─────────────────── ────────────────────
Address 7617. Place a number from BC on the calculator stack.
7617 RST 32
 DEFW #1C82
      RET
───────────────────────── ─────────────────── ────────────────────
Address 7621. Set CH_ADD to the second character of the line. Install
those 23825.
7621 LD HL,(23825);take the address of the command line
 INC HL ;take the address of its second character
      LD (23645),HL; place it in CH_ADD
      RET ;return

 to be continued...

Share your thoughts about the article