home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.barnyard.co.uk
/
2015.02.ftp.barnyard.co.uk.tar
/
ftp.barnyard.co.uk
/
cpm
/
walnut-creek-CDROM
/
MBUG
/
MBUG112.ARC
/
Z8E14.LBR
/
Z8E.DZC
/
Z8E.DOC
Wrap
Text File
|
1979-12-31
|
206KB
|
6,223 lines
Z8E USER'S MANUAL
Copyright 1984
by
RICK SURWILO
23 PLMOUTH ROAD
STAMFORD,CONNECTICUT 06906
(203) 324-3809
è
TABLE OF CONTENTS
Section Page
I. INTRODUCTION 1
II. INSTALLATION 3
áááááááááááááááááááá
III. INVOKING Z8E AT THE CP/M COMMAND LEVEL 13
IV. INITIALIZATION 19
V. COMMAND INPUT 23
VI. BREAKPOINTS 29
VII. COMMANDS:
A Assemble 33
B Set Breakpoint 37
C Clear Breakpoint 38
D Dump 39
E Examine 40
F Find 42
G Go 44
H Display Symbol Table 45
I Initialize Command Line (and FCB fields) 46
J Animated Full Screen Debugging 47
K Set Memory Window Address for J command 49
L Load File 50
M Move Memory 51
N Output to I/O Port without Pre-read 52
O Output Current Breakpoints to Console 54
P Examine Flag Register 55
Q Query I/O Ports 56
R Register 58
S Single Step 59
U Save Symbol Table to Disk 61è V Verify Memory 62
W Write Memory Segment to Disk 63
X Display Machine State 64
Y Fill Memory 65
Z Disassemble 66
APPENDIX A - Symbol File Formats 70
APPENDIX B - ZILOG Mnemonics 71
APPENDIX C - System Memory Map 92
Z8E - Z80 DEBUG MONITOR Rick Surwilo
Z8E - Z8░ DEBUGGIN╟ MONITOR
I« INTRODUCTION
Z8┼ i≤ ß professiona∞ qualit∙ interactivσ debugginτ too∞ designeΣ ì
t∩ speeΣ thσ testinτ oµ Z8░ assembl∙ languagσ programs«á Origin-ì
all∙ writteε a≤ ß standalonσ monitor¼á Z8┼ wa≤ useΣ iε thσá deve-ì
lopemen⌠á oµ thσ world'≤ larges⌠ Touch-Tonσ Input/Voicσá Responsσ ì
system«á No≈ redonσ t∩ ruε iε ß CP/═ o≥ TurboDO╙ environmen⌠ Z8┼ ì
contain≤á morσ feature≤ iε les≤ memor∙ thaε an∙ comparablσá soft-ì
warσ product« Occupyinτ les≤ thaε 9╦ oµ memory¼ Z8┼ include≤ thσ ì
followinτ amonτ it≤ man∙ features:
áááááá-áFul∞ screeε animateΣ displa∙ oµ thσ prograφ unde≥ ì
áááááááátes⌠ whilσ i⌠ i≤ beinτ executeΣ b∙ thσ Z8░
áááá - Completσ Z8░ inlinσ assembler¼á witΦ labels¼ sym-ì
áááááááábols¼á expressions¼á anΣ directives¼á usinτ Ziloτ ì
áááááááámnemonics
- Interactivσá disassembl∙ witΦ label≤ anΣá symbol≤ ì
áááááááát∩á consolσá o≥ disδ allow≤ thσ use≥á t∩á specif∙ ìè ááááááááoutpu⌠ format≤ anΣ adΣ comment≤
áááááá- Full∙á traceΣ prograφ executioε includinτ ßá ful∞ ì
ááááááááscreeε singlσ ste≡ commanΣ tha⌠ instruct≤ Z8┼á t∩ ì
áááááááádisassemblσá codσá anΣ t∩ movσ thσ curso≥ t∩á thσ ì
áááááááánex⌠ instructioε t∩ execute
- U≡ t∩ 1╢ use≥ settablσ breakpoint≤ witΦá optiona∞ ì
áááááááápas≤ counts
- Truσá symboliπá debugginτá usinτ thσá inpu⌠á froφ ì
áááááááámultiplσá Microsof⌠á MACRO-8░ .PR╬á anΣá LINK-8░ ì
áááááááá.SY═á file≤ anΣ Z80AS═ .LS╘ anΣ SLRN╦ anΣá Z80AS═ ì
áááááááá.SY═ file≤ froφ SL╥ System≤.
- Dynamiπ relocatioε oµ Z8┼ a⌠ loaΣ timσ t∩ thσ to≡ ì
ááááááááoµá use≥á memor∙ regardles≤ oµá size«á N∩á use≥ ì
ááááááááconfiguratioε oµ an∙ kinΣ i≤ required«
Yo⌡á ma∙á wan⌠ t∩ spenΣ somσ timσ familarizinτ yourselµ witΦá thσ ì
manua∞ anΣ Z8E'≤ commanΣ structure¼ especiall∙ thσ EXAMIN┼ memor∙ ì
command¼ beforσ turninτ t∩ thσ INSTALLATIO╬ section.
1
Z8E - Z80 DEBUG MONITOR Rick Surwilo
This Page Intentionally Left Blank.
è
2
Z8E - Z80 DEBUG MONITOR Rick Surwilo
II. INSTALLATION
Firs⌠ makσ ß workinτ cop∙ oµ Z8E¼á theε placσ you≥ origina∞ disk-ì
ettσá iεá ß safσ place«á Makσ al∞ modification≤ t∩á thσá workinτ ì
copy¼ no⌠ thσ original«
Z8E'≤á (E)xaminσá memor∙á commanΣ wil∞ bσ useΣ t∩á changσá memor∙ ìè contents«á Thi≤á commanΣ i≤ describeΣ briefl∙ below«á Fo≥ ßá morσ ì
detaileΣá explanatioε pleasσ refe≥ t∩ SECTIO╬ ╓ oµá thi≤á manual¼ ì
COMMAND INPUT.
Z8┼ require≤ aε addressablσ curso≥ whicΦ caε bσ patcheΣá symboli-ì
call∙ a≤ follows:
Firs⌠ instruc⌠ Z8┼ t∩ loaΣ itselµ a≤ wel∞ a≤ thσ symbo∞ ì
áááááfile:
ááááá áA>Z8E Z8E.COM Z8E.SYM
áááááThσá symbo∞ filσ Z8E.SY═ contain≤ thσ namσ anΣá addres≤ ì
áááááof each parameter which may need to be modified.
áááááUsσ thσ (E)xaminσ memor∙ commanΣ t∩ changσ thσ requireΣ ì
ááááábytes«á Yo⌡á ma∙á ente≥ command≤ iε responsσ t∩á Z8E'≤ ì
áááááasterisδá prompt«á Oncσ yo⌡ ente≥ "Eó followeΣá b∙á thσ ì
ááááásymboliπá namσ oµ thσ addres≤ yo⌡ whicΦ t∩ change¼á Z8┼ ì
áááááwil∞ responΣ b∙ displayinτ thσ actua∞ addres≤ followeΣ ì
áááááb∙á thσ he° anΣ ASCI╔ representatioε oµ thσ bytσá beinτ ì
áááááexamineΣ (non-printablσ character≤ arσ showε a≤ ß "~")« ì
áááááFo≥ example║
áááá *┼ MXYC╨ <cr>
ááááá285┼á ▓ ■ X╪ <cr> ;X╪ represent≤ your input
ááááá285F 1B ~ XX <cr>
ááááá2860 3D = XX <cr>
ááááá2861 00 ~ . ;PERIOD ENDS COMMAND
ááááá*
áááááIMPORTANT:
áááááAlway≤á patcΦ usinτ thσ symboliπ namσ oµ thσá variable╗ ì
áááááthσ addresse≤ showε iε thσ examplσ abovσ arσ fo≥ demon-ì
ááááástratioε onl∙ anΣ d∩ no⌠ necessaril∙ reflec⌠ thσ actua∞ ì
ááááálocation≤ oµ thσ variable≤ iε memory.
3
è
Z8E - Z80 DEBUG MONITOR Rick Surwilo
áááááListeΣá belo≈ arσ thσ symboliπ name≤ oµá thσá addresse≤ ì
áááááwhicΦ ma∙ havσ t∩ bσ patcheΣ fo≥ you≥ CRT«
MXYCPá - Curso≥ addressinτ lead-iε string«á Thσá firs⌠ ì
áááááááááááááábytσá (thσ numbe≥ ▓ iε thσ abovσ example⌐á re-ì
áááááááááááááápresent≤á thσá numbe≥ oµ byte≤ iε thσá string« ì
ááááááááááááááThσ strinτ ma∙ bσ u≡ t∩ 1░ byte≤á long«á Thi≤ ì
ááááááááááááááactua∞á lead-iε strinτ shoulΣ immediatel∙ fol-ì
áááááááááááááálo≈ thσ coun⌠ byte.
ááááááááááááááDefault is the two character string:
áááááááááááááá
áááááááááááááá 1B (Hex), 3D (Hex)
ááááááááááááááASCII ESCAPE, followed by EQUAL SIGN.
ááááááááááááá
áááááROWB4? - Set this byte as follows:
NOT ZERO - Row is sent before Column
ZERO - Column is sent before Row
ááááááááááááááDefault is NOT ZERO, row sent before column.áááááááááááááá
ROW - Se⌠á thi≤ bytσ t∩ contaiε thσ valuσ whicΦ i≤ t∩á bσ ì
ááááááááááááááaddeΣ ro≈ numbe≥ beforσ i⌠ i≤ sen⌠ t∩ thσ screen.
Default is 20 Hex, ASCII space.
COLUMN - Se⌠á thi≤ bytσ t∩ contaiε thσ valuσ whicΦ i≤ t∩á bσ ì
ááááááááááááááaddeΣá columεá numbe≥á beforσá i⌠ i≤á sen⌠á t∩á thσ ì
ááááááááááááááscreen« Defaul⌠ i≤ 2░ Hex¼ ASCI╔ space.
CASEá - Thi≤á bytσá control≤ whethe≥á yo⌡á prefe≥á enterinτ ì
áááááááááááááásymbo∞á name≤á iεá uppe≥ o≥ lowe≥á case«á I⌠á als∩ ì
áááááááááááááácontrol≤ whethe≥ disassembl∙ wil∞ bσ donσ iεá uppe≥ ì
ááááááááááááááo≥áá lowe≥á case«áá PatcΦá as follows:
ááááá FF - lower case (DEFAULT)
ááááá 00 - UPPER CASE
áááááMAXLEN - Thi≤á i≤á thσ maximuφ lengtΦ oµ permitteΣá fo≥ ì
áááááááááááááásymbo∞á names«á Thσ permissablσ value≤ arσá ╢ ì
ááááááááááááááanΣá 14«á Iµ patcheΣ t∩ an∙ othe≥ valuσá theε ì
ááááááááááááááZ8┼á wil∞ usσ 6«á Thσ maximuφ lengtΦá oµá thσ ì
áááááááááááááásymbo∞ i≤ requireΣ b∙ Z8┼ iε orde≥ t∩ allocatσ ì
ááááááááááááááspacσ fo≥ loadinτ thσ symbo∞ table« Iµ MAXLE╬ ì
ááááááááááááááequal≤á ╢ theε Z8┼ reserve≤ ╕ bytσ pe≥ symbol¼ ì
áááááááááááááá╢á fo≥ thσ namσ anΣ tw∩ fo≥ thσá address«á Iµ ìè ááááááááááááááthσá numbe≥á 1┤ i≤ useΣ theε Z8┼á reserve≤á 1╢ ì
áááááááááááááábyte≤á pe≥ symbol«á Hencσ MAXLE╬ impact≤á thσ ì
ááááááááááááááamoun⌠ oµ TP┴ availablσ t∩ thσ prograφ sincσ ß ì
áááááááááááááásymbo∞á tablσ oµ 1╢ byte≤ pe≥ entr∙á obviousl∙ ì
4
Z8E - Z80 DEBUG MONITOR Rick Surwilo
áááááááááááááátake≤á u≡á twicσ a≤ mucΦ spacσ a≤ onσá witΦá ╕ ì
áááááááááááááábytσ entries«
ááááááááááááááIf¼á whilσá readinτ iε thσ symbol≤ froφá disk¼ ì
ááááááááááááááZ8┼á encounter≤ ß symbo∞ longe≥ thaε thσ valuσ ì
ááááááááááááááspecifieΣáá iεá MAXLE╬á thσá symbo∞á namσáá i≤ ì
áááááááááááááátruncated to MAXLEN.
áááááááááááááá 6 - Maximum Symbol Length (DEFAULT)áááááááááááááá
áááááááááááááá 14 - Optional Symbol Length
TO SAVE THE PATCHED PROGRAM:
*W ANYNAME.COM (Writes the File to Disk)
Thi≤ complete≤ thσ installatioε oµ Z8E« Typinτ iε ^├ (Contro∞ C⌐ ì
iεá responsσá t∩á Z8E'≤ asterisδ promp⌠ wil∞ returεá yo⌡á t∩á thσ ì
operatinτ system.
è
5
Z8E - Z80 DEBUG MONITOR Rick Surwilo
USER CODED CONSOLE I/O
Thσ followinτ sectioε provide≤ detail≤ oε ß methoΣ oµá optionall∙ ì
replacinτá thσá BDO╙á call≤ fo≥ Consolσ I/╧ whicΦ Z8┼á use≤á witΦ ì
physica∞ consolσ I/╧ routine≤ o≥ direc⌠ BIO╙ calls«
T∩á modif∙á theφ usσ thσ symbo∞ name≤ listeΣ belo≈á anΣá assemblσ ì
you≥á routinσá a⌠ thσ appropriatσ addres≤ (vißá Z8E'≤á (A)ssemblσ ì
commanΣ - Seσ Manual).
TTYQ: Thi≤á routinσ check≤ thσ statu≤ oµá thσá console« ì
ááááááááááááááááIµ ß characte≥ i≤ waitinτ i⌠ i≤ read╗á otherwise¼ ì
ááááááááááááááááTTYQá return≤á ßá zer∩ iε ┴ t∩ indicatσá tha⌠á n∩ ì
áááááááááááááááácharacte≥ i≤ waiting.
áááááTTYI║ ReaΣ ß character¼ waitinτ unti∞ onσ arrives.
ááááá Return Character in A.
áááááTTYO║ Outpu⌠ ß character¼ waitinτ unti∞ i⌠ i≤ sent.
ááááá Character passed in A.
ListeΣ belo≈ i≤ thσ codσ tha⌠ Z8┼ use≤ t∩ d∩ consolσ I/O╗á usσ i⌠ ì
a≤á ß model«á You≥ routine≤ shoulΣ replacσ thσ instruction≤á witΦ ì
thσá doublσá semicolons«á Bσ surσ t∩ savσ thσ reqister≤ a≤á sho≈ ì
below« Thσ sizσ oµ eacΦ routinσ mus⌠ no⌠ exceeΣ 3▓ bytes«
è
6
Z8E - Z80 DEBUG MONITOR Rick Surwilo
TTYQ: push bc
push de
push hl
ld c,11 ;;Check Console Status
call BDOS ;;BDOS returns: A = 00 No Character
;; A = NZ Input Waiting
;;
and a ;;Character Here?
ld c,6 ;;
ld e,0ffh ;;
cal∞ nz,BDO╙ ;;Iµ Characte≥ Herσ ReaΣ It...
;; Else Fall Thru
pop hl
pop de
pop bc
and 7fh
retè
org TTYQ+32
TTYI: push bc
push de
push hl
TTYI00: ld c,06 ;;Unadorned Console Input
ld e,0ffh ;;Tell CP/M this is Input Request
call BDOS ;;
and 7fh ;;Strip Parity
jr z,TTYI00 ;;Loop til Input Arrives
pop hl
pop de
pop bc
ret
org TTYI+32
TTYO: push af
push bc
push de
push hl
ld c,02 ;;
ld e,a ;;
call BDOS ;;Console Output
pop hl
pop de
pop bc
pop af
ret
org TTYO+32
7
Z8E - Z80 DEBUG MONITOR Rick Surwilo
Thσ symbol≤ TTYQ¼ TTYI¼ anΣ TTY╧ arσ includeΣ iε Z8E.SYM« There-ì
forσá thesσá routine≤á caε bσ patcheΣá symbolicall∙á usinτá Z8E'≤ ì
assemblσ command¼ fo≥ example║
*A TTYQ
1F76 C5 TTYQ: PUSH BCè
Z8┼á als∩ contain≤ ß provisioε fo≥ use≥ installeΣá initializatioε ì
code«á A≤á sooε a≤ Z8┼ i≤ loaded¼á bu⌠ beforσ i⌠ relocate≤ itselµ ì
int∩ higΦ memory¼á i⌠ make≤ ß cal∞ t∩ INIT«á A≤ presentl∙ confi-ì
gureΣ INI╘ merel∙ contain≤ ß RE╘ instruction«á Howeve≥ thσá use≥ ì
ma∙ adΣ u≡ t∩ 12╖ byte≤ oµ initializatioε code« Thi≤ codσ ma∙ bσ ì
useΣá fo≥ an∙ purpose¼á fo≥ example¼á t∩ changσ you≥ SI╧ o≥á Uar⌠ ì
froφá interrup⌠ driveε t∩ non-interrup⌠ driveε iε thσ even⌠á tha⌠ ì
thσá Z8┼á consolσ routine≤ werσ replaced«á An∙ codσ installeΣá a⌠ ì
INI╘á i≤ executeΣ oncσ anΣ i≤ no⌠ moveΣ t∩ higΦ memor∙á witΦá thσ ì
res⌠ oµ Z8E« Yo⌡ neeΣ no⌠ savσ an∙ registers.
8
è
Z8E - Z80 DEBUG MONITOR Rick Surwilo
SUPPLYING YOUR OWN CURSOR ADDRESSING ROUTINE
Iµá you≥ compute≥ require≤ ß custoφ curso≥ addressinτ routinσá i⌠ ì
can be easily added by following the steps listed below:
1. áExaminσá thσ Z8E.SY═ filσ tha⌠ t∩ determinσ thσ addres≤ ì
áááááoµá Z8E'≤ standarΣ curso≥ addressinτ routinσá whicΦá i≤ ì
ááááácalleΣ XYCP«á AssociateΣ witΦ namσ XYC╨ iε thσ filσ i≤ ì
áááááit≤ absolutσ address.
2.áááUsinτ you≥ owε tex⌠ edito≥ codσ you≥ routinσ and prefacσá i⌠ ì
áááááwitΦ thσ followinτ puedo-ops:
ááááá ASEG
ááááá .PHASE XXXXH
ááááá Wherσá XXX╪á represent≤ thσá absolutσá hexadecima∞ ì
ááááááááááaddres≤ obtaineΣ iε ste≡ 1.
è
9
Z8E - Z80 DEBUG MONITOR Rick Surwilo
áááááZ8┼ wil∞ pas≤ thσ ro≈ addres≤ iε thσ ┬ REGISTE╥ anΣ thσ ì
ááááácolumεá addres≤á iε thσ ├ REGISTER«á Ro≈ number≤á rangσ ì
áááááfroφ ░ t∩ 2│ whilσ columε number≤ rangσ froφ ░ t∩ 79«
áááááYou≥ joΓ i≤ t∩ translatσ thesσ tw∩ numbe≥ int∩ ß curso≥ ì
ááááápostion on the screen of your CRT.
áááááSavσá al∞á register≤ includinτ BC«á Usσá thσá followinτ ì
áááááskeletoε a≤ ß guide:
ááááá ASEG
ááááá .PHAS┼ XXX╪ ;From áZ8E.SYM
ááááá YOURS:
ááááá PUSH BC
ááááá PUSH DE
ááááá PUSH HL
ááááá CURSOR ADDRESSING CODE HERE
ááááá POP HL
ááááá POP DE
ááááá POP BC
ááááá RET
ááááá ENDáááá
á
áááááUsσá Z8E'≤ outpu⌠ routinσ TTY╧ a≤ describeΣá abovσá (o≥ ì
áááááyou≥á owεá routine⌐á t∩ outpu⌠ thσ character≤á iεá you≥ ì
ááááácurso≥ addressinτ sequence« Obtaiε thσ absolutσ addres≤ ì
áááááoµá TTY╧ froφ thσ filσ Z8E.SYM«á Codσ thσ cal∞á t∩á thσ ì
ááááásubroutinσá usinτ thσ absolutσ addres≤ iεá hexadecimal« ì
áááááFor instance, if Z8E.SYM contains the entry:
ááááá 2FE2 TTYO
áááááthen code your call statements as:
ááááá CALL 2FE2Hè
áááááZ8┼ impose≤ onl∙ onσ restrictioε oε thσ codσ yo⌡ write« ì
áááááIεá orde≥á t∩ guaranteσ tha⌠ you≥ routinσ caε bσá relo-ì
ááááácateΣá int∩ higΦ memor∙ b∙ Z8┼ d∩ no⌠ loaΣ an∙á 1╢á bi⌠ ì
áááááconstant≤á int∩á registe≥ pairs╗á insteaΣ d∩ tw∩ ╕á bi⌠ ì
áááááloads«á Fo≥ example¼á d∩ no⌠ usσ thσ followinτá state-ì
áááááment:
ááááá LD HL,1234H
áááááRather, code it like this:
ááááá LD H,12H
ááááá LD L,34H
10
Z8E - Z80 DEBUG MONITOR Rick Surwilo
áááááThi≤á i≤á thσ onl∙ restrictioε othe≥ thaεá thσá maximuφ ì
ááááácodσá lengtΦ whicΦ i≤ placeΣ oε you≥ codσ whicΦ i≤á 12╕ ì
ááááábytes.
3.áááAssemblσá you≥ routinσ witΦ eithe≥ Macro-8░ o≥á Z80ASM« ì
áááááLink it with either Link-80 or SLRNK.
è
11
Z8E - Z80 DEBUG MONITOR Rick Surwilo
4.áááLoad Z8E.COM using Z8E:
ááááá A>Z8E Z8E.COM Z8E.SYM
ááááá *
5.áááNow overlay Z8E's cursor address code with your own:
ááááá *I YOURCODE.COM,XYCP
áááááZ8┼ wil∞ loaΣ you≥ curso≥ addressinτ routinσ oε to≡ it≤ ì
áááááowεá beginninτá a⌠á thσá addres≤á associateΣá witΦá thσ ì
ááááásymbol XYCP.ááááááááá
6.áááSave the new file using a name of your choosing:
ááááá *W NEWDEBUG.COM
è 7.áááExi⌠á bacδá t∩á thσá operatinτá systeφá bσá enterinτá ß ì
áááááControl-C at the asterisk prompt.
12
Z8E - Z80 DEBUG MONITOR Rick Surwilo
This Page Intentionally Left Blank.
è
13
è
Z8E - Z80 DEBUG MONITOR Rick Surwilo
III. INVOKING Z8E AT THE CP/M COMMAND LEVEL
Upoεá invokatioε a⌠ thσ CP/═ commanΣ leve∞ Z8E load≤ a⌠á thσá lo≈ ì
enΣá oµ thσ Transien⌠ Prograφ Areß (TPA⌐ whicΦ begin≤ a⌠ absolutσ ì
addres≤ 100H«á Thσ TP┴ i≤ thσ areß iε memor∙ wherσ use≥á program≤ ì
arσ executed«
Oncσá loadeΣ Z8┼ determine≤ thσ sizσ oµ thσ TP┴ b∙ examininτá thσ ì
addres≤á fielΣ oµ thσ jum≡ instructioε a⌠ locatioε 5«á Thi≤á ad-ì
dres≤á represent≤á botΦ thσ entr∙ poin⌠ int∩ CP/═ anΣ thσ enΣá oµ ì
thσ TPA«á Z8┼ lower≤ thi≤ addres≤ b∙ approximatel∙ 9╦ byte≤á anΣ ì
relocate≤ int∩ thi≤ areß b∙ adjustinτ al∞ addresse≤ withiε itselµ ì
t∩ reflec⌠ it≤ ne≈ location«á Thσ jum≡ instructioε a⌠ locatioε ╡ ì
i≤ similiarl∙ modifieΣ t∩ reflec⌠ thσ ne≈ sizσ oµ thσ TPA«á Thu≤ ì
al∞á program≤á whicΦ usσ thi≤ addres≤ t∩ determinσ thσ amoun⌠á oµ ì
availablσ memor∙ caε ruε unchanged«á Z8┼ complete≤ it≤ initiali-ì
zatioεá b∙ storinτ ß jum≡ instructioε t∩ it≤ breakpoin⌠á handlinτ ì
softwarσ a⌠ absolutσ addres≤ 3╕ (hexadecimal)«
Symbol≤ whicΦ arσ loadeΣ froφ file≤ arσ storeΣ b∙ Z8┼ iε ß symbo∞ ì
tablσ a⌠ thσ to≡ oµ thσ TP┴ jus⌠ belo≈ Z8E« Z8┼ wil∞ dynamicall∙ ì
allocatσá thσá storagσ necessar∙ t∩ holΣ al∞ symbol≤ loadeΣá froφ ì
files╗ however¼ Z8┼ als∩ allow≤ thσ use≥ t∩ ente≥ hi≤ owε symbol≤ ì
froφá thσá keyboarΣ viß thσ (A)ssemblσá command«á Z8┼á doe≤á NOT ì
reservσ ANY spacσ iε memor∙ fo≥ use≥ generateΣ symbols« Thσ use≥ ì
mus⌠á explicitl∙á reques⌠ memor∙ spacσ oε thσ CP/═ commanΣá line« ì
Thi≤ i≤ accomplisheΣ b∙ enterinτ thσ numbe≥ oµ symbol≤ fo≥á whicΦ ì
spacσá shoulΣ bσ reserveΣ a≤ ß decima∞ number«á Thi≤ numbe≥ mus⌠ ì
bσ encloseΣ iε parenthese≤ anΣ mus⌠ appea≥ a≤ thσ firs⌠á argumen⌠ ì
oε thσ commanΣ linσ a≤ showε below:
A>Z8E (32)
Iεá thi≤ examplσ thσ use≥ ha≤ requesteΣ spacσ fo≥ 3▓ use≥ defineΣ ì
symbols«á Iµá MAXLE╬ ha≤ bσ se⌠ t∩ ╢ (Seσ INSTALLATIO╬á Section⌐ ì
theεá eacΦ symbo∞ require≤ ╕ byte≤ oµá storage¼á hence¼á iεá thi≤ ì
examplσá Z8┼ wil∞ se⌠ asidσ 25╢ byte≤ oµ memor∙ fo≥ use≥á defineΣ ì
symbols«
Subsequen⌠ actioε i≤ baseΣ oε thσ forma⌠ oµ thσ remainde≥ oµá thσ ì
commanΣ linσ a≤ entereΣ b∙ thσ user« Iε thσ example≤ tha⌠ follo≈ ì
bea≥á iεá minΣá tha⌠ an∙ oµ thesσ commanΣ line≤ ma∙á contaiεá thσ ì
argumen⌠á requestinτ memor∙ spacσ fo≥ use≥ symbo∞ tablσá entries« ì
Thσ argumen⌠ woulΣ appea≥ immmediatσ afte≥ "Z8Eó iε ever∙ case.
1« A>Z8E
Z8E reside≤ a≤ ß standalonσ prograφ iε memory.
è
2. A>Z8E USERFILE.COM
áááááááááááááááááááUSERFILE.CO═ i≤ loadeΣ a⌠ thσ beginninτ oµ thσ ì
14
Z8E - Z80 DEBUG MONITOR Rick Surwilo
áááááááááááááááááááTP┴á anΣ i≤ read∙ t∩ bσ acteΣ oε b∙á Z8Eá com-ì
ááááááááááááááááááámands«á
3. A>Z8E USERFILE.COM USERFILE.SYM [,bias]
áááááááááááááááááááUSERFILE.SY═ i≤ reaΣ iε b∙ Z8E anΣ al∞á symbo∞ ì
áááááááááááááááááááname≤ containeΣ iε thσ filσ arσ entereΣ int∩ ß ì
ááááááááááááááááááátablσá whicΦ begin≤ a⌠ thσ startinτ addres≤ oµ ì
áááááááááááááááááááZ8E (thσ endinτ addres≤ oµ thσ "newó TPA⌐á anΣ ì
áááááááááááááááááááextend≤á downwarΣá iεá memory«á Thσá optiona∞ ì
ááááááááááááááááááábias¼á iµá specified¼á i≤ ß 1╢ bi⌠ valuσ whicΦ ì
áááááááááááááááááááwil∞ bσ addeΣ t∩ thσ 1╢ bi⌠ addres≤ associateΣ ì
áááááááááááááááááááwitΦ eacΦ symbo∞ iε thσ file«á (Iε thi≤ exam-ì
áááááááááááááááááááplσ ß .SY═ filσ i≤ shown╗á however¼ sincσ al∞ ì
áááááááááááááááááááaddresse≤á appearinτ iε ß .SY═ filσ arσá abso-ì
ááááááááááááááááááálutσá thσ optiona∞ bia≤ woulΣ probabl∙ no⌠á bσ ì
áááááááááááááááááááused.)
áááááááááááááááááááUSERFILE.CO═ i≤ loadeΣ a⌠ thσ star⌠ oµ thσ TP┴ ì
áááááááááááááááááááonl∙ afte≥ thσ .SY═ filσ ha≤ beeε reaΣ anΣ thσ ì
ááááááááááááááááááásymbo∞á tablσ built«á
áááááááááááááááááááá
4« A>Z8E USERFILE.CO═ USERFILE.PRN [,bias]
áááááááááááááááááááá
áááááááááááááááááááA≤á iεá thσ previou≤ examplσá USERFILE.CO═á i≤ ì
áááááááááááááááááááloadeΣá a⌠ thσ beginninτ oµ thσá TPA¼á bu⌠á iε ì
áááááááááááááááááááthi≤ instancσ ß .PR╬ filσ i≤ useΣ t∩ construc⌠ ì
áááááááááááááááááááthσá symbo∞ table«á Thσ optiona∞ bia≤ become≤ ì
áááááááááááááááááááver∙á usefu∞ iµ thσ .LS╘ o≥ .PR╬á filσá repre-ì
ááááááááááááááááááásent≤á thσá listinτ oµ ß relocatablσá program« ì
áááááááááááááááááááRelocatablσ program≤ linkeΣ usinτá Microsoft'≤ ì
áááááááááááááááááááLINK-8░ defaul⌠ t∩ ß loaΣ addres≤ oµ 103╚ witΦ ì
áááááááááááááááááááthσá threσá byte≤á oµ memor∙ locateΣá a⌠á 100╚ ì
ááááááááááááááááááácontaininτá ß jum≡ t∩ thσ entr∙ poin⌠á oµá thσ ì
áááááááááááááááááááprogram«á Therefore¼á iµá thσ use≥ supplie≤ ß ì
ááááááááááááááááááábia≤á oµ 10│ iε thσ commanΣ linσ al∞á relocat-ìè áááááááááááááááááááablσá symbol≤ iε thσ filσ wil∞á bσá associateΣ ì
áááááááááááááááááááwitΦá thei≥ actua∞ addresse≤ iεá memory«á An∙ ì
ááááááááááááááááááábia≤á specifieΣá wil∞ onl∙ bσ addeΣá t∩á thosσ ì
ááááááááááááááááááásymbol≤á whicΦ arσ flaggeΣ a≤ codσ relativσ iε ì
áááááááááááááááááááthσ .PR╬ file« ┴ bia≤ wil∞ no⌠ bσ addeΣ t∩ an∙ ì
ááááááááááááááááááásymbo∞á flaggeΣá a≤á ABSOLUTE¼áá EXTERANL¼á O╥ ì
áááááááááááááááááááCOMMON.
áááááááááááááááááááUSERFILE.CO═ i≤ loadeΣ a⌠ thσ star⌠ oµ thσ TP┴ ì
áááááááááááááááááááonl∙ afte≥ thσ .LS╘ o≥ .PR╬ filσ ha≤ beeε reaΣ ì
áááááááááááááááááááanΣ thσ symbo∞ tablσ built.
15
Z8E - Z80 DEBUG MONITOR Rick Surwilo
5« A>Z8E USERFILE.CO═ USERFILE.SY═ [,bias▌ NFILE.LST [,bias]
áááááááááááááááááááá
áááááááááááááááááááThσ truσ powe≥ oµ Z8E'≤ symbo∞ loadinτ i≤ bes⌠ ì
áááááááááááááááááááevidenceΣ wheε loadinτ multiplσ symbo∞á table≤ ì
áááááááááááááááááááfroφá severa∞ files«á Thσ firs⌠ filσ i≤á gen-ì
áááááááááááááááááááerall∙á ß .SY═ filσ specifyinτ al∞ thσá globa∞ ì
ááááááááááááááááááásymbo∞ name≤ iε thσ prograφ t∩ bσ tested« Thσ ì
ááááááááááááááááááásubsequen⌠ file≤ specifieΣ oε thσ commanΣ linσ ì
áááááááááááááááááááarσá usuall∙ .PR╬ o≥ .LS╘ file≤ oµ thσ indivi-ì
ááááááááááááááááááádua∞á sourcσ module≤ tha⌠ werσ originall∙á as-ì
ááááááááááááááááááásembleΣá anΣ theε linkeΣ (whicΦá produceΣá thσ ì
ááááááááááááááááááá.SY═ file)« AlthougΦ onl∙ tw∩ file≤ (USERFIL┼ ì
áááááááááááááááááááanΣ NFILE⌐ arσ showε iε thi≤ example¼ iε actu-ì
áááááááááááááááááááalit∙ thσ numbe≥ oµ .SY═ anΣ .PR╬ file≤ speci-ì
áááááááááááááááááááfieΣá iεá thσ commanΣ linσ i≤ limiteΣ onl∙á b∙ ì
áááááááááááááááááááthσá sizσá oµ Z8E'≤ inpu⌠ buffe≥ whicΦá i≤á 8░ ì
ááááááááááááááááááácharacter≤ long.
áááááááááááááááááááUSERFILE.CO═á i≤ loadeΣ a⌠ thσ star⌠á oµá thσ ì
áááááááááááááááááááTP┴á onl∙á afte≥ al∞ .SY═ anΣ .PRN/.LS╘á file≤ ì
áááááááááááááááááááhavσ beeε reaΣ anΣ thσ symbo∞ tablσ built.
áááááááááááááááááááNote:
áááááááááááááááááááIµ n∩ bia≤ i≤ specified¼á Z8E wil∞ usσ ßá bia≤ ì
áááááááááááááááááááoµ zero«
è Iµá morσ thaε onσ .LS╘ o≥ .PR╬ filσ i≤ beinτá loaded¼á theεá eacΦ ì
filσá namσ caε bσ specifieΣ witΦ it≤ owε bias«á Thσ bia≤ ma∙á bσ ì
entereΣ iε thσ forφ oµ ß symbo∞ name¼ hexadecima∞ number¼ decima∞ ì
number¼á o≥á an∙ combinatiioε oµ thσ threσ iε aε expressioε usinτ ì
thσá ½ anΣ - operators«á Iµ thσ individua∞ modulσ ha≤á ßá globa∞ ì
entr∙á point¼á thσ namσ oµ whicΦ wa≤ previousl∙ loaded¼á thσ use≥ ì
caεá bia≤ al∞ symbol≤ witΦ thσ valuσ associateΣ witΦá thi≤á name« ì
Iεá thi≤á wa∙ al∞ symbols¼á botΦ absolutσá anΣá relocatable¼á arσ ì
associateΣ witΦ thei≥ actua∞ locatioε iε memory.
Z8┼á a≤á presentl∙ configureΣ caε builΣ ß symbo∞ tablσá froφá thσ ì
list files produced by the following programs:
1. Microsoft MACRO-80 V3.37 .PRN Files May 8, 1980
2. Microsoft MACRO-80 V3.44 .PRN Files Dec 9, 1981
3. Microsoft LINK-80 V3.44 .SYM Files Dec 9, 1981
4. SLR Systems Z80ASM V1.07 .LST Files
5. SLR Systems SLRNK V1.07 .SYM Files
Z80AS═ anΣ SLRN╦ ma∙ bσ configureΣ fo≥ 8░ o≥ 13▓ columε output.
Z8┼á use≤ thσ filσ namσ extensioε (thσ threσ character≤ appearinτ ì
t∩ thσ righ⌠ oµ thσ period⌐ t∩ determinσ thσ forma⌠ oµ thσá file« ì
EacΦá oµá thσ abovσ filσ type≤ ha≤ ß distinguishinτá format«á Thσ ì
characteritics of each type are described in APPENDIX A.
16
Z8E - Z80 DEBUG MONITOR Rick Surwilo
Durinτ thσ loadinτ proces≤ Z8E display≤ statu≤ anΣ erro≥ message≤ ì
oεá thσá consolσ relatinτ t∩ thσ activit∙ iεá progres≤á a≤á showε ì
below:
áááááááá STATUS MESSAGE DESCRIPTION
1. Loading: USERFILE.COM áááááááááZ8Eá i≤ attemptinτ t∩ opeε ì
áááááááááááááááááááááááááááááááááááááááthσá nameΣá filσ (iεá thi≤ ì
ááááááááááááááááááááááááááááááááááááááácase, USERFILE.COM)
2. Number of symbols loaded: Followinτá thσ loadinτá oµ ì
áááááááááááááááááááááááááááááááááááááááal∞ symbol≤ froφ ß listinτ ì
áááááááááááááááááááááááááááááááááááááááfilσá o≥á ß .SY═ filσ, thσ ì
ááááááááááááááááááááááááááááááááááááááánumbe≥á oµ symbol≤á loadeΣ ì
áááááááááááááááááááááááááááááááááááááááfroφ thσ specifieΣ filσ i≤ ì
ááááááááááááááááááááááááááááááááááááááádisplayeΣá a≤á ßáá decima∞ ì
ááááááááááááááááááááááááááááááááááááááánumber.è
3. Loaded: 100 YYYY Z8E display≤ thσá startinτ ì
ááááááááááPages:á ZZZá ááááááááááááááááanΣá endinτ memor∙ addres-ì
áááááááááááááááááááááááááááááááááááááááse≤á oµá thσá targe⌠á filσ ì
ááááááááááááááááááááááááááááááááááááááá(thσ firs⌠ filσá specifieΣ ì
áááááááááááááááááááááááááááááááááááááááoεá thσ CP/═ commanΣá linσ ì
áááááááááááááááááááááááááááááááááááááááanΣ thσ onσ whicΦ i≤ goinτ ì
ááááááááááááááááááááááááááááááááááááááát∩ bσ debugged).
áááááááááááááááááááááááááááááááááááááá"Pages:óáá refer≤á t∩á thσ ì
ááááááááááááááááááááááááááááááááááááááádecima∞á numbe≥á oµá page≤ ì
áááááááááááááááááááááááááááááááááááááááanΣá i≤ thσ coun⌠á oµá 25╢ ì
ááááááááááááááááááááááááááááááááááááááábytσá page≤á iε thσá file« ì
áááááááááááááááááááááááááááááááááááááááThi≤ numbe≥ ma∙ bσ subse-ì
áááááááááááááááááááááááááááááááááááááááquentl∙ useΣ witΦ thσ CP/═ ì
áááááááááááááááááááááááááááááááááááááááSAV┼ commanΣ oncσ thσá de-ì
ááááááááááááááááááááááááááááááááááááááábuτ sessioε ends«
ERROR MESSAGE DESCRIPTION
1.á File not foundáááááááááááááááThσá filσ specifieΣ iε thσ ì
ááááááááááááááááááááááááááááááááááááááácommanΣ coulΣ no⌠ bσ founΣ ì
áááááááááááááááááááááááááááááááááááááááoε thσ specifieΣ drive.
2.á Symbol table not foundáááááááThσáá specifieΣá filσá wa≤ ì
áááááááááááááááááááááááááááááááááááááááfounΣ bu⌠ diΣ no⌠á contaiε ì
áááááááááááááááááááááááááááááááááááááááßá properl∙ formatteΣ sym-ì
ááááááááááááááááááááááááááááááááááááááábo∞ table.
3.á Invalid offset - using 0000 Thσá use≥ ha≤ specifieΣ aε ì
áááááááááááááááááááááááááááááááááááááááinvaliΣ offse⌠ t∩ bσ addeΣ ì
ááááááááááááááááááááááááááááááááááááááát∩ eacΦ loadeΣ symbol« Z8E ì
áááááááááááááááááááááááááááááááááááááááwil∞ continuσ t∩ loaΣ thi≤ ì
ááááááááááááááááááááááááááááááááááááááásymbo∞á filσ bu⌠ wil∞á no⌠ ì
áááááááááááááááááááááááááááááááááááááááadΣá an∙ bia≤ t∩ thσá sym-ì
17
Z8E - Z80 DEBUG MONITOR Rick Surwilo
ááááááááááááááááááááááááááááááááááááááábols« Thi≤ erro≥ ma∙ havσ ì
áááááááááááááááááááááááááááááááááááááááoccureΣá becausσ thσá use≥ ì
áááááááááááááááááááááááááááááááááááááááspecifieΣ aε offse⌠ iε thσ ì
áááááááááááááááááááááááááááááááááááááááforφ oµ ß symbo∞ whicΦ haΣ ì
áááááááááááááááááááááááááááááááááááááááno⌠ááá beeεáááá previousl∙ ì
áááááááááááááááááááááááááááááááááááááááloaded¼á o≥á thσ use≥á ma∙ ì
áááááááááááááááááááááááááááááááááááááááhavσá specifieΣ ßá numeriπ ìè ááááááááááááááááááááááááááááááááááááááávaluσá whicΦ containeΣá aε ì
áááááááááááááááááááááááááááááááááááááááillega∞ character.
4. Syntax Error Thσá filσ namσ wa≤á incor-ì
ááááááááááááááááááááááááááááááááááááááárectl∙ specified«
Afte≥á al∞ use≥ files¼á botΦ symbo∞ file≤ anΣ thσ .CO═ filσ t∩ bσ ì
debugged¼á havσ beeε loadeΣ Z8E display≤ curren⌠ memor∙ usagσá a≤ ì
follows:
Total Symbols: XXXX
Symbol Table: XXXX - XXXX
Z8E relocated: XXXX - XXXX
Top of memory: XXXX ááá
I⌠á i≤ importan⌠ t∩ notσ tha⌠ Z8E expect≤ thσ file≤ appearinτá iε ì
thσá commanΣá linσ t∩ bσ appea≥ iε ß specifiπ order«á Thσá firs⌠ ì
filσá namσá appearinτ iε thσ commanΣ linσ i≤ assumeΣá t∩á bσá thσ ì
targe⌠ filσ whicΦ i≤ t∩ bσ debugged«á I⌠ i≤ alway≤ thσ las⌠ filσ ì
t∩á bσ loaded«á Al∞ filσ name≤ followinτ thσ targe⌠ filσ namσ arσ ì
assumeΣ t∩ bσ symbo∞ inpu⌠ file≤ anΣ the∙ arσ loadeΣ iε thσ orde≥ ì
iε whicΦ the∙ appear.
Thσá firs⌠á filσá nameΣá iε thσ commanΣá linσá i≤á alway≤á loadeΣ ì
startinτ a⌠ addres≤ 10░ hex«á Thσ "Ió commanΣ contain≤ aε optioε ì
t∩á allo≈á thσ filσ t∩ bσ loadeΣ a⌠ ßá differen⌠á address«á Thi≤ ì
feature is not available at the CP/M command line level.
Fo≥ ß discussioε oµ thσ forma⌠ oµ symbo∞ file≤ seσ APPENDI╪ A.
18
è
Z8E - Z80 DEBUG MONITOR Rick Surwilo
This Page Intentionally Left Blank.
è
19
Z8E - Z80 DEBUG MONITOR Rick Surwilo
IV. INITIALIZATION
Oncσ Z8E ha≤ beeε loaded¼ anΣ ha≤ iε turε loadeΣ al∞ file≤ speci-ì
fieΣ oε thσ commanΣ line¼á i⌠ initialize≤ al∞ use≥ register≤ t∩ ░ ì
witΦ thσ followinτ exceptions:
Thσá user'≤ prograφ counte≥ contain≤ addres≤á 10░á he° ì
áááááwhicΦ i≤ thσ star⌠ oµ thσ TPA«á
áááááThσá user'≤á stacδ pointe≥ i≤ se⌠ t∩ thσ startinτá ad-ì
ááááádres≤á oµ Z8┼ (thσ to≡ oµ thσ TPA⌐ minu≤á two«á Thesσ ì
ááááátw∩á byte≤á arσ se⌠ t∩ zer∩ iεá accordancσá witΦá CP/═ ì
áááááconvention«á Wheε CP/═ load≤ ß prograφ i⌠ initialize≤ ì
áááááßá stacδ fo≥ thσ loadeΣ prograφ b∙ pushinτ thσ addres≤ ì
áááááoµá thσ jum≡ t∩ thσ systeφ warφ boo⌠ routinσ ont∩á it« ì
áááááThu≤ use≥ program≤ (STAT.CO═ i≤ aε example⌐ caε choosσ ì
ááááát∩ terminatσ themselve≤ anΣ returε t∩ CP/═ b∙á execu-ì
ááááátinτá aε RE╘ througΦ thi≤ addres≤ oε thσá stack«á Z8┼ ì
áááááaccomplishe≤á thσá samσ objective║á thσ 000░á oεá thσ ì
ááááástacδá permit≤ thσ use≥ prograφ t∩ returε t∩ CP/═á viß ì
áááááaddres≤á 000░á whicΦá alway≤ contain≤ ßá jum≡á t∩á thσ ì
ááááásystem'≤ warφ boo⌠ routine«
ááááá
áááááThσá use≥á ╔ (interrupt⌐ registe≥ i≤ se⌠ t∩ thσá valuσ ì
ááááácontaineΣá iεá thσá ╔ registe≥ wheεá Z8Eá wa≤á loaded« ì
áááááModif∙ a⌠ you≥ owε risk.
Al∞á inpu⌠ anΣ outpu⌠ b∙ Z8E i≤ accomplisheΣ usinτá buffer≤á con-ì
taineΣ withiε itself« Z8E doe≤ no⌠ usσ thσ defaul⌠ DM┴ buffe≥ a⌠ ì
absolutσá locatioεá 8░ no≥ doe≤ i⌠ usσ thσ defaul⌠á Filσá Contro∞ ì
Blocδá (FCB⌐á a⌠ absolutσ locatioε 5C.
Note:
áááááááááááWheεá CP/═ finishe≤ loadinτá an∙á program¼ ì
áááááááááááincludinτá Z8E¼á i⌠ move≤ thσ commanΣ linσ ì
ááááááááááátai∞ t∩ thσ defaul⌠ DM┴ buffe≥ a⌠ absolutσ ì
áááááááááááaddres≤á 8░ (hex⌐ anΣ initialize≤ thσá de-ìè áááááááááááfaul⌠á FC┬ a⌠ absolutσ addres≤ 5├á t∩á thσ ì
ááááááááááánamσ oµ thσ firs⌠ filσ (o≥ firs⌠ tw∩ file≤ ì
áááááááááááiµ tw∩ o≥ morσ arσ specified⌐ appearinτ iε ì
áááááááááááthσ commanΣ line«á Z8E make≤ usσ oµ thi≤ ì
áááááááááááinformatioεá iεá orde≥ t∩ loaΣá thσá use≥ ì
áááááááááááprograφá anΣá an∙ symbo∞á files«á Iµá thσ ì
áááááááááááprograφá t∩ bσ testeΣ als∩ expect≤ aε ini-ì
ááááááááááátializeΣ FC┬ and/o≥ DM┴ buffe≥ (a≤ i≤ ver∙ ì
áááááááááááofteε thσ case)¼ theε thσ use≥ mus⌠ effec⌠ ì
áááááááááááthi≤á beforσá attemptinτá t∩á executσá thσ ì
áááááááááááprogram«á
áááááááááááFo≥á example¼á man∙ tex⌠ editinτá program≤ ì
áááááááááááarσá invokeΣá b∙á typinτ thσ namσá oµá thσ ì
áááááááááááedito≥ prograφ followeΣ b∙ thσ namσ oµ thσ ì
20
Z8E - Z80 DEBUG MONITOR Rick Surwilo
áááááááááááprograφ t∩ edi⌠ oε thσ CP/═ commanΣá line¼ ì
áááááááááááa≤ iε hypothetica∞ case:
ááááááááááá A>EDIT B:FYL2EDIT.BAS
áááááááááááOncσ thσ prograφ EDIT.CO═ i≤ loadeΣ i⌠ ma∙ ì
áááááááááááexpec⌠á t∩ finΣ thσ defaul⌠ FC┬ t∩ bσá al-ì
áááááááááááread∙ááá se⌠áá u≡áá t∩áá reaΣáá thσáá filσ ì
áááááááááááFYL2EDIT.BAS«á EDIT.CO═á ma∙ als∩á expec⌠ ì
áááááááááááthσá DM┴ buffe≥ t∩ contaiε thσá numbe≥á oµ ì
ááááááááááácharacter≤á iε thσ commanΣ linσ a⌠ addres≤ ì
ááááááááááá80¼á a≤á wel∞ thσ thσ tex⌠ oµ thσá commanΣ ì
ááááááááááálinσ startinτ a⌠ addres≤ 81« Iε thi≤ exam-ì
áááááááááááplσá locatioε 8░ woulΣ contaiε ßá hexadec-ì
áááááááááááima∞ ╞ (decima∞ 15⌐ representinτ thσá num-ì
ááááááááááábe≥áá oµá characters¼áá anΣá location≤á 8▒ ì
áááááááááááthrougΦ 8╞ woulΣ contaiε thσ 1╡ character≤ ì
ááááááááááá(spacσ througΦ S)«á Similiarly¼á thσ firs⌠ ì
ááááááááááábytσá oµá thσ defaul⌠ FC┬á a⌠á addres≤á 5├ ì
áááááááááááwoulΣá contaiε thσ numbe≥ ▒ (numeriπ equi-ì
ááááááááááávalen⌠á oµ drivσ B⌐ anΣ thσ nex⌠ 1▒á byte≤ ì
áááááááááááwoulΣá contaiε thσ filσ namσá FYL2EDI╘á iε ì
áááááááááááASCII«á Iµá thσ namσ FYL2EDI╘ wa≤ shorte≥ ì
áááááááááááthaε ╕ characters¼á theε thσ remainde≥á oµ ì
áááááááááááthσá filσá namσ fielΣ iε thσ FC┬ woulΣá bσ ì
áááááááááááfilleΣ witΦ ASCI╔ spaces« Thσ nex⌠ │ byte≤ ì
áááááááááááwoulΣ contaiε thσ filσ typσ iεá ASCII╗á iε ì
áááááááááááthi≤á examplσ thσ filσ typσ i≤ BAS«á Iµ n∩ ì
áááááááááááfilσ typσ wa≤ specified¼á thi≤ fielΣ woulΣ ìè ááááááááááácontaiε │ ASCI╔ spaces.
áááááááááááNow¼á iµá thσá use≥ wa≤ t∩ debuτ thσá EDI╘ ì
áááááááááááprograφ usinτ Z8E¼á thi≤ initializatioε oµ ì
áááááááááááthσá defaul⌠á DM┴ buffe≥ anΣá defaul⌠á FC┬ ì
ááááááááááámus⌠á bσ accomplisheΣ "b∙ handóá prio≥á t∩ ì
áááááááááááattemptinτ t∩ debuτ EDIT.COM¼ owinτ t∩ thσ ì
áááááááááááfac⌠ tha⌠ CP/═ ha≤ alread∙ se⌠ u≡ thesσ t∩ ì
áááááááááááarea≤á witΦ thσ datß froφ thσ commanΣ linσ ì
áááááááááááwhicΦ wa≤ typeΣ iε t∩ loaΣ Z8E« Iε short¼ ì
áááááááááááEDI╘ mus⌠ bσ trickeΣ int∩ believinτ i⌠ wa≤ ì
áááááááááááloadeΣ b∙ CP/═ anΣ no⌠ b∙ Z8┼ anΣ thσ use≥ ì
ááááááááááámus⌠á perforφ thσ initializatioε oµá thesσ ì
ááááááááááátw∩ areas« Thσ use≥ ma∙ usσ thσ ┼ commanΣ ì
ááááááááááá(t∩á storσ botΦ ASCI╔ anΣ numeriπ datßá iε ì
ááááááááááámemory⌐ t∩ simulatσ aε initializeΣ commanΣ ì
ááááááááááálinσ buffe≥ anΣ FCB«á Furthe≥ informatioε ì
áááááááááááregardinτá thσ forma⌠ oµ thσ FC┬á anΣá DM┴ ì
ááááááááááábuffe≥á ma∙ mσ founΣ iε Digita∞ Research'≤ ì
áááááááááááCP/═ 2.░ INTERFAC┼ GUIDE.
21
Z8E - Z80 DEBUG MONITOR Rick Surwilo
DEBUGGING HINT:
I⌠á i≤á no⌠ necessar∙ t∩ initializσ thσ defaul⌠á FC┬á and/o≥á thσ ì
defaul⌠á (commanΣá line⌐á DM┴ buffe≥ ever∙ timσ ß prograφá t∩á bσ ì
testeΣ i≤ loadeΣ (iµ indeeΣ thi≤ prograφ utilize≤ them)« InsteaΣ ì
follo≈ thσ procedurσ listeΣ belo≈ (Iµ yo⌡ haven'⌠ reaΣ thσá indi-ì
vidua∞ commanΣ summarie≤ thσ followinτ ma∙ makσ morσ sensσ later):
ááááááááááOncσá yo⌡á havσá loadeΣ thσ prograφá t∩á tes⌠ ì
ááááááááááperforφá thσ requireΣ initializatioεá oµá thσ ì
ááááááááááFCB'≤á a⌠á 5C╚ anΣ 6C╚ anΣ thσá commanΣá linσ ì
áááááááááábuffe≥á a⌠ 80╚ usinτ thσ ┼ command«á Usσá thσ ì
ááááááááááASCI╔ strinτ optioε witΦ thσ ┼ commanΣ t∩ se⌠ ì
ááááááááááthσá tex⌠á portions«á Usσ thσá numeriπá inpu⌠ ì
ááááááááááfunctioε t∩ intializσ thσ drivσ specificatioε ì
ááááááááááa⌠ addres≤ 5├ anΣ thσ characte≥ coun⌠ a⌠ 80H«
ááááááááááUsσá thσ ╫ commanΣ t∩ writσ ou⌠ memor∙ start-ìè ááááááááááinτ a⌠ addres≤ ZERO« A≤ in:
*W NEWFILE.COM 0 XXXX
ááááááááááWherσ XXX╪ i≤ thσ highes⌠ addres≤ yo⌡ wisΦ t∩ ì
áááááááááásave«á No≈ thσ nex⌠ timσ yo⌡ loaΣ thi≤á filσ ì
áááááááááái⌠á wil∞ oµ coursσ loaΣ a⌠ addres≤ 100H«á Usσ ì
ááááááááááthσá ═á (movσ memor∙ command⌐ t∩ movσá i⌠á t∩ ì
áááááááááálocatioε 0000«á You≥ FC┬ anΣ DM┴ buffe≥á arσ ì
ááááááááááinitialized«
*M 100 XXXX+100 0
SPECIA╠ NOTE║á Iµ yo⌡ havσ Z8┼ versioε 1.┤ o≥ late≥ theε yo⌡ ma∙ ì
ááááááááusσ thσ ╔ (initialize⌐ commanΣ t∩ d∩ mos⌠ oµ thσ work« Iε nearl∙ ì
ááááááááal∞á case≤ thσ ╔ commanΣ provide≤ thσ simples⌠ methoΣ fo≥ settinτ ì
ááááááááu≡á thσá commanΣ tai∞ anΣ FC┬ filσ namσ field≤á afte≥á loadinτá ß ì
ááááááááprogram.
22
Z8E - Z80 DEBUG MONITOR Rick Surwilo
This Page Intentionally Left Blank.
è
23
è
Z8E - Z80 DEBUG MONITOR Rick Surwilo
V. COMMAND INPUTáá
Oncσá filσá anΣá symbo∞ tablσ loadinτá ha≤á beeεá completed¼á Z8E ì
prompt≤á thσá operato≥ fo≥ commanΣ inpu⌠ b∙á displayinτá thσá "*ó ì
character« Thσ operato≥ caε theε typσ an∙ oµ Z8E'≤ singlσ lette≥ ì
commands«á Somσá command≤ requirσ n∩ argument≤ whilσ other≤á re-ì
quirσ betweeε onσ anΣ four« Argument≤ ma∙ bσ iε an∙ oµ thσ form≤ ì
listeΣá belo≈ (excep⌠ a≤ noteΣ iε thσ descriptioε oµ thσá indivi-ì
dua∞ commands)║
SYMBOL:áááááá An∙á symbo∞ previousl∙ loadeΣá o≥á previousl∙ ì
ááááááááááááááááááááentereΣá viß thσ keyboarΣ (seσ ┴ command⌐ ma∙ ì
ááááááááááááááááááááappea≥ a≤ ß commanΣ argument« Al∞ symbol≤ arσ ì
áááááááááááááááááááátreateΣ a≤ 1╢ bi⌠ values.
áááááááááááááááááááá
HEX: ┴á 1╢á bi⌠á he° numbe≥ ma∙ bσ entereΣá a≤á aε ì
ááááááááááááááááááááargument«á Onl∙ thσ las⌠ fou≥ character≤á en-ì
áááááááááááááááááááátereΣ arσ treateΣ a≤ significan⌠ inpu⌠ iµ Z8E ì
áááááááááááááááááááái≤á expectinτá ß 1╢ bi⌠á argument«á Iεá thosσ ì
ááááááááááááááááááááinstance≤ wherσ Z8E expect≤ ß ╕ bi⌠ argument¼ ì
ááááááááááááááááááááonl∙ thσ las⌠ tw∩ character≤ arσ significant« ì
ááááááááááááááááááááA≤á such¼á thσ use≥ ma∙ elec⌠ t∩ correc⌠ mis-ì
áááááááááááááááááááátake≤ b∙ eithe≥ backspacinτ anΣ retyping¼á o≥ ì
ááááááááááááááááááááb∙á continuinτ t∩ ente≥ thσ numbe≥ anΣá ensu-ì
áááááááááááááááááááárinτá tha⌠ thσ erroneou≤ digi⌠ doe≤ no⌠á ap-ì
áááááááááááááááááááápea≥á iε thσ rightmos⌠ fou≥ (o≥ two⌐á charac-ì
ááááááááááááááááááááter≤ a≤ showε iε thσ followinτ example:
áááááááááááááááááááá áá*E 1E21F4
áááááááááááááááááááá áááááááááIµá ß 1╢ bi⌠ argumen⌠á i≤á expecteΣ ì
ááááááááááááááááááááááááááááááZ8Eá woulΣá ignorσá thσá firs⌠á tw∩ ì
áááááááááááááááááááááááááááááádigit≤á (▒ anΣ E⌐ anΣ woulΣ examinσ ì
ááááááááááááááááááááááááááááááthσá content≤á oµá memor∙á locatioε ì
áááááááááááááááááááááááááááááá21F4.
ááááááááááááááááááááIµá n∩ symbo∞ tablσ i≤ presen⌠ iε memor∙ theε ì
ááááááááááááááááááááhexadecima∞ number≤ (╕ o≥ 1╢ bit≤ iεá length⌐ ì
ááááááááááááááááááááma∙ begiε witΦ an∙ digi⌠ ░ - F«á However¼ iµ ì
ááááááááááááááááááááßá symbo∞ tablσ i≤ iε memor∙ theε al∞ hexade-ì
áááááááááááááááááááácima∞ number≤ whicΦ begiε witΦ ß digi⌠ iε thσ ì
áááááááááááááááááááárangσá ┴á - ╞ arσ evaluateΣ firs⌠á a≤á symbo∞ ì
áááááááááááááááááááánames«á Iµ n∩ correspondinτ namσ i≤ founΣ iε ì
ááááááááááááááááááááthσ symbo∞ tablσ theε Z8┼ attempt≤ t∩ reeval-ì
ááááááááááááááááááááuatσ thσ namσ a≤ ß hexadecima∞á number«á Fo≥ ì
ááááááááááááááááááááexample¼á thσá tokeεá DEA─ i≤ ß valiΣá symbo∞ ìè ááááááááááááááááááááname≤ a≤ wel∞ a≤ ß valiΣ hexadecima∞á number« ì
ááááááááááááááááááááIµá ß symbo∞ tablσ i≤ presen⌠ theε Z8┼á firs⌠ ì
áááááááááááááááááááásearche≤á thσá symbo∞ tablσ lookinτá fo≥á thσ ì
áááááááááááááááááááástrinτá DEAD.á Iµá n∩ matcΦ occur≤ theεá Z8┼ ì
24
Z8E - Z80 DEBUG MONITOR Rick Surwilo
áááááááááááááááááááátreat≤ DEA─ a≤ thσ hexadecima∞ numbe≥á 0DEAD« ì
ááááááááááááááááááááT∩á forcσá Z8┼ t∩ evaluatσ aε argumen⌠á a≤á ß ì
ááááááááááááááááááááhexadecima∞ numbe≥ prefi° thσ argumen⌠ witΦ ß ì
ááááááááááááááááááááleadinτ zer∩ a≤ iε 0DEAD«
REGISTER: ValiΣ Z8░ 1╢ bi⌠ registe≥ name≤ arσá permit-ì
ááááááááááááááááááááteΣá a≤ arguments«á Iµ ß 1╢ bi⌠ registe≥ namσ ì
áááááááááááááááááááái≤á entered¼áá Z8Eá use≤á thσá 1╢á bi⌠á valuσ ì
áááááááááááááááááááácurrentl∙ containeΣ iε thσ specifieΣ registe≥ ì
áááááááááááááááááááápai≥á iε thσ user'≤ registe≥ se⌠ a≤ aεá argu-ì
ááááááááááááááááááááment«
áááááááááááááááááááá *D HL 8
ááááááááááááááááááááááááááááááinstruct≤á Z8┼á t∩ dum≡á thσá firs⌠ ì
ááááááááááááááááááááááááááááááeigh⌠á oµá memor∙ byte≤á whicΦá arσ ì
áááááááááááááááááááááááááááááálocateΣ a⌠ thσ addres≤ containeΣ iε ì
ááááááááááááááááááááááááááááááthσ user'≤ H╠ registe≥ pair
Valid 16 bit register names:
AF - Accumulator and Flag
BC - BC register pair
DE - DE register pair
HL - HL register pair
SP - Stack Pointer
P - Program Counter
PC - Program Counter
IX - IX index register
IY - IY index register
ááááááááááááááááááááNotσá tha⌠ thσ prograφ counte≥ ma∙ bσá speci-ì
ááááááááááááááááááááfieΣ iε eithe≥ oµ tw∩ ways«á Thσ singlσ cha-ì
ááááááááááááááááááááracte≥ "Pó caε bσ useΣ t∩ specif∙ thσ prograφ ì
áááááááááááááááááááácounte≥á provideΣá i⌠ doe≤ no⌠ appea≥á iεá aε ì
ááááááááááááááááááááexpression«á T∩ includσ thσ curren⌠ valuσ oµ ì
ááááááááááááááááááááthσá user'≤ prograφ counte≥ iε aεá expressioε ì
ááááááááááááááááááááthσ mnemoniπ "PCó mus⌠ bσ used.è
ááááááááááááááááááááIµ aε expressioε useΣ a≤ aε argumen⌠ contain≤ ì
ááááááááááááááááááááßá registe≥á pai≥ a≤ onσ oµá it≤á terms¼á thσ ì
ááááááááááááááááááááregiste≥ pai≥ mus⌠ bσ thσ firs⌠ term«á Also¼ ì
ááááááááááááááááááááonl∙á onσ registe≥ pai≥ ma∙ bσ includeΣ iε aε ì
ááááááááááááááááááááexpression:
áááááááááááááááááááá HL+4 valid expression
áááááááááááááááááááá 5+DE invaliΣ expressioε - registe≥ ì
ááááááááááááááááááááááááááááááááááápai≥ i≤ no⌠ thσ firs⌠ term
áááááááááááááááááááááááá
ááááááááááááááááááááááááHL+BC áááááinvaliΣáá expressioεá - morσ ì
áááááááááááááááááááááááááááááááááááthaεá onσá registe≥ pai≥á wa≤ ì
25
Z8E - Z80 DEBUG MONITOR Rick Surwilo
áááááááááááááááááááááááááááááááááááspecified
áááááááááááááááááááááááááP-3ááááá invaliΣáá expressioεáá - "PCó ì
ááááááááááááááááááááááááááááááááááámus⌠á bσ useΣ t∩ includσá thσ ì
ááááááááááááááááááááááááááááááááááácurren⌠á valuσ oµ thσ prograφ ì
ááááááááááááááááááááááááááááááááááácounter in an expression
ááááááááááááááááááááááááááááááááááá
ááááááááááááááááááááT∩áá differentiatσá betweeεá thσá hexadecima∞ ì
áááááááááááááááááááánumber≤ AF¼á BC¼á anΣ D┼ anΣ thσ Z8░ registe≥ ì
áááááááááááááááááááápair≤ oµ thσ samσ namσ bσ surσ t∩ prefi°á thσ ì
áááááááááááááááááááánumerica∞ versioε witΦ ß leadinτ 0.
ááááááááááááááááááááNotσá als∩ tha⌠ thσ Z8░ primσ registe≥á name≤ ì
ááááááááááááááááááááarσá no⌠ alloweΣ a≤ argument≤ excep⌠ iε thσ ╥ ì
áááááááááááááááááááácommand.
áááááREGISTERá Z8┼ allow≤ thσ use≥ t∩ specif∙ thσ datßá con-ì
INDIRECT: áááátaineΣ iε thσ memor∙ locatioε pointeΣ t∩ b∙ ß ì
ááááááááááááááááááááregiste≥ pai≥ a≤ aε argument«á Fo≥ instance¼ ì
ááááááááááááááááááááiµ thσ user'≤ H╠ registe≥ pai≥ containeΣ 18E┼ ì
ááááááááááááááááááááanΣ thσ addresse≤ 18E┼ anΣ 18E╞ containeΣ thσ ì
áááááááááááááááááááábyte≤á 4▓ anΣ 6▒ respectively¼á theε thσ com-ì
áááááááááááááááááááámanΣ *┼ (HL⌐ woulΣ examinσ thσá content≤ ì
ááááááááááááááááááááoµá memor∙ locatioε 6142«á Notσ tha⌠ registe≥ ì
ááááááááááááááááááááindirec⌠á memor∙ reference≤ arσ indicateΣá b∙ ì
ááááááááááááááááááááenclosinτá thσ registe≥ pai≥ namσá iεá PAREN-ì
ááááááááááááááááááááTHESE╙ whicΦ follow≤ thσ ZILO╟ mnemoniπ meth-ìè ááááááááááááááááááááoΣ oµ signifyinτ "thσ content≤ of".
ááááááááááááááááááááThσá mos⌠ usefu∞ applicatioε oµ registe≥á in-ì
áááááááááááááááááááádirec⌠á argument≤á i≤ t∩ se⌠á breakpoint≤á a⌠ ì
áááááááááááááááááááásubroutinσá returε addresses«á Conside≥á thσ ì
áááááááááááááááááááásituatioεá oµá ß prograφ whicΦá i≤á currentl∙ ì
áááááááááááááááááááásuspendeΣá viß ß breakpoin⌠ somewherσ iεá thσ ì
áááááááááááááááááááámiddlσá oµá ßá subroutine«á Thσ use≥á i≤á n∩ ì
áááááááááááááááááááálonge≥á interesteΣ debugginτ thσ bod∙ oµá thσ ì
áááááááááááááááááááásubroutine╗á hσ onl∙ care≤ abou⌠ gettinτ bacδ ì
áááááááááááááááááááát∩ thσ instructioε tha⌠ follow≤ thσ CAL╠ tha⌠ ì
áááááááááááááááááááágo⌠á hiφ int∩ thσ subroutine«á Registe≥á in-ì
áááááááááááááááááááádirec⌠ forma⌠ allow≤ hiφ t∩ enter:
áááááááááááááááááááá *B (SP)
ááááááááááááááááááááThi≤á inform≤ Z8┼ t∩ se⌠ ß breakpoin⌠ a⌠á thσ ì
ááááááááááááááááááááaddres≤á pointeΣá t∩á b∙á thσá stacδá pointe≥ ì
ááááááááááááááááááááregister.
áááá DECIMAL: Decima∞ number≤ iε thσ rangσ ░ - 6553╡ ma∙ bσ ì
ááááááááááááááááááááentereΣ a≤ arguments«á Al∞ digit≤ oµ thσ num-ì
áááááááááááááááááááábe≥á mus⌠á bσ iε thσ rangσá 0-9«á ┴á decima∞ ì
áááááááááááááááááááánumbe≥á mus⌠ bσ followeΣ b∙ ß "#óá character¼ ì
26
Z8E - Z80 DEBUG MONITOR Rick Surwilo
ááááááááááááááááááááotherwisσ Z8E wil∞ trea⌠ i⌠ a≤ ß he°á number« ì
ááááááááááááááááááááThσá followinτ examplσ show≤ ß decima∞ numbe≥ ì
áááááááááááááááááááábeinτ inpu⌠ a≤ par⌠ oµ thσ ┼ command:
ááááááááááááááááá*E 512#
áááááááááááááááááááá
ááááááááááááááááááááááááááááááinstruct≤á Z8Eá t∩á examinσá memor∙ ì
áááááááááááááááááááááááááááááálocatioεá 51▓ decima∞ (200 hex)
LITERAL: á ASCI╔á literal≤ u≡ t∩ 7╕ byte≤ iε lengtΦá arσ ì
áááááááááááááááááááápermitteΣ a≤ argument≤ (Z8E'≤ inpu⌠ buffe≥ i≤ ì
áááááááááááááááááááá8░á character≤á lonτá les≤á thσá openinτá anΣ ì
áááááááááááááááááááátrailinτá quotσ characters)«á ASCI╔ literal≤ ì
áááááááááááááááááááámus⌠ bσ encloseΣ iε quotes«á Thσ quotσ char-ì
ááááááááááááááááááááacte≥á itselµ i≤ thσ onl∙ characte≥ no⌠á per-ì
áááááááááááááááááááámitteΣ a≤ ß literal«á Command≤ whicΦ d∩á no⌠ ì
áááááááááááááááááááápermi⌠á thσ usσ oµ ARGUMENT-STRING≤ (seσá be-ìè áááááááááááááááááááálow⌐á wil∞ stil∞ accep⌠ inpu⌠ iε thσ forφá oµ ì
ááááááááááááááááááááquoteΣá strings«á Iεá sucΦ ß casσá Z8┼á wil∞ ì
ááááááááááááááááááááignorσ al∞ bu⌠ thσ las⌠ tw∩ character≤ oµ thσ ì
ááááááááááááááááááááquoteΣá literal¼á treatinτ thσ inpu⌠ a≤ ßá 1╢ ì
áááááááááááááááááááábi⌠ number« Fo≥ examplσ iµ thσ use≥ entered:
áááááááááááááááááááá áááááááááá *Z 'ABCD'
ááááááááááááááááááááZ8┼ woulΣ begiε trea⌠ 'BCº a≤ ß 1╢ bi⌠ numbe≥ ì
ááááááááááááááááááááand begin disassembling at address at 4243.
ááARGUMENT-á áááááá Thσ ╞ (find)¼á ┼ (examinσ memory)¼á ╬á (quer∙ ì
ááSTRINGS:ááááááááááI/╧á port≤ withou⌠ pre-read)¼á ╤ (quer∙ I/╧ ì
ááááááááááááááááááááports)¼á anΣá ┘ (fil∞ memory⌐ command≤ permi⌠ ì
ááááááááááááááááááááthσ usσ oµ ARGUMENT-STRINGS¼ whicΦ arσ simpl∙ ì
áááááááááááááááááááácombination≤á oµá al∞á valiΣá argumen⌠á type≤ ì
ááááááááááááááááááááseparateΣ b∙ commas« ARGUMENT-STRING≤ ma∙ bσ ì
ááááááááááááááááááááan∙á lengtΦá u≡ t∩ thσ limi⌠ oµá Z8E'≤á inpu⌠ ì
áááááááááááááááááááábuffe≥á whicΦ i≤ 8░á byte≤á long«á ARGUMENT-ì
ááááááááááááááááááááSTRING≤á ma∙á bσ terminateΣ b∙ eithe≥ ßá car-ì
ááááááááááááááááááááriagσ returε o≥ thσ firs⌠ spacσ characte≥ no⌠ ì
ááááááááááááááááááááappearinτá iε betweeε quotσ characters«á Thσ ì
ááááááááááááááááááááfollowinτáá i≤á aεá examplσá oµá ßá 1╡áá bytσ ì
ááááááááááááááááááááARGUMENT-STRING╙á strinτ whicΦ combine≤á SYM-ì
ááááááááááááááááááááBOLS¼ LITERALS¼ HEX¼ anΣ DECIMA╠ numbers:
áááááááááááááááááááá SYMBOL,'xyZ',4F,12E4,9,21#,511#,'ABc'
ááááááááááááááááááááAssuminτá tha⌠ SYMBO╠ i≤ equa∞ t∩á 177╚á theε ì
ááááááááááááááááááááthe above ARGUMENT-STRING would evaluate to:
áááááááááááááááááááá
áááááááááááááááááááá01 77 78 79 5A 4F 12 E4 09 15 01 FF 41 42 63
Again¼á ARGUMENT-STRING╙á arσá terminateΣá b∙ ì
ááááááááááááááááááááeithe≥á ßá carriagσ returε o≥á b∙á thσá firs⌠ ì
ááááááááááááááááááááspacσá characte≥á tha⌠ doe≤ no⌠ appea≥á iεá ß ì
27
Z8E - Z80 DEBUG MONITOR Rick Surwilo
ááááááááááááááááááááquoteΣ litera∞ string.
Z8E permit≤ expression≤ usinτ thσ ½ anΣ - operators«á An∙ argu-ì
men⌠ typσ ma∙ bσ combineΣ witΦ an∙ othe≥ type«á Thσ lengtΦ oµ aε ì
expressioεá i≤á limiteΣá onl∙ b∙ thσ sizσ oµá thσá inpu⌠á buffer« ì
Expression≤á arσá evaluateΣá froφ left to right anΣá thσá usσá oµ ì
parenthese≤ i≤ no⌠ permitted« è
Z8Eá indicate≤ argumen⌠ error≤ b∙ printinτ ß questioε marδ.
Arguments ma∙á bσá line-editeΣ usinτ thσá standarΣá CP/═á contro∞ ì
characters:
backspace: erase the last character typed
control X: erase the entire line
control C: return to CP/M via warm boot
Al∞ inpu⌠ i≤ truncateΣ t∩ thσ sizσ oµ Z8E'≤ inpu⌠ buffe≥ whicΦ i≤ ì
8░ character≤ long«
Al∞ alphabetiπ inpu⌠ t∩ Z8┼ ma∙ bσ iε uppercasσ o≥ lowercase« Al∞ ì
outpu⌠ b∙ Z8┼ follow≤ thσ dictate≤ oµ thσ CAS┼ bytσ a≤ patcheΣ b∙ ì
thσ use≥ (seσ INSTALLATION).
Iεá thi≤á manua∞ thσ appearancσ oµ squarσ bracket≤ █ ▌ arounΣá aε ì
argumen⌠ alway≤ indicate≤ tha⌠ thσ argumen⌠ i≤ optional.
28
è
Z8E - Z80 DEBUG MONITOR Rick Surwilo
This Page Intentionally Left Blank.
è
29
Z8E - Z80 DEBUG MONITOR Rick Surwilo
VI. BREAKPOINTS
Breakpoint≤á arσá thosσ addresse≤ iε thσ prograφá unde≥á tes⌠á a⌠ ì
whicΦá thσ use≥ wishe≤ t∩ suspenΣ executioε anΣ returε contro∞ t∩ ì
Z8E«á Thσá use≥ ma∙ set¼á clear¼á anΣ displa∙ breakpoint≤ a⌠á an∙ ì
time¼á viß thσ appropriatσ commanΣ iε responsσ t∩ Z8E'≤á asterisδ ì
prompt«á Z8E'≤á implementatioε oµ breakpoint≤ doe≤ no⌠ forcσ thσ ì
use≥ t∩ tediousl∙ ente≥ breakpoin⌠ addresse≤ ever∙ timσ executioε ì
i≤ resumed«á Rather¼á thσ use≥ ma∙ ente≥ u≡ t∩ 1╢ breakpoin⌠á ad-ì
dresse≤ anΣ eacΦ breakpoint¼á oncσ set¼ i≤ storeΣ iε onσ oµ Z8E'≤ ì
interna∞ table≤ anΣ remain≤ iε effec⌠ unti∞ explicitl∙ cleareΣ b∙ ì
thσ use≥ viß thσ Clea≥ breakpoin⌠ commanΣ (seσ ├ command).
Z8┼ als∩ allow≤ yo⌡ t∩ specif∙ ß pas≤ coun⌠ t∩ bσ associateΣ witΦ ì
an∙ breakpoin⌠ tha⌠ i≤ set«á Pas≤ count≤ indicatσ thσ numbe≥á oµ ì
time≤á ß particula≥ instructioε mus⌠ bσ executeΣ beforσ Z8┼á wil∞ ì
regain control.
Furthermore¼á Z8Eá doe≤ no⌠ modif∙ an∙ codσ iε thσá use≥á prograφ ì
unti∞á ß G╧ commanΣ i≤ issueΣ (seσ ╟ command)«á Thi≤ permit≤á thσ ì
use≥ t∩ examinσ code¼á anΣ makσ patche≤ iµ desired¼á a⌠ an∙ poin⌠ ì
iε thσ debuτ session.
Wheεá ß breakpoin⌠ i≤ reacheΣ iε thσ use≥ prograφ anΣ Z8E regain≤ ì
control¼á thσ message║á *BP*XXX╪ i≤ displayeΣ wherσ XXX╪ ì
represent≤ thσ hexadecima∞ addres≤ oµ thσ breakpoint«á Iεá addi-ì
tion¼á Z8Eá wil∞ displa∙ thσ symboliπ namσ oµ thi≤ addres≤ iµ onσ ì
exist≤á iε thσ symbo∞ table«á Z8E follow≤ thi≤ witΦ ß displa∙á oµ ì
thσá asterisδá promp⌠ indicatinτ i⌠ i≤ read∙á read∙á fo≥á commanΣ ì
processing.
Thσá message║á *ERROR*BP*XXX╪ i≤ displayeΣ oε thσ consolσ ì
wheneve≥ Z8┼ determine≤ tha⌠ contro∞ ha≤ beeε regaineΣ withou⌠á ß ì
valiΣá breakpoin⌠ havinτ beeε reached«á Thi≤ i≤ generall∙ causeΣ ì
b∙ ß use≥ prograφ whicΦ ha≤ gonσ ofµ thσ dee≡ end«á Iµ thσá use≥ ì
examine≤á thσá curren⌠ content≤ oµ thσ register≤ (viß thσ ╪á com-ì
mand⌐ thσ curren⌠ prograφ counte≥ wil∞ mos⌠ assuredl∙ contaiεá aε ì
addres≤á whicΦá haΣá no⌠á previousl∙ beeε se⌠á a≤á ßá breakpoint« ì
Thing≤ t∩ looδ fo≥ wheε thi≤ situatioε arise≤ include║ ß prograφ ìè tha⌠ ble≈ it≤ stack¼ ß prograφ tha⌠ performeΣ ß ▓ 1/▓ gaine≥ witΦ ì
ß ful∞ twis⌠ indirec⌠ througΦ ß register╗á ie«á J╨ (HL⌐ int∩á thσ ì
grea⌠á unknown¼á anΣá attemptinτ t∩ tracσ wherσ wisσ meε fea≥á t∩ ì
treaΣ (BIO╙ anΣ BDO╙ I/╧ routines).
Z8┼á wil∞á allo≈ yo⌡ t∩ singlσ ste≡ (trace⌐ anΣá se⌠á breakpoint≤ ì
anywherσ iε memory«á However¼á bea≥ iε minΣ tha⌠ a≤ yo⌡ ente≥ thσ ì
BIO╙á anΣ BDO╙ netherworlΣ you≥ stacδ pointe≥ wil∞ a⌠ somσá poin⌠ ì
bσá saveΣá directl∙ iε memor∙ a≤ CP/═ switche≤ t∩ it≤á owεá stacδ ì
(you≥á stacδá pointe≥ i≤ no⌠ saveΣ oε ß stacδá b∙á CP/M)«á Iµá ß ì
breakpoin⌠ ha≤ beeε se⌠ a⌠ aε instructioε somewherσ iε BDO╙ o≥ iε ì
thσá BIO╙ (afte≥ thi≤ savσ oµ you≥ stacδ pointe≥ ha≤ occured⌐ anΣ ì
thi≤ breakpoin⌠ i≤ reached¼á Z8┼ wil∞ itselµ cal∞ ß BDO╙á routinσ ì
iε aε attemp⌠ t∩ displa∙ thσ *BP*XXX╪ messagσ oε thσ console«á A⌠ ì
thi≤á poin⌠ CP/═ wil∞ savσ Z8E'≤ stacδ pointe≥ anΣ overla∙ your≤ ì
30
Z8E - Z80 DEBUG MONITOR Rick Surwilo
iε memory«á Wheε BDO╙ eventuall∙ restore≤ thσ stacδ pointe≥á anΣ ì
execute≤á ßá RE╘ instructioε yo⌡ wil∞ no⌠ returε t∩ you≥á prograφ ì
anΣá you≥á stacδ pointe≥ wil∞ bσ gone«á Thesσá routine≤á caεá bσ ì
traced¼ albei⌠ witΦ difficulty¼ bu⌠ yo⌡ mus⌠ kee≡ aε eyσ oε wha⌠ ì
CP/═ i≤ doinτ witΦ thσ stacδ pointer.
è
31
Z8E - Z80 DEBUG MONITOR Rick Surwilo
This Page Intentionally Left Blank.
è
32
Z8E - Z80 DEBUG MONITOR Rick Surwilo
A Assemble
_________________________________________________________________
Thσá ┴ commanΣ permit≤ thσ use≥ t∩ effec⌠ inlinσ assembl∙ oµá Z8░ ì
assemble≥ sourcσ code¼á includinτ label≤ anΣ symbols¼á usinτá thσ ì
ful∞á Z8░á instructioε set«á Iε addition¼á thσ assemble≥á accept≤ ìè standarΣá Ziloτ mnemonic≤ (APPENDIX B)¼á expression≤ usinτ thσá ½ ì
anΣ - operators¼á a≤ wel∞ a≤ thσ followinτ fivσ assemble≥á direc-ì
tives║á ORG¼ DEFB¼ DDB¼ EQU¼ anΣ DEFW« Thσ forma⌠ oµ thσ commanΣ ì
is:
*A ARG1 <cr>
wherσá ARG1á represent≤ thσ startinτ addres≤á a⌠á whicΦ ì
ááááááááááassembly will take place
ááááááááááARG1 may be of any type
Z8Eá initiall∙á prompt≤á thσá use≥á b∙á firs⌠á disassemblinτá anΣ ì
displayinτ thσ instructioε currentl∙ locateΣ a⌠ thσ addres≤á spe-ì
cifieΣ b∙ ARG1« Thi≤ i≤ donσ a≤ ß conveniencσ t∩ permi⌠ thσ use≥ ì
t∩á ensurσ tha⌠ an∙ patche≤ wil∞ bσ assembleΣ int∩ memor∙ a⌠á thσ ì
intendeΣ location« Z8E theε output≤ ß carriagσ return/linσ feed¼ ì
display≤á thσ addres≤ specifieΣ a≤ ARG1¼á anΣ await≤á input«á Z8E ì
wil∞á no⌠ disassemblσ beforσ ever∙ linσ oµ sourcσ codσ entereΣ b∙ ì
thσ user¼ onl∙ beforσ thσ firs⌠ one«
Z8E expect≤ assembler input in the following format:
LABEL: opcode [operand1] [,operand2]
Thσ labe∞ fielΣ i≤ alway≤ optional¼ thσ opcodσ fielΣ i≤ mandator∙ ì
onl∙á iµá n∩á labe∞á wa≤ entered¼á anΣá thσá operanΣá fielΣá mus⌠ ì
naturall∙á bσá includeΣ fo≥ thosσ Z8░ instruction≤ whicΦá requirσ ì
one« Thσ threσ field≤ ma∙ bσ separateΣ froφ onσ anothe≥ b∙ space≤ ì
o≥ taΓ characters.
Z8┼á doe≤ no⌠ automaticall∙ reservσ spacσ withiε itselµ fo≥á use≥ ì
supplieΣ symbo∞ names« Use≥ supplieΣ symbols¼ a≤ opposeΣ t∩ thosσ ì
loadeΣá froφ files¼á arσ entereΣ froφ thσ keyboarΣ iεá thσá labe∞ ì
fielΣá usinτ thσ (A)ssemblσ command«á Symbo∞ tablσ spacσ t∩á holΣ ì
use≥á supplieΣá symbo∞ name≤ mus⌠ bσ explicitl∙ requesteΣ oεá thσ ì
CP/═ commanΣ linσ a≤ explaineΣ iε thσ sectioε "INVOKIN╟ Z8┼ a⌠ oε ì
thσ CP/═ COMMAN─ LEVEL"«á Thesσ use≥ supplieΣ symbols¼á oncσá en-ì
tered¼á ma∙á bσ referenceΣ iε thσ operanΣ fielΣ oµ an∙ subsequen⌠ ì
assembl∙á statemen⌠ o≥ iε thσ argumen⌠ fielΣ oµ an∙ Z8┼á command« ì
Thesσá symbol≤á comσ iε hand∙ wheε disassemblinτ .CO═á file≤á fo≥ ì
whicΦ n∩ sourcσ listinτ exist≤ anΣ als∩ wheε patchinτ code.
Thσá assemble≥ i≤ ß onσ pas≤ assemble≥ anΣ forwarΣ reference≤á t∩ ì
33
è
Z8E - Z80 DEBUG MONITOR Rick Surwilo
symbol≤á whicΦá d∩á no⌠ alread∙ appea≥ iε thσá symbo∞á tablσá arσ ì
flaggeΣá a≤á errors«á However¼á Z8┼ allow≤ thσ usσ oµá thσá OR╟ ì
directivσá (seσ discussioε below⌐ whicΦ allow≤ thσ use≥ t∩á mani-ì
pulatσ thσ assembler'≤ locatioε counter¼á whicΦ help≤ t∩ minimizσ ì
thσ n∩ forwarΣ referencσ limitation.
Label≤á ma∙ begiε iε an∙ column¼á bu⌠ al∞ label≤ mus⌠ bσ followeΣ ì
b∙ ß coloε eveε thosσ appearinτ iε aε EQ╒ statement«á Label≤ ma∙ ì
bσ oµ an∙ lengtΦ bu⌠ onl∙ thσ firs⌠ ╢ character≤ arσ significant« ì
Z8┼á alway≤ assign≤ thσ 1╢ bi⌠ valuσ oµ thσá assembler'≤á curren⌠ ì
locatioε counte≥ t∩ thσ labe∞ beinτ entered¼ unles≤ thσ statemen⌠ ì
i≤á aε EQ╒ directive«á Label≤ neeΣ no⌠ bσ followeΣ b∙ aεá opcodσ ì
anΣ thi≤ (a≤ wel∞ a≤ thσ EQ╒ directive⌐ provide≤ ß convenien⌠ wa∙ ì
t∩á assigε ß valuσ t∩ ß symbo∞ name«á Merel∙ se⌠ thσá assembler≤ ì
locatioε counte≥ (viß thσ OR╟ directivσ o≥ a≤ ARG1 iε thσ commanΣ ì
line⌐ t∩ thσ valuσ yo⌡ wisΦ t∩ assign¼á theε typσ thσ symbo∞ namσ ì
followeΣ b∙ ß carriagσ return« N∩ objec⌠ codσ i≤ produceΣ anΣ n∩ ì
use≥á memor∙ area≤ arσ modifieΣ bu⌠ thσ symbo∞ anΣ it≤ associateΣ ì
valuσá arσá entereΣ int∩ thσ use≥ symbo∞ table«á Z8┼á doe≤á no⌠ ì
trea⌠á duplicatσ symbo∞ name≤ a≤ errors«á Rather¼á iµá thσá use≥ ì
enter≤á ß symbo∞ namσ whicΦ alread∙ appear≤ iε thσ symbo∞á table¼ ì
thσá valuσ associateΣ witΦ thσ ne≈ symbo∞ replace≤ thσ onσá asso-ì
ciateΣ witΦ thσ old« Fo≥ example¼ iµ thσ symbo∞ ENTRY╨ exist≤ iε ì
thσá symbo∞á tablσ anΣ i≤ associateΣ witΦ thσ valuσ 23D┴ anΣá thσ ì
use≥ assemble≤ thσ followinτ instruction:
41FF 0E 04 ENTRYP: LD C,4
Z8E would replace 23DA with 41FF.
Assemble≥ statement≤ whicΦ d∩ no⌠ contaiε label≤ ma∙ begiε iε an∙ ì
column¼á includinτá columε one«á Therσ i≤ N╧ neeΣ t∩á inser⌠á ß ì
leadinτá spacσ o≥ taΓ beforσ aε opcodσ iµ thσ opcodσ i≤ no⌠á pre-ì
cedeΣ b∙ ß label.
Operand≤á appearinτ iε thσ operanΣ fielΣ oµ thσ instructioε t∩ bσ ì
assembleΣá ma∙ bσ an∙ oµ thσ followinτ type≤ subjec⌠ onl∙ t∩á thσ ì
provis∩ tha⌠ 1╢ bi⌠ value≤ canno⌠ appea≥ a≤ operanΣ fo≥ thosσ Z8░ ì
instruction≤á whicΦ requirσ ╕ bi⌠ values«á Expression≤ combininτ ì
an∙ oµ thσ followinτ fou≥ type≤ (witΦ thσ ½ anΣ - operators⌐á arσ ì
als∩ permissable«
SYMBOL (from symbol table)
HEX
LITERAL (two bytes maximum)
DECIMAL
Iεá additioεá thσá dolla≥ sigε ($⌐ ma∙ als∩ appea≥ iεá botΦá thσ ì
operanΣá fielΣ oµ an∙ instructioε iε whicΦ ß 1╢ bi⌠á operanΣá i≤ ì
allowed¼á anΣá als∩á iε thσ operanΣ fielΣ oµ an∙á relativσá jum≡ ìè instruction«á Thσá dolla≥ sigε represent≤ thσ curren⌠ valuσá oµ ì
thσ assembler'≤ locatioε counter¼ tha⌠ is¼ thσ addres≤ appearinτ ì
oε thσ linσ a⌠ whicΦ thσ assembl∙ i≤ takinτ place.
34
Z8E - Z80 DEBUG MONITOR Rick Surwilo
Thσá operanΣ fielΣ oµ ß relativσ jum≡ instructioε caε bσá entereΣ ì
iεá eithe≥ oµ tw∩ ways«á Thσ use≥ ma∙ codσ thσ operanΣ usinτ thσ ì
dolla≥ sigε mentioneΣ abovσ a≤ iε thσ followinτ examples:
JR NZ,$+11 áá ;jump to address PC+11 (hex)
DJNZ $-24# ;jump to address PC-24 (decimal)
Thσ use≥ ma∙ alternativel∙ specif∙ ß 1╢ bi⌠ valuσ iε thσá operanΣ ì
fielΣá oµá ß relativσ jum≡ instructioε anΣ le⌠ Z8E calculatσá thσ ì
relativσá displacemen⌠á froφ thσ assembler'≤ prograφá counte≥á a≤ ì
showε below:
JRá C,LABEL Assuminτ LABE╠ exists¼ iε thσ symbo∞ ì
ááááááááááááááááááááááááááááátablσ Z8┼ wil∞ calculatσ thσ offset« ì
áááááááááááááááááááááááááááááLABE╠á mus⌠á bσ withiε +12╣ o≥á -12╢ ì
ááááááááááááááááááááááááááááábyte≤ froφ thσ assembler'≤á locatioε ì
ááááááááááááááááááááááááááááácounte≥á o≥á aε assembl∙ erro≥á wil∞ ì
áááááááááááááááááááááááááááááresult.
JRáá NZ,1080á Z8Eá calculate≤ thσ displacemen⌠ be- ì
ááááááááááááááááááááááááááááátweeε thσ assembler'≤ curren⌠á loca-ì
ááááááááááááááááááááááááááááátioεá counte≥á anΣ thσ addres≤á 108░ ì
ááááááááááááááááááááááááááááá(hex).
Z8E indicate≤ error-freσ inpu⌠ b∙ firs⌠ displayinτ thσ resultan⌠ ì
objec⌠á codσá anΣá theε displayinτ (oε thσ nex⌠á line⌐á thσá nex⌠ ì
addres≤ a⌠ whicΦ assembl∙ wil∞ takσ place«
Assembl∙ error≤ arσ alway≤ indicateΣ b∙ ß doublσ pai≥ oµ questioε ì
mark≤ whicΦ appea≥ followinτ thσ locatioε counter« Aε erro≥ flaτ ì
i≤ als∩ printeΣ anΣ wil∞ bσ onσ oµ thσ following:
ERROR FLAG MEANING
Láá Label starts with numeric character
áááááááááááááááááááááááááááááá è O InvaliΣ opcode
SáááááááááSyntax error
T Symbol table full
╒áá Instructioεáreference≤ an undefined
symbol name
╓á Valuσ error - a 1╢ bi⌠á valuσ ì
wa≤ specifieΣ a≤ aε operanΣ fo≥ ì
aεá instructioεá whicΦá permit≤ ì
onl∙ ╕ bi⌠ numbers«
Iµá aεá erro≥ occurs¼á Z8E wil∞ repromp⌠ thσ use≥ witΦá thσá samσ ì
35
Z8E - Z80 DEBUG MONITOR Rick Surwilo
location counter address.
A≤ wa≤ mentioneΣ previousl∙ thσ Z8E assmeble≥ use≤ standarΣ Ziloτ ì
mnemonics«á Thσá onσ exceptioε t∩ thi≤ i≤ thσ E╪ AF,AFº instruc-ì
tion«á T∩ assemblσ thi≤ instructioε thσ trailinτ quotσ characte≥ ì
mus⌠ bσ omitted.
Z8┼á support≤ thσ OR╟ directivσ whicΦ allow≤ thσ use≥á t∩á changσ ì
thσ valuσ oµ thσ assembl∙ locatioε counter«á Thσ operanΣ fielΣ oµ ì
thσá OR╟ directivσ ma∙ bσ ß 1╢ bi⌠ argumen⌠ oµ an∙á type«á Afte≥ ì
settinτ thσ ne≈ assembl∙ locatioε counte≥ Z8┼ display≤ thσ disas-ì
sembleΣ instructioε a⌠ thσ ne≈ address.
Z8E support≤ thσ DEFB¼á DEFW¼á anΣ DD┬ directive≤ whicΦ givσá thσ ì
use≥á thσ abilit∙ t∩ assemblσ datß constant≤ int∩á memory«á DEF┬ ì
accept≤á aεá ╕á bi⌠ operand╗á thσ valuσ oµ whicΦ iεá placeΣá int∩ ì
memor∙á a⌠ thσ addres≤ oµ thσ assembler'≤ curren⌠ locatioεá coun-ì
ter« DEF╫ allow≤ thσ use≥ t∩ specif∙ ß 1╢ bi⌠ operanΣ value¼ thσ ì
lo≈á orde≥ bytσ oµ whicΦ i≤ placeΣ int∩ memor∙ a⌠ thσ addres≤á oµ ì
thσá assembler'≤ curren⌠ locatioε counter¼á whilσ thσ higΦá orde≥ ì
bytσá oµ thσ operanΣ i≤ placeΣ int∩ memor∙ a⌠ thσ addres≤ oµá thσ ì
assembler'≤ curren⌠ locatioε counte≥ plu≤ one«á Thi≤ i≤ iε accor-ì
dancσ witΦ thσ 8080/Z8░ conventioε oµ storinτ thσ higΦ orde≥ bytσ ì
oµá 1╢ bi⌠ datß towarΣ thσ higΦ enΣ oµ memory«á Thσá DD┬á (definσ ì
doublσá byte⌐ directivσ allow≤ thσ use≥ t∩ specif∙ ß 1╢ bi⌠ valuσ ì
which¼á iεá contras⌠ t∩ thσ DEF╫ directive¼á i≤ storeΣ iεá memor∙ ì
witΦ thσ higΦ orde≥ bytσ towarΣ thσ lo≈ enΣ oµ memory«á Tha⌠ is¼ ì
ß DD┬ directivσ instruct≤ Z8E t∩ storσ thσ mos⌠ significan⌠á bytσ ì
oµá thσá 1╢á bi⌠ operanΣ valuσ iε memor∙ a⌠ thσá addres≤á oµá thσ ìè assembler'≤á curren⌠ locatioε counter¼á anΣ thσ leas⌠ significan⌠ ì
(lo≈á order⌐á bytσ i≤ placeΣ int∩ memor∙ a⌠ thσá addres≤á oµá thσ ì
assembler'≤ curren⌠ locatioε counte≥ plu≤ one«
Thσ EQ╒ directivσ allow≤ thσ use≥ t∩ assigε ß valuσ t∩ ßá symbol« ì
Aε EQ╒ directivσ doe≤ no⌠ generatσ objec⌠ code« I⌠ merel∙ allow≤ ì
thσá use≥á t∩á referencσ ß numeriπ valuσ b∙ ßá symboliπá namσá iε ì
subsequen⌠ assembl∙ statement≤ o≥ monito≥ commands«á I⌠ i≤ espe-ì
ciall∙á usefu∞á wheε useΣ prio≥ t∩ disassemblinτ (seσ ┌á command⌐ ì
codσá fo≥ whicΦ n∩ symbo∞ tablσ exists«á Thσ EQ╒á directivσá re-ì
quire≤á thσ use≥ t∩ suppl∙ ß symboliπ namσ iε thσ labe∞ fielΣá oµ ì
thσ instruction«á Iµ Z8E indicate≤ error≤ iε aε EQ╒ statemen⌠ b∙ ì
printinτ questioε marks« Iµ aε EQ╒ statemen⌠ i≤ correctl∙ assem-ì
bleΣá b∙á Z8E¼á thσ addres≤ oµ thσ assembler'≤á curren⌠á locatioε ì
counte≥á i≤á eraseΣá sincσ aε EQ╒ statemen⌠ generate≤á n∩á objec⌠ ì
code« Operand≤ appearinτ iε EQ╒ statement≤ arσ evaluateΣ t∩ ß 1╢ ì
bi⌠á value«á Z8E wil∞ displa∙ thσ valuσ oµ thi≤ 1╢ bi⌠ numbe≥á a≤ ì
fou≥ he° digit≤ iε thσ objec⌠ codσ fielΣ oε thσ console.
36
Z8E - Z80 DEBUG MONITOR Rick Surwilo
B Set Breakpoint
_________________________________________________________________
Breakpoint≤á arσá thosσá addresse≤ a⌠ whicΦ thσá userá wishe≤á t∩ ì
suspenΣ executioε oµ thσ prograφ unde≥ test«á Breakpoint≤ ma∙ bσ ì
se⌠ a⌠ an∙ timσ iε responsσ t∩ Z8E'≤ asterisδ prompt« Z8E allow≤ ì
thσá use≥ t∩ se⌠ u≡ t∩ 1╢ individua∞ breakpoint≤ iε hi≤á program« ì
Z8┼ als∩ allow≤ thσ use≥ t∩ specif∙ ß pas≤ coun⌠ t∩ bσ associateΣ ì
with any breakpoint.
ì
Thσ commanΣ i≤ invokeΣ a≤ follows:
*B ARG1[,pass count] [ARG2... ARGn] <cr>
wherσ eacΦ argumen⌠ represent≤ thσ addres≤ iε thσá use≥ ì
ááááááááááprogram at which a breakpoint is to be set è
Normally¼á tha⌠ i≤ wheε n∩ pas≤ coun⌠ i≤ specifed¼á executioεá oµ ì
thσá use≥á prograφ stop≤ anΣ contro∞ return≤ t∩ thσá Z8┼á commanΣ ì
leve∞ a≤ sooε a≤ ß breakpoin⌠ i≤ reached« Pas≤ count≤ arσ useΣ t∩ ì
inforφá Z8┼á tha⌠ executioε oµ thσ use≥ prograφ shoulΣ hal⌠á onl∙ ì
wheεá thσá specifieΣ breakpoin⌠ i≤ reacheΣ thσá numbe≥á oµá time≤ ì
time≤ indicateΣ b∙ thσ pas≤ count«
Pas≤á count≤á arσ specifieΣ b∙ followinτ thσá breakpoin⌠á addres≤ ì
witΦ ß commß anΣ theε enterinτ ß pas≤ coun⌠ immediatel∙ followinτ ì
thσ comma.
Aε existinτ pas≤ coun⌠ ma∙ bσ changeΣ t∩ ß differen⌠ valuσ b∙ re-ì
enterinτ thσ samσ breakpoin⌠ address¼á followinτ i⌠ witΦ ß comma¼ ì
and then specifying the new pass count.
T∩ breaδ oε ß multi-bytσ Z8░ instructioε thσ addres≤ specifieΣ a≤ ì
thσá breakpoin⌠á addres≤ mus⌠ bσ tha⌠ oµ thσ firs⌠á bytσá oµá thσ ì
instruction«á User≤ wh∩ fai∞ t∩ observσ thi≤ rulσ wil∞ generall∙ ì
finΣ thei≥ program≤ hoppinτ thσ nex⌠ bu≤ t∩ never-neve≥ land«á Iµ ì
ß patcΦ i≤ madσ a⌠ aε addres≤ oµ ß breakpoin⌠ currentl∙ iε effec⌠ ì
bσá surσá thσ breakpoin⌠ addres≤ i≤ stil∞ pointinτ a⌠á thσá firs⌠ ì
bytσá oµá thσ ne≈ instruction«á
Multiplσ breakpoint≤ ma∙ bσ se⌠ witΦ thσ samσ ┬ commanΣ b∙á sepa-ì
ratinτ eacΦ onσ witΦ ß singlσ space« Iµ multiplσ breakpoint≤ arσ ì
specifieΣá anΣ Z8E detect≤ aε erroneou≤ argumen⌠ (ßá non-existen⌠ ì
symbo∞á fo≥á example⌐ ß questioε marδ wil∞ bσá printed¼á anΣá thσ ì
commanΣá terminates«á Al∞ valiΣ breakpoint≤ specifieΣ u≡ t∩á thσ ì
invaliΣ onσ will be set«
Z8Eá display≤á ßá questioε marδ wheε ß attemp⌠ i≤ madσ t∩á se⌠á ß ì
seventeentΦ breakpoint.
37
Z8E - Z80 DEBUG MONITOR Rick Surwilo
C Clear Breakpoint
_________________________________________________________________
Thσ ├ commanΣ clear≤ individua∞ breakpoint≤ previousl∙ se⌠ b∙ ß ┬ ì
command« Thσ forma⌠ oµ thσ commanΣ is:
è
*C ARG1 [ARG2...ARGn] <cr>
wherσ eacΦ arτ ma∙ bσ an∙ valiΣ argumen⌠ typσ ì
áááááááááááááááwhicΦá evaluate≤ t∩ aε addres≤ previousl∙ se⌠ ì
áááááááááááááááas a breakpoint
Multiplσá breakpoint≤á ma∙á bσ cleareΣ b∙ thσ samσ ├á commanΣá b∙ ì
separating each argument with a single space.
Z8Eá display≤ ß questioε marδ wheε aε attemp⌠ i≤ madσ t∩ clea≥á ß ì
non-existent breakpoint.
T∩á clea≥á AL╠á breakpoint≤ enter║á *├ ¬á wherσá thσá asterisδ ì
indicates ALL.
38
è
Z8E - Z80 DEBUG MONITOR Rick Surwilo
D Dump
_________________________________________________________________
Thσ ─ commanΣ allow≤ thσ use≥ t∩ dum≡ memor∙ iε botΦ hexadecima∞ ì
anΣ ASCI╔ t∩ thσ consolσ iε use≥ specifieΣ blocδ size≤.
ì
The forma⌠ oµ thσ commanΣ is:
*D [ARG1] [ARG2] <cr>
where ARG1 = the starting address to dump
ARG2 = ádictate≤ááá thσááá dum≡ááá forma⌠ ì
áááááááááááááááááááááááááááááááádependinτ oε it≤ value«á Iµ ARG2 ì
áááááááááááááááááááááááááááááááái≤á iε thσ rangσ ░ - 25╡ theεá i⌠ ì
áááááááááááááááááááááááááááááááái≤á treateΣá a≤ ß blocδ sizσá anΣ ì
áááááááááááááááááááááááááááááááárepresent≤ thσ numbe≥ oµ byte≤ t∩ ì
áááááááááááááááááááááááááááááááábσá displayeΣá (░ i≤á treateΣá a≤ ì
áááááááááááááááááááááááááááááááá256)« Iµ ARG2 i≤ greate≥ thaε 25╡ ì
áááááááááááááááááááááááááááááááátheε ARG2 i≤ treateΣ a≤ aε endinτ ì
ááááááááááááááááááááááááááááááááaddres≤ anΣ memor∙ wil∞ bσ dumpeΣ ì
áááááááááááááááááááááááááááááááánon-interactively to the console.
ááááááááááááá ARG1 and ARG2 may be of any argument type.
Iµá ARG1á i≤ omitteΣ theε thσ dum≡ resume≤ froφ thσá las⌠á memory ì
addres≤á +▒á a≤ displayeΣ viß thσ previou≤ invocatioεá oµá thσá ─ ì
command«á Iµá n∩ previou≤ ─ commanΣ haΣ beeε giveε theε memor∙ i≤ ì
dumped starting at address 100H.
Iµá ARG▓ i≤ omitteΣ theε thσ mos⌠ recen⌠ valuσ oµ ARG▓ (froφá thσ ì
las⌠ ─ command⌐ i≤ used.
Thσá dum≡ commanΣ display≤ thσ content≤ oµ memor∙ iεá hexadecima∞ ì
oεá thσá lef⌠ sidσ oµ thσ consolσ whilσ thσ ASCI╔á equivalen⌠á oµ ì
eacΦ bytσ i≤ showε oε thσ righ⌠ side«
Durinτá ßá blocδ b∙ blocδ dum≡ (ARG▓ ╝ 25╢ signifie≤ ßá blocδá b∙ ì
blocδá dump⌐á Z8┼ wait≤ fo≥ use≥ inpu⌠ afte≥ eacΦ blocδá i≤á dis-ì
played«á ┴á carriagσ returε entereΣ b∙ thσ use≥ cause≤ thσá nex⌠ ì
sequentia∞á blocδ t∩ bσ dumpeΣ whilσ an∙ othe≥á characte≥á cause≤ ì
thσ commanΣ t∩ terminate.
Fo≥á non-interactivσ dumps¼á startinτ addres≤ t∩ endinτá address¼ ì
pressinτ an∙ ke∙ terminate≤ thσ dump.
Thσá dum≡á commanΣ provide≤ aε especiall∙ eas∙ wa∙á oµá examininτ ì
tabula≥ data¼á fo≥ examplσ iε scanninτ thσ disδ paramete≥ header≤ ì
iε you≥ BIOS«á Tha⌠ is¼á b∙ specifyinτ thσ basσ addres≤ a≤á ARG1 ì
anΣá thσá tablσá sizσ a≤ ARG2 thσ use≥ caε walδá througΦá memory¼ ìè tablσ b∙ table.
39
Z8E - Z80 DEBUG MONITOR Rick Surwilo
E Examine Memory
_________________________________________________________________
Thσá ┼á commanΣ allow≤ thσ use≥ t∩ examinσ anΣ optionall∙á modif∙ ì
the contents of memory. The format of the command is:
*E ARG1 <cr>
wherσá ARG1 i≤ thσ addres≤ oµ thσ firs⌠ bytσá t∩ ì
áááááááááááááááexamine
ARG1 ma∙ bσ an∙ symbo∞ type ì
Upoεá receip⌠ oµ ARG1 Z8┼ wil∞ reaΣ thσ content≤ oµ thσ specifieΣ ì
memor∙á addres≤ anΣ displa∙ thσ bytσ iε botΦ he° anΣá ASCII«á A⌠ ì
thi≤á poin⌠ thσ use≥ ha≤ tw∩ options«á Thσ use≥ ma∙ specif∙á re-ì
placemen⌠á datßá t∩ bσ writteε t∩ memor∙ startinτ a⌠ thσá curren⌠ ì
address¼á o≥á hσá ma∙á choosσ t∩ continuσá t∩á passivel∙á examinσ ì
memory«á Thσ choicσ i≤ determineΣ b∙ thσ character(s⌐ whicΦá arσ ì
inpu⌠ afte≥ thσ content≤ oµ aε addres≤ arσ displayed«
Iµá thσá use≥á wishe≤ t∩ modif∙ memor∙ startinτá a⌠á thσá curren⌠ ì
memor∙ address¼á theε aε ARGUMENT-STRING ma∙ bσ entereΣ followinτ ì
thσá displayeΣá byte«á Z8┼ wil∞ evaluatσ thσ entirσá strinτá anΣ ì
writσá thσá evaluateΣ equivalen⌠ oµ thσ strinτá int∩á consecutivσ ì
memor∙á location≤ startinτ witΦ thσ curren⌠ memor∙á address«á Fo≥ ì
examplσ thσ use≥ coulΣ ente≥ thσ followinτ ARGUMENT-STRING║
*E 45F9
45F9 42 B 'This is a string',0D,0A,13,4F,9,'More Text',05
^ ^
Thσ use≥ inpu⌠ apprear≤ betweeε thσ arrow≤á anΣ ì
ááááááááááááááááááwould be evaluated to the following 31 bytes:
áááááááááááááááááá
áááááááááááááááááá54 68 69 73 20 49 73 20 61 20 73 74 72 69 6E 67
áááááááááááááááááá0D 0A 13 4F 09 4D 6F 62 65 20 74 65 78 74 05
ááááááááááááááááááThesσá 3▒á byte≤á woulΣ bσ storeΣá int∩á memory ìè áááááááááááááááááálocation≤á 45F╣á t∩ 4617 anΣ thσá nex⌠á addres≤ ì
áááááááááááááááááádisplayed on the screen would be 4618.
ááááá4618 23 #
Remembe≥á tha⌠á ARGUMENT-STRING╙ ma∙ bσ terminateΣá b∙á eithe≥á ß ì
carriagσá returεá o≥ b∙ thσ firs⌠ spacσ characte≥ whicΦ doe≤á no⌠ ì
appea≥á iεá ß quoteΣ litera∞ string«á Thσá choicσá oµá terminato≥ ì
determine≤á thσ whicΦ addres≤ wil∞ bσ displayeΣ next«á Iµ ß car-ì
riagσá returε i≤ useΣ t∩ terminatσ thσ ARGUMENT-STRING¼á theε Z8┼ ì
wil∞ displa∙ thσ nex⌠ sequentia∞ memor∙ address« Fo≥ example:
*E 1002
1002 45 E 12,8F,00 <cr>
1005 28 (
40
Z8E - Z80 DEBUG MONITOR Rick Surwilo
Thσ use≥ entereΣ aε ARGUMENT-STRIN╟ 12,8F,0░ whicΦ wa≤á evaluateΣ ì
t∩á │ bytes«á Sincσ thσ ARGUMENT-STRIN╟ wa≤ terminateΣ b∙ ß car-ì
riagσ returε thσ nex⌠ addres≤ displayeΣ wa≤ 1002+│ o≥ 1005«
B∙á terminatinτá thσá ARGUMENT-STRIN╟ witΦ ß spacσ thσá use≥á caε ì
verif∙á thσ content≤ oµ memor∙ jus⌠á modified«á ARGUMENT-STRING╙ ì
terminateΣá b∙á ß spacσ causσ Z8┼ t∩ redispla∙ thσá startinτá ad-ì
dress╗á thi≤á make≤á thσá datß jus⌠á entereΣá availalbσá fo≥á re-ì
inspection:
*E 1002
1002 45 E 12,8F,00 <space>
1002 12 ~
Iµ thσ use≥ doe≤ no⌠ wan⌠ t∩ writσ an∙ datß t∩ thσ curren⌠ memor∙ ì
address¼á theε thσ characte≥ entereΣ shoulΣ bσ ß spacσ character¼ ì
up arrow (carret) character, or a carriage return.
ááááááááááááááá CHARACTER ACTION
ááááááááááááááá
ááááááááááááááá spaceáá reaΣ nex⌠ sequentia∞ mem-ì
ááááááááááááááááááááááááááááááááááááááááor∙ addres≤
up arrow ááreaΣ previou≤ memor∙á ad-ì
áááááááááááááááááááááááááááááááááááááááádres≤
áááááááááááááááááááááááááááááááááááááááá
<cr>ááááááááááááááááreaΣ nex⌠ sequentia∞ mem-ì
ááááááááááááááááááááááááááááááááááááááááor∙ address command è
periodáááááááááááááááterminate commandáááááá áááááááááááááááááááááááááááááááááá
Thσá use≥ ma∙ als∩ changσ thσ curren⌠ memor∙ addres≤ b∙á enterinτ ì
aεá equa∞á sigε "=ó followeΣ b∙ ß valiΣá argument«á Thσá addres≤ ì
obtaineΣá b∙á evaluatinτ thi≤ argumen⌠ become≤á thσá ne≈á curren⌠ ì
memory address as shown below:
*E 1344
1344 89 ~ <cr>
1345 6F o <cr>
1346 52 R =9F34 <cr>
9F34 63 c
41
Z8E - Z80 DEBUG MONITOR Rick Surwilo
F Find
_________________________________________________________________
Thσá finΣ commanΣ allow≤ thσ use≥ t∩ searcΦ memor∙ fo≥ multi-bytσ ì
strings in memory. The format of the command is:
*F ARG1 ARG2 <cr>
where ARG1 = thσá startinτ addres≤ a⌠ whicΦ t∩ begiε ì
ááááááááááááááááááááááááááthe search, it may be of any type
ááááááááááááááááá
áááááááááááááááááARG2 = i≤á aε ARGUMENT-STRIN╟ representinτ thσ ì
áááááááááááááááááááááááááápatterεá t∩ searcΦ for╗á thσá use≥á ma∙ ì
ááááááááááááááááááááááááááspecif∙á an∙á combinatioε oµá argument≤ ì
ááááááááááááááááááááááááááseparateΣ b∙ comma≤ o≥ space≤ u≡ t∩ thσ ì
áááááááááááááááááááááááááálimi⌠á oµá Z8E'≤á commanΣá linσá buffe≥ ì
ááááááááááááááááááááááááááwhicΦá i≤ 8░ byte≤á long«á Thσá actua∞ ìè áááááááááááááááááááááááááánumbe≥ oµ byte≤ searcheΣ fo≥ depend≤ oε ì
ááááááááááááááááááááááááááho≈ thσ strinτ i≤ ultimatel∙ evaluated.
ì
áááááááááááááááááááááááááá
Z8E wil∞ displa∙ ever∙ addres≤ whicΦ contain≤ datß matchinτ ARG2« ì
The search continues until the end of memory is reached.
Thσ use≥ ma∙ elec⌠ t∩ cance∞ thσ searcΦ a⌠ an∙ timσ b∙ depressinτ ì
any key on the keyboard.
Iµá ARG▓ i≤ ß singlσ argumen⌠ (a≤ opposeΣ t∩ aε argumen⌠á string⌐ ì
anΣá iµ thi≤ argumen⌠ i≤ ß symbo∞ namσ theε Z8┼ wil∞ reversσá thσ ì
orde≥ oµ thσ tw∩ byte≤ comprisinτ thσ 1╢ bi⌠ operand« Mos⌠ 1╢ bi⌠ ì
value≤ iε Z8░ program≤ arσ storeΣ witΦ thσ leas⌠ significan⌠ bytσ ì
a⌠á ßá giveε addres≤ anΣ thσ mos⌠ significan⌠ bytσ a⌠á thσá giveε ì
address+▒ (towarΣ thσ higΦ enΣ oµ memory)« Thi≤ i≤ iε accordancσ ì
witΦ thσ Z8░ conventioε oµ storinτ thσ mos⌠ significan⌠ bytσ oµ ß ì
16 bit argument toward the high end of memory.
The following are examples of the FIND command:
*F 0 SYMBOL
áááááAssuminτá tha⌠ thσ symbo∞ "SYMBOLó i≤á associateΣá witΦ ì
áááááthσá he°á valuσ 3B╞ theε Z8┼ woulΣ attemp⌠ t∩ finΣá al∞ ì
áááááaddres≤á containinτá thσ bytσ pai≥ B╞ anΣá 0│á iεá tha⌠ ì
áááááorder¼ witΦ thσ searcΦ beginninτ a⌠ addres≤ 0000« Notσ ì
ááááátha⌠ thσ orde≥ oµ thσ tw∩ byte≤ i≤ reverseΣ becausσ thσ ì
ááááásymbo∞ "SYMBOLó exist≤ iε thσ symbo∞ table«á T∩ searcΦ ì
áááááfo≥á thσá bytσá pai≥ 0│ anΣ B╞ iε tha⌠ orde≥á thσá use≥ ì
áááááshoulΣ ente≥ thσ argumen⌠ a≤ eithe≥ ß 1╢ bi⌠ he° numbe≥ ì
ááááá(3BF⌐ o≥ a≤ tw∩ ╕ bi⌠ he° number≤ (03,BF)«
*F 100 87,32#,'ABCD',0C3,symbol,'p',271F
Assuminτá tha⌠ thσ symbo∞ "symboló i≤á associateΣá witΦ ì
42
Z8E - Z80 DEBUG MONITOR Rick Surwilo
áááááthσá he°á valuσ 3B╞ theε Z8┼ woulΣ attemp⌠ t∩ finΣá al∞ ì
ááááástartinτ addresse≤ oµ thσ followinτ 12 bytσ string:
ááááá á87 20 41 42 43 44 C3 03 BF 70 27 1F
áááááNoticσá tha⌠ Z8┼ woulΣ searcΦ fo≥ thσ tw∩ bytσá patterε ìè ááááá0│ B╞ a≤ thσ valuσ fo≥ "symbol"«á Iµ thσ use≥ happeneΣ ì
ááááát∩á bσá tryinτ t∩ finΣ thσá instructioεá J╨á symbo∞ ì
áááááthσ searcΦ woulΣ fai∞ becausσ a≤ mentioneΣ abovσ 1╢ bi⌠ ì
ááááávalue≤á arσá storeΣá lo≈ orde≥ bytσá first«á Thσá use≥ ì
áááááshould have entered C3 BF 03.
áááááThσ tw∩ byte≤ whicΦ represen⌠ thσ addres≤ oµ symbo∞ arσ ì
áááááno⌠á reverseΣ a≤ iε thσ examplσ abovσ becausσá ARG▓á i≤ ì
áááááspecifieΣá a≤ aε ARGUMENT-STRIN╟ a≤ opposeΣ t∩ ß singlσ ì
áááááargument.
Z8E would begin its search at address 100 (ARG1).
43
è
Z8E - Z80 DEBUG MONITOR Rick Surwilo
G Go
_________________________________________________________________
Thσá ╟ commanΣ instruct≤ Z8E t∩ begiε o≥ resumσ executioε oµá thσ ì
use≥ program. The format of the command is:
*G ARG1 <cr>
wherσá ARG1á ╜á thσá addres≤á oµá thσá firs⌠ ì
instruction the user wishes
áááááááááááááááááááááááááááááááááááááto execute.
ARG1 may be any argument type
Upoεá receip⌠ oµ thi≤ commanΣ Z8E initialize≤ al∞ breakpoint≤á iε ì
thσá use≥á program¼á restore≤ al∞ use≥ registers¼á anΣá transfer≤ ì
contro∞á t∩ thσ use≥ prograφ unde≥ tes⌠ a⌠ thσ addres≤á specifieΣ ì
iε ARG1«á Executioε withiε thσ use≥ prograφ wil∞ continuσá unti∞ ì
thσá use≥á prograφ reache≤ ß breakpoint¼á a⌠ whicΦ poin⌠á contro∞ ì
wil∞á returε t∩ Z8E«á Thi≤ i≤ thσ onl∙ wa∙ thσ use≥ i≤á ablσá t∩ ì
returε contro∞ t∩ Z8E oncσ thσ G╧ commanΣ i≤ issued.
Z8┼ breakpoin⌠ techniquσ ha≤ beeε designeΣ sucΦ tha⌠ Z8┼ wil∞ no⌠ ì
directl∙á initializσá ßá breakpoin⌠ a⌠ thσ addres≤á specifieΣá iε ì
ARG1«á Iεá actualiit∙ i⌠ woulΣ bσ impossiblσ t∩ d∩ s∩á sincσá aε ì
attemp⌠á woulΣá bσ madσ t∩ resumσ executioε a⌠á thi≤á address¼á ß ì
breakpoin⌠ woulΣ havσ beeε se⌠ a⌠ thi≤ address¼ anΣ contro∞ woulΣ ì
immediatel∙á returε t∩ thσ monito≥ withou⌠ thi≤ instructioεá eve≥ ì
havinτ beeε executed«á Thi≤ limitatioε ha≤ beeε overcomσ iε Z8┼ ì
b∙á actuall∙á copyinτ thσ singlσ instructioε locateΣ a⌠á ARG▒á t∩ ì
Z8E'≤á memory¼á THE╬ settinτ thσ breakpoin⌠ a⌠ thσ ARG▒á address¼ ì
anΣá finall∙ executinτ thσ "movedó versioε oµ thσ instructioεá iε ì
Z8E'≤ memor∙ rathe≥ thaε iε thσ use≥ program« Z8┼ compensate≤ fo≥ ì
thσá tha⌠ CAL╠ anΣ RELATIV┼ JUM╨ instruction≤ arσ affecteΣ b∙ thσ ì
addres≤ a⌠ whicΦ the∙ arσ executed« Thi≤ entirσ proces≤ i≤ total-ì
l∙á transparen⌠ anΣ i⌠ allow≤ thσ use≥ t∩ debuτ loop≤ b∙á settinτ ì
onl∙ ß singlσ breakpoin⌠ withiε thσ rangσ oµ ß loop¼ obviate≤ thσ ì
neeΣá t∩ clea≥ an∙ breakpoint≤ whicΦ arσ locateΣ a⌠á thσá addres≤ ì
wherσá executioε i≤ t∩ resume¼á anΣ eveε allow≤ breakpoint≤ a⌠á ß ì
DJN┌ ñ instructions!
HINT:
Wheεá proceedinτ froφ ß breakpoin⌠ i⌠ i≤ simples⌠ t∩ usσ thσ forφ ì
oµ thσ G╧ command║á *╟ ╨ <cr╛ whicΦ inform≤ Z8E t∩á resumσ ì
executioεá a⌠ thσ addres≤ specifieΣ b∙ thσ user'≤ curren⌠ prograφ ì
counter«á
è
44
Z8E - Z80 DEBUG MONITOR Rick Surwilo
H Display Symbol Table
_________________________________________________________________
Thσá ╚á commanΣ allow≤ thσ use≥ t∩ vie≈ thσ symbo∞ tablσá oεá thσ ì
console. The format of the command is:
*H [ARG1] <cr>
where ARG1 must be a symbol name
Iµá ARG▒á i≤á omitteΣ Z8┼ wil∞ displa∙ thσá entirσá symbo∞á tablσ ì
startinτ witΦ thσ firs⌠ symbo∞ iε thσ table«á Iµ ARG▒ i≤ presen⌠ ì
Z8┼á wil∞á begiε thσ displa∙ witΦ tha⌠ symbol«á Z8┼á display≤á ß ì
blocδá oµá 3▓á symbol≤ theε wait≤ fo≥ use≥ input«á Iµá thσá use≥ ì
enter≤á ßá carriagσ returε thσ thσ nex⌠ blocδ oµá 3▓á symbol≤á i≤ ì
displayed«á Iµá thσ use≥ entere≤ an∙ othe≥ characte≥ thσá commanΣ ì
terminates.
Iµá ßá symbo∞ namσ entereΣ a≤ ARG1 canno⌠ bσ founΣ iε thσá symbo∞ ì
table Z8E prints a question mark.
è
45
Z8E - Z80 DEBUG MONITOR Rick Surwilo
I Initialize FCB and command tail
_________________________________________________________________
Thσ I commanΣ initializes the command tail at 80h and the file ì
name fields in the default FCB (5Ch and 6Ch).
*I [ARG1] [ARG2] ... [ARGn] <cr>
wherσ eacΦ arτ ma∙ bσ an∙ string.
Thσá commanΣ tai∞ iε thσ defaul⌠ DM┴ buffe≥ a⌠ 80Φ wil∞ bσ filleΣ ì
ááááááááiε witΦ ß standarΣ forma⌠ commanΣ buffe≥ comprisinτ ß lengtΦ bytσ ì
ááááááááfolloweΣá b∙á thσ strinτ formeΣ b∙ translatinτ al∞á thσá ARG≤á t∩ ì
ááááááááupper case. A zero is appended after the last ARG.ì
The first two ARGs are treated as (possibly ambiguous) file names ì
anΣ arσ copieΣ witΦ appropriatσ paddinτ int∩ thσ filσ namσ field≤ ì
ááááááááin the default FCB area.
Iµá n∩á ARG▓ i≤ presen⌠ theε thσ filσ namσ fielΣ a⌠ 6CΦá wil∞á bσ ì
ááááááááblank-filleΣá froφá 6DΦ t∩ 77h«á Iµ n∩ ARG▒ i≤ presen⌠ theεá thσ ì
ááááááááfile name field at 5Ch will be blank-filled from 5Dh to 67h.
Sincσá thσ "Ió commanΣ witΦ n∩ argument≤ i≤ ß valiΣá command¼á i⌠ ì
áááááááácannot be aborted.
Notσá tha⌠ Z8┼ doe≤ no⌠ automaticall∙ inser⌠ ß spacσ a⌠ thσá heaΣ ì
ááááááááoµ thσ commanΣ tail«á Iµ yo⌡ arσ debugginτ routine≤ t∩ parsσ thσ ìèáááááááácommanΣá linσá yo⌡ shoulΣ inser⌠ ß taΓ o≥ spacσ yourselµ t∩á makσ ì
ááááááááthe command tail realistic. For example, the Z8E command:
áááááááá i square.peg
generates the command tail:
0A 53 51 55 41 52 45 21 50 45 47 00
10 ╙ ╤ ╒ ┴ ╥ ┼ « ╨ ┼ ╟ 00
wherea≤á thσ commanΣ tai∞ t∩ prograφ 'fitº generateΣ a⌠ thσá CP/═ ì
ááááááááleve∞ by:
fit square.peg
would be:
0B 20 53 51 55 41 52 45 21 50 45 47 00
11 ╙ ╤ ╒ ┴ ╥ ┼ « ╨ ┼ ╟ 00
anΣá yo⌡á caε emulatσ thi≤ forφ b∙ puttinτ thσ spacσ iεá yourselµ ì
áááááááábeforσ thσ worΣ 'square'.
46
Z8E - Z80 DEBUG MONITOR Rick Surwilo
J Animated Full Screen Debugger
________________________________________________________________
Thσá ╩ commanΣ provide≤ thσ use≥ witΦ thσ abilit∙ t∩ "seeó insidσ ì
thσá Z8░á a≤ i⌠ execute≤ ß program«á Thσ Z8┼á animateΣá debugge≥ ì
allow≤ thσ use≥ t∩ vie≈ registers¼ memory¼ anΣ instruction≤ whilσ ì
thσá Z8░á i≤ simultaneousl∙ executinτ code«á Iεá addtioεá thσá ╩ ì
commanΣá provide≤á thσá use≥ witΦ thσá abilit∙á t∩á interactivel∙ ì
single-ste≡ througΦ ß prograφ usinτ thσ ful∞ screeε facilitie≤ oµ ì
thσ command« Thσ forma⌠ oµ thσ ╩ commanΣ is:
*J [/] [*] [ARG1] [ARG2]
US┼á O╞á TH┼á ╩á COMMAN─ FO╥á SINGL┼á STEPPIN╟á I╙ ì
áááááááááááááááDESCRIBE─á A╘á TH┼á EN─á O╞á THI╙á SECTION«á THI╙ ì
áááááááááááááááSECTIO╬á DESCRIBE╙ TH┼ NON-INTERACTIV┼ VERSIO╬á O╞ ì
áááááááááááááááTH┼á ╩á COMMAN─ DURIN╟ WHIC╚ TH┼ USE╥á TURN╙á OVE╥ ìè áááááááááááááááCOMPLET┼á CONTRO╠ O╞ TH┼ EXECUTIO╬ O╞ TH┼á PROGRA═ ì
áááááááááááááááUNDER TEST TO Z8E.
ARG▒á i≤á thσ startinτ addres≤ oµ thσ displa∙á anΣ ì
áááááááááááááááma∙á bσ oµ an∙ valiΣ argumen⌠ type«á Fo≥á example¼ ì
áááááááááááááááthσ use≥ ma∙ specif∙ *J ╨ t∩ resumσ executioε ì
áááááááááááááááa⌠ thσ poin⌠ wherσ i⌠ haΣ previoul∙ been stopped«
áááááááááááááááThσá slasΦ anΣ sta≥ contro∞ subroutinσ tracinτá a≤ ì
áááááááááááááááfollows:
ááááááááááááááá"/" SlasΦá inform≤á Z8┼ no⌠ t∩ tracσ an∙á subrou-ì
áááááááááááááááááááátine≤ a⌠ all.
ááááááááá
ááááááááááá "*" Asterisδ inform≤ Z8┼ no⌠ t∩ tracσ an∙ subrou-ì
áááááááááááááááááááátinσá call≤ t∩ addresse≤ locateΣ iε thσ rangσ ì
áááááááááááááááááááá░ t∩ FF«á Thi≤ featurσ i≤ intendeΣ t∩á screeε ì
ááááááááááááááááááááou⌠á call≤á t∩ locatioε ╡ (BDOS⌐ iε orde≥á t∩ ì
áááááááááááááááááááápreven⌠á Z8E'≤á anΣá thσá user'≤á stacδá froφ ì
áááááááááááááááááááábecominτ hopelessl∙ entangled.
ááááááááááááááá
áááááááááááááááARG2 represent≤ aε optiona∞ timeou⌠ paramte≥ whicΦ ì
áááááááááááááááaffect≤á thσ speeΣ a⌠ whicΦ instruction≤ arσá exe-ì
ááááááááááááááácuted«á Thi≤á numbe≥ ma∙ bσ iε thσ rangσ ░ - 255¼ ì
áááááááááááááááwitΦá 1░ (decimal⌐ a≤ thσ defaul⌠ iµ n∩á valuσá i≤ ì
áááááááááááááááentered« ┴ timeou⌠ valuσ oµ 1░ yield≤ approximate-ì
ááááááááááááááál∙á ß onσ halµ seconΣ dela∙ betweeε thσá executioε ì
áááááááááááááááoµ sequentia∞ instructions«á ┴ valuσ oµ ░á repre-ì
ááááááááááááááásent≤á N╧ timσ dela∙ anΣ i≤ iε actualit∙ thσ fast-ì
áááááááááááááááes⌠ ratσ ß whicΦ thσ ╩ commanΣ caε run.
Oncσá thσ ╩ commanΣ commences¼á Z8┼ take≤ ove≥ thσ Z8░á anΣá fur-ì
nishe≤ thσ use≥ witΦ ß "peepholeó int∩ thσ CPU« Z8┼ execute≤ onσ ì
instructioεá a⌠ ß timσ iε thσ use≥ prograφ pausinτ afte≥ eacΦ onσ ì
t∩ dynamicall∙ updatσ thσ screeε display«á Thσ ╩ commanΣá divide≤ ì
thσ screeε int∩ threσ areas║ registe≥ map¼ disassembleΣ code¼ anΣ ì
memor∙á window«á Thσ registe≥ ma≡ display≤ al∞ register≤ oεá thσ ì
47
Z8E - Z80 DEBUG MONITOR Rick Surwilo
to≡á tw∩á line≤á oµ thσ screeε alonτ witΦ thσ content≤ oµá thσá ╞ ì
registe≥ whicΦ i≤ showε iε mnemoniπ form«á Z8┼ als∩ disassemble≤ ì
1╕á instruction≤ baseΣ oε thσ curren⌠ P├ valuσ anΣ display≤á theφ ì
oεá thσ screen╗á finally¼á usinτ thσ parameter≤ entereΣ iε thσá ╫ ì
command¼á Z8┼á snapshot≤ ß blocδ oµ memor∙ anΣ display≤ i⌠á a≤á ß ì
windo≈ oε thσ screen«
è Executioε oµ thσ use≥ prograφ continue≤ unti∞ an∙ non-numeriπ ke∙ ì
oε thσ keyboarΣ i≤ presseΣ whicΦ end≤ thσ command«á Iµ ß numeriπ ì
ke∙ i≤ pressed¼ theε Z8┼ respond≤ b∙ changinτ thσ timeou⌠ parame-ì
te≥ oε thσ fly« Thσ use≥ ma∙ usσ thσ key≤ ░ - ╣ a≤ ß throttlσ t∩ ì
goverε thσ executioε speed«á Zer∩ beinτ thσ fastest╗á ninσ beinτ ì
thσ slowest.
Thσ commanΣ als∩ terminate≤ wheneve≥ ß use≥ defineΣ breakpoin⌠ i≤ ì
reached«á Tha⌠á is¼á iµ thσ use≥ haΣ se⌠ ß breakpoin⌠ viß thσá ┬ ì
commanΣá anΣ thi≤ addres≤ i≤ reacheΣ thσ ╩ commanΣ end≤á anΣá Z8┼ ì
prompt≤á thσ use≥ fo≥ thσ nex⌠ command«á Iµ thσ breakpoin⌠ haΣ ß ì
pas≤á coun⌠ associateΣ witΦ it¼á thσ pas≤ coun⌠ mus⌠á reacΦá zer∩ ì
beforσ thσ ╩ commanΣ will terminate.
USING THE J COMMAND FOR SINGLE STEPPING
Z8┼á permit≤á thσá use≥ t∩ single-ste≡ througΦá ßá prograφá whilσ ì
allowinτá ßá continuou≤ full-screeε vie≈ oµ thσá registers¼á codσ ì
beinτ executed¼á anΣ thσ content≤ oµ ß blocδ oµ memor∙ a≤á speci-ì
fieΣ b∙ thσ ╦ command« Iε orde≥ t∩ invokσ thσ ful∞ screeε single-ì
ste≡ thσ use≥ enter≤ thσ followinτ command:
*J [/] [*]
» instruct≤ Z8┼ no⌠ t∩ tracσ an∙á subroutine≤ ì
ááááááááááááááááááááa⌠ all
áááááááááááááááááááá¬á instruct≤ Z8┼ no⌠ t∩ tracσ an∙ subroutine≤ ì
áááááááááááááááááááálocatioεáá belo≈áá addres≤áá 100╚áá anΣááá i≤ ì
ááááááááááááááááááááspecificall∙á designeΣ t∩ allo≈ thσ use≥á thσ ì
ááááááááááááááááááááoptioεá oµá no⌠ becominτ tangleΣ iε BDO╙á anΣ ì
ááááááááááááááááááááBIOS.
ááááááááááááááááááááNotσá tha⌠á thi≤ versioε oµ thσ ╩ commanΣá i≤ ì
áááááááááááááááááááádifferentiateΣáá froφáá thσáá non-interactivσ ì
ááááááááááááááááááááversioεá b∙á thσá absencσá oµá an∙áá argumen⌠ ì
ááááááááááááááááááááindicating a execution address.
Thi≤á versioε allow≤ thσ use≥ t∩ executσ onσ instructioεá iεá hi≤ ì
prograφá anΣ theε regaiε contro∞ a⌠ thσ Z8┼ commanΣá level«á Z8┼ ì
wil∞ executσ thσ instructioε pointeΣ t∩ b∙ thσ user'≤ curren⌠ PC« ì
Afte≥á thσ instructioε i≤ executeΣ aε ARRO╫ ¿ =╛ ⌐ point≤ t∩á thσ ì
nex⌠ instructioε t∩ bσ executed.
Thσ » anΣ ¬ option≤ arσ onl∙ valiΣ iµ thσ nex⌠ instructioε t∩á bσ ì
executeΣá i≤ ß CALL«á Iµ thσ prograφ counte≥ i≤ pointinτ a⌠á an∙ ì
other instruction then the / and * have no effect.
48
è
Z8E - Z80 DEBUG MONITOR Rick Surwilo
K Set Memory Window Parameters for Use With the J Command
________________________________________________________________
Thσá Ká commanΣ set≤ thσ startinτ addres≤ anΣ blocδ sizσá oµá thσ ì
memor∙á windo≈ displa∙ durinτ thσ ╩ command«á Thσ forma⌠ oµá thσ ì
command is:
*K ARG1 [,ARG2]
ARG1á represent≤á thσ startinτ addres≤á oµá thσá memor∙ ì
ááááááááááblock.
ááááááááááARG2 i≤ aε optiona∞ sizσ paramter¼ iµ omitteΣ thσ blocδ ì
áááááááááásize defaults to the maximum.
Thσá maximuφá blocδ sizσ i≤ 14┤ decima∞ whicΦá i≤á 9░á hex«á Thσ ì
startinτá addres≤ oµ thσ memor∙ blocδ caε bσ anywherσ iεá memory╗ ì
i⌠ doe≤ no⌠ havσ t∩ bσ withiε thσ confine≤ oµ thσ use≥ program.
è
49
Z8E - Z80 DEBUG MONITOR Rick Surwilo
L Load file
_________________________________________________________________
Thσá L commanΣ allow≤ thσ use≥ t∩ loaΣ file≤ int∩ thσá TP┴á afte≥ ì
the debug session has started. The format of the command is:
*L ARG1[,ARG2] <cr>
áááááááááááááááARG1 i≤ ß singlσ unambiguou≤ filσ namσá con-ì
áááááááááááááááforminτ t∩ standarΣ CP/═ synta° rules:
ááááááááááááááá
ááááááááááááááá - optiona∞á drivσá namσ followeΣ b∙á ßá coloε ì
ááááááááááááááá
áááááááááááááááááááá- mandatory primary file name
áááááááááááááááááááá- optiona∞á secondar∙ filσ namσ precedeΣ b∙ ß ì
áááááááááááááááááááá period
áááááááááááááááARG2 i≤ aε optiona∞ loaΣ address«á Iµ ARG2 i≤á no⌠ ì
áááááááááááááááspecifieΣ thσ nameΣ filσ i≤ loadeΣ a⌠ thσ star⌠ oµ ì
áááááááááááááááthσá TP┴ (addres≤ 10░ hex)«á Iµ ARG2 i≤ giveε thσ ì
áááááááááááááááfilσ wil∞ bσ loadeΣ a⌠ thi≤ address« Z8E wil∞ NO╘ ì
ááááááááááááááárelocatσá individua∞ addresse≤ withiε thσ filσá t∩ ì
áááááááááááááááreflec⌠ thσ ne≈ loaΣ address«á ARG2 ma∙ bσ oµ an∙ ì
ááááááááááááááátype.
áááááááááááááááNOTE: Iµá n∩ argument≤ arσ entereΣ theε Z8┼á wil∞ ì
ááááááááááááááááááááááredispla∙ thσ startinτ address¼á endinτ ad-ì
áááááááááááááááááááááádress¼á anΣ thσ numbe≥ oµ 25╢ bytσ page≤ oµ ì
ááááááááááááááááááááááthσ las⌠ filσ loaded«
If Z8E detect≤ ß erro≥ iε thσ filσ namσ specificatioε thσ messagσ ì
"Synta°á erroróá i≤á printeΣá oεá thσá consolσá anΣá thσá commanΣ ì
terminates.
Iµá Z8Eá i≤ unablσ t∩ locatσ thσ filσ oε thσ specifieΣ drivσá thσ ì
messagσá "Filσá no⌠á foundó i≤ printeΣ oεá thσá consolσá anΣá thσ ì
command terminates.è
Z8E contain≤ n∩ faciltie≤ fo≥ convertinτ .HE╪ (Inte∞ He°á format⌐ ì
objec⌠ file≤ t∩ loadablσ memor∙ image«á Al∞ files¼ regardles≤ oµ ì
type¼á arσá loadeΣá int∩ memor∙ iε exactl∙ thσ samσ forφ a≤á the∙ ì
appea≥ oε disk«á T∩ debuτ ß .HE╪ filσ thσ use≥ shoulΣ firs⌠ loaΣ ì
thσá filσ witΦ thσ CP/═ LOA─ commanΣ anΣ savσ thσ filσá witΦá thσ ì
CP/═á SAV┼ commanΣ whicΦ produce≤ aε absolutσ memor∙ imagσá load-ì
ablσá b∙ Z8E«á Al∞ .CO═ file≤ arσ oµ coursσ alread∙ iεá loadablσ ì
forφ anΣ n∩ LOADinτ anΣ SAVEinτ i≤ required.
Iµá thσá filσá wil∞á no⌠ fi⌠ int∩ thσ TPA¼á Z8Eá wil∞á prin⌠á thσ ì
message:
Out of memory - Continue?
50
Z8E - Z80 DEBUG MONITOR Rick Surwilo
Iµá thσá use≥ answer≤ "Y"¼á Z8E wil∞ resumσ loadinτ thσá filσá a⌠ ì
addres≤ 10░ he° iµ ARG2 wa≤ no⌠ entered¼ o≥ a⌠ thσ addres≤ speci-ì
fieΣ a≤ ARG2«á Iµ thσ use≥ type≤ an∙ othe≥ response¼ thσ loadinτ ì
proces≤ terminate≤ anΣ Z8E return≤ t∩ thσ commanΣ level« However¼ ì
thσá use≥ ma∙ resumσ loadinτ thσ filσ a⌠ ß late≥ timσ b∙á issuinτ ì
thσ L commanΣ anΣ specifyinτ thσ filσ namσ ".ó (ß singlσ period)« ì
Thσá use≥á ma∙á choosσá t∩ specif∙ ß ne≈á startinτá loaΣá addres≤ ì
followinτá thσ period╗á iµ ARG2 i≤ omitteΣ theε thσ loaΣá addres≤ ì
default≤ bacδ t∩ 10░ hex¼á thσ star⌠ oµ thσ TPA«á Iµ thσ use≥ ha≤ ì
donσá an∙á subsequen⌠á disδ I/╧ (sucΦ a≤ loadinτ ßá ne≈á filσá oµ ì
disassemblinτá t∩ disk⌐ iε betweeε thσ timσ loadinτ wa≤ suspendeΣ ì
anΣ theε restarted¼á Z8┼ wil∞ trea⌠ thσ filσ namσ ".ó a≤ ß synta° ì
error«
Thσá use≥ ma∙ occasionall∙ neeΣ t∩ overla∙ ß sectioε oµ codσ iε ß ì
prograφ whicΦ alread∙ reside≤ iε memor∙ witΦ inpu⌠ froφ ß filσ oε ì
disk¼á fo≥ examplσ iε modifyinτ ß BIO╙ iε preparatioε fo≥ MOVCPM« ì
Whilσá thi≤á i≤ possiblσ witΦ loader≤ whicΦ proces≤á .HE╪á objec⌠ ì
files¼á i⌠ i≤ no⌠ feasiblσ witΦ Z8E« Thσ use≥ caε circumven⌠ thi≤ ì
limitatioεá b∙ loadinτ thσ filσ froφ disδ int∩ aε unuseΣá sectioε ì
oµ memor∙ anΣ theε usinτ Z8E'≤ movσ commanΣ t∩ movσ onl∙ thσ datß ì
needeΣ t∩ accomplisΦ thσ overlay.
è
51
Z8E - Z80 DEBUG MONITOR Rick Surwilo
M Move Memory
_________________________________________________________________
Thσá ═á commanΣ allow≤ thσ use≥ t∩ movσ block≤ oµ datσá froφá an∙ ì
addres≤ iε memor∙ t∩ an∙ othe≥ addres≤ iε memory«á Thσ forma⌠ oµ ì
thσ commanΣ is:
*M ARG1 ARG2 ARG3
whereá ARG1á = thσáá startinτá addres≤á oµáá thσ ì
áááááááááááááááááááááááááááááááásourcσ datß blocδ
ááááááááááááááááááááá á
áááááááááááááááááááááááARG2á =ááthσá endinτ addres≤ oµ thσ sourcσ ì
áááááááááááááááááááááááááááááááádatß block
ARG3 = thσáá startinτá addres≤á oµáá thσ ì
áááááááááááááááááááááááááááááááádestinatioε datß blocδ è
ì
arguments may be of any type
Z8┼ automaticall∙ decide≤ whethe≥ ß head-to-heaΣ o≥á tail-to-tai∞ ì
movσá i≤á requireΣ baseΣ oε thσ threσ argument≤á entered«á Ifá ß ì
head-to-heaΣá movσá i≤ needeΣ theε thσ firs⌠ bytσ oµá thσá sourcσ ì
datßá blocδá wil∞á bσ writteε t∩ thσ firs⌠ bytσ positioεá oµá thσ ì
destinatioε datß block╗á thσ seconΣ bytσ oµ thσ sourcσ datß blocδ ì
wil∞á bσ writteε t∩ thσ seconΣ bytσ positioε oµá thσá destinatioε ì
datß block¼ anΣ s∩ oε unti∞ thσ endinτ addres≤ oµ thσ destinatioε ì
datß blocδ i≤ reached«
Oεá thσ othe≥ hand¼á iµ ß tail-to-tai∞ movσ i≤ necessar∙ Z8┼ wil∞ ì
movσá thσá las⌠ bytσ oµ thσ sourcσ datß blocδ t∩á thσá las⌠á bytσ ì
positioε oµ thσ destinatioε datß block¼ followeΣ b∙ thσ seconΣ t∩ ì
las⌠á bytσá oµ thσ sourcσ datß blocδ t∩ thσ seconΣ t∩á las⌠á bytσ ì
positioεá oµá thσá destinatioε datß block¼á anΣ s∩ oεá unti∞á thσ ì
startinτ addres≤ oµ thσ destinatioε blocδ i≤ reached«
┴á tai∞ t∩ tai∞ movσ woulΣ bσ necessar∙ iε thσ followinτá examplσ ì
to prevent the overwriting of the destination data block:
*M 1000 100F 1008
52
Z8E - Z80 DEBUG MONITOR Rick Surwilo
N Output to I/O Ports Without Pre-Read
_________________________________________________________________
Thi≤á commanΣ allow≤ thσ use≥ t∩ outpu⌠ datß t∩ aε I/╧ por⌠ with-ì
ou⌠á firs⌠ readinτ thσ por⌠ (a≤ occur≤ iε thσá ╤á command)«á Thσ ì
forma⌠ oµ thσ commanΣ is:è
*N [ARG1]
whereáARG▒ i≤ thσ por⌠ numbe≥ t∩ whicΦ thσ ì
ááááááááááááááááááááááááááááádatß wil∞ bσ written.
áááááááááááááááááááááááááááááIµ ARG▒ i≤ omitteΣ theε Z8┼ use≤ thσ ì
ááááááááááááááááááááááááááááálas⌠á por⌠á addres≤ whicΦá haΣá beeε ì
áááááááááááááááááááááááááááááinpu⌠ b∙ ß previou≤ ╬ o≥ ╤ command«
Z8┼ wil∞ promp⌠ thσ use≥ b∙ displayinτ thσ curren⌠ por⌠ numbe≥ oε ì
thσá lef⌠ hanΣ sidσ oµ thσ consolσ anΣ postioninτ thσ curso≥á tw∩ ì
space≤ thσ thσ right«á A⌠ thi≤ poin⌠ thσ use≥ caε ente≥ thσ datß ì
t∩á bσ sen⌠ t∩ thσ por⌠ iε thσ forφ oµ aεá ARGUMENT-STRING«á Thσ ì
ARGUMENT-STRIN╟á allow≤á thσ use≥ t∩ mi° variou≤á argumen⌠á type≤ ì
sucΦ a≤ he° datß anΣ ASCI╔ litera∞ strings«á Oµ coursσ thσá use≥ ì
caεá elec⌠ t∩ merel∙ outpu⌠ singlσ byte≤ iµ desired«á Thσ ╬ com-ì
manΣá i≤ particularl∙ usefu∞ wheε programminτ variou≤á Z8░á peri-ì
phera∞á chip≤ sucΦ a≤ thσ DM┴ anΣ SI╧ chip≤ whicΦ expec⌠á initia-ì
lizatioε byte≤ t∩ arrivσ iε ß streaφ withou⌠ interveninτ reads.
*N 80
80 'T',00,12#,998
Thi≤á ARGUMENT-STRIN╟ woulΣ bσ evaluateΣ int∩ thσ ì
áááááááááááááááá╡ bytes║ 5┤ 0░ 0├ 0╣ 98« Thesσ fivσ byte≤ woulΣ ì
áááááááááááááááábσ sen⌠ t∩ por⌠ 8░ viß aε OTI╥á instruction«á N∩ ì
áááááááááááááááádela∙ occur≤ betweeε successivσ bytes«
Afte≥ thσ datß ha≤ beeε entereΣ anΣ afte≥ i⌠ ha≤ beeε sen⌠ t∩ thσ ì
I/╧á por⌠á Z8┼á reprompt≤ thσ use≥ b∙ displayinτá thσá samσá por⌠ ì
number«á Thi≤á give≤ thσ use≥ t∩ oppportunit∙ t∩ senΣá addtiona∞ ì
datßá t∩ thσ samσ port«á However¼á b∙ no⌠ enterinτ datß thσ use≥ ì
caεá changσá thσá curren⌠ por⌠ addres≤ b∙á enterinτá an∙á oµá thσ ì
following:
53
è
Z8E - Z80 DEBUG MONITOR Rick Surwilo
CARRIAGE ááThσ nex⌠ sequentia∞ por⌠ numbe≥ iεá ascendinτ ì
áááááááááRETURN orde≥ become≤ thσ curren⌠ por⌠ address.
UP ARROW áááThσ nex⌠ sequentia∞ por⌠ numbe≥ iε descendinτ ì
ááááááááááááááááááááorde≥ become≤ thσ curren⌠ por⌠ address.
=ARG ááááááAn∙ argumen⌠ appearinτ immediatel∙ afte≥á thσ ì
ááááááááááááááááááááequa∞á sigεá (n∩ interveninτ spaces⌐ i≤á eva-ì
ááááááááááááááááááááluateΣ a≤ aε ╕ bi⌠ number¼ anΣ iµ founΣ t∩ bσ ì
áááááááááááááááááááávaliΣá theε i⌠ become≤ thσ ne≈á curren⌠á por⌠ ì
ááááááááááááááááááááaddress.
PERIOD áTerminate command
Thσá use≥á caεá als∩ monito≥ aε I/╧ por⌠ witΦ thσá ╬á commanΣá b∙ ì
enclosinτá thσá por⌠ numbe≥ oε thσ commanΣ linσá iεá parentheses« ì
Monito≥á modσá vißá thσ ╬ commanΣ i≤ identica∞ t∩ tha⌠ oµá thσá ╤ ì
command (see Q command).
è
54
Z8E - Z80 DEBUG MONITOR Rick Surwilo
O Output Current Breakpoints to Console
_________________________________________________________________
Thσá ╧ commanΣ allow≤ thσ use≥ t∩ vie≈ al∞ breakpoint≤á currentl∙ ì
in effect. The format of the command is:
*O
no arguments are required
Iµá Z8Eá find≤á ß symbo∞ namσ correspondinτ t∩ thσá absolutσá he° ì
addres≤ oµ ß breakpoin⌠ addres≤ iε thσ symbo∞ tablσ (iµ ßá symbo∞ ì
tablσá exists⌐ theε thσ symbo∞ namσ a≤ wel∞ a≤ thσ memor∙ addres≤ ì
i≤ displayed« Iµ n∩ symbo∞ correspondinτ t∩ thσ addres≤ i≤ founΣ ì
onl∙ thσ hex addres≤ i≤ displayed«
Iµá an∙á pas≤ count≤ arσ currentl∙ iε effec⌠ the∙á arσá displayeΣ ì
nex⌠ t∩ thσ breakpoin⌠ addres≤ witΦ whicΦ the∙ arσ associated.
è
55
Z8E - Z80 DEBUG MONITOR Rick Surwilo
P Examine/Modify PSW (Flag Register)
_________________________________________________________________
Thσá ╨á commanΣá provide≤ ß convenien⌠ methoΣá oµá examininτá anΣ ì
optionall∙á modifyinτá thσ F(lag⌐ registe≥ iε thσá use≥á registe≥ ì
set« Thσ forma⌠ oµ thσ commanΣ is:
*P
no arguments are required on the command line
Upoεá receip⌠ oµ thσ ╨ commanΣ Z8E display≤ thσ mnemonic≤ corres-ì
pondinτá t∩á thσ curren⌠ statσ oµ thσ fou≥á user-modifiablσá bit≤ ì
(sign¼ carry¼ zero¼ parity⌐ iε Flaτ register:
MNEMONIC MEANING BIT STATUS
P positive reset
M minus set
NC no carry reset
C carry set
PO parity odd reset
PE parity even set
NZ not zero resetè Z zero set
Z8Eá print≤á thσ mnemoniπ correspondinτ t∩ thσ curren⌠á statσá oµ ì
eacΦá oµá thσá fou≥á flaτá bits«á Z8Eá theεá issue≤á ßá carriagσ ì
return/linσ feeΣ anΣ pause≤ fo≥ use≥ input«á Thσ use≥ ma∙ modif∙ ì
an∙á oµá thσ fou≥ flaτ bit≤ b∙ typinτá thσá appropriatσá mnemoniπ ì
followeΣá b∙á ßá carriagσ return«á Thσ use≥ ma∙á ente≥á multiplσ ì
mnemonic≤ b∙ separatinτ eacΦ onσ witΦ ß space«
Iµá n∩ mnemonic≤ arσ entered¼á n∩ flag≤ bit≤ arσ altereΣ anΣá thσ ì
command terminates.
Iµ aε invaliΣ flaτ bi⌠ mnemoniπ i≤ entereΣ Z8E print≤ ßá questioε ì
mark.
56
Z8E - Z80 DEBUG MONITOR Rick Surwilo
Q Query I/O Ports
_________________________________________________________________
Thσá ╤á commanΣ allow≤ thσ use≥ flexiblσ acces≤ t∩ I/╧á port≤á b∙ ì
providinτá thσ abilit∙ t∩ perforφ singlσ bytσá input¼á continuou≤ ì
inpu⌠ (monito≥ mode)¼ anΣ singlσ o≥ multi-bytσ outpu⌠ followinτ ß ì
pre-reaΣ oµ thσ port« Thσ forma⌠ oµ thσ commanΣ is:
*Q [(] [ARG1] [)]
wherσ ARG1 i≤ aε ╕ bi⌠ por⌠ addres≤ iε thσ range
0 - 255
ARG1 ma∙ bσ an∙ symbo∞ type¼á howeve≥ iµ ß 1╢á bi⌠ ì
ááááááááááááááávaluσá i≤á specifieΣá onl∙ thσ lo≈ orde≥á bytσá i≤ ì
ááááááááááááááásignifican⌠
áááááááááááááááIµá n∩á argumen⌠ i≤ giveε Z8┼ wil∞á usσá thσá mos⌠ ìè ááááááááááááááárecen⌠ por⌠ numbe≥ a≤ entereΣ b∙ thσ use≥ viß aε ╬ ì
áááááááááááááááo≥ ╤ command.
áááááááááááááááIµá ARG1 i≤ encloseΣ iε parenthese≤ Z8┼ wil∞ ente≥ ì
áááááááááááááááMONITO╥ MODE.
Upoεá receip⌠á oµ ARG1 Z8┼ wil∞ reaΣ thσ specifieΣ I/╧á por⌠á anΣ ì
displa∙á thσ bytσ reaΣ a≤ botΦ ╕ bi⌠ hexadecima∞ valuσá anΣá it'≤ ì
ASCI╔ equivalent« CommanΣ option≤ oncσ ß bytσ ha≤ beeε reaΣ froφ ì
thσ I/╧ por⌠ arσ a≤ follows:
ì
áááááSINGLE BYTE INPUT
ááááááááB∙á enterinτá ß SPACE immediatel∙á followinτá thσ ì
áááááááádisplayeΣá content≤ oµ thσ I/╧ por⌠ thσ use≥á caε ì
ááááááááinstruc⌠á Z8┼ t∩ continuσ readinτ froφá thσá samσ ì
ááááááááI/╧ port:
*Q EE
EE 24 $ <space>
EE 24 $
áááááááá
ááááááááB∙á enterinτ ß CARRIAGE RETURN followinτ thσ dis-ì
ááááááááplayeΣá content≤á oµ thσ I/╧ por⌠á thσá use≥á caε ì
ááááááááinstruc⌠áá Z8┼á t∩á reaΣá thσá nex⌠á por⌠á numbe≥ ì
áááááááá(ascendinτ order):
*Q EE
EE 24 $ <cr>
EF C1 A
ááááááááB∙á enterinτ ß care⌠ "^ó followinτ thσá displayeΣ ì
áááááááácontent≤á oµ thσ I/╧ por⌠ thσ use≥á caεá instruc⌠ ì
57
Z8E - Z80 DEBUG MONITOR Rick Surwilo
ááááááááZ8┼á t∩ reaΣ thσ previou≤ por⌠ numbe≥ (descendinτ ì
ááááááááorder):
*Q EE
EE 24 $ ^ (up arrow entered by user)
ED 06 ~
è
ááááááááB∙ enterinτ aε equa∞ sigε "=ó followeΣ b∙ ß valiΣ ì
ááááááááargument¼á thσá use≥ caε switcΦ t∩ readinτ ßá ne≈ ì
ááááááááport address:
áááááááá *Q EE
áááááááá EE 24 '$' =90
áááááááá 90 BF '?' á áá
áááááCONTINUOUS INPUT (MONITOR MODE)
ááááááááZ8┼ provide≤ thσ use≥ witΦ thσ abilit∙ t∩ monito≥ ì
ááááááááaεá inpu⌠á port«á Z8┼ wil∞ continousl∙ reaΣá thσ ì
ááááááááselecteΣá inpu⌠ por⌠ anΣ displa∙ thσ content≤á oε ì
ááááááááthσá screen«á Z8┼ display≤ thσ bytσ iε botΦá he° ì
ááááááááanΣá binary«á Thi≤á featurσ i≤á usefulá iεá thσ ì
áááááááátestinτá oµ I/╧ ports«á Depressinτ an∙ ke∙ oε thσ
áááááááákeyboard exits monitor mode.
áááááMULTI-BYTE OUTPUT
ááááááááFollowinτá thσá reaΣ oµ aε I/╧ por⌠ thσ use≥á ma∙ ì
ááááááááelec⌠á t∩á outpu⌠ data«á Thσ use≥á ma∙á ente≥á aε ì
ááááááááARGUMENT-STRIN╟ whicΦ wil∞ bσ sen⌠ t∩ thσ por⌠ oε ì
ááááááááßá bytσá b∙ bytσ basi≤ witΦ n∩ interveninτá read≤ ì
áááááááábetweeε output≤ a≤ showε below:
áááááááá *Q 50
50 44 'D' 23,9,'B2E',00,F723,81
áááááááá ^ ^
áááááááá á áástrinτá a≤ entereΣ b∙ ì
ááááááááááááááááá ááááááuse≥ appear≤á betweeε ì
ááááááááááááááááááá ááááarrow≤
ááááááááThσá datß a≤ entereΣ b∙ thσ use≥ iε thi≤á examplσ ì
ááááááááwoulΣá firs⌠á bσ converteΣ t∩ thσ ╣á byte≤á showε ì
áááááááábelow:
23 09 42 32 45 00 F7 23 81
ááááááááThesσá ╣ byte≤ woulΣ theε bσ sen⌠ t∩ por⌠ 5░á onσ ì
áááááááábytσá afte≥ anothe≥ withou⌠ an∙ interveninτ read≤ ì
ááááááááo≥ statu≤ checks.
58
è
Z8E - Z80 DEBUG MONITOR Rick Surwilo
R Examine/Modify Register Contents
_________________________________________________________________
Thσá ╥á commanΣ allow≤ thσ use≥ t∩ examinσ anΣ optionall∙á modif∙ ì
register≤á anΣá registe≥ pair≤ iε thσá use≥á registe≥á set«á Thσ ì
format of the command is:
*R ARG1 <cr> or space
wherσá ARG1á i≤ an∙ oµ thσ 2▓á registe≥á mnemonic≤ ì
ááááááááááááááálisteΣ below:
ááááááááááááááá áA B C D E H L
áááááá AF BC DE HL IX IY SP
áááááá AF' BC' DE' HL' I R P PC
(thσá prograφá counte≥ ma∙á bσá specifieΣá a≤ ì
ááááááááááááááááááááeithe≥ ╨ o≥ PC)
T∩á examinσ ß registe≥ thσ use≥ enter≤ ß mnemoniπ froφ thσá abovσ ì
lis⌠ followeΣ b∙ ß carriagσ returε o≥ ß space«á Z8E wil∞ displa∙ ì
thσá curren⌠ content≤ oµ thσ registe≥ oε thσ samσ line«á A⌠ thi≤ ì
poin⌠ thσ use≥ ha≤ thσ optioε oµ enterinτ aε argumen⌠ oµ an∙ typσ ì
iµá thσá content≤á oµ thσ registe≥ o≥ registe≥á pai≥á arσá t∩á bσ ì
changed«á Thσá replacemen⌠ valuσ ma∙ bσ terminateΣ b∙ eithe≥á ß ì
carriagσá returε o≥ ß space«á Iµ n∩ valuσ i≤ entereΣ Z8E issue≤ ß ì
carriagσ return/linσ feeΣ anΣ wait≤ fo≥ thσ nex⌠ registe≥á mnemo-ì
niπ t∩ bσ entered.
Iµá thσ use≥ specifie≤ ß 1╢ bi⌠ valuσ a≤ thσ ne≈ content≤ oµ aε ╕ ì
bit register only the low order byte of the value is used.
Thσ commanΣ terminate≤ wheε ß carriagσ returε o≥ spacσ i≤ entereΣ ì
wheε Z8E i≤ waitinτ fo≥ ß registe≥ mnemonic.
è
59
Z8E - Z80 DEBUG MONITOR Rick Surwilo
S Single Step
_________________________________________________________________
ááááááááááááááááááááááááááááá
Thσ ╙ commanΣ allow≤ thσ use≥ t∩ executσ ß prograφ instructioε b∙ ì
instruction«á Thσá ╙á commanΣ provide≤ fo≥ ful∞ tracinτá oµá thσ ì
user program« Thσ forma⌠ oµ thσ commanΣ is:
*S [/] [ARG1] <cr>
áááááááááááááááwherσá ARG1 i≤ thσ numbe≥ oµ instruction≤ t∩á exe-ì
ááááááááááááááácutσ iε thσ use≥ program¼á iµ n∩ argumen⌠ i≤ giveε ì
áááááááááááááááZ8E defaults to 1
ááááááááááááááá
áááááááááááááááARG1 may be of any type
Thσ slasΦ "/ó allow≤ thσ use≥ contro∞ ove≥ thσ tracinτ oµ subrou-ì
tines«á Iµá ß slasΦ i≤ includeΣ beforσ thσ coun⌠ (iµ ßá coun⌠á i≤ ì
entered)¼á o≥á iµ thσ slasΦ i≤ thσ onl∙ characte≥ oε thσá commanΣ ì
linσá theε subroutine≤ wil∞ no⌠ bσ traced«á ┴ slasΦ affect≤ onl∙ ì
CAL╠á instruction≤ whicΦ liσ withiε thσ rangσ oµá ARG1«á Iεá thσ ì
mos⌠á typica∞á casσ n∩ ARG1 i≤ presen⌠ anΣ thσ single ste≡á coun⌠ ì
default≤á t∩ 1«á Iµ thσ curren⌠ PC¼á 100░ iεá thi≤á example¼á i≤ ì
pointinτ t∩ ß cal∞ instructioε theε thσ command:
*S /
1000 CD 56 30 RASRTN: CALL ANYSUB
1003 FE 04 CP 4
1005 CA 17 10 JP Z,AHEAD
wil∞á causσá thσá entirσá subroutinσ ANYSU┬ t∩á bσá executeΣá anΣ ì
contro∞á wil∞á returε t∩ thσ use≥ a⌠ addres≤ 1003«á
Iµ ARG▒ i≤ omitteΣ Z8┼ wil∞ transfe≥ contro∞ t∩ thσ use≥á prograφ ì
anΣá onσ instruction¼á thσ onσ pointeΣ t∩ b∙ thσ curren⌠ content≤ ì
oµ thσ user'≤ prograφ counter¼á wil∞ bσ executed«á Followinτ thσ ì
executioεá oµ thσ instructioε (o≥ grou≡ oµ instruction≤á iµá ARG▓ ì
wa≤á greate≥á thaε 1⌐ Z8┼ regain≤ contro∞ anΣ automaticall∙á dis-ìè play≤ thσ curren⌠ content≤ oµ al∞ thσ use≥ registers.
Thσá use≥ ma∙ optionall∙ indicatσ tha⌠ morσ thaε onσá instructioε ì
i≤á t∩á bσ executeΣ b∙ enterinτ ß valuσ greate≥ thaε ▒ fo≥á ARG1« ì
Z8E wil∞ transfe≥ contro∞ t∩ thσ use≥ prograφ anΣ regaiεá contro∞ ì
onl∙á wheεá thσ specifieΣ numbe≥ oµ instruction≤ havσá beeεá exe-ì
cuted«á Thi≤ featurσ i≤ usefu∞ iε debugginτ smal∞ loops╗ iε tha⌠ ì
thσá use≥ caε se⌠ ARG1 equa∞ t∩ thσ numbe≥ oµ instruction≤ iε thσ ì
rangσ oµ thσ loop«á Z8E wil∞ displa∙ thσ registe≥ content≤ afte≥ ì
eacΦá instructioε oµ thσ loo≡ i≤ executeΣ anΣ returεá contro∞á t∩ ì
thσ use≥ afte≥ ever∙ iteratioε oµ thσ loop.
Thσá singlσá ste≡ commanΣ alway≤ cause≤ thσ executioε oµ thσá in-ì
structioεá pointeΣ t∩ b∙ thσ curren⌠ content≤ oµ thσ user'≤á pro-ì
graφ counter«á Thi≤ i≤ thσ instructioε tha⌠ appear≤ iε disassem-ì
60
Z8E - Z80 DEBUG MONITOR Rick Surwilo
bleΣá forφá a≤á par⌠ oµ thσ outpu⌠ oµ thσá "Xóá commanΣá (displa∙ ì
machinσá state)«á Bea≥ iε minΣ tha⌠ ARG1 i≤ no⌠ thσá addres≤á a⌠ ì
whicΦ singlσ steppinτ i≤ t∩ begin╗ i⌠ i≤ ß coun⌠ t∩ thσ numbe≥ oµ ì
instruction≤á t∩ execute«á Iµ thσ use≥ desire≤ t∩ singlσ ste≡ a⌠ ì
aεá addres≤ othe≥ thaε thσ onσ containeΣ iε thσ prograφá counter¼ ì
theεá thσ P├ registe≥ mus⌠ bσ modifieΣ viß thσ ╥á commanΣá beforσ ì
thσ singlσ ste≡ commanΣ i≤ issueΣ t∩ Z8E.
Allowinτá thσá conveniencσ oµ enterinτ "Só <cr╛á t∩á executσá onσ ì
instructioε ha≤ thσ sidσ effec⌠ oµ no⌠ allowinτ thσ use≥ t∩ abor⌠ ì
thσá commanΣ iε betweeε thσ timσ thσ "Só i≤ typeΣ anΣ thσ <cr╛ i≤ ì
entereΣ b∙ simpl∙ omittinτ aε argumen⌠ anΣ typinτ <cr>«á Iµá yo⌡ ì
changσ you≥ minΣ anΣ wan⌠ t∩ cance∞ thσ command¼ typσ iε aε inva-ì
liΣá argumen⌠á a≤ ARG1«á Thi≤ wil∞ causσ ß questioε marδá t∩á bσ ì
displayed╗ however¼ n∩ instructioε wil∞ bσ executed«
Durinτá blocδá tracinτ (ARG1 greate≥ thaε 1⌐ thσ commanΣá ma∙á bσ ì
terminated by hitting any key on the keyboard.
Thσá ╙ commanΣ doe≤ no⌠ relocatσ instruction≤ beforσ executioε a≤ ì
doe≤ thσ ╟ commanΣ (seσ ╟ command)« Hence¼ i⌠ i≤ no⌠ possiblσ t∩ ì
single step through each iteration of a DJNZ $ instruction.
è
61
Z8E - Z80 DEBUG MONITOR Rick Surwilo
U Write Symbol Table to Disk
_________________________________________________________________
Thσá ╒ commanΣ allow≤ thσ use≥ t∩ writσ thσ curren⌠ symbo∞á tablσ ì
to a disk file. The format of the command is:
*U ARG1
áááááááááááááááARG▒á i≤ thσ namσ oµ thσ filσ t∩ whicΦ thσá symbo∞ ì
ááááááááááááááátable is to be written.
Thi≤á commanΣ i≤ usefu∞ t∩ savσ an∙ symbo∞ name≤ entereΣá b∙á thσ ì
use≥á viß thσ ┴ command«á Thσ entirσ symbo∞ tablσ i≤ writteεá t∩ ì
disδ usinτ thσ forma⌠ oµ ß .SY═ filσ (seσ appendi° A)« Thσ tablσ ì
caε bσ subsequentl∙ loadeΣ a⌠ thσ nex⌠ invokatioε oµ Z8E.
è Notσá tha⌠ sincσ thσ filσ i≤ storeΣ a≤ ß .SY═ formatteΣ filσá thσ ì
use≥ shoulΣ usσ ß filσ namσ extensioε tha⌠ begiε witΦ thσ lette≥ ì
"S"«á Thi≤á i≤ duσ t∩ thσ fac⌠ tha⌠ thσ nex⌠ timσ Z8┼ load≤ thi≤ ì
symbo∞á filσ i⌠ wil∞ examinσ thσ thσ firs⌠ characte≥ oµ thσá filσ ì
namσ extension«á Iµ thσ firs⌠ characte≥ i≤ aε "Só thσ forma⌠á i≤ ì
assumeΣ t∩ bσ .SY═ anΣ thσ symbo∞ tablσ i≤ buil⌠ accordingly╗ thσ ì
appearancσá oµ an∙ othe≥ lette≥ i≤ takeε t∩ indicatσ ß .PR╬ file«
Iµá ß filσ witΦ thσ namσ ARG▒ alread∙ exist≤ oε disδ i⌠á wil∞á bσ ì
deleted«
62
Z8E - Z80 DEBUG MONITOR Rick Surwilo
V Verify two memory blocks
_________________________________________________________________
Thσá ╓á commanΣ allow≤ thσ use≥ t∩ comparσ tw∩ block≤ oµá memory« ì
Z8E wil∞ displa∙ al∞ difference≤ betweeε thσ two«á Thσ forma⌠ oµ ì
thσ commanΣ is:è
*V ARG1 ARG2 ARG3
where ARG1 = the starting address of memory block 1
áááááááááááááááááARG2 = the ending address of memory block 1
ARG3 = áthe starting address of memory block 2
Z8E compare≤ memor∙ blocδ ▒ t∩ memor∙ blocδ ▓ bytσ b∙ byte« If ß ì
mismatcΦá occur≤á Z8E wil∞ displa∙ thσ addres≤ iε eacΦá blocδá a⌠ ì
whicΦá thσ mismatcΦ wa≤ found¼á a≤ wel∞ a≤ thσ bytσ containeΣá a⌠ ì
eacΦ address«á Thσ comparisoε continue≤ unti∞ thσ endinτ addres≤ ì
i≤ reached.
Thσá use≥ ma∙ hal⌠ thσ commanΣ a⌠ an∙ timσ b∙ depressinτ an∙á ke∙ ì
on the keyboard.
63
è
Z8E - Z80 DEBUG MONITOR Rick Surwilo
W write memory to disk
_________________________________________________________________
Thσá ╫ commanΣ allow≤ thσ use≥ t∩ writσ thσ content≤ oµ memor∙ t∩ ì
a disk file. The format of the command is:
*W arg1 [arg2 arg3]
ARG▒á i≤ thσ namσ oµ ß filσ t∩ whicΦ writinτá wil∞ ì
ááááááááááááááátakσ place.
áááááááááááááááARG▓ anΣ ARG│ arσ thσ optiona∞ startinτ anΣ endinτ ì
áááááááááááááááaddresse≤á oµ thσ portioε oµ memor∙ t∩ bσá writteε ì
ááááááááááááááát∩á thσ disk«á Iµ thσ addresse≤ omitteΣ theεá thσ ì
ááááááááááááááámemor∙á blocδá t∩á bσ writteε i≤á defineΣá b∙á thσ ì
ááááááááááááááástartinτá anΣá endinτ addresse≤ oµ thσá las⌠á filσ ì
áááááááááááááááloaded«á Thesσá addresse≤ caε bσá redisplayeΣá b∙ ì
áááááááááááááááenterinτ thσ ╔ commanΣ witΦ n∩ arguments.
Z8┼á alway≤á delete≤ an∙ filσ oε disδ whosσ namσ i≤ thσá samσá a≤ ì
ARG1« Iµ n∩ filσ b∙ thi≤ namσ exist≤ theε Z8┼ wil∞ automaticall∙ ì
creatσ it.
Z8┼ wil∞ ech∩ thσ startinτ memor∙ addres≤ anΣ continuall∙á updatσ ì
thσ endinτ memor∙ addres≤ a≤ thσ writinτ t∩ disδ take≤ place.
è
64
Z8E - Z80 DEBUG MONITOR Rick Surwilo
X display machine state
_________________________________________________________________
Thσáá ╪á commanΣá display≤á thσá curren⌠á content≤á oµá al∞á use≥ ì
registers. The format of the command is:
*X
no arguments are required
Z8┼á display≤ display≤ al∞ registers¼á excep⌠ thσ ╔ registe≥á anΣ ì
thσ ╥ register¼á oε tw∩ line≤ oµ thσ console«á Iε addition¼á thσ ì
instructioε pointeΣ t∩ b∙ thσ user'≤ prograφ counte≥ i≤ disassem-ì
bleΣ anΣ displayeΣ oε thσ seconΣ line«á Thinδ oµ thi≤ a≤ thσ "oε ì
deckóá instruction║á thσ instructioε tha⌠ wil∞ bσ executeΣá upoε ì
thσ receip⌠ oµ thσ nex⌠ ╟ (GO⌐ o≥ ╙ (SINGL┼ STEP⌐ command.
To inspect the I or R registers use the R command.
è
65
Z8E - Z80 DEBUG MONITOR Rick Surwilo
Y fill memory
_________________________________________________________________
Thσá ┘ commanΣ fill≤ ß use≥ specifieΣ blocδ oµ memor∙ witΦ ß use≥ ì
specifieΣá patterε oµ bytes¼á thσ lengtΦ oµ whicΦ i≤ limiteΣ onl∙ ì
by the length of Z8E's input buffer which is 80 bytes long:
*Y ARG1 ARG2 ARG3 <cr>
where ARG1 = thσá startinτ addres≤ oµ thσ blocδ ì
ááááááááááááááááááááááááááááááát∩ fill
ARG2 = thσ endinτ addres≤ oµ thσ blocδ t∩ ì
áááááááááááááááááááááááááááááááfill
ARG3 = i≤ thσ datß patterε t∩ bσá writteε ì
ááááááááááááááááááááááááááááááát∩á memory«á ARG3 i≤ evaluateΣ b∙ ì
áááááááááááááááááááááááááááááááZ8┼ a≤ typσ ARGUMENT-STRIN╟á whicΦ ì
áááááááááááááááááááááááááááááááma∙á bσ oµ an∙ lengtΦ iε thσ rangσ ì
áááááááááááááááááááááááááááááááoµá ▒ througΦ thσ numbe≥ oµá byte≤ ì
áááááááááááááááááááááááááááááááremaininτ iε thσ inpu⌠ buffe≥ oncσ ì
áááááááááááááááááááááááááááááááARG1 anΣ ARG2 havσ been input.
Thσ ┘ commanΣ give≤ thσ use≥ thσ capabilit∙ to initializσ memor∙ ì
t∩á an∙á datß pattern«á Thσ capabilit∙á oµá enterinτá multi-bytσ ì
string≤á a≤ thσ datß patterε witΦ whicΦ t∩ fil∞ memor∙ allow≤ thσ ì
use≥ t∩ storσ repeatinτ pattern≤ oµ datß iε memor∙ witΦ ßá singlσ ìè command. For example if the user entered the command:
*Y 1000 127C 'abcd',16,77
Z8┼á woulΣá begiε writinτ thσ ╢ bytσ patterε (6▒ 6▓ 6│ 6┤ 1╢á77⌐ ì
entereΣá a≤ ARG│ startinτ a⌠ addres≤ 1000«á Thi≤á patterεá woulΣ ì
repea⌠ a⌠ addres≤ 1006¼ 100C¼ 1012¼ etc«
Thσ commanΣ end≤ afte≥ ß bytσ i≤ writteε t∩ thσ ARG▓ addres≤ eveε ì
iµá thi≤ bytσ doe≤ no⌠ represen⌠ thσ las⌠ bytσ iε thσ ARG│ block« ì
Iε thσ abovσ examplσ thσ commanΣ woulΣ enΣ wheε ß bytσ i≤ writteε ì
t∩ addres≤ 127├ eveε iµ tha⌠ bytσ i≤ no⌠ 77«
66
Z8E - Z80 DEBUG MONITOR Rick Surwilo
Z disassemble command
_________________________________________________________________
Thσá ┌á commanΣ allow≤ thσ use≥ t∩ disassemblσ ß blocδá oµá data« ì
Z8Eá perform≤á disassembly¼á whicΦ i≤ thσ translatioεá oµá binar∙ ì
memor∙ datß int∩ sourcσ codσ format¼á usinτ thσ ful∞ Z8░ instruc-ì
tioε se⌠ anΣ Ziloτ mnemonics«á Thσ resultan⌠ sourcσ codσ ma∙á bσ ì
directeΣá t∩ thσ consolσ o≥ t∩ thσ consolσ anΣ ß disδ filσ simul-ì
taneously« Z8E als∩ allow≤ thσ use≥ t∩ disassemblσ interactivel∙ ì
wheε ARG2 i≤ equa∞ t∩ 1« Thσ forma⌠ oµ thσ commanΣ is:
*Z ARG1 [ARG2 ARG3] <cr>
whereá ARG1á =á thσ star⌠ addres≤ a⌠ whicΦ disa-ì
ááááááááááááááááááááááááááááááááássembl∙ i≤ t∩ begin
ARG2 =áá i≤á optiona∞ anΣ representsá thσ ìè áááááááááááááááááááááááááááááááááuppe≥á limi⌠ oµ thσá disassembl∙ ì
áááááááááááááááááááááááááááááááááproces≤ (seσ detail≤ below)
ARG3 =á i≤á aε optiona∞ filσ namσ speci-ì
áááááááááááááááááááááááááááááááááficatioε fo≥ disassembl∙ t∩ disδ
áááááááááááááááARG1 ma∙ bσ oµ an∙ argumen⌠ type«
áááááááááááááááARG2á i≤á treateΣ iε onσ oµ tw∩ way≤ dependinτá oε ì
áááááááááááááááit≤á value:á
ááááááááááááááááá1)áIµá ARG2 evaluate≤ t∩ ß numbe≥ betweeε ▒á anΣ ì
áááááááááááááááááááá25╡á (decimal⌐ Z8E wil∞ disassemblσ iε "blocδ ì
áááááááááááááááááááámodeó anΣ ARG2 become≤ ß coun⌠ oµ thσá numbe≥ ì
ááááááááááááááááááááoµ instruction≤ pe≥ blocδ t∩ disassemble«á A≤ ì
ááááááááááááááááááááwil∞á bσá explaineΣ below¼á Z8E pause≤á afte≥ ì
ááááááááááááááááááááeacΦá blocδá i≤ disassembleΣ anΣá allow≤á thσ ì
ááááááááááááááááááááuse≥ t∩ continuσ o≥ t∩ terminatσ thσ command.
ì
ááááááááááááááááááááIµ ARG2 i≤ omitteΣ altogethe≥ ß defaul⌠ blocδ ì
áááááááááááááááááááásizσ oµ ▒ i≤ used«
áááááááááááááááááááá
ááááááááááááááááááááWheneve≥ ARG2 equal≤ 1¼á eithe≥ explicitl∙ o≥ ì
ááááááááááááááááááááb∙ default¼á Z8E allow≤ interactivσ disassem-ì
áááááááááááááááááááábl∙ whicΦ allow≤ thσ use≥ t∩ choosσ thσá out-ì
áááááááááááááááááááápu⌠á forma⌠ oµ thσ data«á Interactivσ disas-ì
áááááááááááááááááááásembl∙ i≤ discusseΣ below.
ááááááááááááááááá2)áIµá ARG2 evaluate≤ t∩ ß numbe≥á greate≥á thaε ì
áááááááááááááááááááá25╡á i⌠á i≤ assumeΣ t∩ bσ aε endinτá address« ì
ááááááááááááááááááááIεá thi≤ casσ disassembl∙ wil∞á proceeΣá froφ ì
áááááááááááááááááááástartinτá addres≤á (ARG1⌐ t∩á endinτá addres≤ ì
áááááááááááááááááááá(ARG2⌐ anΣ n∩ use≥ interventioε i≤ required.
ì
áááááááááááááááARG3¼á iµ present¼á i≤ assumeΣ t∩ bσ thσ namσ oµ ß ì
ááááááááááááááádisδá filσ int∩ whicΦ thσ disassembleΣ outpu⌠ wil∞ ì
ááááááááááááááábσ written«á Z8E searche≤ thσ specifieΣ disδá fo≥ ì
67
Z8E - Z80 DEBUG MONITOR Rick Surwilo
áááááááááááááááthσá nameΣ file«á Iµ thσ filσ i≤ found¼á theε al∞ ì
ááááááááááááááádisassembleΣ outpu⌠ wil∞ bσ writteε t∩á it¼á over-ì
áááááááááááááááwritinτ an∙ datß tha⌠ existeΣ there«á Iµ thσ filσ ì
ááááááááááááááádoe≤á no⌠ exis⌠ thσ filσ wil∞ bσ createΣ usinτ thσ ì
ááááááááááááááánamσ specifieΣ iε ARG3«
áááááááááááááááNOTE║á Iµá ARG3 i≤ presen⌠ ARG2 mus⌠ bσ explicitl∙ ìè áááááááááááááááspecified¼ otherwisσ Z8E wil∞ mistakenl∙ trea⌠ thσ ì
áááááááááááááááfilσ namσ a≤ ARG2.
Z8E outputs to the console using the following format:
ADDRESS OBJECT CODE LABEL: OPCODE OPERAND
Z8E writes to disk using the following formart:
LABEL: OPCODE OPERAND
Z8Eá disassemble≤á memor∙ blocδ b∙ blocδ iεá thσá use≥á specifieΣ ì
blocδá size«á Afte≥á eacΦá blocδ i≤ outpu⌠ Z8E pause≤á fo≥á use≥ ì
input«á ┴ carriagσ returε inpu⌠ b∙ thσ use≥ terminate≤ thσá com-ì
mand¼á whilσá an∙á othe≥á characte≥ cause≤ thσ nex⌠ blocδá t∩á bσ ì
disassembleΣ (unles≤ interactivσ modσ i≤ iε effect)« Perhap≤ thσ ì
mos⌠ convenien⌠ wa∙ t∩ disassemblσ i≤ t∩ specif∙ ß coun⌠ oµá one¼ ì
eithe≥ explicit∙ o≥ b∙ omittinτ ARG2¼ anΣ t∩ usσ thσ spacσ ba≥ a≤ ì
aεá on/ofµ switch«á Holdinτ dowε thσ spacσ ba≥ produce≤á output¼ ì
releasinτá thσá spacσá ba≥ end≤ output.
Z8E'≤á disassemble≥ i≤ especiall∙ powerfu∞ wheε useΣ iεá conjunc-ì
tioεá witΦ thσ symbo∞ facility«á B∙ buildinτ ß symbo∞ tablσ witΦ ì
botΦá .PR╬ anΣ .SY═ files¼á and/o≥ creatinτ use≥á defineΣá symbo∞ ì
name≤á vißá thσá ┴ command¼á thσ use≥ caε virtuall∙á recreatσá aε ì
assemble≥ outpu⌠ listinτ (minu≤ thσ comments⌐ witΦ Z8Eá insertinτ ì
label≤ anΣ symboliπ operand≤ whereve≥ possible.
Iµá Z8E canno⌠ matcΦ aε operanΣ iε thσ disassembleΣá instructioε ì
t∩á ß correspondinτ symbo∞ iε thσ symbo∞ table¼á o≥ iµ n∩á symbo∞ ì
tablσ exists¼ Z8E use≤ thσ hexadecima∞ value.
Iµ multiplσ symbol≤ iε thσ symbo∞ tablσ arσ equa∞ t∩ thσ samσá 1╢ ì
bi⌠á valuσá o≥ address¼á Z8E disassemble≤ usinτ thσ firs⌠á symbo∞ ì
namσá encountereΣá iεá thσ searcΦ oµ thσ symbo∞á tablσá whicΦá i≤ ì
equateΣ t∩ thσ 1╢ bi⌠ operanΣ specifieΣ iε thσ instructioεá beinτ ì
disassembled«á Thi≤á wil∞ unavoidabl∙ producσ aε occasiona∞ mis-ì
nameΣá operanΣ wheε morσ thaε onσ symbo∞ namσ i≤ equateΣá t∩á thσ ì
samσá 1╢á bi⌠ value«á
Z8┼á doe≤ no⌠ substitutσ symbo∞ name≤ iε thosσá Z8░á instruction≤ ì
whicΦ referencσ ╕ bi⌠ immediatσ datß (ie«á L─ A,24H)« Eigh⌠ bi⌠ ì
immediatσá datßá i≤ disassembleΣ a≤ ß quoteΣ ASCI╔á characte≥á iµ ì
it'≤ absolutσ valuσ i≤ iε thσ rangσ 2░ he° t∩ 7┼ hex╗á otherwise¼ ì
i⌠ i≤ disassembleΣ a≤ ß he° byte.
Outpu⌠ b∙ Z8E t∩ ß disδ filσ i≤ instantl∙ assemblablσ b∙ mos⌠ an∙ ì
68
è
Z8E - Z80 DEBUG MONITOR Rick Surwilo
assemble≥ whicΦ accept≤ Ziloτ mnemonic≤ withou⌠ an∙ modification≤ ì
other than addinτ aε EN─ statemen⌠ a⌠ thσ enΣ oµ thσ file.
Wheεá disassemblinτ ß blocδ oµ memor∙ (startinτ addres≤ t∩ endinτ ì
address⌐á thσá disassembl∙ proces≤ ma∙ bσ halteΣ a⌠ an∙á timσá b∙ ì
depressinτ an∙ ke∙ oε thσ keyboard.
Interactivσá disassembl∙ allow≤ thσ use≥ t∩ specif∙ thσ forma⌠ oµ ì
thσ sourcσ codσ produceΣ b∙ disassembl∙ oε ß linσ b∙ linσá basis« ì
Interactivσá mode¼á whicΦá i≤ alway≤ iε effec⌠ wheneve≥á ARG2á i≤ ì
equa∞ t∩ 1¼á cause≤ Z8E t∩ pausσ afte≥ eacΦ instructioε i≤ disas-ì
sembled«á Thi≤á pausσ fo≥ inpu⌠ permit≤ thσ use≥ t∩ ente≥ onσ oµ ì
thσ followinτ command≤ t∩ choosσ thσ desireΣ outpu⌠ format:
CHARACTER OUTPUT FORMAT EXAMPLE
┴ ASCI╔ DEFB DEFB 'Q'
B HEX DEFB DEFB 23H
C CODE EX DE,HL
D HEX DEFW DEFW 02FCH or
DEF╫ LABEL
; add COMMENT ;This is a Comment
carriage (terminate command)
return
any other PROCEED TO THE
character NEXT INSTRUCTIONááááá
ASCII DEFB:
áááááThσá content≤ oµ memor∙ a⌠ thσ curren⌠ disassembl∙á ad-ì
ááááádres≤ i≤ converteΣ t∩ ß quoteΣ ASCI╔ character« Value≤ ì
áááááles≤á thaε hexadecima∞ 2░ (ASCI╔ space⌐ o≥ greate≥ thaε ì
áááááhexadecima∞á 7┼á (ASCI╔ tilde⌐ canno⌠á bσá disassembleΣ ì
áááááint∩ thi≤ format«
áááááHEX DEFB:
áááááThσ ╕ bi⌠ content≤ oµ memor∙ a⌠ thσ curren⌠ disassembl∙ ì
áááááaddres≤ arσ converteΣ t∩ ß he° byte.
áááááCODE:
áááááThi≤á i≤ thσ norma∞ defaul⌠ fo≥á disassembly«á A≤á Z8E ì
ááááámove≤á oεá t∩ ß ne≈ addres≤ i⌠ wil∞ alway≤ displa∙á thσ ì
ááááácontent≤á oµ memor∙ a≤ ß Z8░ instruction«á Thσ "Cóá i≤ ìè áááááonl∙á needeΣ t∩ redispla∙ thσ content≤ oµ memor∙ a≤á aε ì
áááááinstructioε haΣ onσ oµ thσ othe≥ character≤ (A¼á B¼á o≥ ì
áááááD⌐ alread∙ havσ beeε entered«
69
Z8E - Z80 DEBUG MONITOR Rick Surwilo
áááááHEX DEFW:
áááááThσ content≤ oµ thσ tw∩ byte≤ oµ memor∙ startinτ a⌠ thσ ì
áááááloactioε oµ thσ curren⌠ disassembl∙ addres≤ arσá outpu⌠ ì
áááááa≤á ßá definσá worΣ directive«á Thσá bytσá pointeΣá t∩ ì
ááááádirectl∙ b∙ thσ curren⌠ disassembl∙ addres≤ become≤ thσ ì
ááááálo≈ orde≥ bytσ oµ thσ operand« Thσ bytσ a⌠ disassembl∙ ì
áááááaddres≤ plu≤ onσ become≤ thσ higΦ orde≥ byte.
ááá NOTE:
ááááááááááááIµá Z8E haΣ jus⌠ disassembleΣá ßá multi-ì
áááááááááááábytσá Z8░á instructioε anΣ thσ use≥á en-ì
áááááááááááátereΣ an∙ oµ thσ character≤ listeΣ abovσ ì
áááááááááááá(A¼á B¼ C¼ o≥ D⌐ onl∙ thσ firs⌠ byte¼ o≥ ì
ááááááááááááfirs⌠á tw∩ fo≥ "D"¼á oµ thσá instructioε ì
ááááááááááááwoulΣá bσá converteΣá t∩á thσá requesteΣ ì
ááááááááááááformat«á Thσá remaininτá byte≤á oµá thσ ì
ááááááááááááinstructioεá woulΣ bσ treateΣ a≤á ßá ne≈ ì
ááááááááááááZ8░á instructioε oncσ thσ use≥ proceedeΣ ì
áááááááááááát∩ thσ nex⌠ disassembl∙ address«
áááááADDING COMMENTS
áááááZ8┼á allow≤á thσá use≥ t∩ adΣ onσ commen⌠ pe≥á linσá oµ ì
ááááádisassembleΣ code« Iµ MAXLE╬ i≤ se⌠ t∩ ╢ theε comment≤ ì
áááááma∙ bσ u≡ t∩ 2╣ character≤ iε length«á Iµ MAXLE╬ i≤ se⌠ ì
ááááát∩á 1┤á theεá comment≤ ma∙ bσ u≡ t∩á 1╢á character≤á iε ì
ááááálength.
Iµá durinτá disassembly¼á Z8Eá encounter≤ datßá whicΦá canno⌠á bσ ì
disassembleΣá int∩á ß valiΣ Z8░ instructioε i⌠ wil∞á displa∙á thσ ì
data as DEFB's.
è
70
APPENDIX A
FILE FORMAT FOR SYMBOL TABLES
Z8┼á i≤á currentl∙ se⌠ u≡ t∩ bσ ablσ t∩ reaΣ an∙ oµá thσá listinτ ì
file≤ whicΦ appea≥ below:
1. Microsoft MACRO-80 V3.37 .PRN Files May 8, 1980
2. Microsoft MACRO-80 V3.44 .PRN Files Dec 9, 1981
3. Microsoft LINK-80 V3.44 .SYM Files Dec 9, 1981
4. SLR Systems Z80ASM V1.07 .LST Files
áááá5. SLR Systems SLRNK V1.07 .SYM Filesáááááá
The unique characteristics of each are:
ááááMACRO-80 V3.37
ááááZ8┼á searche≤á fo≥á thσ ╕ bytσ strinτ "Symbols:óá iεá thσ ì
ááááfile«á Oncσ thi≤ strinτ i≤ found¼á Z8┼ expect≤ aεá ASCI╔ ì
áááácarriagσá returε characte≥ anΣ aε ASCI╔ linσ feeΣ charac-ì
ááááte≥á t∩ bσ thσ nex⌠ tw∩ byte≤ iε thσ file«á Thσá symbo∞ ì
áááátablσ listinτ shoulΣ begiε iε thσ nex⌠ characte≥ positioε ì
ááááiε thσ file.
è ááááEacΦá linσá oµá thσ symbo∞ tablσá listinτá contain≤á fou≥ ì
áááásymbo∞ name≤ anΣ aε associateΣ address«
ááááIµá thσ characte≥ followinτ thσ symbol'≤ he° valuσ i≤á aε ì
ááááapostophe¼á thσá symbo∞ i≤ considereΣ t∩ bσ prograφ rela-ì
áááátive«á Iµá thσ use≥ specifieΣ ß bia≤ iε thσ commanΣá linσ ì
ááááthσ bia≤ wil∞ bσ addeΣ t∩ thσ symbol'≤ value.
ááááIµá thσ characte≥ followinτ thσ symbol'≤ he° valuσ i≤á aε ì
áááá"Ióá (meaninτá tha⌠ thσ symbo∞ i≤ globall∙ defined⌐á theε ì
ááááthσá characte≥ followinτ thσ "Ió i≤á examined«á Iµá thi≤ ì
áááácharacte≥ i≤ aε apostrophσ i⌠ i≤ considereΣ t∩ bσ prograφ ì
áááárelativσá anΣá thσá bias¼á iµ specifieΣ i≤ addeΣá t∩á thσ ì
áááávalue.
ááááIµá thσ characte≥ followinτ thσ he° symbo∞ valuσá o≥á thσ ì
áááá"Ió i≤ an∙ characte≥ beside≤ aε apostrophe¼ thσ symbo∞ i≤ ì
ááááconsidereΣ absolutσ anΣ thσ bia≤ wil∞ no⌠ bσ added.
ááááThσá filσ shoulΣ bσ terminateΣ witΦ thσ CP/═á end-of-filσ ì
áááácharacte≥ (contro∞ ┌ whicΦ i≤ equivalen⌠ t∩ ß he° 1A).
ááááIµá thσ strinτ "Symbolsó i≤ neve≥ found¼á Z8┼ print≤á thσ ì
áááámessage║ Symbo∞ Tablσ no⌠ Found
71
APPENDIX A
ááááMACRO-8░ V3.44
ááááZ8┼á searche≤á fo≥á thσ ╕ bytσ strinτ "Symbols:óá iεá thσ ì
ááááfile«á Oncσ thi≤ strinτ i≤ found¼á Z8┼ expect≤ aεá ASCI╔ ì
áááácarriagσá returε characte≥ anΣ aε ASCI╔ linσ feeΣ charac-ì
ááááte≥á t∩ bσ thσ nex⌠ tw∩ byte≤ iε thσ file«á Thσá symbo∞ ì
áááátablσ listinτ shoulΣ begiε iε thσ nex⌠ characte≥ positioε ì
ááááiε thσ file.
ááááIεá thi≤á releasσ oµ MACRO-8░ thσ forma⌠á oµá thσá symbo∞ ì
áááátablσ i≤ completel∙ oppositσ oµ V3.37«á Tha⌠ is¼ thσ he° ì
áááávaluσ appear≤ beforσ thσ symbo∞ name«á Iε addition¼ thesσ ì
ááááhe° value/symbo∞ namσ combinatioε appea≥ threσ pe≥ line.
ááááThσá characte≥á appearinτ afte≥ thσ he° valuσá i≤á inter-ì
áááápreteΣ a≤ describeΣ fo≥ versioε 3.37«
ááááIµá thσ strinτ "Symbolsó i≤ neve≥ found¼á Z8┼ print≤á thσ ìè áááámessage║ Symbo∞ Tablσ no⌠ Found
áááá
ááááLINK-80 V3.44
ááááLINK-8░á caεá optionall∙ producσ ß linδ ma≡á (.SY═á file⌐ ì
ááááwhicΦá list≤á al∞á globall∙ defineΣ symbol≤ iµá thσá use≥ ì
ááááspecifie≤á thσá "Yó optioε thσá L8░á commanΣá line«á Z8┼ ì
áááátreat≤á al∞ symbol≤ name≤ loadeΣ froφ ß LINK-8░ .SY═ filσ ì
ááááa≤ absolutσ (non-relocatable⌐á addresses«á Nevertheless¼ ì
ááááiµá thσ use≥ specifie≤ ß bias¼á i⌠ wil∞ bσ addeΣ t∩ ever∙ ì
áááásymbo∞ valuσ reaΣ iε froφ thσ .SY═ file.
ááááZ8┼á expect≤á thσ firs⌠ symbo∞ valuσ iε ßá .SY═á filσá t∩ ì
áááábegiεá iεá thσá firs⌠ bytσ positioε iεá thσá file«á EacΦ ì
áááásymbo∞ valuσ consist≤ oµ fou≥ hexadecima∞ byte≤ iεá ASCI╔ ì
ááááfolloweΣá b∙ ß taΓ character«á Immediatel∙ afte≥ thσ taΓ ì
áááácharacte≥ i≤ thσ symbo∞ namσ whicΦ ma∙ bσ betweeε onσ anΣ ì
áááási° alphanumeriπ character≤ iε length«á Thσ symbo∞á namσ ì
áááái≤á followeΣá b∙ ß taΓ anΣ thσ sequencσá repeats«á Ever∙ ì
ááááfourtΦá symbo∞ value/symbo∞ namσ pai≥ shoulΣ bσá followeΣ ì
ááááb∙ ß carriagσ returε anΣ linσ feed.
ááááThσá filσ shoulΣ bσ terminateΣ witΦ thσ CP/═á end-of-filσ ì
áááácharacte≥ (contro∞ ┌ whicΦ i≤ equivalen⌠ t∩ ß he° 1A).
ááááZ80ASM
ááááZ80AS═á ma∙á bσ configureΣ t∩ producσ eithe≥á 8░á o≥á 13▓ ì
áááácolumε output.
ááááZ8┼ searche≤ fo≥ thσ ╕ bytσ strinτ "Symbo∞ Table:ó iε thσ ì
ááááfile«á Thi≤á strinτ neeΣ no⌠ bσ a⌠ thσ beginninτ oµá thσ ì
ááááfile╗á Z8┼ wil∞ scaε thσ entirσ filσ lookinτ fo≥ it« Oncσ ì
ááááthi≤á strinτá i≤ found¼á Z8┼ expect≤á aεá ASCI╔á carriagσ ì
ááááreturεá characte≥ anΣ aε ASCI╔ linσ feeΣ characte≥ t∩á bσ ì
72
APPENDIX A
ááááthσ nex⌠ tw∩ byte≤ iε thσ file«á Thσ symbo∞ tablσ list-ì
ááááinτá shoulΣá begiε iε thσ nex⌠ characte≥ positioε iεá thσ ì
ááááfile.
ááááIεá ß Z80AS═ .LS╘ filσ thσ he° valuσ appear≤á beforσá thσ ì
áááásymbo∞á name«á He° value/symbo∞ namσ combination≤á appea≥ ì
ááááthreσ pe≥ line«á Z80AS═ symbo∞ name≤ ma∙ contaiε u≡ t∩ 1╢ ìè áááácharacters« Z8┼ wil∞ accep⌠ thσ firs⌠ 1┤ character≤ oµ ß ì
áááásymbo∞ namσ iµ MAXLE╬ i≤ se⌠ t∩ 1┤ o≥ thσ firs⌠ ╢ charac-ì
ááááter≤ iµ MAXLE╬ i≤ se⌠ t∩ 6«
ááááIµ thσ strinτ "Symbo∞ Table:ó i≤ neve≥ found¼á Z8┼ print≤ ì
ááááthσ message║
Symbo∞ Tablσ No⌠ Found
ááááSLRNK
ááááSLRN╦á caεá optionall∙á producσ ß linδá ma≡á (.SY═á File⌐ ì
áááásimila≥á t∩ thσ onσ produceΣ b∙ Link-80«á Z8┼ treat≤á al∞ ì
áááásymbol≤á loadeΣ froφ ß SLRN╦ .SY═ filσ a≤á absolutσá sym-ì
áááábols« However¼ a≤ iε thσ casσ oµ Link-8░ .SY═ files¼ Z8┼ ì
ááááwil∞á adΣá ßá relocatioε bia≤ t∩ eacΦ symbo∞á iµá onσá i≤ ì
ááááspecified.
ááááEacΦá symbo∞ valuσ iε ß SLRN╦ .SY═ filσ consist≤ oµá fou≥ ì
ááááhexadecima∞á byte≤á followeΣ b∙ ß spacσ followeΣá b∙á thσ ì
áááásymbo∞á name«á Thσ symbo∞ namσ i≤ followeΣ b∙ tw∩á ASCI╔ ì
áááátaΓ characters«á
ááááUse SLRNK's /M option to produce a link map.
NOTE:
ááááWhilσ readinτ iε ß MACRO-8░ .PR╬ file¼á o≥ ß Z80AS═á .LS╘ ì
ááááfile¼á Z8┼ i≤ capablσ oµ readinτ aε entirσ assembl∙ list-ì
ááááinτá filσá lookinτ fo≥ thσ "Symbols:ó strinτá o≥á "Symbo∞ ì
ááááTable:ó string«á Thesσ string≤ neeΣ no⌠ bσ locateΣ a⌠ thσ ì
áááábeginninτá oµá thσ file«á However¼á thσ loadinτá oµá thσ ì
áááásymbo∞á tablσá wil∞á bσ speedeΣ u≡á considerabl∙á iµá thσ ì
áááásymbo∞á tablσá i≤á thσ onl∙ datß iε thσá file«á Thi≤á i≤ ì
ááááaccomplisheΣ quitσ easil∙ iε botΦ MACRO-8░ b∙ turninτ ofµ ì
ááááthσá listinτá durinτ aε assembl∙ througΦ thσ usσá oµá thσ ì
áááá.XLIS╘ directive« Thσ listinτ caε theε bσ turneΣ bacδ oε ì
áááájus⌠ prio≥ t∩ thσ EN─ directivσ viß ß .LIS╘ directivσá t∩ ì
ááááensurσ tha⌠ thσ symbo∞ tablσ i≤ writteε t∩ disk.
ááááIµá yo⌡á arσ usinτ Z80AS═ usσ thσ /╙ optioεá t∩á instruc⌠ ì
ááááZ80AS═ t∩ producσ ß symbo∞ file.
Z8┼á i≤ ablσ t∩ proces≤ symbo∞ table≤ whicΦ occup∙ multiplσ page≤ ì
iε an∙ oµ thσ filσ type≤ mentioneΣ above« Heading≤ whicΦ precedσ ì
73
è
APPENDIX A
eacΦ pagσ arσ automaticall∙ ignoreΣ b∙ Z8E«
è
APPENDIX B - ZILOG MNEMONICS
0049 NN EQU 49H ;8 BIT OPERAND
123F NNNN EQU 123FH ;16 BIT OPERAND
0036 INDEX EQU 36H ;INDEX REGISTER INDEX
010B 8E ADC A,(HL)
010C DD 8E 36 ADC A,(IX+INDEX)
010F FD 8E 36 ADC A,(IY+INDEX)
0112 8F ADC A,A
0113 88 ADC A,B
0114 89 ADC A,C
0115 8A ADC A,D
0116 8B ADC A,E
0117 8C ADC A,H
0118 8D ADC A,L
0119 CE 49 ADC A,NN
011B ED 4A ADC HL,BC
011D ED 5A ADC HL,DE
011F ED 6A ADC HL,HL
0121 ED 7A ADC HL,SP
0123 86 ADD A,(HL)
0124 DD 86 36 ADD A,(IX+INDEX)
0127 FD 86 36 ADD A,(IY+INDEX)
012A 87 ADD A,A
012B 80 ADD A,B
012C 81 ADD A,C
012D 82 ADD A,D
012E 83 ADD A,E
012F 84 ADD A,H
0130 85 ADD A,L
0131 C6 49 ADD A,NN
0133 09 ADD HL,BC
0134 19 ADD HL,DE
0135 29 ADD HL,HL
0136 39 ADD HL,SP
0137 DD 09 ADD IX,BC
0139 DD 19 ADD IX,DEè 013B DD 29 ADD IX,IX
013D DD 39 ADD IX,SP
013F FD 09 ADD IY,BC
0141 FD 19 ADD IY,DE
0143 FD 29 ADD IY,IY
0145 FD 39 ADD IY,SP
0147 A6 AND (HL)
0148 DD A6 36 AND (IX+INDEX)
014B FD A6 36 AND (IY+INDEX)
014E A7 AND A
014F A0 AND B
0150 A1 AND C
0151 A2 AND D
75
APPENDIX B - ZILOG MNEMONICS
0152 A3 AND E
0153 A4 AND H
0154 A5 AND L
0155 E6 49 AND NN
0157 CB 46 BIT 0,(HL)
0159 DD CB 36 46 BIT 0,(IX+INDEX)
015D FD CB 36 46 BIT 0,(IY+INDEX)
0161 CB 47 BIT 0,A
0163 CB 40 BIT 0,B
0165 CB 41 BIT 0,C
0167 CB 42 BIT 0,D
0169 CB 43 BIT 0,E
016B CB 44 BIT 0,H
016D CB 45 BIT 0,L
016F CB 4E BIT 1,(HL)
0171 DD CB 36 4E BIT 1,(IX+INDEX)
0175 FD CB 36 4E BIT 1,(IY+INDEX)
0179 CB 4F BIT 1,A
017B CB 48 BIT 1,B
017D CB 49 BIT 1,C
017F CB 4A BIT 1,D
0181 CB 4B BIT 1,E
0183 CB 4C BIT 1,H
0185 CB 4D BIT 1,L
è
0187 CB 56 BIT 2,(HL)
0189 DD CB 36 56 BIT 2,(IX+INDEX)
018D FD CB 36 56 BIT 2,(IY+INDEX)
0191 CB 57 BIT 2,A
0193 CB 50 BIT 2,B
0195 CB 51 BIT 2,C
0197 CB 52 BIT 2,D
0199 CB 53 BIT 2,E
019B CB 54 BIT 2,H
019D CB 55 BIT 2,L
019F CB 5E BIT 3,(HL)
01A1 DD CB 36 5E BIT 3,(IX+INDEX)
01A5 FD CB 36 5E BIT 3,(IY+INDEX)
01A9 CB 5F BIT 3,A
01AB CB 58 BIT 3,B
01AD CB 59 BIT 3,C
01AF CB 5A BIT 3,D
01B1 CB 5B BIT 3,E
01B3 CB 5C BIT 3,H
01B5 CB 5D BIT 3,L
01B7 CB 66 BIT 4,(HL)
76
APPENDIX B - ZILOG MNEMONICS
01B9 DD CB 36 66 BIT 4,(IX+INDEX)
01BD FD CB 36 66 BIT 4,(IY+INDEX)
01C1 CB 67 BIT 4,A
01C3 CB 60 BIT 4,B
01C5 CB 61 BIT 4,C
01C7 CB 62 BIT 4,D
01C9 CB 63 BIT 4,E
01CB CB 64 BIT 4,H
01CD CB 65 BIT 4,L
01CF CB 6E BIT 5,(HL)
01D1 DD CB 36 6E BIT 5,(IX+INDEX)
01D5 FD CB 36 6E BIT 5,(IY+INDEX)
01D9 CB 6F BIT 5,A
01DB CB 68 BIT 5,B
01DD CB 69 BIT 5,C
01DF CB 6A BIT 5,Dè 01E1 CB 6B BIT 5,E
01E3 CB 6C BIT 5,H
01E5 CB 6D BIT 5,L
01E7 CB 76 BIT 6,(HL)
01E9 DD CB 36 76 BIT 6,(IX+INDEX)
01ED FD CB 36 76 BIT 6,(IY+INDEX)
01F1 CB 77 BIT 6,A
01F3 CB 70 BIT 6,B
01F5 CB 71 BIT 6,C
01F7 CB 72 BIT 6,D
01F9 CB 73 BIT 6,E
01FB CB 74 BIT 6,H
01FD CB 75 BIT 6,L
01FF CB 7E BIT 7,(HL)
0201 DD CB 36 7E BIT 7,(IX+INDEX)
0205 FD CB 36 7E BIT 7,(IY+INDEX)
0209 CB 7F BIT 7,A
020B CB 78 BIT 7,B
020D CB 79 BIT 7,C
020F CB 7A BIT 7,D
0211 CB 7B BIT 7,E
0213 CB 7C BIT 7,H
0215 CB 7D BIT 7,L
0217 DC 123F CALL C,NNNN
021A FC 123F CALL M,NNNN
021D D4 123F CALL NC,NNNN
0220 CD 123F CALL NNNN
0223 C4 123F CALL NZ,NNNN
0226 F4 123F CALL P,NNNN
0229 EC 123F CALL PE,NNNN
022C E4 123F CALL PO,NNNN
77
APPENDIX B - ZILOG MNEMONICS
022F CC 123F CALL Z,NNNN
0232 3F CCF
0233 BE CP (HL)è 0234 DD BE 36 CP (IX+INDEX)
0237 FD BE 36 CP (IY+INDEX)
023A BF CP A
023B B8 CP B
023C B9 CP C
023D BA CP D
023E BB CP E
023F BC CP H
0240 BD CP L
0241 FE 49 CP NN
0243 ED A9 CPD
0245 ED B9 CPDR
0247 ED A1 CPI
0249 ED B1 CPIR
024B 2F CPL
024C 27 DAA
024D 35 DEC (HL)
024E DD 35 36 DEC (IX+INDEX)
0251 FD 35 36 DEC (IY+INDEX)
0254 3D DEC A
0255 05 DEC B
0256 0B DEC BC
0257 0D DEC C
0258 15 DEC D
0259 1B DEC DE
025A 1D DEC E
025B 25 DEC H
025C 2B DEC HL
025D DD 2B DEC IX
025F FD 2B DEC IY
0261 2D DEC L
0262 3B DEC SP
0263 F3 DI
0264 10 04 DJNZ $+6
78
è
APPENDIX B - ZILOG MNEMONICS
0266 FB EI
0267 E3 EX (SP),HL
0268 DD E3 EX (SP),IX
026A FD E3 EX (SP),IY
026C 08 EX AF,AF'
026D EB EX DE,HL
026E D9 EXX
026F 76 HALT
0270 ED 46 IM 0
0272 ED 56 IM 1
0274 ED 5E IM 2
0276 ED 78 IN A,(C)
0278 DB 49 IN A,(NN)
027A ED 40 IN B,(C)
027C ED 48 IN C,(C)
027E ED 50 IN D,(C)
0280 ED 58 IN E,(C)
0284 ED 60 IN H,(C)
0286 ED 68 IN L,(C)
0288 34 INC (HL)
0289 DD 34 36 INC (IX+INDEX)
028C FD 34 36 INC (IY+INDEX)
028F 3C INC A
0290 04 INC B
0291 03 INC BC
0292 0C INC C
0293 14 INC D
0294 13 INC DE
0295 1C INC E
0296 24 INC H
0297 23 INC HL
0298 DD 23 INC IX
029A FD 23 INC IY
029C 2C INC L
029D 33 INC SP
029E ED AA IND
02A0 ED BA INDR
02A2 ED A2 INI
02A4 ED B2 INIRè
02A6 E9 JP (HL)
02A7 DD E9 JP (IX)
79
APPENDIX B - ZILOG MNEMONICS
02A9 FD E9 JP (IY)
02AB DA 123F JP C,NNNN
02AE FA 123F JP M,NNNN
02B1 D2 123F JP NC,NNNN
02B4 C3 123F JP NNNN
02B7 C2 123F JP NZ,NNNN
02BA F2 123F JP P,NNNN
02BD EA 123F JP PE,NNNN
02C0 E2 123F JP PO,NNNN
02C3 CA 123F JP Z,NNNN
02C6 38 04 JR C,$+6
02C8 18 04 JR $+6
02CA 30 04 JR NC,$+6
02CC 20 04 JR NZ,$+6
02CE 28 04 JR Z,$+6
02D0 02 LD (BC),A
02D1 12 LD (DE),A
02D2 77 LD (HL),A
02D3 70 LD (HL),B
02D4 71 LD (HL),C
02D5 72 LD (HL),D
02D6 73 LD (HL),E
02D7 74 LD (HL),H
02D8 75 LD (HL),L
02D9 36 49 LD (HL),NN
02DB DD 77 36 LD (IX+INDEX),A
02DE DD 70 36 LD (IX+INDEX),B
02E1 DD 71 36 LD (IX+INDEX),C
02E4 DD 72 36 LD (IX+INDEX),D
02E7 DD 73 36 LD (IX+INDEX),E
02EA DD 74 36 LD (IX+INDEX),H
02ED DD 75 36 LD (IX+INDEX),L
02F0 DD 36 36 49 LD (IX+INDEX),NN
è
02F4 FD 77 36 LD (IY+INDEX),A
02F7 FD 70 36 LD (IY+INDEX),B
02FA FD 71 36 LD (IY+INDEX),C
02FD FD 72 36 LD (IY+INDEX),D
0300 FD 73 36 LD (IY+INDEX),E
0303 FD 74 36 LD (IY+INDEX),H
0306 FD 75 36 LD (IY+INDEX),L
0309 FD 36 36 49 LD (IY+INDEX),NN
030D 32 123F LD (NNNN),A
0310 ED 43 123F LD (NNNN),BC
0314 ED 53 123F LD (NNNN),DE
0318 22 123F LD (NNNN),HL
80
APPENDIX B - ZILOG MNEMONICS
031B DD 22 123F LD (NNNN),IX
031F FD 22 123F LD (NNNN),IY
0323 ED 73 123F LD (NNNN),SP
0327 0A LD A,(BC)
0328 1A LD A,(DE)
0329 7E LD A,(HL)
032A DD 7E 36 LD A,(IX+INDEX)
032D FD 7E 36 LD A,(IY+INDEX)
0330 3A 123F LD A,(NNNN)
0333 7F LD A,A
0334 78 LD A,B
0335 79 LD A,C
0336 7A LD A,D
0337 7B LD A,E
0338 7C LD A,H
0339 ED 57 LD A,I
033B 7D LD A,L
033C 3E 49 LD A,NN
033E ED 5F LD A,R
0340 46 LD B,(HL)
0341 DD 46 36 LD B,(IX+INDEX)
0344 FD 46 36 LD B,(IY+INDEX)
0347 47 LD B,A
0348 40 LD B,B
0349 41 LD B,Cè 034A 42 LD B,D
034B 43 LD B,E
034C 44 LD B,H
034D 45 LD B,L
034E 06 49 LD B,NN
0350 ED 4B 123F LD BC,(NNNN)
0354 01 123F LD BC,NNNN
0357 4E LD C,(HL)
0358 DD 4E 36 LD C,(IX+INDEX)
035B FD 4E 36 LD C,(IY+INDEX)
035E 4F LD C,A
035F 48 LD C,B
0360 49 LD C,C
0361 4A LD C,D
0362 4B LD C,E
0363 4C LD C,H
0364 4D LD C,L
0365 0E 49 LD C,NN
0367 56 LD D,(HL)
81
APPENDIX B - ZILOG MNEMONICS
0368 DD 56 36 LD D,(IX+INDEX)
036B FD 56 36 LD D,(IY+INDEX)
036E 57 LD D,A
036F 50 LD D,B
0370 51 LD D,C
0371 52 LD D,D
0372 53 LD D,E
0373 54 LD D,H
0374 55 LD D,L
0375 16 49 LD D,NN
0377 ED 5B 123F LD DE,(NNNN)
037B 11 123F LD DE,NNNN
037E 5E LD E,(HL)
037F DD 5E 36 LD E,(IX+INDEX)è 0382 FD 5E 36 LD E,(IY+INDEX)
0385 5F LD E,A
0386 58 LD E,B
0387 59 LD E,C
0388 5A LD E,D
0389 5B LD E,E
038A 5C LD E,H
038B 5D LD E,L
038C 1E 49 LD E,NN
038E 66 LD H,(HL)
038F DD 66 36 LD H,(IX+INDEX)
0392 FD 66 36 LD H,(IY+INDEX)
0395 67 LD H,A
0396 60 LD H,B
0397 61 LD H,C
0398 62 LD H,D
0399 63 LD H,E
039A 64 LD H,H
039B 65 LD H,L
039C 26 49 LD H,NN
039E 2A 123F LD HL,(NNNN)
03A1 21 123F LD HL,NNNN
03A4 ED 47 LD I,A
03A6 DD 2A 123F LD IX,(NNNN)
03AA DD 21 123F LD IX,NNNN
03AE FD 2A 123F LD IY,(NNNN)
03B2 FD 21 123F LD IY,NNNN
82
APPENDIX B - ZILOG MNEMONICS
03B6 6E LD L,(HL)
03B7 DD 6E 36 LD L,(IX+INDEX)
03BA FD 6E 36 LD L,(IY+INDEX)
03BD 6F LD L,Aè 03BE 68 LD L,B
03BF 69 LD L,C
03C0 6A LD L,D
03C1 6B LD L,E
03C2 6C LD L,H
03C3 6D LD L,L
03C4 2E 49 LD L,NN
03C6 ED 4F LD R,A
03C8 ED 7B 123F LD SP,(NNNN)
03CC F9 LD SP,HL
03CD DD F9 LD SP,IX
03CF FD F9 LD SP,IY
03D1 31 123F LD SP,NNNN
03D4 ED A8 LDD
03D6 ED B8 LDDR
03D8 ED A0 LDI
03DA ED B0 LDIR
03DC ED 44 NEG
03DE 00 NOP
03DF B6 OR (HL)
03E0 DD B6 36 OR (IX+INDEX)
03E3 FD B6 36 OR (IY+INDEX)
03E6 B7 OR A
03E7 B0 OR B
03E8 B1 OR C
03E9 B2 OR D
03EA B3 OR E
03EB B4 OR H
03EC B5 OR L
03ED F6 49 OR NN
03EF ED BB OTDR
03F1 ED B3 OTIR
83
è
APPENDIX B - ZILOG MNEMONICS
03F3 ED 79 OUT (C),A
03F5 ED 41 OUT (C),B
03F7 ED 49 OUT (C),C
03F9 ED 51 OUT (C),D
03FB ED 59 OUT (C),E
03FD ED 61 OUT (C),H
03FF ED 69 OUT (C),L
0401 D3 49 OUT (NN),A
0403 ED AB OUTD
0405 ED A3 OUTI
0407 F1 POP AF
0408 C1 POP BC
0409 D1 POP DE
040A E1 POP HL
040B DD E1 POP IX
040D FD E1 POP IY
040F F5 PUSH AF
0410 C5 PUSH BC
0411 D5 PUSH DE
0412 E5 PUSH HL
0413 DD E5 PUSH IX
0415 FD E5 PUSH IY
0417 CB 86 RES 0,(HL)
0419 DD CB 36 86 RES 0,(IX+INDEX)
041D FD CB 36 86 RES 0,(IY+INDEX)
0421 CB 87 RES 0,A
0423 CB 80 RES 0,B
0425 CB 81 RES 0,C
0427 CB 82 RES 0,D
0429 CB 83 RES 0,E
042B CB 84 RES 0,H
042D CB 85 RES 0,L
042F CB 8E RES 1,(HL)
0431 DD CB 36 8E RES 1,(IX+INDEX)
0435 FD CB 36 8E RES 1,(IY+INDEX)
0439 CB 8F RES 1,A
043B CB 88 RES 1,B
043D CB 89 RES 1,Cè 043F CB 8A RES 1,D
0441 CB 8B RES 1,E
0443 CB 8C RES 1,H
0445 CB 8D RES 1,L
84
APPENDIX B - ZILOG MNEMONICS
0447 CB 96 RES 2,(HL)
0449 DD CB 36 96 RES 2,(IX+INDEX)
044D FD CB 36 96 RES 2,(IY+INDEX)
0451 CB 97 RES 2,A
0453 CB 90 RES 2,B
0455 CB 91 RES 2,C
0457 CB 92 RES 2,D
0459 CB 93 RES 2,E
045B CB 94 RES 2,H
045D CB 95 RES 2,L
045F CB 9E RES 3,(HL)
0461 DD CB 36 9E RES 3,(IX+INDEX)
0465 FD CB 36 9E RES 3,(IY+INDEX)
0469 CB 9F RES 3,A
046B CB 98 RES 3,B
046D CB 99 RES 3,C
046F CB 9A RES 3,D
0471 CB 9B RES 3,E
0473 CB 9C RES 3,H
0475 CB 9D RES 3,L
0477 CB A6 RES 4,(HL)
0479 DD CB 36 A6 RES 4,(IX+INDEX)
047D FD CB 36 A6 RES 4,(IY+INDEX)
0481 CB A7 RES 4,A
0483 CB A0 RES 4,B
0485 CB A1 RES 4,C
0487 CB A2 RES 4,D
0489 CB A3 RES 4,E
048B CB A4 RES 4,H
048D CB A5 RES 4,L
048F CB AE RES 5,(HL)
0491 DD CB 36 AE RES 5,(IX+INDEX)è 0495 FD CB 36 AE RES 5,(IY+INDEX)
0499 CB AF RES 5,A
049B CB A8 RES 5,B
049D CB A9 RES 5,C
049F CB AA RES 5,D
04A1 CB AB RES 5,E
04A3 CB AC RES 5,H
04A5 CB AD RES 5,L
04A7 CB B6 RES 6,(HL)
04A9 DD CB 36 B6 RES 6,(IX+INDEX)
04AD FD CB 36 B6 RES 6,(IY+INDEX)
04B1 CB B7 RES 6,A
04B3 CB B0 RES 6,B
85
APPENDIX B - ZILOG MNEMONICS
04B5 CB B1 RES 6,C
04B7 CB B2 RES 6,D
04B9 CB B3 RES 6,E
04BB CB B4 RES 6,H
04BD CB B5 RES 6,L
04BF CB BE RES 7,(HL)
04C1 DD CB 36 BE RES 7,(IX+INDEX)
04C5 FD CB 36 BE RES 7,(IY+INDEX)
04C9 CB BF RES 7,A
04CB CB B8 RES 7,B
04CD CB B9 RES 7,C
04CF CB BA RES 7,D
04D1 CB BB RES 7,E
04D3 CB BC RES 7,H
04D5 CB BD RES 7,L
04D7 C9 RET
04D8 D8 RET C
04D9 F8 RET M
04DA D0 RET NC
04DB C0 RET NZ
04DC F0 RET P
04DD E8 RET PE
04DE E0 RET PO
04DF C8 RET Zè
04E0 ED 4D RETI
04E2 ED 45 RETN
04E4 CB 16 RL (HL)
04E6 DD CB 36 16 RL (IX+INDEX)
04EA FD CB 36 16 RL (IY+INDEX)
04EE CB 17 RL A
04F0 CB 10 RL B
04F2 CB 11 RL C
04F4 CB 12 RL D
04F6 CB 13 RL E
04F8 CB 14 RL H
04FA CB 15 RL L
04FC 17 RLA
04FD CB 06 RLC (HL)
04FF DD CB 36 06 RLC (IX+INDEX)
0503 FD CB 36 06 RLC (IY+INDEX)
0507 CB 07 RLC A
0509 CB 00 RLC B
86
APPENDIX B - ZILOG MNEMONICS
050B CB 01 RLC C
050D CB 02 RLC D
050F CB 03 RLC E
0511 CB 04 RLC H
0513 CB 05 RLC L
0515 07 RLCA
0516 ED 6F RLD
0518 CB 1E RR (HL)
051A DD CB 36 1E RR (IX+INDEX)
051E FD CB 36 1E RR (IY+INDEX)
0522 CB 1F RR A
0524 CB 18 RR Bè 0526 CB 19 RR C
0528 CB 1A RR D
052A CB 1B RR E
052C CB 1C RR H
052E CB 1D RR L
0530 1F RRA
0531 CB 0E RRC (HL)
0533 DD CB 36 0E RRC (IX+INDEX)
0537 FD CB 36 0E RRC (IY+INDEX)
053B CB 0F RRC A
053D CB 08 RRC B
053F CB 09 RRC C
0541 CB 0A RRC D
0543 CB 0B RRC E
0545 CB 0C RRC H
0547 CB 0D RRC L
0549 0F RRCA
054A ED 67 RRD
054C C7 RST 0
054D CF RST 08H
054E D7 RST 10H
054F DF RST 18H
0550 E7 RST 20H
0551 EF RST 28H
0552 F7 RST 30H
0553 FF RST 38H
87
APPENDIX B - ZILOG MNEMONICS
0554 9E SBC A,(HL)
0555 DD 9E 36 SBC A,(IX+INDEX)
0558 FD 9E 36 SBC A,(IY+INDEX)
055B 9F SBC A,A
055C 98 SBC A,B
055D 99 SBC A,Cè 055E 9A SBC A,D
055F 9B SBC A,E
0560 9C SBC A,H
0561 9D SBC A,L
0562 DE 49 SBC A,NN
0564 ED 42 SBC HL,BC
0566 ED 52 SBC HL,DE
0568 ED 62 SBC HL,HL
056A ED 72 SBC HL,SP
056C 37 SCF
056D CB C6 SET 0,(HL)
056F DD CB 36 C6 SET 0,(IX+INDEX)
0573 FD CB 36 C6 SET 0,(IY+INDEX)
0577 CB C7 SET 0,A
0579 CB C0 SET 0,B
057B CB C1 SET 0,C
057D CB C2 SET 0,D
057F CB C3 SET 0,E
0581 CB C4 SET 0,H
0583 CB C5 SET 0,L
0585 CB CE SET 1,(HL)
0587 DD CB 36 CE SET 1,(IX+INDEX)
058B FD CB 36 CE SET 1,(IY+INDEX)
058F CB CF SET 1,A
0591 CB C8 SET 1,B
0593 CB C9 SET 1,C
0595 CB CA SET 1,D
0597 CB CB SET 1,E
0599 CB CC SET 1,H
059B CB CD SET 1,L
059D CB D6 SET 2,(HL)
059F DD CB 36 D6 SET 2,(IX+INDEX)
05A3 FD CB 36 D6 SET 2,(IY+INDEX)
05A7 CB D7 SET 2,A
05A9 CB D0 SET 2,B
05AB CB D1 SET 2,C
05AD CB D2 SET 2,D
05AF CB D3 SET 2,E
05B1 CB D4 SET 2,H
05B3 CB D5 SET 2,L
88
è
APPENDIX B - ZILOG MNEMONICS
05B5 CB DE SET 3,(HL)
05B7 DD CB 36 DE SET 3,(IX+INDEX)
05BB FD CB 36 DE SET 3,(IY+INDEX)
05BF CB DF SET 3,A
05C1 CB D8 SET 3,B
05C3 CB D9 SET 3,C
05C5 CB DA SET 3,D
05C7 CB DB SET 3,E
05C9 CB DC SET 3,H
05CB CB DD SET 3,L
05CD CB E6 SET 4,(HL)
05CF DD CB 36 E6 SET 4,(IX+INDEX)
05D3 FD CB 36 E6 SET 4,(IY+INDEX)
05D7 CB E7 SET 4,A
05D9 CB E0 SET 4,B
05DB CB E1 SET 4,C
05DD CB E2 SET 4,D
05DF CB E3 SET 4,E
05E1 CB E4 SET 4,H
05E3 CB E5 SET 4,L
05E5 CB EE SET 5,(HL)
05E7 DD CB 36 EE SET 5,(IX+INDEX)
05EB FD CB 36 EE SET 5,(IY+INDEX)
05EF CB EF SET 5,A
05F1 CB E8 SET 5,B
05F3 CB E9 SET 5,C
05F5 CB EA SET 5,D
05F7 CB EB SET 5,E
05F9 CB EC SET 5,H
05FB CB ED SET 5,L
05FD CB F6 SET 6,(HL)
05FF DD CB 36 F6 SET 6,(IX+INDEX)
0603 FD CB 36 F6 SET 6,(IY+INDEX)
0607 CB F7 SET 6,A
0609 CB F0 SET 6,B
060B CB F1 SET 6,C
060D CB F2 SET 6,D
060F CB F3 SET 6,E
0611 CB F4 SET 6,H
0613 CB F5 SET 6,L
0615 CB FE SET 7,(HL)è 0617 DD CB 36 FE SET 7,(IX+INDEX)
061B FD CB 36 FE SET 7,(IY+INDEX)
061F CB FF SET 7,A
0621 CB F8 SET 7,B
89
APPENDIX B - ZILOG MNEMONICS
0623 CB F9 SET 7,C
0625 CB FA SET 7,D
0627 CB FB SET 7,E
0629 CB FC SET 7,H
062B CB FD SET 7,L
062D CB 26 SLA (HL)
062F DD CB 36 26 SLA (IX+INDEX)
0633 FD CB 36 26 SLA (IY+INDEX)
0637 CB 27 SLA A
0639 CB 20 SLA B
063B CB 21 SLA C
063D CB 22 SLA D
063F CB 23 SLA E
0641 CB 24 SLA H
0643 CB 25 SLA L
0645 CB 2E SRA (HL)
0647 DD CB 36 2E SRA (IX+INDEX)
064B FD CB 36 2E SRA (IY+INDEX)
064F CB 2F SRA A
0651 CB 28 SRA B
0653 CB 29 SRA C
0655 CB 2A SRA D
0657 CB 2B SRA E
0659 CB 2C SRA H
065B CB 2D SRA L
065D CB 3E SRL (HL)
065F DD CB 36 3E SRL (IX+INDEX)
0663 FD CB 36 3E SRL (IY+INDEX)
0667 CB 3F SRL A
0669 CB 38 SRL B
066B CB 39 SRL C
066D CB 3A SRL D
066F CB 3B SRL E
0671 CB 3C SRL Hè 0673 CB 3D SRL L
0675 96 SUB (HL)
0676 DD 96 36 SUB (IX+INDEX)
0679 FD 96 36 SUB (IY+INDEX)
067C 97 SUB A
067D 90 SUB B
067E 91 SUB C
067F 92 SUB D
0680 93 SUB E
0681 94 SUB H
0682 95 SUB L
0683 D6 49 SUB NN
90
APPENDIX B - ZILOG MNEMONICS
0685 AE XOR (HL)
0686 DD AE 36 XOR (IX+INDEX)
0689 FD AE 36 XOR (IY+INDEX)
068C AF XOR A
068D A8 XOR B
068E A9 XOR C
068F AA XOR D
0690 AB XOR E
0691 AC XOR H
0692 AD XOR L
0693 EE 49 XOR NN
è
91
APPENDIX B - ZILOG MNEMONICS
è
APPENDIX B - ZILOG MNEMONICS
APPENDIX C - SYSTEM MEMORY MAP
|||||||||||||||||||||||||||||||||||| FFFF
|| ||
|| ||è || CP/M (BDOS and BIOS) ||
|| ||
|| ||
||||||||||||||||||||||||||||||||||||
|| ||
|| Z8E (Approx 8.75 BYTES) ||
|| ||
||||||||||||||||||||||||||||||||||||
|| ||
|| OPTIONAL SYMBOL TABLE ||
|| ||
||||||||||||||||||||||||||||||||||||
|| ||
|| ||
|| ||
|| ||
|| ||
|| ||
|| TPA ||
|| ||
|| ||
|| ||
|| ||
|| ||
|| ||
|| ||
|||||||||||||||||||||||||||||||||||| --- 0100
|| ||
|| PAGE ZERO RESERVED ||
|| ||
|||||||||||||||||||||||||||||||||||| ___ 0000
93
è
APPENDIX B - ZILOG MNEMONICS
COMMAND SUMMARY REFERENCE
CMD Description Arguments
┴áá Inlinσá Assembl∙á StartAddr
B Set Breakpoint Addr1[,Pass Count] [Addr2..AddrN]
C Clear Breakpoint Addr1 [Addr2..AddrN]
D Dump Memory [StartAddr] [End/Count]
E Examine Memory StartAddr
F Find StartAddr MatchData
G Go ExecutionAddr
H Display Symbol Table [FirstSymbol]
I Initialize command line [string1..stringN]
J Full Screen/Animated Debug [/] [*] [Addr] [Timeout]
K Set Memory Window StartAddr [Size]
L Load File FileName [,Load Address]
M Move Memory SourceStart SourceEnd DestStart
N Output to Port NO Pre-Read [(] PortAddr [)]
O Output Current Breakpoints
P Exam/Modify PSW (Flag Reg)
Q Query I/O Port [(] PortAddr [)]
R Examine/Modify Registers RegSpecifier
S Single-Step [/] [Count]
U Write Symbol Table To Disk FileName
V Verify Memory SourceStart SourceEnd DestStart
W Write to Disk FileName [StartAddr] [EndAddr]
X Examine Machine State
Y Fill Memory FromAddr ToAddr Data
Z Disassemble StartAddr End/Count FileName
[] Denotes Optional Argument
[/] Do Not Trace Subroutine
[*] Do Not Trace BDOS Call
[(] [)] I/O Port Monitor Mode
Z8E Copyright (c) 1984 AERO-SOFT
è
94