;
; Disassembled by:
; DASMx object code disassembler
; (c) Copyright 1996-2003 Conquest Consultants
; Version 1.40 (Oct 18 2003)
;
; File: monitor.bin
;
; Size: 1024 bytes
; Checksum: 023E
; CRC-32: ADCADC8C
;
; Date: Fri Feb 13 15:37:49 2015
;
; CPU: Intel 8080 (MCS-80/85 family)
;
;
;
org 0C000H
;
C000 LC000:
C000 : 31 FF C7 "1 " lxi sp,0C7FFH ;set SP to C7FF
C003 : 3E 03 "> " mvi a,003H ;set up uart
C005 : D3 02 " " out 002H
C007 : 3E 15 "> " mvi a,015H
C009 : D3 02 " " out 002H
C00B : 21 53 C0 "!S " lxi h,0C053H ;address of welcome message
C00E LC00E:
C00E : CD 48 C0 " H " call LC048 ;output string
C011 : CD 05 C2 " " call LC205 ;get and echo a char
C014 : FE 44 " D" cpi 044H
C016 : CA 97 C2 " " jz LC297 ;process D command
C019 : FE 4D " M" cpi 04DH
C01B : CA 66 C2 " f " jz LC266 ;process M command
C01E : FE 46 " F" cpi 046H
C020 : CA C0 C2 " " jz LC2C0 ;process F command
C023 : FE 47 " G" cpi 047H
C025 : CA 5E C2 " ^ " jz LC25E ;process G command
C028 : FE 42 " B" cpi 042H
C02A : CA 72 C0 " r " jz LC072 ;process B command
C02D : FE 54 " T" cpi 054H
C02F : CA 0F C3 " " jz LC30F ;process T command
C032 : FE 4C " L" cpi 04CH
C034 : CA D0 C3 " " jz LC3D0 ;process L command
C037 : FE 53 " S" cpi 053H
C039 : CA D4 C3 " " jz LC3D4 ;process S command
C03C LC03C:
C03C : 21 5F C0 "!_ " lxi h,0C05FH ;address of error message
C03F LC03F:
C03F : CD 48 C0 " H " call LC048 ;output string
C042 LC042:
C042 : 21 5C C0 "!\ " lxi h,0C05CH ;address of cr/lf
C045 : C3 0E C0 " " jmp LC00E ;back to input loop
;
C048 LC048: ;output string at m terminated by bit 7 set
C048 : 4E "N" mov c,m
C049 : CD 0C C1 " " call LC10C ;output a char
C04C : 79 "y" mov a,c
C04D : 07 " " rlc
C04E : D8 " " rc ;return if high bit set
C04F : 23 "#" inx h
C050 : C3 48 C0 " H " jmp LC048
;
C053 : 52 4D 4F 4E "RMON" db 052H, 04DH, 04FH, 04EH
C057 : 20 56 31 2E " V1." db 020H, 056H, 031H, 02EH
C05B : 30 0D 0A BD "0 " db 030H, 00DH, 00AH, 0BDH
C05F : 2D 2D 43 4F "--CO" db 02DH, 02DH, 043H, 04FH
C063 : 4D 4D 41 4E "MMAN" db 04DH, 04DH, 041H, 04EH
C067 : 44 20 45 52 "D ER" db 044H, 020H, 045H, 052H
C06B : 52 4F D2 44 "RO D" db 052H, 04FH, 0D2H, 044H
C06F : 49 53 CB "IS " db 049H, 053H, 0CBH
;
C072 LC072: ;B command
C072 : CD 2A C2 " * " call LC22A
C075 : 04 " " inr b
C076 : C2 3C C0 " < " jnz LC03C
C079 : 7D "}" mov a,l
C07A : 21 00 00 "! " lxi h,00000H
C07D : FE 0B " " cpi 00BH
C07F : C2 84 C0 " " jnz LC084
C082 : 26 40 "&@" mvi h,040H
C084 LC084:
C084 : 22 00 C4 "" " shld XC400
C087 : 3E 01 "> " mvi a,001H
C089 : 32 02 C4 "2 " sta XC402
C08C : 21 00 10 "! " lxi h,01000H
C08F : 22 05 C4 "" " shld XC405
C092 : CD AA C1 " " call LC1AA
C095 : 06 81 " " mvi b,081H
C097 : CD 78 C1 " x " call LC178
C09A : 06 15 " " mvi b,015H
C09C : CD 78 C1 " x " call LC178
C09F : CD B6 C1 " " call LC1B6
C0A2 : CA 00 10 " " jz L1000
C0A5 : C3 D3 C0 " " jmp LC0D3
;
C0A8 LC0A8:
C0A8 : E5 " " push h
C0A9 : CD AA C1 " " call LC1AA
C0AC : CD 1F C1 " " call LC11F
C0AF : CD 19 C1 " " call LC119
C0B2 : E1 " " pop h
C0B3 LC0B3:
C0B3 : C5 " " push b
C0B4 : D5 " " push d
C0B5 : E5 " " push h
C0B6 : 4A "J" mov c,d
C0B7 : CD 27 C1 " ' " call LC127
C0BA : 22 05 C4 "" " shld XC405
C0BD : 7B "{" mov a,e
C0BE : 3C "<" inr a
C0BF : C2 C8 C0 " " jnz LC0C8
C0C2 : CD DA C1 " " call LC1DA
C0C5 : C3 C8 C0 " " jmp LC0C8
;
C0C8 LC0C8:
C0C8 : CD B6 C1 " " call LC1B6
C0CB : FE 00 " " cpi 000H
C0CD : CA DF C0 " " jz LC0DF
C0D0 : 31 FF C7 "1 " lxi sp,0C7FFH
C0D3 LC0D3:
C0D3 : 21 6E C0 "!n " lxi h,0C06EH
C0D6 : CD 48 C0 " H " call LC048
C0D9 : 21 67 C0 "!g " lxi h,0C067H
C0DC : C3 3F C0 " ? " jmp LC03F
;
C0DF LC0DF:
C0DF : E1 " " pop h
C0E0 : 11 80 00 " " lxi d,00080H
C0E3 : 19 " " dad d
C0E4 : D1 " " pop d
C0E5 : C1 " " pop b
C0E6 : 05 " " dcr b
C0E7 : C8 " " rz
C0E8 : 14 " " inr d
C0E9 : 7A "z" mov a,d
C0EA : FE 1B " " cpi 01BH
C0EC : DA B3 C0 " " jc LC0B3
C0EF : 16 01 " " mvi d,001H
C0F1 : 0C " " inr c
C0F2 : C5 " " push b
C0F3 : CD 19 C1 " " call LC119
C0F6 : C1 " " pop b
C0F7 : C3 B3 C0 " " jmp LC0B3
;
C0FA LC0FA: ;return a char in a
C0FA : DB 02 " " in 002H ;wait for uart ready
C0FC : E6 01 " " ani 001H
C0FE : CA FA C0 " " jz LC0FA
C101 : DB 03 " " in 003H ;get char
C103 : E6 7F " " ani 07FH
C105 : FE 03 " " cpi 003H ;control c?
C107 : CA 00 C0 " " jz LC000 ;if so, restart
C10A : C9 " " ret
;
C10B LC10B: ;output char in a
C10B : 4F "O" mov c,a
C10C LC10C: ;output char in c
C10C : DB 02 " " in 002H
C10E : E6 02 " " ani 002H
C110 : CA 0C C1 " " jz LC10C
C113 : 79 "y" mov a,c
C114 : D3 03 " " out 003H
C116 : C9 " " ret
;
C117 : 0E 00 " " db 00EH, 000H
;
C119 LC119:
C119 : 79 "y" mov a,c
C11A : 32 00 C4 "2 " sta XC400
C11D : C9 " " ret
;
C11E : 79 "y" db 079H
;
C11F LC11F:
C11F : E6 01 " " ani 001H
C121 : 0F " " rrc
C122 : 0F " " rrc
C123 : 32 01 C4 "2 " sta XC401
C126 : C9 " " ret
;
C127 LC127:
C127 : 79 "y" mov a,c
C128 : 32 02 C4 "2 " sta XC402
C12B : C9 " " ret
;
C12C : 69 60 22 05 "i`" " db 069H, 060H, 022H, 005H
C130 : C4 C9 " " db 0C4H, 0C9H
;
C132 LC132:
C132 : 11 00 C4 " " lxi d,XC400
C135 : 21 04 C4 "! " lxi h,0C404H
C138 : 1A " " ldax d
C139 : BE " " cmp m
C13A : C2 53 C1 " S " jnz LC153
C13D : 2B "+" dcx h
C13E : 13 " " inx d
C13F : 1A " " ldax d
C140 : BE " " cmp m
C141 : C2 57 C1 " W " jnz LC157
C144 LC144:
C144 : 7E "~" mov a,m
C145 : 2B "+" dcx h
C146 : B6 " " ora m
C147 : 06 21 " !" mvi b,021H
C149 : CD 79 C1 " y " call LC179
C14C : 2A 05 C4 "* " lhld XC405
C14F : 0E 80 " " mvi c,080H
C151 : 97 " " sub a
C152 : C9 " " ret
;
C153 LC153:
C153 : 77 "w" mov m,a
C154 : 2B "+" dcx h
C155 : 13 " " inx d
C156 : 1A " " ldax d
C157 LC157:
C157 : 77 "w" mov m,a
C158 : 3C "<" inr a
C159 : 06 21 " !" mvi b,021H
C15B : CD 79 C1 " y " call LC179
C15E : 23 "#" inx h
C15F : 7E "~" mov a,m
C160 : A7 " " ana a
C161 : CA 73 C1 " s " jz LC173
C164 : 06 11 " " mvi b,011H
C166 : CD 79 C1 " y " call LC179
C169 : 06 09 " " mvi b,009H
C16B LC16B:
C16B : CD 78 C1 " x " call LC178
C16E : 2B "+" dcx h
C16F : CA 44 C1 " D " jz LC144
C172 : C9 " " ret
;
C173 LC173:
C173 : 06 0D " " mvi b,00DH
C175 : C3 6B C1 " k " jmp LC16B
;
C178 LC178:
C178 : 97 " " sub a
C179 LC179:
C179 : D3 C1 " " 0C1H
C17B : 78 "x" mov a,b
C17C : D3 C0 " " out 0C0H
C17E : 97 " " sub a
C17F : D3 C0 " " out 0C0H
C181 : D3 C1 " " out 0C1H
C183 LC183:
C183 : DB C0 " " in 0C0H
C185 : 0F " " rrc
C186 : DA 83 C1 " " jc LC183
C189 : E6 14 " " ani 014H
C18B : C9 " " ret
;
C18C : C3 B8 C1 " " db 0C3H, 0B8H, 0C1H
;
C18F LC18F:
C18F : 15 " " dcr d
C190 : CA B1 C1 " " jz LC1B1
C193 : 06 0B " " mvi b,00BH
C195 : CD 78 C1 " x " call LC178
C198 : 21 01 C4 "! " lxi h,XC401
C19B : 7E "~" mov a,m
C19C : 3C "<" inr a
C19D : 06 21 " !" mvi b,021H
C19F : CD 79 C1 " y " call LC179
C1A2 : 06 0D " " mvi b,00DH
C1A4 : CD 78 C1 " x " call LC178
C1A7 : C2 8F C1 " " jnz LC18F
C1AA LC1AA:
C1AA : 21 FF FF "! " lxi h,0FFFFH
C1AD : 22 03 C4 "" " shld XC403
C1B0 : C9 " " ret
;
C1B1 LC1B1:
C1B1 : F1 " " pop psw
C1B2 : 3E 01 "> " mvi a,001H
C1B4 : A7 " " ana a
C1B5 : C9 " " ret
;
C1B6 LC1B6:
C1B6 : 16 0A " " mvi d,00AH
C1B8 LC1B8:
C1B8 : CD 32 C1 " 2 " call LC132
C1BB : C2 D4 C1 " " jnz LC1D4
C1BE : 06 03 " " mvi b,003H
C1C0 : CD 79 C1 " y " call LC179
C1C3 : C2 D4 C1 " " jnz LC1D4
C1C6 : 3E 40 ">@" mvi a,040H
C1C8 : D3 C0 " " out 0C0H
C1CA LC1CA:
C1CA : DB C0 " " in 0C0H
C1CC : 77 "w" mov m,a
C1CD : 23 "#" inx h
C1CE : 0D " " dcr c
C1CF : C2 CA C1 " " jnz LC1CA
C1D2 : 97 " " sub a
C1D3 : C9 " " ret
;
C1D4 LC1D4:
C1D4 : CD 8F C1 " " call LC18F
C1D7 : C3 B8 C1 " " jmp LC1B8
;
C1DA LC1DA:
C1DA : 16 05 " " mvi d,005H
C1DC LC1DC:
C1DC : CD 32 C1 " 2 " call LC132
C1DF : C2 FF C1 " " jnz LC1FF
C1E2 : 3E 30 ">0" mvi a,030H
C1E4 : D3 C0 " " out 0C0H
C1E6 LC1E6:
C1E6 : 7E "~" mov a,m
C1E7 : D3 C1 " " out 0C1H
C1E9 : 23 "#" inx h
C1EA : 0D " " dcr c
C1EB : C2 E6 C1 " " jnz LC1E6
C1EE : 97 " " sub a
C1EF : D3 C0 " " out 0C0H
C1F1 : 06 05 " " mvi b,005H
C1F3 : CD 78 C1 " x " call LC178
C1F6 : C2 FF C1 " " jnz LC1FF
C1F9 : 06 07 " " mvi b,007H
C1FB : CD 78 C1 " x " call LC178
C1FE : C8 " " rz
C1FF LC1FF:
C1FF : CD 8F C1 " " call LC18F
C202 : C3 DC C1 " " jmp LC1DC
;
C205 LC205: ;input a char and echo it
C205 : CD FA C0 " " call LC0FA ;input a char
C208 : 4F "O" mov c,a
C209 : C3 0C C1 " " jmp LC10C ;output char
;
C20C LC20C:
C20C : CD 52 C2 " R " call LC252 ;output carriage return
C20F LC20F: ;output m in hex
C20F : CD 13 C2 " " call LC213 ;output h in hex
C212 : 65 "e" mov h,l ;move l to h to output in hex
C213 LC213: ;output h in hex
C213 : 7C "|" mov a,h ;mov h to a and rotate top 4 bits to bottom 4 bits
C214 : 07 " " rlc
C215 : 07 " " rlc
C216 : 07 " " rlc
C217 : 07 " " rlc
C218 : CD 1C C2 " " call LC21C ;output 4 bits as hex (top 4)
C21B : 7C "|" mov a,h ;restore h to a
C21C LC21C: ;output bottom 4 bits as hex char
C21C : E6 0F " " ani 00FH
C21E : C6 30 " 0" adi 030H
C220 : FE 3A " :" cpi 03AH
C222 : DA 0B C1 " " jc LC10B
C225 : C6 07 " " adi 007H
C227 : C3 0B C1 " " jmp LC10B
;
C22A LC22A: ;input hex digits into m
C22A : 21 00 00 "! " lxi h,00000H ;zero h,l,d,b
C22D : 54 "T" mov d,h
C22E : 44 "D" mov b,h
C22F LC22F: ;input hex digits into m
C22F : CD 05 C2 " " call LC205 ;input and echo a char
C232 : FE 0D " " cpi 00DH ;carriage return?
C234 : CA 57 C2 " W " jz LC257 ;yes
C237 : D6 30 " 0" sui 030H ;subtract '0'
C239 : D8 " " rc ;return if zero
C23A : FE 0A " " cpi 00AH ;greater than '9'?
C23C : DA 47 C2 " G " jc LC247 ;no
C23F : FE 11 " " cpi 011H ;greater than 'A'?
C241 : D8 " " rc ;no, invalid char so return
C242 : D6 07 " " sui 007H ;subtract 7 to get top 4 bits
C244 : FE 10 " " cpi 010H ;greater than 'F'?
C246 : D0 " " rnc ;yes, invalid char so return
C247 LC247:
C247 : 29 ")" dad h ;shift m left by 4 bits
C248 : 29 ")" dad h
C249 : 29 ")" dad h
C24A : 29 ")" dad h
C24B : B5 " " ora l ;set lower 4 bits to a
C24C : 6F "o" mov l,a
C24D : 16 FF " " mvi d,0FFH ;set d to FF, flag a valid number
C24F : C3 2F C2 " / " jmp LC22F ;process next char
;
C252 LC252: ;output carriage return
C252 : 0E 0D " " mvi c,00DH
C254 : CD 0C C1 " " call LC10C
C257 LC257:
C257 : 0E 0A " " mvi c,00AH ;c gets line feed
C259 : 06 FF " " mvi b,0FFH ;b gets FF on successful return
C25B : C3 0C C1 " " jmp LC10C ;output line feed and return
;
C25E LC25E: ;G command - go to address
C25E : CD 2A C2 " * " call LC22A ;input hex digits into m
C261 : 04 " " inr b ;check if valid input
C262 : C2 3C C0 " < " jnz LC03C ;no, go back to command input loop
C265 : E9 " " pchl ;yes, jump to it
;
C266 LC266: ;M command
C266 : CD 2A C2 " * " call LC22A ;input hex digits into m
C269 : 22 07 C4 "" " shld XC407 ;save m in C407
C26C LC26C:
C26C : CD 0F C2 " " call LC20F ;output m in hex
C26F : 0E 20 " " mvi c,020H ;output a space
C271 : CD 0C C1 " " call LC10C
C274 : 2A 07 C4 "* " lhld XC407 ;restore m from C407
C277 : 66 "f" mov h,m ;get the by in [m]
C278 : CD 13 C2 " " call LC213 ;output it
C27B : 0E 20 " " mvi c,020H ;output a space
C27D : CD 0C C1 " " call LC10C
C280 : CD 2A C2 " * " call LC22A ;input hex digits into m
C283 : 04 " " inr b ;check b if successful
C284 : C2 42 C0 " B " jnz LC042 ;no, return to command loop
C287 : 14 " " inr d ;increment d
C288 : 7D "}" mov a,l ;save l
C289 : 2A 07 C4 "* " lhld XC407 ;restore m
C28C : C2 90 C2 " " jnz LC290 ;check d if successful
C28F : 77 "w" mov m,a ;yes, store l in [m]
C290 LC290:
C290 : 23 "#" inx h ;go to next byte
C291 : 22 07 C4 "" " shld XC407 ;restore m
C294 : C3 6C C2 " l " jmp LC26C loop to next address
;
C297 LC297: ;D command - output a page of memory in hex
C297 : CD 2A C2 " * " call LC22A ;get hex digits into m
C29A : 22 07 C4 "" " shld XC407 ;save in C407
C29D LC29D:
C29D : CD 0C C2 " " call LC20C ;output m in hex
C2A0 : 2A 07 C4 "* " lhld XC407 ;restore m from C407
C2A3 LC2A3:
C2A3 : 0E 20 " " mvi c,020H ;output a space
C2A5 : CD 0C C1 " " call LC10C
C2A8 : 66 "f" mov h,m ;get the byte in [m]
C2A9 : CD 13 C2 " " call LC213 ;output it
C2AC : 2A 07 C4 "* " lhld XC407 ;restore m from C407
C2AF : 23 "#" inx h ;go to next byte
C2B0 : 22 07 C4 "" " shld XC407 ;save m
C2B3 : 7D "}" mov a,l ;check if l is zero
C2B4 : A7 " " ana a
C2B5 : CA 42 C0 " B " jz LC042 ;if so, we're done
C2B8 : E6 0F " " ani 00FH ;check if bottom 4 bits of l are zero
C2BA : C2 A3 C2 " " jnz LC2A3 ;no, process next byte
C2BD : C3 9D C2 " " jmp LC29D ;yes
;
C2C0 LC2C0: ;F command - fill a range with a value F<start>,<stop>,<value>
C2C0 : CD D7 C2 " " call LC2D7 ;input two addresses, and store first address in C407, number of bytes to copy in C409
C2C3 : 79 "y" mov a,c
C2C4 : FE 2C " ," cpi 02CH ;check if last char input was a comma
C2C6 : C2 3C C0 " < " jnz LC03C ;no, output error message and return to command input loop
C2C9 : CD 2A C2 " * " call LC22A ;input hex digits into m
C2CC : 04 " " inr b ;check for valid input
C2CD : C2 3C C0 " < " jnz LC03C ;output error message and return to command input loop
C2D0 : 4D "M" mov c,l
C2D1 : CD FF C2 " " call LC2FF ;copy c to memory starting at [C407], number of bytes in [C409]
C2D4 : C3 42 C0 " B " jmp LC042 ;output a carriage return and back to command input loop
;
C2D7 LC2D7:
C2D7 : CD 2A C2 " * " call LC22A ;input hex digits into m
C2DA : 79 "y" mov a,c
C2DB : FE 2C " ," cpi 02CH ;check if last char input was comma
C2DD : C2 3C C0 " < " jnz LC03C ;no, output error message and return to command input loop
C2E0 : 22 07 C4 "" " shld XC407 ;store first address in C407
C2E3 : CD 2A C2 " * " call LC22A ;input hex digits into m
C2E6 : EB " " xchg ;save in DE
C2E7 : 2A 07 C4 "* " lhld XC407 ;restore first address into m
C2EA : 7B "{" mov a,e ;subtract DE from HL for number of bytes to transfer
C2EB : 95 " " sub l
C2EC : 5F "_" mov e,a
C2ED : 7A "z" mov a,d
C2EE : 94 " " sub h
C2EF : 57 "W" mov d,a ;is it negative?
C2F0 : DA 3C C0 " < " jc LC03C ;yes, output error message and return to command input loop
C2F3 : EB " " xchg
C2F4 : 22 09 C4 "" " shld XC409 ;store number of bytes in C409
C2F7 : 7D "}" mov a,l
C2F8 : B4 " " ora h ;is it zero?
C2F9 : CA 3C C0 " < " jz LC03C ;yes, output error message and return to command input loop
C2FC : C9 " " ret
;
C2FD LC2FD:
C2FD : 0E 00 " " mvi c,000H
C2FF LC2FF: ;put number of bytes in DE, first address in HL
C2FF : 2A 09 C4 "* " lhld XC409
C302 : EB " " xchg
C303 : 2A 07 C4 "* " lhld XC407
C306 LC306: ;copy DE bytes of C to HL
C306 : 71 "q" mov m,c
C307 : 23 "#" inx h
C308 : 1B " " dcx d
C309 : 7A "z" mov a,d
C30A : B3 " " ora e
C30B : C2 06 C3 " " jnz LC306
C30E : C9 " " ret
;
C30F LC30F: ;T command - test memory? T<start address>,<stop address>
C30F : CD D7 C2 " " call LC2D7 ;input two addresses, and store first address in C407, number of bytes to copy in C409
C312 : 04 " " inr b ;valid input
C313 : C2 3C C0 " < " jnz LC03C ;no, output error message and return to command input loop
C316 : CD FD C2 " " call LC2FD ;zero out the memory range
C319 : 41 "A" mov b,c ;b, c are zero
C31A : 21 44 C3 "!D " lxi h,0C344H
C31D : 22 0B C4 "" " shld XC40B ;store C344 in location C40B
C320 LC320:
C320 : 48 "H" mov c,b
C321 : 2A 0B C4 "* " lhld XC40B
C324 : 46 "F" mov b,m
C325 : 23 "#" inx h
C326 : 7D "}" mov a,l
C327 : FE 66 " f" cpi 066H
C329 : C2 34 C3 " 4 " jnz LC334
C32C : C5 " " push b
C32D : CD 79 C3 " y " call LC379
C330 : C1 " " pop b
C331 : 21 44 C3 "!D " lxi h,0C344H
C334 LC334:
C334 : 22 0B C4 "" " shld XC40B
C337 : 2A 09 C4 "* " lhld XC409
C33A : EB " " xchg
C33B : 2A 07 C4 "* " lhld XC407
C33E : CD 66 C3 " f " call LC366
C341 : C3 20 C3 " " jmp LC320
;
C344 : 01 00 02 00 " " db 001H, 000H, 002H, 000H
C348 : 04 00 08 00 " " db 004H, 000H, 008H, 000H
C34C : 10 00 20 00 " " db 010H, 000H, 020H, 000H
C350 : 40 00 80 00 "@ " db 040H, 000H, 080H, 000H
C354 : FF FE FF FD " " db 0FFH, 0FEH, 0FFH, 0FDH
C358 : FF FB FF F7 " " db 0FFH, 0FBH, 0FFH, 0F7H
C35C : FF EF FF DF " " db 0FFH, 0EFH, 0FFH, 0DFH
C360 : FF BF FF 7F " " db 0FFH, 0BFH, 0FFH, 07FH
C364 : FF 00 " " db 0FFH, 000H
;
C366 LC366:
C366 : 7E "~" mov a,m
C367 : B9 " " cmp c
C368 : C4 86 C3 " " cnz LC386
C36B : 70 "p" mov m,b
C36C : 7E "~" mov a,m
C36D : B8 " " cmp b
C36E : C4 91 C3 " " cnz LC391
C371 : 23 "#" inx h
C372 : 1B " " dcx d
C373 : 7A "z" mov a,d
C374 : B3 " " ora e
C375 : C2 66 C3 " f " jnz LC366
C378 : C9 " " ret
;
C379 LC379: ;output comma
C379 : 0E 2C " ," mvi c,02CH
C37B : C3 0C C1 " " jmp LC10C
;
C37E LC37E:
C37E : EB " " xchg
C37F : E3 " " xthl
C380 : D5 " " push d
C381 : F5 " " push psw
C382 : C5 " " push b
C383 : F5 " " push psw
C384 : D5 " " push d
C385 : E9 " " pchl ;INFO: index jump
;
C386 LC386:
C386 : C5 " " push b
C387 : 41 "A" mov b,c
C388 : CD 7E C3 " ~ " call LC37E
C38B : 21 BB C3 "! " lxi h,0C3BBH ;location of "READ"
C38E : C3 98 C3 " " jmp LC398
;
C391 LC391:
C391 : C5 " " push b
C392 : CD 7E C3 " ~ " call LC37E
C395 : 21 BF C3 "! " lxi h,0C3BFH ;location of "WRITE"
C398 LC398:
C398 : CD 48 C0 " H " call LC048 ;output string
C39B : 21 C4 C3 "! " lxi h,0C3C4H ;location of "ERROR"
C39E : CD 48 C0 " H " call LC048 ;output string
C3A1 : E1 " " pop h
C3A2 : CD 0F C2 " " call LC20F ;output m in hex;
C3A5 : CD 79 C3 " y " call LC379 ;output comma
C3A8 : E1 " " pop h
C3A9 : CD 13 C2 " " call LC213 ;output h in hex
C3AC : CD 79 C3 " y " call LC379 ;output comma
C3AF : E1 " " pop h
C3B0 : CD 13 C2 " " call LC213 ;output h in hex
C3B3 : CD 52 C2 " R " call LC252 ;output carriage return
C3B6 : F1 " " pop psw
C3B7 : E1 " " pop h
C3B8 : D1 " " pop d
C3B9 : C1 " " pop b
C3BA : C9 " " ret
;
C3BB : 52 45 41 C4 "REA " db 052H, 045H, 041H, 0C4H
C3BF : 57 52 49 54 "WRIT" db 057H, 052H, 049H, 054H
C3C3 : C5 20 45 52 " ER" db 0C5H, 020H, 045H, 052H
C3C7 : 52 4F 52 20 "ROR " db 052H, 04FH, 052H, 020H
C3CB : 4C 4F 43 4E "LOCN" db 04CH, 04FH, 043H, 04EH
C3CF : AE " " db 0AEH
;
C3D0 LC3D0: ;L command
C3D0 : 97 " " sub a
C3D1 : C3 D6 C3 " " jmp LC3D6
;
C3D4 LC3D4: ;S command
C3D4 : 3E FF "> " mvi a,0FFH
C3D6 LC3D6:
C3D6 : F5 " " push psw
C3D7 : CD D7 C2 " " call LC2D7 ;input two addresses, and store first address in C407, number of bytes to copy in C409
C3DA : 29 ")" dad h
C3DB : 44 "D" mov b,h
C3DC : 04 " " inr b
C3DD : C5 " " push b
C3DE : CD 2A C2 " * " call LC22A ;input hex digits into m
C3E1 : 55 "U" mov d,l
C3E2 : C1 " " pop b
C3E3 : 4C "L" mov c,h
C3E4 : 2A 07 C4 "* " lhld XC407
C3E7 : F1 " " pop psw
C3E8 : 5F "_" mov e,a
C3E9 : 97 " " sub a
C3EA : CD A8 C0 " " call LC0A8
C3ED : C3 42 C0 " B " jmp LC042
;
C3F0 : 00 00 00 00 " " db 000H, 000H, 000H, 000H
C3F4 : 00 00 00 00 " " db 000H, 000H, 000H, 000H
C3F8 : 00 00 00 00 " " db 000H, 000H, 000H, 000H
C3FC : 00 00 00 00 " " db 000H, 000H, 000H, 000H
;--------------------------------------------------------------
Symbol table
============
Value Type Name
----- ---- ----
1000 Code L1000
C000 Code LC000
C00E Code LC00E
C03C Code LC03C
C03F Code LC03F
C042 Code LC042
C048 Code LC048
C072 Code LC072
C084 Code LC084
C0A8 Code LC0A8
C0B3 Code LC0B3
C0C8 Code LC0C8
C0D3 Code LC0D3
C0DF Code LC0DF
C0FA Code LC0FA
C10B Code LC10B
C10C Code LC10C
C119 Code LC119
C11F Code LC11F
C127 Code LC127
C132 Code LC132
C144 Code LC144
C153 Code LC153
C157 Code LC157
C16B Code LC16B
C173 Code LC173
C178 Code LC178
C179 Code LC179
C183 Code LC183
C18F Code LC18F
C1AA Code LC1AA
C1B1 Code LC1B1
C1B6 Code LC1B6
C1B8 Code LC1B8
C1CA Code LC1CA
C1D4 Code LC1D4
C1DA Code LC1DA
C1DC Code LC1DC
C1E6 Code LC1E6
C1FF Code LC1FF
C205 Code LC205
C20C Code LC20C
C20F Code LC20F
C213 Code LC213
C21C Code LC21C
C22A Code LC22A
C22F Code LC22F
C247 Code LC247
C252 Code LC252
C257 Code LC257
C25E Code LC25E
C266 Code LC266
C26C Code LC26C
C290 Code LC290
C297 Code LC297
C29D Code LC29D
C2A3 Code LC2A3
C2C0 Code LC2C0
C2D7 Code LC2D7
C2FD Code LC2FD
C2FF Code LC2FF
C306 Code LC306
C30F Code LC30F
C320 Code LC320
C334 Code LC334
C366 Code LC366
C379 Code LC379
C37E Code LC37E
C386 Code LC386
C391 Code LC391
C398 Code LC398
C3D0 Code LC3D0
C3D4 Code LC3D4
C3D6 Code LC3D6
C400 Data XC400
C401 Data XC401
C402 Data XC402
C403 Data XC403
C405 Data XC405
C407 Data XC407
C409 Data XC409
C40B Data XC40B
Number of symbols: 82
;--------------------------------------------------------------