You are on page 1of 96

MICROFRIEND

DYNA 85
Users Manual
Kailas Vaibhav , G Wing , 3
rd
Floor, Park Site,
Vikhroli ( West ) , Mumbai !! !"# $ %&'%(
)el $ * #+ , -- , .+/+#!! (+0 1ines)
Fa2 $ * #+ , -- , .+/+#3! 3 .+/+#!
s a l e s @ d y n a l o g i n d i a . c o m
w w w . d y n a l o g i n d i a . c o m
TABLE OF CO NTENTS
INTRODUCTION
PAGE NO.
INTRODUCTON TO MICROFRIEND DYNA-85 1
CHAPTER 1
CONFIGURATION OF MICROFRIEND DYNA-85 1.1
1.1 SYSTEM OVERVIEW 1-1
1.1.1 SYSTEM HARDWARE CONFIGURATION. 1-1
CENTRAL PROCESSING UNIT 1-1
MEMORY. 1-1
HEX KEYPAD/DISPLAY INTERFACE. 1-2
827 DATA FORMAT. 1-2
PARALLEL I/O/ INTERFACE 1-!
SERIAL I/O AND AUDIO CASSETE INTERFACE.1-!
TIMER. 1-!
EXPANSION SLOT 1-"
1.1.2 SYSTEM COMMANDS OVERVIEW.. 1-"
1.1.! SYSTEM FIRMWARE OVERVIEW 1-#
1.1." APPLICATON OF MICROFRIEND DYNA-8# 1-$
CHAPTER 2
SYSTEM MEMORY & INPUT / OUTPUT 2-1
MAPPING
2.1 MEMORY MAPPING 2-1
2.2 INPUT / OUTPUT MAPPING 2-2
2.! POWER SUPPLY 2-!
%
CHAPTER 3
PAGE NO.
CHAPTER 5
PAGE NO.
OPERATING INSTRUCTION-KEYBOARD. 3-1
!.1 KEY&OARD OPERATION. !-1
!.2 SET ' INR ' DCR KEYS.. !-2
!.! REG.. !-!
!." GO / EXEC.. !-$
!.# STEP !-7
!.$ VI ( VECTOR INTERRUPT.. !-1)
!.7 RES ( RESET. !-1)
!.8 CODE. !-1)
!. USER KEYS U1 ' U2 ' U! ' U". !-11
!.1) SAVE.. !-12
!.11 LOAD. !-12
CHAPTER 4
CODES.. 4-1
".1 CODE )) ( MOVE &LOCK. "-1
".2 CODE )1 ( FILL &LOCK "-!
".! CODE )2 ( INSERT &LOCK. "-!
"." CODE )! ( DELETE &LOCK. "-!
".# CODE )" ( SEARCH &LOCK "-#
".$ CODE )" ( HEX TO DECIMAL. "-$
".7 CODE )$ ( DECIMAL TO HEX. "-7
".8 CODE )E ( COMPLEMENT &LOCK. "-7
". CODE OF ( ROLLING DISPLAY"-8
%%
MACINE LANGUAGE PROGRAMMING. 5-1
#.1 MONITOR SU&ROUTINES #-1
1. MODIAD #-!
2. MODIDT #-"
!. RDK&D .. #-"
". DELAY.. #-"
#. CLEAR . #-#
$. GTHEX.#-#
7. OUTPUT.. #-#
#.2 SERIAL ROUTINES..#-7
1. CIN.. #-8
2. COUT. #-8
!. CROUT #-8
". NMOUT.. #-8
#. GETHX .. #-8
#.! PROGRAMMING EXAMPLES.. #-
EXAMPLE 1 ( FAMILIARI*ATION.. #-
EXAMPLE 2 ( RDK&D #-11
EXAMPLE ! ( MODIDT... #-12
EXAMPLE " ( RDK&D + MODIDT #-12
EXAMPLE # ( HEX ADDITION.. #-12
EXAMPLE $ ( " DIGIT HEX COUNTER #-1!
EXAMPLE 7 ( 2 DIGIT DECIMAL COUNTER.. #-1"
EXAMPLE 8 ( FLASHING DISPLAY. #-1#
EXAMPLE ( ROLLING DISPLAY #-1$
TA&LE #.1 SCRATCH PAD LOCATION.. #-2
TA&LE #.2 CHARACTER CODES. #-$
%%%
CHAPTER
PAGE NO.
APPENDI!
PAGE NO.
SERIAL I/O OPERATION !-1
$.1 USE OF MONITOR $-2
$.2 COMMAND STRUCTURE $-2
$.2.1 D , DISPLAY MEMORY COMMAND $-!
$.2.2 G , PROGRAM EXECUTE COMMAND $-!
$.2.! I , INSERT INSTRUCTIONS INTO RAM-1 $-!
$.2." M , MOVE MEMORY COMMAND $-"
$.2.# S , SU&STITUTE MEMORY $-"
$.2.$ X , EXAMINE / MODIFY CPU $-#
REGISTER COMMAND
$.! PROGRAM DE&UGGING $-7
$." ERROR CONDITIONS $-8
$.# ADDRESS VALUE ERRORS $-8
$.$ COMMAND EXAMPLES $-
$.7 AUDIO CASSETTE INTERFACE $-
TA&LE $.1 &AUD RATE SELECTION $-11
CHAPTER "
FOR TE MICROFRIEND ILC USER "-1
%-
A CONNECTOR AND STRAPPING DETAILS A-1
CONNECTOR .1 ( DYNA &US INTERFACE A-1
CONNECTOR .2 ( 81## CONNECTOR A-2
CONNECTOR .! ( 82## CONNECTOR A-!
CONNECTOR ." ( 827 CONNECTOR A-"
CONNECTOR .# ( POWER SUPPLY CONNECTOR A-"
CONNECTOR .$ ( SERIAL CONNECTOR A-"
CONNECTOR .7 ( 82#! CONNECTOR A-"
STRAPPING DETAILS A-#
& ADD-ON CARDS FOR MICROFRIEND &-1
DYNA-8# SYSTEM
C CIRCUIT DIAGRAM C-1
D MICROFRIEND DYNA-8# MONITOR LISTING D-1
E PROCEDURE FOR UPLOADING AND E-1
DOWNLOADING
-
INTRODUCTION INTRODUCTION TO
MICROFRIEND DYNA-85
What will get DYNA-85 !
Microfriend DYNA-85 is an introduction to a low cost trainer and
development kit. t was developed to assist the novice to get familiar
with NTEL 8085 microprocessor in a user friendly environments.
This user's manual tells you about
Hardware of DYNA-85.
Monitor commands to interact with DYNA-85.
Memory & /O details of Dyna-85.
Working with hex keypad and display.
Serial /O and Audio cassette interface.
Circuit diagram and connector
details. Before you begin :
1) Study this manual carefully.
2) Write your own programs after studying the chapter on
Machine Language programming and try them out.
3) Do not hesitate to experiment using the /O lines for real
world interfacing.
1
1-1
45(P)67 +
48&F%G97()%8& 8F M%478F7%6&' ':&(,/.
1.1 SYSTEM O#ER#IE$
MCROFREND DYNA-85 is a single board computer based on 8085A
CPU designed specially for training and development applications.
t is equally useful for a novice as well as development engineers for
studying the 8085A CPU and developing various product based on the
8085A.
+$+$+ S:S)6M 5(7'W(76 8V67V%6W
CENTRAL PROCESSNG
UNT
MCROFREND DYNA - 85 s based on the NTEL 8085A high
performance CPU operating at 3 MHz.

MEMORY
Powerful system monitor has been provided on a 2732 EPROM
covering 4K bytes.This monitor includes all standard commands,
codes , functions and utility subroutines.
A 6116 battery back up RAM ( 2K ) is provided on the board for
inputting and executing programs.
Three 28 pin sockets are provided for memory chips so that further
expansion of RAM/EPROM is possible upto a maximum of 56K .
1-2
1-3
HEX KEYPAD / DISPLAY INTERFACE
A Keypad with 21 keys and 6 digits LED seven segments display is
provided for interaction with the system using 8279 keyboard /
display controller. This chip provides the following features.
Simultanous Keyboard & Display operation.
Scanned Keyboard Model sensor Mode.
2 Key locked / N Key roll over.
Contact Debounce.
16 Displays
Programmable scan timing.
The hex keypad has the standard hexadecimal keys and many other
function and Code keys. 4 "User Definable function keys are also
provided which can be defined by the user . All scan, return, shift and
control lines of 8279 are brought on to connected J4.
/-"# '()( F87M() *
The data format for the character being displayed by the 8279 is one bit
corresponding to each segment of the seven segment display plus one
bit for the decimal point. The display bits are store in the 8279 in the
form of one byte digit of the display from RAM location 0 to 5 .
The byte format is as follows :
A3 A2 A1 A0 B3 B2 B1 B0
c d b a e g f dp
a
; b
g
e <
d
Writing a 1 in the desired bit lights that particular segment.
PARALLEL /O NTERFACE
46 parallel /O lines are provided on board , 22 from 8155 and 24 from
8255 . These lines are brought on to connector J2 ( for 8155 ) and
(for 8255).
SERAL /O AUDO CASSETTE NTERFACE
Serial /O is available through RS232C compatible port. The SD & SOD
lines are used under software control for serial operation . Baud rate is
adjustable.
Onboard Audio Cassette / F is provided with file management , for
storage and retrieval of data using a cassette recorder.
TMER
Three channels of 8253 chip , a 16 bit TMER / COUNTER and one
channel of 14 bit TMER /COUNTER of 8155 are provided on board. All
lines of 8253 are provided on connector J7 and 8155 are provided on J2.
1-4
EXPANSON SLOT
All Address, Data, Control and Hardware nterrupt lines are brought on
to a 50 pin FRC connector for system interfacing and expansion. These
lines are unbuffered so user has to take care while expanding their
system.
+$+$- S:S)6M 48MM(&'S 8V67V%6W
The HEX KEYPAD mode supports the following commands :
RESET : Provides hardware reset . Display shows "FrlEND on
pressing this key.
V : Vector interrupt key.Activate RST 7.5 vectored interrupt.
SET : Allows the user to examine & modify the contents of
RAM and only examination of contents is possible in
case of EPROM.
NR : ncrements memory address presently displayed un the
address field of display.
DCR : Decrements memory address presently displayed in the
address field od display.
REG : Allows the user to examine contents of CPU registers &
modify them if necessary.
GO : Allows the user to load the program counter by the
desired memory address which is the starting address of
the program to be executed.
EXEC : Used to start the execution of GO or CODE command.
CODE : Used for selecting one of the coded subroutines in the
monitor.
1-5
STEP : Allows the user to execute the program on single step
mode or break point mode.
SAVE : Used for saving the contents of memory onto an audio
cassette.
LOAD : Used for loading the program from audio cassette back
to the memory in RAM area.
U1..U4 : These keys are user definable functin keys. The function
of these keys can be defined by the user , by loading the
appropriate memory locations with vectors pointing to
user subroutines.
+$+$3 S:S)6M F%7MW(76 8V67V%6W
T/0 MICROFRIEND DYNA-8# /12 -034 5670389: 1;< 9203
83%0;<:4 FIRMWARE %; =/0 EPROM.
Complete listing of the Monitor FRMWARE is given at the end of
User can borrow any subroutine from the listing for his own
program development.
Various commands available through the keyboard and the coded
subroutines are accessible through the CODE key and is already been
listed in chapter.
A point worth mentioning here about the FRMWARE is the options of
entry point to the Monitor.
There are two options available , one is the COLD START , other is
WARM START . n COLD START entry the system is completely
reinitialized and no user program status is saved from the previous
program executed. This is equivalent to the hardware reset.
1-6
COLD START entry can be performed through software by using the
RST 0 instruction.
n WARM START entry, the start of previously executed user program is
fully saved before entering the monitor. WARM START entry is possible
through software by using th RST 1 instruction.
n both cases, the sign on display is 'FrlEND' as in case of hardware
reset through RESET Key.
48'6 48MM(&'S *
CODE 00 : Move a block of memory.
CODE 01 : Fill a block with a data byte.
CODE 02 : nsert a byte in a block.
CODE 03 : Delete a byte from a block.
CODE 04 : Search a given block for a given pattern.
CODE 05 : Hex to Decimal conversion.
CODE 06 : Decimal to Hex conversion.
CODE 0E : Complement a block.
CODE 0F : Rolling Display.
+$+$3 (PP1%4()%8& 8F M%478F7%6&' ':&(,/.
MCROFREND DYNA-85 is the low cost learning and development
system for beginners as well as development engineers
The powerful friendly FRMWARE allows you to learn all application of
8085A and its support chips like 8255 PP. 8155 PP and Timer . 8279
prgrammable keyboard and display controller,8253 Programmable timer
and counter etc.You can load,debug and finialize your program on the
MCROFREND DYNA-85 and nce the development is finilize it can
also be used as an OEM board.
1-7
The areas of application on MCROFREND DYNA-85 are as follows :-
1. Analog to Digital Converter nterface.
2. Digital to Analog Converter interface.
3. nterfacing Hexadecimal Keyboad.
4. Simulation of an Elevator.
5. Temparature Controller nterface.
6. Stepper motor Controller.
7. Traffic Light Control System.
8. DC Motor Controller.
9. Thumbwheel nterface.
And many more experiment and application can be thought and
successfully developed on MCROFREND DYNA-85 system.
2-1
45(P)67 -
S:S)6M M6M87: = %&P9) 3 89)P9)
M(PP%&G
2.1 MEMORY MAPPING
The system memory is also as important as the CPU itself , because this
is where the system program resides and the CPU takes its instruction
from the program. The memory is of two types ROM and RAM i.e.
READ ONLY MEMORY & RANDOM ACCESS MEMORY.
The MCROFREND DYNA-85 has a flexible memory map , and for
your convenience for program development, the RAM has useful feature
such as battery back-up.
FFFF
C000
BFFF
4000
3FFF
0000
USER
RAM
C 6116
EXPANSON
EPROM/RAM
MONTOR
EPROM
%4 (''76SS M8'6 %38 F9&4)%8&
82## 1) R/W PORT A
11 R/W PORT &
12 R/W PORT C
1! WRITE CONTROL REGISTER
82#! 18 R/W COUNTER )
1 R/W COUNTER 1
1A R/W COUNTER 2
1& WRITE CNTROL REGISTER
%4 (''76SS M8'6 %38 F9&4)%8&
827 )" READ READ KEY&OARD FIFO
WRITE WRITE DATA TO DISPLAY
)# READ READ STATUS WORD
WRITE WRITE COMMAND WORD
81## )8 WRITE COMMAND/STATUS
REGISTER
) R/W PORT A
)A R/W PORT &
)& R/W PORT C
)C R/W TIMER LOW &YTE
)D R/W TIMER HIGH &YTE
2-2
!!!!5 )8 3FFF5 *
Monitor EPROM socket.Monitor 2732 is located at 000H to 0FFFH and
is mapped at 1000H-1FFFH,2000H-2FFFH and 3000-3FFFh also.
t 2764 / 27128 are used , 1000H - 3FFFH can be used for further
expansion.
!!!5 to >FFF5 *
This Socket is used for user expansion of EPROM and RAM.
EPROMs like 2716 / 2732 / 2732 / 2764 / 27128 / 27256 or RAMs
like 6116 / 6264 / 62256 can be installed by suitable strappings.
4!!!5 to FFFF5 *
User RAM socket.The 2K user RAM C 6116 is located at F800H-
FFFFH.This 2K memory is folded after every 2K bytes from C000H to
FFFFH.n this socket 6264 can also be used.
2.3 PO$ER SUPPLY
2-3
2.2 INPUT/ OUTPUT MAPPING
Recommanded Power Supply for DYNA-85 kit
'MS SMPS !+
Having following specification :
Voltage 4urrent 7ating
+ # V
+ 12 V
- 12 V
+ !) V
1A
#)) >A
2#) >A
1)) >A
2-4
3-1
CAPTER 3
OPERATING INSTRUCTION- KEYBOARD
K6:P(' 1(:89) :
3.1 KEYBOARD OPERATION
RESET VI
DCR
EXEC
INR
C
U1
8
GO/H
"
SPH
)
SET
D
U2

L
#
SPL
1
CODE
E
U!
A
LOAD
$
PCH
2
STEP
F
U"
&
SAVE
7
PCL
!
REG/I
MCROFREND DYNA-85 has a built in keyboard ( KEYPAD).The layout
of the keypad is given on the opposite page for ready reference. The
system can also be operated through a console connected to the serial
interface.
While using the built in keyboard , we can work only in the Hexadecimal
number system . There are 16 keys for entering Hex numbers from 0
to F. These are all dual meaning keys and the key designated depends
on when the key s pressed. n addition to these 16 keys there is one
vector nterrupt key, one RESET key and 3 function keys.
When the system is switched on the display shows , sign on message
?F r l 6 n d?$ This indicates that the system is reset and the monitor
expects a command from you. At this moment any one of the command
keys : SET , CODE , STEP, REG, GO, LOAD or SAVE can be pressed
depending on the desired operation.
n case any non command key is pressed, the display will show @F6rr?
message, you can again press a valid command key or press RESET
and then press a valid command key.
The various command and function keys are explained below :
3-2
3-3
3.2 SET%INR%DCR KEYS
6A(MP16 + *
You can use the SET key to set the address of the memory location to
be accessed. On pressing SET key the display becomes blank and a dot
appears in the Address field which is made up of the first four digit of the
six digit display . The remaining two digit of the six digit display are the
data field .The dot in the address field indicates that your next key will be
treated as an address entry (entry is from Right to Left and last 4 entries
are retained).
When you have entered the 4 digit hexadecimal address press the NR
key which will terminate the address entry and display the c ontents of
that memory location as the two digits in the data field.
Now you can modify or retain the contents of the location.
Pressing NR key again will load the data field into the memory location
at the address shown in the address field . This key also increments the
address by 1 location and dispalys the contents of that new locaton with
required data.
DCR key also works in a similar way but it decrements the address by 1
and points to the previous location.
Trying to load data into a Monitor EPROM location using SET key
results in @F6rr?(error).
SET, NR, DCR, keys can also be used to verify the data loaded in RAM
by displaying one location after another.
KeB Pressed (ddress Field 'ata Field
RES F 3 I E ; <
SET
F ) ) ) F
) ) ) F )
) ) F ) )
) F ) ) )
INR F ) ) ) X X
! F ) ) ) ) !
E F ) ) ) ! E
INR F ) ) 1 X X
DCR F ) ) ) ! E
EXEC F
Pressing EXEC key terminate the loading of memory and the monitor
waits for next command.
3.3 REG
This key allows you to examine and optionally modify the contents of
all 8085 internal registers.
Pressing REG key will blank the display and a dot appears in the
Field.
Next press a valid register name. The Register names appears on
various
hexadecimal number keys as follows :-
3 : ( nterrupt Mask )
4 : SPH ( Stack Pointer High )
5 : SPL ( Stack Pointer Low )
REG .
A A X X
) A ) )
# A ) #
) ) # )
INR & X X
DCR A # )
EXEC F
3-4
6 : PCH ( Program Counter High
7 : PCL ( Program Counter Low )
8 : H ( H Register )
9 : L ( L Register )
A : A ( A Register )
B : B ( B Register )
C : C ( C Register )
D : D ( D Register )
E : E ( E Register )
F : F ( Flag register )
Pressing any one of these keys after pressing REG key will display the
particular register name in the address field and the contents of that
register will be displayed in the data field.
Pressing NR key after this , will point to the next register and DCR will
point to the previous register.
Contents of the register can be modified at this point similar to loading
any other memory location.
Pressing NR and DCR keys after modifying the contents of that register
and ENTER terminates the command. Address field shows F in the left
most digit , the monitor indicates as usual that the it is waiting for the
next command.
Format for the register (nterrupt mask) is as follows :
I M M M
) ) ) A E 7.# $.# #.#
nterrupt enable Flag [ 1 is enabled, 0 is disabled ]
M nterrupt Mask [1 is masked , 0 is unmasked ]
Format of the F register ( Flag Register ) is as follows :
S * X AC X P X C
X : Don't care.
C : Carry
P : Parity
X : Don't Care
AC : Auxillary Carry
Z : Zero
S : Sign
6A(MP16 - *
KeB Pressed (ddress Field 'ata Field
NOTE : ONLY LAST TWO ENTRIES ARE RETAINED.
3-5
3-6
3-7
3.4 GO/E&EC
3.5 STEP
This pairs of keys is used to execute a program from a desired location
onwards. f the GO key is pressed, t displays the present address in the
program counter and the contents of the memory location at address. A
dot appears in the address field indicating that you can enter a new
address in the address field. You can now modify the contents of the
program counter . After loading the desired starting address in the
address field , press EXEC key to execute the program starting at the
address .During execution of the program , the address field shows 'E'
indicating that the user program or subroutine is being executed.
The Monitor Regains control either after pressing the RESET key
( Hardware Reset ) or after executing RST 0, RST 1, JMP 0000H or JMP
0008H instruction (Software Reset).
6A(MP16 3 *
KeB Pressed (ddress Field 'ata Field
GO P P P P X X
F ) ) ) F
) ) ) F )
) ) F ) )
) F ) ) )
EXEC F
NOTE : P P P P IS THE PRESENT CONTENTS OF PROGRAM
COUNTER WHEN GO KEY WAS PRESSED. XX IS THE DATA IN
MEMORY LOCATION P P P P.
We have seen how a program can be executed by using GO and
EXEC pair of keys.This method is useful only when the program is
finalized, or when we have a ready program.
n case a program is being developed , it is essential that we have
a ready program and it s essential that we have a facility to check
the execution of program stage by stage and see the results.
This can be achieved in two ways . One way is to insert the RST 1
instruction ( CFH ) at every point where a break is desired to check
status or result , which is possible only in case of short programs being
run from the RAM.
Another way is to use the STEP key and step through the program.
Pressing the STEP key displays the contents of the program
counter , Which can be modified to set the starting address of the
program.
Now press NR and the monitor will prompt for other parameters :
br : Break Address
Cn : N +1 , where N is the number of times the break should
occur.
n case 'br' and 'Cn' both are given a value of zero,the system goes into
single stepping mode. n single stepping mode, the program os executed
single instruction at a time . Execution stops after every instruction and a
status check is possible.
6A(MP16 *
Let us take a simple program to see how the STEP command
works.Load
the following program starting at location F000H.
F000
F002
F003
F006
3E 05
3D
C202F0
76
MV A, 05h
DCR A
JNZ F002h
HALT
3-8
3-9
This program first loads register A ( Accumulator ) with 05 , then
decrements the accumulator contents by 1 till the contents become zero
and halts at that point.
The JNZ loop will make use of 'br' and 'Cn'. First let us execute the
program with STEP key and using 'br' and 'Cn' parameters.
Key Address Data Comments
Pressed Field Field
STEP P P P P X X PRESENT PC CONTENTS
F))) F ) ) ) STARTING ADDRESS
INR . ? 3 &REAK ADDRESS @
F))2 F ) ) 2 ? 3 &REAK AT F))2
INR C ; . C; @
)" C ; ) " C; " N + 1
INR F ) ) 2 ! D PROGRAM STOPS AFTER
&REAKPOINT OCCURRED !
EXEC F TIMES
REG . EXAMINE REG.A
A A ) 2
As the program stopped after the breakpoint occurs 3 times, the original
contents of register A which were 05 have been decremented three
times. The register A should now contain 02, which is displayed in the
data field.
The same program can be executed in a single stepping mode.
Key Address Data Comments
Pressed Field Field
STEP P P P P X X PRESENT PC
CONTENTS
F))) F ) ) ) STARTING ADDRESS
INR . ? 3 &REAK POINT @
) ) ) ) ) ? 3 IGNORE ?3.
INR C ; . C; @
) ) ) ) ) ) ) IGNORE C;.
INR F ) ) 2 ! D FIRST INSTRUCTION
EXECUTED PC POINTS
TO NEXT INSTR .
EXEC F PROGRAM STOPS FOR
REG . STATUS CHECK .
A A ) # REG . A AABBC
CONTENS )#
EXEC F NEXT COMMAND @
STEP F ) ) 2 ! D STEP
INR F ) ) ! C 2 SECOND INSTR.
EXECUTED
EXEC F PROGRAM STOP FOR
STATUS CHECK
REG . REGISTER A AABBC
CONTENTS )"
A A ) " AFTER
DECREMENTING
ONCE
After counting this sequence till the contents of A become 00, the
program comes out from the JNZ loop and the address field shows the
last address of the program , i.e. F006H. Contents of this location
are displayed in the data field as 76 (HALT). f you press EXEC at this
stage and examine the stage and examine the contents of register
A using REG command , the result will be 00 as expected.
3-10
3-11
3.! #I ' #ECTOR INTERRUPT
3.( USER KEYS U1%U2%U3%U4
This key is used to interrupt the program execution and transfe r the
control to location 003CH in the monitor.This location has a jump to
location FFCEH in the user RAM.By inserting another jump instruction at
FFCEH , we can transfer the control to an interrupt service routine
located to another area in the memory.
For proper operation of this key, the user program must enable the
interrupt through the E instruction and the RST 7.5 must be unmasked
using the SM instruction.
The exmple of a decimal counter included in the chapter on
programming, will make the application of key will make it more clear.
3." RES ' RESET
There are 4 user definable keys on the MCROFREND DYNA-85. Each
of these keys has a vector in the scratchpad RAM area . By loading
an appropriate jump instruction at these location, you can define the
functon of keys U1, U2, U3, U4.
The vector location are as follows :
K04 M0>634 L6B1=%6;
U1 FFCH' FFDH' FFEH
U2 FFFH' FFA)H' FFA1H
U! FFA2H' FFA!H' FFA"H
U" FFA#H' FFA$H' FFA7H
Pressing RES key causes a hardware RESET operation.The control is
transferred to location 0000H in the monitor. The monitor program is
executed from 0000H onwards without saving the status resulting from
any user program executed before the 'RESET'. The display shows
@F r l 6 & '? as the sign-on message and the monitor waits for a valid
command.
3.8 CODE
The code key allows you to access one of the coded subroutines in the
monitor firmware. All the user accessible coded subroutines are
explained in Chapter 4.
An example will illustrate how these keys can be used . There is a
subroutine in the monitor for a "ROLLNG DSPLAY at location 0E5BH.
Using the SET key load a jump instruction C3 5B 0E at location FF9CH,
FF9DH and FF9EH which are the U1 key vector location.Mow reset the
system and then press U1 key, the display immediately blanks for a
moment and then a rolling message appears
D Y n A L o G h E L P S Y o U L E A r n n G U P
By using the U1 key vector, ypu have efficiently transferred the control to
the rolling display subroutine.
3-12
3.1) SA#E
This command is used for saving your program on an audio cassette.
The procedure for saving is as follows :
1. Command the MC socket (on the top) of the MCROFREND
DYNA 85 to the MC socket of the CTR.
2. Press SAVE key, enter the following parameters
SS : Source Start
SE : Source End
Fn : File Number any hex number from 00 to FF.
3. Turn CTR ON and keep it in RECORD mode.
4. Press the EXEC key, S appears in the data field indicates that your
program is being saved on the audio cassette.
5. On completion of SAVE operation, F r l E n d appears again on the
display.
6. Turn CTR OFF.
3-13
2.Press LOAD key, enter the File Number Fn of the program to be
loaded.( A hex number between 00 & FF )
3.Turn CTR ON, keep it in PLAY mode.
4.mmediately press EXED Key. L appears in the data field, indicating
that the CPU is searching for the file with file number Fn.
5.Whenever the CPU comes across any File Number , it is displayed
in the data field. Loading starts only when the specified File
number is found and displayed.
6.The SS parameter of your program is already saved on the cassette
tape, and when the program is being loaded back into RAM , it
automatically gets loaded at the same address.
7.On completion of loading the program with File number Fn , SS
parameter is displayed in the address field.
NOTE : There shoul!"# $e % &%' o( )ore #h%! *+ se,. -e#.ee!
#ur!/!& CTR ON %! 'ress/!& EXEC 0e1.
3.11 LOAD
This command loads your program from the cassette to the RAM . The
procedure for loading is described below :
1. Connect the EAR Socket of MCROFREND DYNA-85 to the EAR or
external speaker socket of the CTR. (Select volume control setting
by trial)
4-1
45(P)67
48'6S
As we have seen in the previous chapter, the code key allows us to access
the various coded subroutines from the monitor program. t is not essential
to remember the starting location addresses of all these subroutines, as
they have been coded to be used with the CODE key.
A "Code Referance Chart has been included in this chapter for quick
referance. Detailed explainaton of operation of all the coded are given
below.For executing any code,the 'CODE' key is pressed. A dot appesrs in
the data field,indicating that the code number should be entered and will be
displayed in the data field. Now enter the code number and press NR key.
The data field prompts for the data field or the address field will prompt for
the next parameter to be entered.
After entering all the parameters,the code can be executed using the NR or
EXEC key.
4.1 CODE ))
Move a >lo<k o; MemorB
This code moves a block of memory from one place to other . The
parameters required to be entered are SS : Source Block starting address,
SE : Source Block end address and dS : Destination Block start address.
A point to remember here is that dS must always be a RAM address.Trying
to move a block to monitor EPROM results in an error. Please see Chapter 5
for further explanation of this point.
INR F ) ) ) ! E
INR F ) ) 1 ) ).
INR F ) ) 2 < !.
INR F ) ) ! ) #.
INR F ) ) " ) )
INR F ) ) # C !
4-2
Example : 1
KeB Pressed (ddress Field 'ata Field
CODE
) ) ).
INR . S S
) ) ) ) ). S S
INR . S E
# ) ) ) #. S E
INR . < S
F))) F ) ) ). < S
EXEC F 3 I E ; <
This example program moves a block of memory between 0000H and
0005H to the RAM address F000H.
This can be verified by using the SET key as follows :
KeB Pressed (ddress Field 'ata Field
SET F ) ) ).
4-3
4.2 CODE )1
Fill >lo<k Cith a 'ata >Bte
This code requires the following parameters :
SS : Starting address of the block.
SE : End address of the block.
Sr. : Data byte to be filled in all the location from SS to SE
Sr. can be any hex number from 00 to FF must be within the RAM area.
4.3 CODE )2
%nsert >Bte in a >lo<k ( S6, Sr,%( )
n a given block of RAM it is sometimes necessary to insert a byte of data
which is missing. A given byte in Sr is inserted at a given insert address A.
The remaining block shifts down by one position, upto the address given by
SE.
No address relocation for jumps are done.
4.4 CODE )3
'elete a >Bte at a Given (ddress ( S6,'( )
n a given block at a given address DA, a byte is deleted. The remaining
block till SE shifts up by one position. The above two NSERT and
DELETE commands are very useful in inserting or deleting a display
character in the VDEO RAM at the given cursor position.
1000 3E After loading we notice that the instruction to
1 00 store accumulator STA 200FFH is incorrect.The
2 D3 'OPCODE' 32 is missing. t has to be inserted
3 05 before FF , 20
4 FF
5 20
6 19
7 76
8 XX
KeB Pressed (ddress Field 'ata Field
CODE
)! ) !.
EXEC . S E
1))8 1 ) ) 8. S E
INR . D A
1))" 1 ) ) ". D A
EXEC F 3 % E N D.
1))7 1 ) ) 7. S E
INR I A
1))" 1 ) ) ". I A
INR S3
!2 S3 ! 2
EXEC F 3 % E N D.
4-4
Ex : NSERT BYTE
Load the RAM location 1000H-1007H with the help of SET command.
4-5
You can insert anything else.
With the SET command verify that 3E,00,D3,05,32,FF,20,19,76 is
the data from location 1000H-1008H. The block has shifted down by 1
byte.
The opposite of NSERT is DELETE and it works as follows :
f the block is small you an manually make 1004 as 32 and reload
theremaining by shifting one down. But if the block is very tedious. To
Do this use NSERT byte command.A (nsert Address ) is 1004. SE
( Block End ) is 1007 and Sr ( nsert byte ) is 32.
KeB Pressed (ddress Field 'ata Field
CODE
)2 ) 2
EXEC S E
With the SET command verify that 1000-1007 contents are same as
before the NSERT command (i.e 1004 ; FF etc.)
4.5 CODE )4
Sear<h a Given >lo<k ;or Given Pattern ( SS,S6,Sr )
The given block of memory (RAM or ROM ) between SS and SE is
searched for a pattern o f byte given in Sr. Whenever the first match
is found, the address and bytes are displayed. Remaining mismatches
can be scanned with NR.
LOAD the data in Ex.4.3 from 1000H.
4-6
Ex : BLOCK SEARCH
4." CODE ' )!
4-7
KeB Pressed (ddress Field 'ata Field
CODE
)" ) ".
EXEC . S S
1))) 1 ) ) ). S S
INR S E
1))8 1 ) ) 8. S E
INR S 3 .
1 S 3 1 .
EXEC 1 ) ) $ 1
INR F 3 % E ; <
4.! CODE ' )5
'e<imal to 5e2 4onversion
This code is useful for converting any Decimal number from 0000 to
9999 into a Hex number equivalent.
The parameter to be entered is dE, which is the decimal number we
desire to convert into Hex format.
Pressing EXEC after entering the decimal number displays the Hex
equivalent. An important precaution to be taken is that , when you are
entering the decimal number to be converted to Hex, do not press any
keys from A to F. There is no provision for detecting this error and the
results of converting that number are unpredictable.
CODE 05 and CODE 06 are very useful in address conversions,relative
jumps and total space calculations.
4.8 CODE ' )E
5e2 to 'e<imal 4onversion
CODE 05 is a utility code for converting any Hex number from 0000 to
FFFF into a Decimal number.
The parameter to be entered is prompted in the data field as HE, and the
Hex number to be converted can now the directly entered in the Address
field. Pressing EXEC displays the Decimal equivalent of the Hex number
entered.
4omDlement a blo<k o; memorB
This code complements all the data contained within a memory block :
The required parameters are :
SS : Starting address of the block.
SE : End address of the block.
On executing this code, all the '0' are replaced by '1' by '0' within the
specified block of memory.
SS and SE must be in RAM area.
: Statrting Address
: End Address
: Destination
: nsert Address
: Delete Address
: Data Byte
4-8
4.( CODE ' )F
7olling 'isDlaB
This is not a utility code but it is a demonstration code to illustration code
illustrate the powerof the display control.
On executing 0F, the display starts rolling the message :
d Y n A L o G h E L P S Y o U in L E A r n n G UP.
48'6S 76F67(&46 45(7)
C*+, F-./01*. P2324,0,35
)) &:6BD M6-0 SS'SE'<S
)1 F%:: &:6BD SS'SE'S3
)2 I;203= &4=0 SE'IA'S3
)! D0:0=0 &4=0 SE'<A
)" &:6BD S013B/ SS'SE'S3
)# H0E =6 D0B HE
)$ D0B =6 H0E <E
)E C6>5:0>0;= &:6BD SS'SE
)F R6::%;F D%25:14
SS
SE
dS
A
DA
Sr
5-1
45(P)67 .
M(45%&6 1(&G9(G6 P78G7(MM%&G
5.1 MONITOR SUBROUTINES
This section will cover the applications from the software point of view of
MCROFREND DYNA - 85 . You are advised to get familiar with the
assembly language of NTEL 8085 Microprocessor.You should get familiar
with the various mnemonics and their power.
The 8085 microprocessor makes use of a 16 bit internal register called the
stack register to point to a memory area called stack. The stack uses the
LFO ( Last n First Out ) type for storage during subroutine calls.
User is advised to initialize the Stack Pointer with his stack area.The
suggested stack pointer location is FEFFH. Location beyond this should
not be utilized by the user as the monitor uses this area as the scratch-pad
RAM.
You may borrow several monitor routines to simplify your task of
programming and to minimize RAM used. From the Firmware listing
provided, take care of noting the parameters required by these routines,
as some of the routines destroy the contents of the Registers.
Also go through the manuals for the detailed operation of 8155, 8255 and
8279 supporting chips.
The following is a list of scratch-pad RAM allocation to the Monitor
program.
5-2
5-3
TABLE 5.1
L*/201*. 6,78 U5,+ 9*3 L*/201*. 6,78 U5,+ 9*3
FF A' & HALF &IT FFED F:1F2
FF C' D' E U1 K04 .9>5 FFEE A R0F%2=03
FF F' )' 1 U2 K04 .9>5 FFEF L R0F%2=03
FFA2' !' " U! K04 .9>5 FFF) H R0F%2=03
FFA#' $' 7 U" K04 .9>5 FFF1 I;=03395= M12D
FFA8 P DATA FFF2 P36F. C;=3 , L67 &4=0
FFAA' & U;920< FFF! P36F. C;=3 , H% &4=0
FFAC' C;S1-0 FFF" S=1BD P=3 , L67 &4=0
FFAD' E &3S1-0 FFF# S=1BD P=3 , H% &4=0
FFA' F' ) DESAVE FFF$ C9330;= A<<3022
F&1 CARRYLOC FFF8 C9330;= D1=1
FF&2' ! HESAVE FFF-FFFC O9=59= ?98803 G T0>5 L6B
FF&"' # DASAVE FFFD R0F%2=03 P6%;=03
F&&$' 7 IA SAVE FFFE I;59= &98803
FF&&' C SE SAVE FFFF 81## B6>>1;</2=1=92 R0F%2=03 I>1F0
FF&' A DS SAVE
FF&D' E SS SAVE
FF&F COPY TEST
mportant subroutines which can be borrowed from the Monitor
FFC)' 1 &IT TIME
FF&8 SR SAVE
FFC2 U203 >14 5:1B0 1 .MP %;2=3. =6 1 RST #
369=%;0 %; :6B2 FFFC2H-FFFC"H
FFC# .MP =6 RST $ 369=%;0
FFC8 .MP =6 RST $.# 369=%;0
AH13<7630< 9203 %;=03395=C
FFC& .MP =6 RST 7 369=%;0
FFCE .MP =6 HVECT INTRIK04 369=%;0
FFDI-FFE8 M6;%=63 S=1BD
A=0>563134 2=631F0 U20< ?4 M6;%=63
FFE E R0F%2=03
FFEA D R0F%2=03
FFE& C R0F%2=03
FRMWARE are listed below.These subroutines can be called in your
own programs by using the CALL nstruction and specifying the
starting address of that particular subroutine.The starting addreses of
all these subroutines are given in brackets along with their names.
+$ Modiad (!30-) Modi;B address ;ield o; disDlaB
nputs
B : Dot Flag-
1 Put dot at right edge of the field.
0 No dot.
HL : The character to be displayed.
5-4
The contents of HL Register pair are displayed in the address field.The
contents of all the CPU registers are affected
-$ M8'%') ( !306 )
nputs B : Dot Flag-
1 : Put Dot at the right edge of the field
0 : No dot
The contents of the A register are displayed in hex notation in the data field
of display the contents of all the CPU registers and flags are affected.
3$ 7'K>' (!-6")
nput : Nothing
Output : A : character read from the keyboard
D e stro y s : A, H, L, F/E's.
This routine waits until a character is entered om the hex keypad and on
return, places the value of the character in the A register.
For the RDKBD routine to work correctly, the user must unmask RST 5.5
hardware interrupt using the SM instuction in Version 1.
$ '61(: (!.F+)
This routine takes the 16 bit contents of register pair and counts down
to zero.Then returns to the calling program. The A,D & E register and flags
are affected.
5-5
.$ 416(7 (!+'")
nputs : B : Dot falg
1 Dot in address field
0 No Dot
This routines sends blank characters to both the address field and data
field of the display. f the dot flag is set then a Dot appears at the right edge
of the address field.
0$ G)56A (!-->) Get 5e2 'igits
nputs : B : Display Flag
0 Use address field of display.
1 Use data field of display.
Outputs : A : Last character read from keyboard.
DE : Hex Digits from keyboard last four entered.
Ca rry : Set : At least one hex digit read, else it is reset.
Destroys contents of all registers.
This routine accepts a string of hex digits from keyboard and displays
them in address / data field as they are received. n either case a dot will be
displayed in the right most field. t is not terminated by NR, DCR or EXEC
keys, the received hex digits are invalid.
"$ 89)P9) (!->")
nputs : A : Display Flag
0 To use address field
1 Use data field
H 1)
L 11
P 12
I 1!
5-6
5-7
Destroys all
B : Dot Flag
1 - Dot at right edge
0 - No dot
HL : Address of characters to be output.
C:232/0,3 ,7 C*+,
3 1"
Outputs two characters to data field or four to address field. The address of
the characters is received as an argument. The routines MODDT and
MODAD are useful whenever the user wants to display hexadecimal
information like messages. The userhas to use the output routine with the
following code assigned to the characters to be displayed. The display
technique on 7 segment LED is already explained.
TABLE 5.2
&:1;D 1#
; 1$
U 17
/ 18
G 1
. 1A
4 1&
O 1C
C:232/0,3 ,7 C*+,
) ))
1 )1
2 )2
! )!
" )"
# )#
$ )$
7 )7
8 )8
)
A )A
? )&
C )C
< )D
E )E
F )F
5.2 SERIAL ROUTINES
The following are the routines you can borrow from the serial Monitor.
Whenever the user straps the SD to TTY ( 20 mA loop ) or CRT
(RS232C) the serial routine is invoked. The serial routine is AUTOBAUD
type i.e. on power up or RESET, the contents for HALFBT and BTTME
are undefined. After sending ASC space character (20H) from a serial
device, and baud rate is calculated . A BRD routine and a sign on
message is transmitted at that baud rate. Thus user is advised to set the
appropriate values in HALFBT and BTTME and then use CN and
COUT routines for any other purpose of block transfer on serial link from
one system to another etc. Please refer to the chapter on serial /O
operation for details, before using any of the following routines which can
be obtained from the serial monitor.
(ddress 'ata Mnemoni<
F000
F003
31 FF FE
00
LX SP
NOP
F004 00 NOP
F005 00 NOP
5-8
+$4%& (!"F') 4onsole %nDut
This routine returns a character in ASC code received from the serial
devices,to the A register. Condition flags are affected.
-$489) (!"F() 4onsole 8utDut
This routine transmit a character (in ASC Code) passed from the program in
C Register to the serial device. The A, C & F registers are affected.
3$4789) (!.6>) 4arriage 7eturn 1ine Feed
CROUT send CR and LF characters to console, A, B, C and F are destroyed.
$&M89) (!040) 5e2 &umber Drinting
NMOUT converts the 8 bit unsigned integer in A register to 2 ASC
characters representing 2 hex digits and prints the two digits on console.
Contents of A,B, and C, F are destroyed.
.$G6)5A (!0-0)
Outputs : BC : 16 Bit nteger
D : Character which terminated the integer.
Ca rry : 1 First character is not delimiter
0 f first character is delimiter.
D e stro y s : A, B, C, D, E & F.
GETHX accepts a string of hex digits from the input stream and returns a
value, a 10 bit binary integer, taking only last four digits entered.
5-9
The following are the program examples . The user should load and
execute these program to get familiar with the keyboard of
MCROFREND DYNA-85.
5.3 PROGRAMMING E&AMPLES
62amDle + * FamiliariEaton
Let us start with a simple program to understnd exactly what happens
inside a microprocessor when a program is run.
First, load the following program using 'SET' and 'NR' keys.
4omments
Define Stack Pointer
F006 00 NOP
F007 00 NOP
F008 00 NOP
F009 CD 6E 03 CALL Display contents of A into
Data Field
F00C 76 HALT Stop Executing
Now to understand exactly how the program works, let us take three
simple instructions.
MV A, D8
MV B, D8
ADD B
RST 1
F007 CF
Execute the program at F000H and examine the registe
Register A contain 23, and Register B will contain 11, be
instruction MV B, 11 (06 11) has now loaded the regi
11.
(ddress 'ata Mnemoni< 4omments
s A and B.
F000 32 FF FE LX SP, FEFF Define Stack Pointer
F003 00 NOP
cause the
F004 00 NOP
ster B with
F005 00 NOP
F006 CD E7 02 CALL RDKBD Read Keyboard value
d. Modify the location again as follows :
F007 80
F008 CF
F009 CF RST 1
nto A.
Save registers & return
to monitor
5-10
The RST 1 instruction will be used so that the register status is saved and
we can examine registers after executing the programs , using the 'REG'
key.
a. Execute the program that has been entered at location F000H by
using the 'GO' and 'EXEC' keys .'E' will appear in the address field
showing that the program is being executed. Press 'RES' to reset
and @Frl6nd? will appear.
b. Modify the initial contents of location , as follows :
F003 3E
F004 23
F005 CF
Execute the program at F000H and examine the register A and B.
Contents of A should be 23, because the instruction MV A , 23
(3E 23 ) will load register A with 23.
c. Modify the locations again as follows :
F005 06
F006 11
5-11
Execute the program at F000H and examine registers A & B, this
time the contents of register A are not 23 as before, but it is 34.
This is the result of instruction
ADD B, 80
Which contents of B are added to A, A become 34 (23+11).
e. Now remove the CF from location F008 and replace it by 00 (NOP)
again. Execute the program at F000H and observe the difference.
This time the data field shows 34.nstruction CALL MODDT has
displayed the contents of register A in the data field.Execution of
program now select different sets of instruction and study the effect
of executing those instruction in the similar manner.
n case of long programs, it is very inconvient to insert the CF and
remove it for each step. Such programs can be studied by using
the 'STEP' key which is already explained.
62amDle - * 7'K>'
The following program illustrate the utility of the subroutine RDKBD.
Execute the following program and then examine register A . Register A
will contain the value of the key you has pressed.
r
(ddress
F000
'ata
31 FFFE
Mnemoni<s
LX SP,FEFF
4omments
Define stack pointer
F003 00 NOP
F004 00 NOP
F005 00 NOP
F006 CD E702 CALL RDKBD Read Keyboard into A
F009 47 MOV B, A Transfer A to B
F00A CD E702 CALL RDKBD Read next key
F00D 80 ADD B Add B to A
F00E CD 6E03 CALL MODDT Display result in data
field
F001 C3 06F0 JMP F006 Wait for Next cycle
(ddition Suggestions *
5-12
62amDle 3 * M8'%')
This examples loads register A with a value and displays that value in the
data field of the display.
5-13
(ddress
F000
'ata
31 FF FE
Mnemoni<
LX SP, FEFF
4omments
Define stack
Pointer
F003 3E 96 MV A, 96 Load A with
Value 96
F005 CD 6E 03 CALL MODDT Display contents
F008 76 HLT of A in the data
field
62amDle * 7'K>' F M8'%')
This example combines previous two programs and the Data field of display
the value of the key pressed.
(ddress 'ata Mnemoni<s 4omments
F000 31 FFFE LX, SP FEFF Define stack
pointer
F003 00 NOP Unmak interrupt
F004 00 NOP
F005 00 NOP
F006 CD E702 CALL RKBD Read keyboard
nto A
F009 CD 6E03 CALL MODDT Display A into
data field
F00C C3 06F0 JMP F006 Wait for next key
62amDle . * 56A (''%)%8&
This program combines the RDKBD and MODDT subroutines with the ADD
B instruction.The RDLBD subroutine reads two successive key entries and
adds them together in register A. The MODDT subroutines then displays
the result of this addition in the data field of the display.
1. Modify this program using the DAA instruction to perform decimal
addition.
2. Write a program for 2 digit decimal addition using DAA and RLC
instructions.
62amDle 0 * '%G%) 56A 489&)67
This example program displays a 4 digit Hex count in the address field of
the display, from 000 to FFFF and again resets to 0000 before continuing
further count. The HL register pair is used for counting and the MODDT
subroutine is used to obtain the display.
(ddress 'ata Mnemoni< 4omments
F000 31 FFFE LX SP,FEFF Define stack pointer
F003 21 0000 LX H, PUSH H Save HL on stack
F007 CD 6203 CALL MODAD Display count in
address field
F00A 11 0040 LX D 4000 Set Delay
F00D CD F105 CALL DELAY Wait out Delay
F010 E POP H Restore HL
F011 23 NX H ncrement count
F012 C3 06F0 JMP F006 Continue in loop
F00B 47 MOV B, A Load B from A
F00C C5 PUSH B Save B on stack
F00D CD 6E03 CALL MODDT Display count
F010 16 18 MV D, 18 Set Delay
F012 CD F105 CALL DELAY Wait out delay
F015 C1 POP B Restore count
F016 04 NR B ncrement count
F017 C3 09F0 JMP F009 Continue
F020 3E 1F MV A, 1F Load A with 1 F
F022 30 SM Set interrupt mask
F023 CD E702 CALL RDKBD Wait for a key to be
Pressed
F026 3E 1B MV A, 1B Load a with 1B
F028 30 SM Set interrupt mask
F029 FB E Enable nterrupt
F02A C9 RET Return
FFCE C3 20F0 JMP F020 Jump to interrupt routine
5-14
62amDle " * - '%G%) '64%M(1 489&)67
This program displays s decimal counter in the data field of display. The
count can be stopped using the V key and restarted by pressing any key,
except the Reset key. The address field shows 'E' to indicate that user
program is being executed.
(ddress 'ata Mnemoni<s 4omments
5-15
This program executedas GO F000 EXEC, and it can be stopped by
pressing the V key.
The count can be restarted by pressing any key other than Reset key.
1. Change the speed of counter by modifying the contents of location
F011H which decides the delay.
F000 31 FFFE LX SP,FEFF Define stack Pointer
2. Use the CP instruction to compare the count with 60, & a conditional
F003
F005
3E B
30
MV
SM
A, B Load A with 1B
Set interrupt mask
jump JNZ, converts this program to count only upto 59.Use the XRA
instruction to reset the accumulator to 00 after counting upto 59.
F006 FB E Enable nterrupt
F007 06 00 MV B, 00 Clear B
F009 78 MOV A, B Load A from B
F00A 27 DAA Decimal adjust A
Now set the delay in such a way that count advances by 1 per
second . This program coverts your MCROFREND DYNA 85 into
digital stop watch.
3. Write a program based on these basic ideas to display hours and
minutes in the address field and seconds in the data field. You can
either have a 12 hour or 24 hour clock.
62amDle / * F1(S5%&G '%SP1(: @16rn?
This program flashes the message 'Lern' in the address field of the
dispay.
(dderss
F000
'ata
11
Mnemoni< 4omments
L
F001 0E E
F002 14 r
F003 16 n
F004 15 blank
F005 15 blank
F006 15 blank
5-16
(ddress 'ata Mnemoni<s 4omments
62amDle # * 7811%&G '%SP1(:
5-17
F010 31 FFFE LX SP, FEFF Define stack pointer
F013 3E 01 MV A, 01 Load A with 1 to use
Data field.
F015 06 00 MV B, 00 No decimal point
F017 21 06F0 LX, H F006 Get characters starting
at F006H
F01A CD B702 CALL OUTPUT Display them in data
field
F01D 3E 00 MV A, 00 Use address field
F01F 06 00 MV B, 00 No Decimal point
F021 21 00F0 LX H, F000 Get characters starting
at F000
F024 CD B702 CALL OUTPUT Display them in address
Field
F027 11 FFFF LX D,FFFF Set Delay
F02A CD F105 CALL DELAY Wait out delay
F02D 3E 00 MV A, 00
F02F 06 00 MV B, 00
F031 21 04F0 LX H F004 Get blank
F034 CD B702 CALL OUTPUT Blank display
F037 11 FFFF LX D, FFFF
F03A CD F105 CALL DELAY
F03D C3 1DF0 JMP F01D Continue Flashing
(dditional Suggestion *
1. Find out the location where the delay values are sorted.
Change these delay values to change the rate of flashing.
2. Select any other 4 character word and flash it on the display.
3. Select a 2 character word and place it at F004H and F005H
so that it flashes in between the flashing of 4 character word.
This program is included in the monitor FRMWARE and it is accessible
through code '0F'. On executing this code the display starts showing the
rolling message Gd:n(18G h61PS :o9 %n 16(rning 9PH$
The rolling display is using the OUTPUT and DELAY subroutines. To
simulate the effect of rolling, characters are taken one from a string of
characters and the position is shifted from right to left.
When the first letter appears in the highermost position, remaining 5 digits
must be blank.
This string starts with 5 blank characters. The last character in the string is
FFH, which is not used to display any letter but it is used only to detect the
end of string , so that the rolling can once again start from the beginning
using a conditional jump instruction.
The complete listing of this program is given in the FRMWARE listing at
address 0E5BH.
Transfer this program from EPROM to RAM using CODE 00. Then modify
all the address locations suitably so that the same program can be
executed form RAM.
Now you can put any other message in the string and display that
message.
6-1
45(P)67 0
S67%(1 % 3 8 8P67()%8&
n the serial / O section we will discuss about the RS232 and Audio
Cassette nterface. Apart from the Keyboard Mode, the serial Mode can be
selected with appropriate strapping. n the keyboard mode user can
communicate with the system only in hexadecimal format . The serial
mode is provided for the better interaction mode of communication using
a terminal. Normally the mode of cmmunation is ASC ( American
Standard Code for nformation nterchange).
To Correct MCROFREND with a terminal strap SD, the appropriate
signals are provided 7 pin cable type connect . After appropriately
connecting the terminal the standard Baud Rate is 110 with two stop bits.
When the system is powered on the in - built displays show S67%(1$ This
routine expects a space character (20H in ASC) from the terninal. The
system is claimed to be AUTO BAUD, that is after sensing the space
character from the terminal it will adjust to the appropriate Baud Rate and
hence forth communicate with this Baud Rate, until the next power ON or
the Reset key is pressed, the Baud Rate is unchanged.
Thus on power ON or Reset you press a space bar on TTY and sign on
message M%478F7%6&' ':&( /. appears on the console . The
procedure is similsr for CRT type of terminals where the communication
mode is RS232C. RS232C is a EA approved standard for communation.
For an active signal the channel will give -12V signal and for the inactive
signal the voltage will be +12V. This is to keep the long communication
line immune to noise and to connect a CRT terminal on RS232C link,
strap the SD line to CRT. The communication format is fully duplex, 8 bit
ASC data , no parity start bit and two stop bits. Full Duplex means that
whatever character received from the terminal is echoed back.
6-2
The later paragraphs will explain the operation of various commands
supported under the serial section. The commands are in the form of a
single alphabetical character specifying the command, followed by a list of
numerical or alphabetical parameters which are entered as hexadecimal
numbers, The monitor recognizes the character 0 through 9 and A through
F as legal hexadecimal digits . Longer numbers may be entered but only
the last four digits will be retained.
The only command an alphabetical parameter is the 'X' command. The
nature of such parameter will be discussed in the section explaining the
command.
!.1 USE OF MONITOR
The monitor allows you to enter, checkout and execute small programs. t
contains facilities for memory display and modification program loading
from console device and program initiation with a break-point facility. n
addition, the key on the keyboard may be used to initiate your own
keyboard interrupt routine.
!.2 COMMAND STRUCTURE
n the following paragraphs, the Monitor command language is discussed.
Each command is described and examples are included for clarity. Error
conditions that may be encountered while operating the monitor are
described later.
The monitor requires each command to be terminated by a carriage return
with the exception of the 'S' and 'X' commands, the command is not acted
upon until the carriage return is sensed. Therefore, you may abort any
command , before entering the carriage return, if you have typed an illegal
character.
Except where indicated otherwise, a single space is synonymous with the
comma for use as a delimiter.
Consecutive spaces or commas or a space or comma immediately
following the command letter, are illegal in all commands except the 'X'
command.
6-3
0$-$+ ' 'isDlaB memorB 4ommand
D
Selected area of addressable memory may be accessed and
displayed by the D command. The D command produces a formatted
listing of the memory contents between ( Low Address ) , and (High
Address ) , inclusive on the console. Each line of the listing begins
with the address of the first memory location displayed on that line,
represented as 4 hexadecimal digits , followed by up to 16 memory
location, each one represented by 2 hexadecimal digits.
0$-$- G Program 62e<ute 4ommand
G ( Entry Point )
Control of the CPU is transferred from the monitor to the user program
by means of the program execute command G. The entry point should
be an address in RAM which contains an instruction in the program. f
no entry point is specified , the monitor uses, as the address, which is
the value on the top of the stack when the monitor was entered.
G 4ommand 62amDle
G 2000
Control is passed to location 2000.
0$-$- % %nsert %nstru<tions into 7(M,+
( Address ) ( Data )
Single instruction , or an entire user program, are entered into RAM
with the command. After sensing the carriage return terminating the
command line , the monitor waits for the user to enter a string of
hexadecimal digits ( 0 to 9 , A to F ) . Each digit in the string is
converted to its binary value, and then loaded into memory , beginning
at the starting address specified and continuing with sequential
memory locations . Two hexadecimal digits are loaded into each byte
of memory.
6-4
Seperators between digits ( Commas, Spaces, Carriage Returns ) are
ignored, illegal characters, however will terminate the command with an
error message. (The character ESC or ALTMODE which is echoed on
the console as '$' terminates the digit string.
0$-$3 M Move MemorB 4ommand
M ( Low Address ) ( High Address ) ( Destination )
The M command moves the contents of memory between (Low Address)
and ( High Address ) inclusive of the area of RAM beginning at
( destination ) .The contents of the field remain undistributed, unless the
receiving field overlaps the source field.
The move operation is performed on a Byteby-Byte basis, beginning at
(Low Address). Care should taken if ( Destination ) is between ( Low
Address) and (High Address). For example, if l ocation 2010H contains
1A, the command M2)1)' 2)1F' 2)11 will result in locations 2010H to
2020H containing '1A1A1A' , and the original contents of the memory
will be lost.
The monitor will continue to move data until the source field is exhausted
or until it reaches address FFFFH. f the monitor reaches FFFFH without
exhausting, the source field, it will move data into this location and then
stop.
0$-$ S Substitute MemorB
S ( Address ) ( Data)
The S command allows you to examine and optionally modify memory
locations individually. The command functions as follows :
6-5
1. Type S, followed by the hexadecimal address of the first memory
location which is displayed, followed by a space or comma.
2. The contents of the location are displayed, followed by a dash (-).
3. To modify the contents of the location displayed, type in the new
data, followed by a space, comma or carriage return.
f you do not wish to modify the location type only space, comma
or carriage return . The next higher memory location will
automatically be displayed as in step ( 2 ).
4. Type a carriage return. The S command will be terminated.
0$-$. A 62amine 3 Modi;B 4P9 7egister 4ommand
X ( Register dentifier )
The displaying and modification of the CPU registers are
accomplished via the X command. The X command uses (Register
dentifier) to select the particular register to be displayed. The register
identifier is asingle alphabetic character denoting a register, as defined
in table.
X command register identifiers :
%denti;ier <ode 7egister
A Register A
B Register B
C Register C
D Register D
E Register E
F Flags Byte
6-6
%denti;ier <ode 7egister
nterrupt mask
H Register H
L Register L
M Register H & L combined
S Stack Pointer
P Program Counter
The command operates as follows :
1. Type X, followed by a register identifier or a carriage return.
2. The contents of the register are displayed (Two hexadecimal digits for
A, B, C, D, E, F, , H and L, four hexadecimal digits for M, S and P)
followed by a dash(-).
3. The register can be modifiedby typing the new value, followed by a
space comma, or carriage return. f no modification is desired, type
only the space comma or carriage return.
4. f a space or comma is typed in step (3), the next register in sequence
will be displayed as in step 2. f P was displayed the command is
terminated. f a carriage return is entered in step 3, the X command is
terminated.
5. f a carriage return is typed in step (1) above, an annotated list of all
registers and their contents are displayed.
6-7
The bits in the byte (F) and interrupt mask () are encoded as follows :
The format of F register :
S Z X C X P X C
Carry
Parity
Aux.Carry
Zero
Sign X= Undefined
The format of register :
M M M
0 0 0 0 E 7.5 6.5 5.5
nterrupt Mask
nterrupt enable flag
!.3 PROGRAM DEBUGGING
The monitor treats the RST 1 instruction (CF) as a special sequence
initiater. When the RST 1 instruction is executed, the monitor will
automatically save the complete CPU status, and after pressing the
space bar , it outputs the sign-on message M%478F7%6&' ':&(,/.
on the console. Now you may display the contents of the CPU status
register by initiating the 'X' command. After examining the machine
status and making any changes you can resume execution of the
program by inputting 'G' and carriage return on the console. You can
step through large portions of your program by inserting RST 1
instructions at key location.
DC5, D6 (CR)
00C5
00D0
DA 9D 00 C3
02 FE 10 CA
E9 01
EC 00
CD 00
32
02 CD E7
6-8
6-9
!.4 ERROR CONDITIONS
Each character is checked as it is entered from the console. As soon as
the monitor determines that the last character entered is illegal, it aborts
the commands and issues '*' to indicate an error has occurred.
!.5 ADDRESS #ALUE ERRORS
Some commands require an address pair in the form of ( Low Address )
( High Address ). While these commands are used and the value of Low
address is greater than or equal to the value of high address, the action
indicated by the command will be performed on the data at low address
only.
Addresses are evaluated modulo 2
10
, thus if a hexadecimal address
greater than FFFFFH is entered, only the last 4 hex digits will be used.
Another type of address error may occur when you specify a part of
memory in a command which does not exit in the hardware configuration
you are using.
n general, if a nonexistent portion of memory is specified as the source
field for an instruction, the data fetched will be unpredictable. f a non
existent portion of memory is given as the distrinct field in a command,
the command effect.
!.! COMMAND E&AMPLES
+$ ' 48MM(&' 6A(MP16 *
-$ % 48MM(&' 6A(MP16 *
1 1 0 0 0 (CR)
0 1 2 3 4 5 6 7 8 9 A $
This command puts the following into RAM.
3$ M 48MM(&' 6A(MP16 *
M 0 0 0 0, 0 0 1 0, F 0 0 0 (CR)
Block area from 0H to 0010H (27 Bytes) is moved to RAM from
F000H. User can check it with two commands.
D0, 10 (CR) and
DF000, F020 (CR)
$ S 48MM(&' 6A(MP16 *
SF000 3E- 00-05 D3-00 05-07 (CR)
The location F000H which contains 3E is unchanged. Location F001H
contains 00 is replaced with 05 , location F002H contains D3 is
replaced with 00 and F0003H contains 05, which is replaced by 07.
The user can verify it with the D command.
!." AUDIO CASSETTE I/F
Till now the full discussion was concentrated on CRT (RS232C) type
of communication interface . Additional useful interface provided on
SD and SOD lines of 8085 Microprocessor is the Audio Cassette /F.
LOAD
SYNC
FILE
NAME
SE SS CHKSUM MIDSYNC
SS
DATA
SS
TAIL
SYNC
6-10
The System RAM is volatile, i.e. whenever the power is OFF, data is
lost.EPROM is nonvolatile storage but it is costly and consumes more
time for erasing and reburning.
Audio Cassette /F is cheap and fast to use. You can store 30K bytes
on one side of the C60 cassette. The two commands SAVE and LOAD
in operating section explain the use of this interface. n this section the
background of this interface is discussed . A file management type of
storage is supported . A very reliable , 'Simple Hardware Complex
Software' type frequency modulation method is used for MF-DYNA 85.
BT 0 2KHz 8 cycles + 1KHz 2 cycles 6 ms
BT 1 2KHz 4 cycles + 1KHz 4 cycles 6ms
f Err is displayed. t indicates :
Open area for RAM (SS-SE)
mproper formatting
Checksum mismatch
Noisy Tape recorde/ tape
BAUD RATE TABLE 6.1
(At 6,144 MHz Crystal)
B2-+ R20, B10-T14, 2;9 B10
6-11
Byte Start Bit ( 0 ) bit 7 to bit 0 1 stop
11) )8C$ )"E!
Bit 10*6 60ms
FLE Hexadecimal file.
S(V6 3 18(' S6I96&46 *
1#) )#&2 )!D
!)) )!D7 )2$C
$)) )2$ )1A#
12)) )2&2 )1#
"8)) )1#7 )12C
$)) )12 )11#
12)) )112 )1)
)1)7 )1)"
1KHz 1 Byte 2 Bytes 1Byte 1 Byte 2 KHz Variable 2KHz
4 Sec. 2 Sec. Data 2Sec.
The data rate is 165 bps in 30 min. You can store (165 * 30 * 60) * 10
Bytes 25 K.
The Output could be connected to MC or AUX N of CRTs.
The total procedure for SAVNG and LOADNG is explained in command
chapter.
Please note that only while using the CN and COUT routines off line.
You have to load these HALFBT and BTTME.
n all other situations the AUTOBAUD software will adjust to
terminal baud rate ( Any nonstandard baud rates also ). While loading
the locations are FF9AH for HALFBT and FFCOH for BTTME
For 600 Baud, load the following using the SET command :
FFC0 69
FFC1 02
FF9A A5
FF9B 01
7-1
45(P)67 "
F87 )56 M%478F7%6&' %14 9S67
This manual can be utilized for the user of MCROFREND LC, also
because MCROFREND DYNA-85 is the upgraded version of LC
(W/P).
The differences between MCROFREND DYNA-85 and LC are as
follows :
1) n DYNA-85 Address, Data and Control lines are brought on to
a 50 pin FRC connector instead of the 56 pin STD connector
provided on LC.
2) n DYNA-85, three 16 bit timer/ counter channels are available
onboard using the 8253 chip and it is brought on to a 10 pin
connector.
3) RAM sockets are provided with battery back up on DYNA-85
which is not present on the LC.
All command, codes, keyboard functions and monitor programs of LC
are the same as that of DYNA-85 system.
The Memory and /O mapping are also the same as DYNA-85. Any
program written on DYNA-85 will work on LC and vice versa,expect the
routine code related to the timer/counter of 8253.
Pin &o$ Signal Pin &o$ Signal
&ame &ame
1 +5V 29 A0
2 +5V 30 A8
3 GND 31 WR
4 GND 32 RD
5 NC 33 ORQ
6 NC 34 MEMRQ
7 AD3 35 OEXP
8 AD7 36 NC
9 AD2 37 NC
10 AD6 38 NC
11 AD1 39 S1
12 AD5 40 S0
13 AD0 41 BUSAK (HLDA)
14 AD4 42 BUSRQ (HOLD)
15 A7 43 NTA
16 A15 44 NTRQ
17 A6 45
18 A14 46 NMRQ
19 A5 47 SYSRST
20 A13 48 PBRESET
21 A4 49 CLK
22 A12 50 NC
23 A3 51 NC
24 A11 52 NC
25 A2 53 NC
26 A10 54 NC
27 A1 55 +12V
28 A9 56 -12V
7-2
The details of the 56 pin edge connector is given below :
(PP6&'%A (
48&&64)87 = S)7(PP%&G '6)(%1S
The connectors on MCROFREND-DYNA 85 are designated as
follows :
A-1
J1 : 50 pin Edge connector with STD compatible signals
J2 : 26 pin flat cable connector for 8155
J3 : 26 pin flat cable cinnector 8255
J4 : 26 pin flat cable connector for 8279
J5 : 7 pin power supply connector
J6 : 7 pin connector for serial /O
J7 : 10 pin FRC connector for 8253
4onne<tor J+ * ':&(,/. >us %nter;a<e
Pin &o$ Signal &ame Pin &o$ Signal &ame
1 + 5V 26 A10
2 + 5V 27 A1
3 GND 28 A9
4 GND 29 A0
5 RDY 30 A8
6 ALE 31 WR
7 AD3 32 RD
8 AD7 33 ORQ
9 AD2 34 O/ M
10 AD6 35 OEXP
11 AD1 36 OEXP1
12 AD5 37 OEXP2
13 AD0 38 OEXP3
14 AD4 39 NMRQ
Pin &o$ Signal &ame Pin &o$ Signal &ame
1 RL0 2 RL1
3 RL2 4 RL3
5 RL4 6 RL5
7 RL6 8 RL7
9 OUT A3 10 OUT A2
11 OUT A1 12 OUT A0
13 OUT B3 14 OUT B2
15 OUT B1 16 OUT B0
17 NC 18 VCC
19 CNTL 20 SHFT
21 NC 22 GND
23 SL3 24 SL2
25 SL1 26 SL0
A-2
Pin &o$ Signal &ame Pin &o$ Signal &ame
4onne<tor J3 * /-.. 4onne<tor
A-3
Pin &o$ Signal &ame Pin &o$ Signal &ame
15 A7 40 CS2 1 PA3 2 PA2
16 A15 41 HLDA 3 PA1 4 PA0
17 A6 42 HO L D 5 VCC 6 PA7
18 A14 43 NTA 7 PA6 8 PA5
19 A5 44 NTRQ 9 PA4 10 PC7
20 A13 45 CLK 11 PC6 12 PC5
21 A4 46 RST6.5 13 PC4 14 PC0
22 A12 47 SYSRESET 15 PC1 16 PC2
23 A3 48 PBRESET 17 PC3 18 PB0
24 A11 49 RST5.5 19 PB1 20 PB2
25 A2 50 RST7.5 21 PB3 22 PB4
23 PB5 24 PB6
4onne<tor J- * /+.. 4onne<tor
25 PB7 26 GND
Pin &o$ Signal &ame Pin &o$ Signal &ame
4onne<tor J * /-"# 4onne<tor
1 PA3 2 PA2
3 PA1 4 PA0
5 VCC 6 PA7
7 PA6 8 PA5
9 PA4 10 TM OUT
11 TM N 12 PC5
13 PC4 14 PC0
15 PC1 16 PC2
17 PC3 18 PB0
19 PB1 20 PB2
21 PB3 22 PB4
23 PB5 24 PB6
25 PB7 26 GND
[A] DYNA-PO : 8155 STUDY CARD
[B] DYNA-PO/1 : 8212 STUDY CARD
[C] DYNA-PO/2 : 8255 STUDY CARD
[D] DYNA-TMER : 8253 STUDY CARD
[E] DYNA-SERAL : 8251 STUDY CARD
[F] DYNA-LBDR : LATCH, BUFFER, DECODER,
RAM
STUDY CARD
[G] DYNA-NTR : 8259 STUDY CARD
[H] DYNA-KBDSP : 8279 STUDY CARD
[] DYNA-DCM : DC MOTOR CONTROL
STUDY CARD
[J] DYNA-TWH : THUMBWHEEL STUDY CARD
Pin &o$
1
Signal &ame
GATE 0
Pin &o$
2
Signal &ame
GATE 1
3 GATE 2 4 GND
5 CLK 0 6 OUT 0
7 CLK 1 8 OUT 1
9 CLK 2 10 OUT 2
A-4
4onne<tor J. * PoCer SuDDlB 4onne<tor
Pin &o$ Signal &ame
1 GND
2 GND
3 + 5V
4 + 5V
5 + 12V
6 -12V
7 NC
4onne<tor J0 * Serial 4onne<tor
Pin &o$ Signal &ame
1 NC
2 NC
3 NC
4 NC
5 TXD
6 RXD
7 GND
4onne<tor J" * /-.3 4onne<tor
B-1
(PP6&'%A >
('',8& 4(7'S F87 M%478F7%6&' ':&(,/.
The MCROFREND DYNA-85 trainer and development system
supports various type of add-on interfacing cards like DYNA study
card, PO cards. These cards are designed for the novice as well as
those who already know about microprocessors, to carry out
experiments for the purpose of thorough understanding of the
peripheral chips and interfacing with external world.
List of add on card supported by DYNA-85 is as follows :
+) ':&(,S67%6S P67%P567(1 S)9': 4(7'S
And many more study cards will be made available in the DYNA-
SERES.
B-2
-) 'MS,P%8 4(7'S
[A] HEX KEYPAD CARD.
[B] STEPPER MOTOR CONTROLLER CARD.
[C] ELEVATOR SMULATOR CARD.
[D] D TO A CONVERTER CARD.
[E] A TO D CONVERTER CARD.
[F] LOGC NTERFACE CARD.
[G] SERAL DSPLAY CARD.
[H] DGTAL /O SMULATOR CARD
For further information or demonstration of the above cards with
DYNA-85, please contact us or our dealers.
D-1
(PP6&'%A '
M%478F7%6&' ':&(,/. M8&%)87 1%S)%&G
(''76SS &(M6 F9&4)%8&
0000 RST 0 COLD START Resets & Reinitializes
all
0008 RST 1 WARM START Stores all CPU status
004E SGNONK Friend Message
0066 CMMND Keyboard command
recognizer
0092 REG 'REG' Command entry
examine/modify
CPU registers
00CB RUN Execute user program
00FD STEP STEP/Breakpoint user
program
018B SET Examine/Modify
memory
01D7 ** CLEAR Clear display. Dot as
per B flag
01E9 * CLDS Clear display,
Terminate command
01F1 CLDST Subroutine for Cold
Start
0200 DSPC Display program
counter & contents
0215 ** ERR Display FErr &
terminate command
022B ** GTHEX Get hex digits from the
keyboard as per B flag
026C * HXDSP Expand hex digits for
display
028E NNT nput interrupt RST 5.5
processing
D-2 D-3
(''76SS &(M6 F9&4)%8& (''76SS &(M6 F9&4)%8&
029F
02A8
02B7
* NSDG
NXTRG
** OUTPUT
NSERT hex digit in A into DE
Advance register pointer to next
reg.
Output characters to display
065B
06A0
** GETNM
* HL0
Get specified count of
numbers from input
stream
Compare HL & DE
02E7
02F7
02FA
02FC
** RDKBD
RETF
RETT
RGLOC
Read characters from KBD in A
Return False
Return True
Get register save location
06C7
06E2
** NMOUT
PRVAL
Outputs two ASC
characters for each
number in A
Convert hex to ASC
0309
031B
0344
035F
0362
RGNAM
RSTOR
SETRG
MODAD
** MODAD
Display register name
Restore user registers
SET Register pointer
Update address field of display
from CURAD
Update address field of display
06EA
071B
REGDS
RGADR
Display contents of
register save one
location
From a character
denoting register gets
the saved location
036B MODDT
from HL
Update address field of display 0732 SRET
address
Success return
036E
03FA
** MODDT1
SGNON
from WRDT
Update data field of display
from A
Print MCROFREND- on TTY
0734
073F
STHF0
STHLF
Store to lower half zero
Store into specified half
byte of DE the 4 bit
value in C
0408 GETCM Get commands from TTY 075E VALDG 0-9 & A-F valid hex
0437 DCMD Display memory block degit check
0468 GCMD Execute user program 0779 VALDL Valid delimiter check
0486 MCD nsert byte into memory 0841 CODECMD CODE Command
04D0
04F0
0514
SCMD
SCMD
XCMD
Block move during memory
Examine & Modify memory
Examine & Modify registers
085C
088D
MOVE BLOCK
FLL BLOCK
Move Block of Memory
CODE 00
Fill block of RAM with
0590
05BB
05C4
05EB
05F1
05F8
0611
061C
** CN
* CNVBN
** COUT
** CROUT
** DELAY
** ECHO
* ERROR
FRET
Gets character in A from TTY
Converts ASC hex to Binary
Outputs ASC character in C to
TTY
Outputs CR & CF to console
Returns when count in DE
become 0
Gets character from console &
sends it back
Outputs to console
08A6
08BD
08D4
08DD
0929
COMPL CMENT
BLOCK Search
* DSPLAY
NSERT
DELETE
variable CODE 01
Complement RAM
block CODE 0E
Search a given block
for variable CODE 04
Display
match/mismatch & wait
for NR
nsert a byte in a block
CODE 02
Delete a byte from a
061F
0626
** GETCH
** GETHX
Get a character from input
stream
Accept a string of hex digits
from input stream
0951 HEX-DECMAL
block code 03
CODE 05 Hexadecimal
to Decimal
D-3 D-4
(''76SS &(M6 F9&4)%8& (''76SS &(M6 F9&4)%8&
--
09D7
DEC-HEX
SERAL
CODE 06 Decimal to
Hex conversion
Baud Rate id, Sign,
0D28
0D5C
LOAD
TAPEN
Load from cassette to
RAM
nput a byte from tape
09E3 BRD
Command
Baud Rate identification
0D84 BTN nput a bit at a time
from Tape
0A10 CNVBN Convert to Binary 0DAB PRVRG Previous register
0A19
0A4B
0A78
TPO
SSTEP
* LDALL
Break point loading
Break point checking
Load SS, SE & DS
0DBA
0DC3
0DD9
CHK
NR DCR
VALCH
NR or DCR Check
Validity Check
0A93
0AC2
0AE6
LDSSE
* DTDSP
BLANKCHK
Load SS & SE
Display as per code
Check EPROM for
0DF8
0E0F
* BTSPAS
SRL1
Pass Bits in serial
mode
Display Serial
0B16 Pr LOAD
erasure code 0B
Load Pr (Program)type
0E50 * COMPARE Block compare
compares two blocks
0B35
055B
DUPL
COPY
Duplicate CODE 0A
Copy PROM into RAM 0E5B
SS, SE & ds
CODE OF
0B65
0BA7
0BD6
0BF1
0C46
CHKSUM
VERFY
* READ
PROGRAM
SRKD
CODE 09
Checksum given PROM
CODE 'OC' Verify RAM
VS EPROM CODE '08'
Read from COPY
PROM At a given ADR
Program given memory
block in COPY ODE 07
SS/SE and Sr. Loading
0EA2
* These rout
in the prog
ines are very useful to t
ramming section
Guess game CODE 0D
e user & are re-explained
0C6B
0CB7
0CDD
0CFC
MESG
SAVE
TAPEOUT
BURST
Display message like
P,V,C,D
Save from memory
block onto cassette
Output a byte in C onto
tape
Output a burst of signal
h
D-5
D-6
0028 C3C2FF JMP RST 5.5 ;BRANCH TO RST 5
S8F)W(76 1%S)%&G 8F M%478F7%6&',':&(,/. LOCATON N RAM NPUT
NTERRUPT ENTRY PONT
(RST 5.5)
LOC OBJ SOURCE STATEMENT 002C ORG 2CH
"RESET" KEY ENTRY PONT-COLD 002C C397FF JMP NNT ;BRANCH TO USER RAM RST
START RST 0 ENTRY PONT 6 ENTRY PONT
0000 3E00 MV A, KMODE ;GET CONTROL 0030 ORG 30H
CHARACTER 0030 C3C5FF JMP RSET6 ;BRANCH TO RST 6
0002 D30500 OUT CTRL ;SET LOCATON N RAM HARD
KEYBOARD/DSPLAY MODE WRED USER NTERRUPT
0005 C3F101 JMP CLDST ;GO FNSH COLD START ENTRY PONT (RST 6.5)
CLDBK ;THEN JUMP BACK HERE 0034 ORG 34H
0008 ORG 8 0034 C3C8FF JMP RESET 6.5 ;BRANCH TO RST 675
SAVE REGSTERS LOCATON N RAM
0008 22EFFF SHLD LSAV ;SAVE H & L 0038 ORG 38H
REGSTERS 0038 C3CBFF JMP RSET7 ;BRANCH TO RST 7
000B E1 POP H ;GET USER PROGRAM LOCATON N RAM
COUNTER "VECTORED NTERRUPT"
FROM TOP OF STACK KEY ENTRY PONT(RST 7.5)
000C 22F2FF SHLD PSAV ;/AND SAVE T 003C ORG 3CH
000F F5 PUSH PSW ; 003C C3CEFF JMP USNT ;BRANCH TO USER
0010 E1 POP H NTERRUPT LOCATON N
0011 22EdFF SHLD FSAV ;SAVE FLP/FLOP & RAM.
REGSTER A RES10 ; CONTNUE SAVNG USER
0014 210000 LX H, 0 ;CLEAR H & L STATUS
0017 39 DAD SP ;GET USER STACK PONTER ;GET USER NTERRUPT
0018 22F4FF SHLD SSAV ;AND SAVE T STATUS AND NTERRUPT
001B 21EDFF LX H, BSAV+1 ;SET STACK PONTER MASK
FOR SAVNG 003F 20 RM ;GET USER NTERRUPT
001E F9 SPHL ;REMANNG REGSTERS STATUS AND NTERRUPT
001F C5 PUSHB ;SAVE B& C MASK
0020 D5 PUSHD ;SAVE D & E 0040 E60F AN 0FH ;KEEP STATUS & MAK BTS
0021 C33F00 JMPRES10 ;LEAVE ROOM FOR 0042 32F1FF STA SAV ;SAVE NTERRUPT STATUS &
VECTORED NTERRUPTS MASK
TMER NTERRUPT (TRAP) ENTRY PONT (RST 4.5)-- 0045 3E0E MV A, UNMASK ;UNMASK NTERRUPTS
0024 ORG 24H FOR MONTOR USE
0024 C35701 JMP STP 25 ;BACK TO SNGLE STEP 0047 30 STM ;NTERRUPTS DSABLED
ROUTNE RST5 ENTRY WHLE MONTOR S
PONT RUNNNG (EXCEPT WHEN
0028 ORG 28H WATNG FOR NPUT)
0049 20 RM ;TTY OR KEYBOARD
MONTOR?
004A 07 RLC ;S TTY CONNECTED?
D-7
0048 DAD709 JC SERAL ;YES - BRANCH TO
TTY MONTOR
;NO - ENTER KEYBOARD
MONTOR
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
BEGNNNG OF KEYBOARD MONTOR CODE
*****************************************************
OUTPUT SGN-ON MESSAGE
004E AF XRA A ;ARG-USE ADDRESS FELD
OF DSPLAY
004F 0600 MV B, NODOT ;ARG-NO DOT N ADDRESS
FELD
0051 21A063 LX H, SGNAD ;ARG-GET ADDRESS OF
ADDRESS FELD PORTON
OF SGN-ON MESSAGE
0054 CDB702 CALL OUTPUT;OUTPUT SGN ON MESSAGE
TO ADDRESS FELD
0057 3E01 MV A, DTFLD ;ARG-USE DATA FELD OF
DSPLAY
0059 0600 MV B, NODOT ;ARG-NO DOT N DATA FELD
PORTON OF SGN-ON
MESSAGE
005B 21AA03 LX H, SGNOT ;ARG-GET ADDRESS OF
DATA FELD PORTON OF
SGN-ON MESSAGE
005E CDB702 CALL OUTPUT ;O/P SGN-ON MESSAGE TO
DATA FELD
0061 3E80 MV A, EMPTY
0063 32FEFF STA BUFF ;SET NPUT BUFFER EMPTY
FLAQ
D-8
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
FUNCTON ; COMMD-COMMAND RECOGNZER
NPUTS ; NONE
OUTPUT ; NONE
CALLS ; RDKBD, ERR, SET, REG, RUN, STEP, CODE,
SAVE, LOAD DESTROYS ; A, B, C, D, E, H, L, F/F'S
0066 31E9FF LXH MNSTK ;MONTOR SP NTALZED
0069 3E90 MV A, ADSP ;USE ADDRESS FELD
006B D305 OUT CNTRL ;OUTPUT TO CNTRL
006D 3E1E MV A, F ;PROMPT
006F D304 OUT DATA ;OUTPUT F TO START OF
ADDRESS
0071 00 NOP
0072 CDE702 CALL RDKBD ;READ KEYBOARD
0075 010B00 LX B, NUMC ;COUNTER FOR NUMBER OF
COMMANDS N C
0078 210008 CMD10 LX H, CMDTB ;GET ADDRESS OF
COMMAND TABLE
0078 BE CMP M ;RECOGNZE THE COMMAND?
007C CA8700 JZ CMD15 ;YES GO PROCESS T
007F 23 NX H ;NO-NEXT COMMAND TABLE
ENTRY
0080 0D DCR C ;END OF TABKE?
0081 C27800 JNZ CMD10 ;NO-GP CHECK NEXT ENTRY
;YES - COMMAND UNKNOWN
0084 C31502 JMP ERR ;DSPLAY ERROR MESSAGE
AND GET ANOTHER
COMMAND
CMD15
0087 210B08 LX H, CMDAD ;GET ADDRESS OF
COMMAND ADDRESS TABLE
008A 0D DCR C ;ADJUST COMMAND
COUNTER COUNTER ACTS
AS PONTER TO COMMAND
ADDRESS TABLE
D-9
D-10
008B 09 DAD B ;ADD PONTER TO TABLE 00A3 7E MOV A, M ;GET REGSTER CONTENTS
ADDRESS 00A4 32F8FF STA CURDT ;STORE REGSTER
008C 09 DAD B ; TWCE BECAUSE TABLE HAS CONTENTS AT CURRENT
2 BYTE ENTRES DATA
008D 7E MOV A, M GET LOW ORDER BYTE OF 00A7 0601 MV B, DOT ;ARG-DOT N DATA FELD
COMMAND ADDRESS 00A9 CD6B03 CALL UPDOT ;UPDATE DATA FELD OF
008E 23 NX H DSPLAY
008F 66 MOV H, M ;GET HGH ORDER BYTE OF 00AC 0601 MV A, DTFLD ;ARG-USE DATA FELD OF
COMMAND DSPLAY
0090 6F MOV L, A ;PUT LOW ORDER BYTE N L 00AE CD2B02 CALL GTHEX ;GET HEX DGT-WERE ANY
COMMAND ROUTNE DGT RECEVED FALSE
ADDRESS S NOW N H & L EXM10;NO-DOT UPDATE
0091 E9 PCHL ;BRANCH TO ADDRESS N H REG.CONTENT
& L 00B1 D2B800 JNC EXM10
************************
COMMAND ROUTNES
************************
FUNCTON ; REG EXAMNE AND MODFY REGSTERS
NPUTS ; NONE
OUTPUTS ; NONE
CALLS ; CLEAR, SETRG, ERR, RGNAM, RGLOC,
UPDDT, GTHEX, NXTRG
DESTROYS ; A, B, C, D, E, H, L, F/F'S REG
0092 0601 MV B, DOT ;ARG-DOT N ADDRESS
FELD OF DSPLAY
0094 CDD701 CALL CLEAR ;CLEAR DSPLAY
0097 CD4403 CALL SETRG ;GET REGSTER
DESGNATOR FROM
KEYBOARD AND SET
REGSTER/PONTER
ACCORDNGLY WAS
CHARACTER A REGSTER
DESGNATOR
FALSE ERR ;NO-DSPLAY ERROR MSG.
AND TERMNATE COMMAND
009A D21502 JNC ERR
EXAM05
009D CD0903 CALL RGNAM ;OUTPUT REGSTER NAME
TO ADDRESS FELD
00A0 CDFC02 CALL RGLOC ;GET REGSTER SAVE
LOCATON N H & L
00B4 CDFC02 CALL RGLOC ;YES GET REGSTER SAVE
LOCATON N H & L
00B7 73 MOV M, E ;UPDATE REGSTER
CONTENTS EXAM10
00B8 FE11 CP PERO ;WAS LAST CHARACTER A
PEROD ?
00BA CAE901 JZ CLDS ;YES CLEAR DSPLAY AND
TERMNATE COMMAND
00BD FE10 CP COMMA ;WAS LAST CHARACTER. ?
00BF C2E60D JNZ PRRG ;NO JUMP TO PREVOUS
REG.
00C2 CDA802 CALL NXTRG ;YES ADVANCE REG.
PONTER TO NEXT REG.
ANY MORE REGSTER TRUE
EXAM05 ;YES CONTNUE
PROCESSNG WTH NEXT
REGSTER
00C5 DA9D00 JC EXAM05
00C8 C3E901 JMP CLDS ;NO CLEAR DSPLAY AND
TERMNATE COMMAND
*************************************************
FUNCTON RUN -EXECUTE USER PROGRAM
NPUTS ; NONE
OUTPUTS ; NONE
CALLS ; DSPC, RDKBD, CLEAR, ERR, OUTPT
DESTROYS ; A, B, C, D, E, H, L, F/F'S
D-11
RUN
00CB CD0002 CALL DSPC ;DSPLAY USEER PROGRAM
COUNTER
00CE CDE702 CALL RDKBD ;READ FROM KEYBOARD
00D1 FE11 CP PERO ;S CHAR. S PEROD ?
00D3 CAEC0 JZ GO ;YES GO EXECUTE THE
COMMAND
;NO ARG CHARACTER S N A
00D6 32FEFF STA BUFF ;REPLACE CHARACTER N
NPUT BUFFER
00D9 0601 MV B, DOT ;ARG DOT N ADDRESS
FELD
00DB CDD701 CALL CLEAR ;CLEAR DSPLAY
00DE 0600 MV B, ADFLD ;ARG USE ADDRESS FELD
00E0 CD2B02 CALL GTHEX ;GET HEX DGTS
00E3 FE11 CP PERO ;WASLASTCHAR. A PEROD
00E5 C21902 JNZ ERR ;NO-DSPLAY ERROR MSG.
AND TERMNATE COMMAND
00E8 EB ECHG ;PUT HEX VALUE FROM
GTHEX TO H & L
00E9 22F2FF SHLD PSAV ;HEX VALUE S NEW USER
PC
00EC 0600 G10 MV B, NODOT ;YES-ARG-NO DOT N
ADDRESS FELD
00EE CDD701 CALL CLEAR ;CLEAR DSPLAY
00F1 AF XRA A ;ARG-USE-NO ADDRESS
FELD OF DSPLAY
00F2 0600 MV B, NODOT ;ARG-NO DOT N
ADDR. FELD
00F4 21A203 LX H, EXMSG ;GET ADDRESS OF
EXECUTON MESSAGE
N H & L
00F7 CDB702 CALL OUTPT ;DSPLAY EXECUTON
MESSAGE
D-12
00FA C31B03 JMP RSTOR ;RESTORE USER
REG.NCLUDNG PROGRAM
COUNTER i.e.BEGN
EXECUTON OF USER
PROGRAM
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
FUCTON ; STEP-SNGLE STEP(EXECUTE 1 USER
NSTRUCTON)
NPUTS ; NONE
OUTPUTS ; NONE
CALLS ; DSPC, RDKBD, CLEAR, GTHEX, ERR
DESTROYS; A, B, C, D, E, H, L, F/F'S
STEP
00FD CD0002 CALL DSPC ;DSPLAY USER
PROG.COUNTER
0100 CDE702 CALL RDKBD ;READ FROM KEYBOARD
0103 FE11 CP PERO ;WAS CHARACTER A
PEROD?
0105 CAE901 JZ STP20 ;YES GO TO STP20
0108 FE10 CP COMMA ;WAS LAST CHARATER '.'?
010A CA2601 JZ CLD1S ;YES-GO SET TMER
NO-CHARACTER FROM
KEYBOARD WAS NETHER
PEROD NOR COMMA
010D 32FEFF STA BUFF ;REPLACE THE CHARACTER
N THE NPUT BUFFER
0110 0601 MV A, DOT ;ARG-DOT N ADDRESS
FELD
0112 CDD701 CALL CLEAR ;CLEAR DSPLAY
0115 0600 MV B, ADFLD ;ARG-USE ADDRESS FELD
OF DSPLAY
0117 CD2B02 CALL GTHEX ;GET HEX DGT-WERE ANY
DGTS RECEVED ?
FALSE ERR ;NO DSPLAY ERROR MSG.
AND TERMNATE COMMAND
011A D21502 JNC ERR
015B E63F AN 3FH ;CLEAR TWO HGH ORDER
BTS
015D F640 OR 40H ;SET TMER STOP BT
015F DE08 OUT CSR ;STOP TMER
D-13
D-14
011D EB XCHG ;HEX VALUE FROM GTHEX TO HL 0161 F1 POP PSW ;RETREVE PSW
011E 22F2FF SHLDX PSAV ;HEX VALUE N NEW USER PC 0162 22EFFF SHLD PSAV ;SAVE H & L
0121 FE11 CP PERO ;WAS LAST CHAR. FROM GTHEX A 0165 E1 POP H ;GET USER PROGRAM
PEROD ? COUNTER FROM TOP OF
0123 C4190A CNZ STP0 ;NO-GO TO CHECK BREAK THE STACK
0126 3AF1FF STP20 LDA SAV ;GET USER NTERRUPT
MASK
0129 E608 AN 08H ;KEEP NTERRUPT STATUS
012B 32FDFF STA TEMP ;SAVE USER NTERRUPT
STATUS
012E 2AF2FF LHLD PSAV ;GET USER PC
0131 7E MOV A, M ;GET USER NSTRUCTON
0132 FEF3 CP (D) ;D NSTRUCTON ?
0134 C23B01 JNZ STP21 ;NO
0137 AF XRA A ;YES-RESET USER NTR.
STATUS
0138 C34201 STP21 JMP STP22
013B FEFB CP (E) ;E NSTRUCTON ?
013D C24501 JNZ STP23 ;NO
0140 3E08 MV A,08H ;YES SET USER NTR. STATUS
0142 32FDFF STP22 STA TEMP ;SAVE NEW USER NTR
STATUS
0145 3E40 MV A,(TMER SHR8);HGH ORDER BTS OF
TME OR TMODE VALUE
OR'ED WTH MODE
0147 D30D OUT TMH
0149 3EC5 MV A,TMER AND 0FFH;LOW ORDER BTS
OFTMER VAL
014B D30C OUT TMLO
014D 3AFFFF LDA USCSR ;GRT USER MAGE OF WHAT'S
N CSR
0150 F6C0 OR TSTRT ;SET TMER COMMAND BTS
TO START TMER
0152 D308 OUT CSR ;START TMER
0154 C31B03 JMP RSTOR ;RESTORE USER REGSTERS
0157 F5 STP25 PUSH PSW ;BRANCH HERE WHEN TMER
NTERRUPTS AFTER 1 USER NSTR
0158 3AFFFF LDA USCSR ;GET USER MAGE WHAT'S N
SCR
0166 22F2FF SHLD PSAV ;SAVE USER PC
0169 F5 PUSH PSW
016A E1 POP H
016B 22EDFF SHLD PSAV ;SAVE FLP\FLOP & A REG.
016E 210000 LX H, 0H ;CLEAR H & L
0171 39 DAD SP ;GET USER STACK PONTER
0172 22F4FF SHLD SSAV ;SAVE USER STACK
PONTER
0175 21EDFF LX H, BSAV+1 ;SET MONTOR STACK
PONTER
0178 F9 SPHL ;SAVNG REMANNG USER
REG
0179 C5 PUSH B ;SAVE B & C
017A D5 PUSH D ;SAVE D & C
017B 20 RM ;GET USER NTERRUPT
MASK
017C E607 AN 07H ;KEEP MASK BTS
017E 21FDFF LX H, TEMP ;GET USER NTERRUPT
STATUS
0181 B6 ORA M ;OR T NTO MASK
0182 32F1FF STA SAV ;SAVE NTR. STATUS& MASK
0185 3E0E MV A, UNMASK;UNMASK NTERRUPT
FOR MONTOR USE
0187 30 SM
0188 C34B0A JMP SSTEP ;GO GET READY FOR
ANOTHER NSTR.
DSPLAY 01D1 C21502 JNZ ERR ;NO-DSPLAY ERROR MSG.
01A6 2AF6FF LHLD CURAD ;GET CURRENT ADDR. N H & AND TERMNATE COMMAND
L 01D4 C3E901 JMP CLDS ;YES-CLEAR DSPALY AND
01A9 7E MOV A, M ;GET DATA BYTE PONTED TERMNATE COMMAND
TO BY CURRENT ADDRESS
01AA 32F8FF STA CURDT ;STORE DATA BYTE AT
CURRENT DATA
01AD 0601 MV B, DOT ;ARG-DOT N DATA FELD
D-15
***************************************************
FUNCTON : SET-SUBSTTUTE MEMORY
NPUTS : NONE
OUTPUTS : NONE
CALLS : CLEAR, GTHEX, UPADD, UPDDT, ERR
DESTROYS : A, B, C, D, E, H, L, F/F'S
SET
018B 0601 MV B, DOT ;ARG-DOT N ADDR. FELD
018D CDD701 CALL CLEAR ;CLEAR THE DSPALY
0190 0600 MV B, ADFLD ;ARG-USE ADDRESS FELD
OF DSPLAY
0192 CD2B02 CALL GTHEX ;GET HEX DGTS-WERE ANY
DGT RECEVED
FALSE ERR ;NO-DSPLAY ERROR MSG.
AND
0195 D21502 JNC ERR ;TERMNATE COMMAND
0198 EB XCHG ;ASSGN HEX VALUE
RETURNED BY GTHEX TO
CURRENT ADDR.
0199 22F6FF SHLD CURAD
019C CDBA0D SUB05 CALL CHK ;CALL CHK ROUTNE
019F 000000 NOP
01A1 0600 SUB MV B, NODOT ;ARG-NO DOT N ADDR.
FELD
01A3 CD5F03 CALL UPDAD ;UPDATE ADDR.FELD OF
D-16
01AF CD6B03 CALL UPDDT ;UPDATE DATA FELD OF
DSPLAY
01B2 0601 MV B, DTFLD ;ARG-USE DATA FELD
01B4 CD2B02 CALL GTHEX ;GET HEX DGTS-WERE ANY
HEX DGTS RECEVED?
01B7 F5 PUSH PSW ;SAVE LAST CHARACTER
FALSE SUB10 ;NO LEAVE DATA
UNCHANGED
01B8 D2C401 JNC SUB10 ;AT CURRENT ADDRESS
01BB 2AF6FF LHLD CURAD ;YES-GET CURRENT
ADDRESS N H & L
01BE 73 MOV M, E ;STORE NEW DATA AT
CURRENT ADDRESS
MAKE SURE DATA WAS ACTUALLY STORED N CASE
CURRENT ADDRESS N ROM OR S NON-EXSTANT
01BF 7B MOV A, E ;DATA FOR A COMPARSON
01C0 BE CMP M ;WAS DATA STORED
CORRECTLY
01C1 C21502 JNZ ERR ;NO DSPLAY ERROR MSG.
AND TERMNATE COMMAND
01C4 C3C30D SUB10 JMP NRDCR ;NCREMENT
DECREMENT CHECK
01C7 22F6FF SUB20 SHLD CURAD
01CA C3A101 JMP SUB ;RETREVE LAST
CHARACTER
01CF FE11 SUB15 CP PERO ;WAS LAST CHARACTER '.'?
FELD START NTALZATON
01E2 219A03 LX H, BLNKS ;ARG-ADDRESS OF BLANKS AND JUMPS BACK TO THE MAN
FOR DSPLAY COLD START PROCEDURE.
01E5 CDB702 CALL OUTPT ;OUTPUT BLANKS TO DATA CLDST
FELD 01F1 3EC0 MV A, KBNT ;GET CONTROL CHAR.
01E8 C9 RET ;RETURN 01F3 D30500 OUT CNTRL ;NTALZE KEYBOARD/
DSPLAY BLANKNG
01F7 3E00 MV A, CSNT ;NTAL VALUE OF
COMMAND STATUS REG.
01F8 D308 OUT CSR ;NTALZE CSR
01FA 32FFFF STA USCSR ;NTALZE USER CSR VALUE
01FD C32B0E JMP CLD0 ;BACK TO MAN PROCEDURE
D-17
**********************************************
UTLTY ROUTNES
**********************************************
FUNCTON : CLEAR-CLEAR THE DSPLAY
NPUTS : B-DOT FLAG 1 - MEANS DOT N ADDR. FELD OF
DSPLAY
0 - MEANS NO DOT
OUTPUTS : NONE
CALLS : OUTPT
DESTROYS : A, B, C, D, E, H, L, F\F'S
DESCRPTON : CLEAR SENDS BLANK CHARACTERS
TO BOTH THE ADDRESS & DATA
FELD OF THE DSPLAY.F THE
DOT FLAG S SET THEN A DOT WLL
APPEAR AT THE RGHT EDGE OF
THE ADDRESS FELD.
D-18
*******************************************************************
FUNCTON : CLDS-CLEAR DSPLAY AND TERMNATE
COMMAND
NPUTS : NONE
OUTPUTS : NONE
CALLS : CLEAR
DESTROYS : A, B, C, D, E, H, L, F/F'S
DESCRPTON : CLDS S JUMPED TO BY COMMAND
ROUTNES WSHNG TO TERMNATE
NORMALLY. CLDS CLEARS THE
DSPLAY AND BRANCHES TO THE
COMMAND RECOGNSER.
01E9 0600 CLDS MV B, NODOT ;ARG-NO DOT N ADDR.
FELD
01EB CDD701 CALL CLEAR ;CLEAR THE DSPLAY
01EE C36600 JMP COMMAND ;GO GET ANOTHER
COMMAND
CLEAR
01D7 AF XRA A ;ARG-USEADDRESS FELD OF
DSPLAY ARG-FLAG FOR DOT N
ADDR. FELD N B
01D8 219A03 LX H, BLNKS ;ARG-ADDRESS OF BLANKS
FOR DSPLAY
01DB CDB702 CALL OUTPT ;O/P BLANKSTOADDR.FELD
01DE 3E01 MV A, DTFLD ;ARG-USE DATA FELD FOR
DSPLAY
01E0 0600 MV B, NODOT ;ARG-USE NO DOT N DATA
****************************************************
FUNCTON : CLDST -COLD START
NPUTS : NONE
OUTPUTS : NONE
CALLS : NOTHNG
DESTROYS : A
DESCRPTON : CLDST S JUMPED BY THE MAN
COLD START
PROCEDURE,COMPLETES COLD
D-19
***************************************************************
FUNCTON : DSPC-DSPLAY PROGRAM COUNTER
NPUTS : NONE
OUTPUTS : NONE
CALLS : UPDAD,UPDDT
DESTYROYS: A, B, C, D, E, H, L, F\F'S
DESCRPTON : DSPC- DSPLAYS THE USER
PROGRAM COUNTER N ADDRESS
FELD OF THE DSPLAY,WTH A DOT
AT THE RGHT EDGE OF THE
FELD.THE BYTE OF DATA
ADDRESSED BY THE PROGRAM
COUNTER S DSPLAYED N THE
DATA FELD OF DSPLAY
DSPC
0200 2AF2FF LHLD PSAV ;GET USER PROGRAM
COUNTER
0203 22F6FF SHLD CURAD ;MAKE T THE CURRENT
ADDRESS
0206 7E MOV A, M ;GET THE NSTRUCTON
AT THAT ADDRESS
0207 32F8FF STA CURDT ;MAKE T THE CURRENT
DATA
020A 0601 MV B, DOT ;ARG-DOT N ADDRESS
FELD
020C CD5F03 CALL UPDAD ;UPDATE ADDRESS FELD OF
DSPLAY
020F 0600 MV B, NODOT ;ARG-NO DOT N DATA FELD
0211 CD6B03 CALL UPDDT ;UPDATE DATA FELD OF
DSPLAY
D-20
*********************************************
FUNCTON : ERR-DSPLAY ERROR MASSEGE
NPUTS : NONE
OUTPUTS : NONE
CALL : OUTPT
DESTROYS : A, B, C, D, E, H, L, F\F'S
DESCRPTON : ERR S JUMPED TO BY COMMAND
ROUTNES WSHNG TO TERMNATE
BECAUSE OF AN ERROR ERR
OUTPUTS AN ERROR MESSEGS TO
THE DSPLAY AND BRANCHES TO
THE COMMAND RECOGNSER.
ERR
0215 AF XRA A ;ARG-USE ADDRESS FELD
0216 0600 MV B, NODOT ;ARG-NO DOT N ADDRESS
FELD
0218 219E03 LX H, ERMSG ;ARG-ADDRESS OF ERROR
MESSAGE
021B CDB702 CALL OUTPT ;OUTPUT ERROR MESSAGE
TO ADDRESS FELD
021E 3E01 MV A, DTFLD ;ARG-USE DATA FELD
0220 0600 MV B, NODOT ;ARG-NO DOT N DATA FELD
0222 219A03 LX H, BLNKS ;ARG-ADDRESS OF BLANKS
FOR
0225 CDB702 CALL OUTPT ;OUTPUT BLANKS TO DATA
FOR DSPLAY
0228 C36600 JMP CMMND ;GO GET A NEW COMMAND
0214 C9 RET
D-21
********************************************
FUNCTON : GTHEX-GET HEX DGTS
NPUTS : B - DSPLAY FLAG -0 MEANS USE ADDRESS
FELD OF DSPLAY
1 - MEANS USE DATA FELD OF DSPLAY
OUTPUTS : A - LAST CHARACTER READ FROM KEYBOARD
DE - HEX DGTS FROM KEYBOARD EVALUATED
MODULO 2**16
CARRY - SET F AT LEAST ONE VALD HEX
DGT WAS READ RESET OTHERWSE
CALLS : RDKBD, NSDG, HXDSP, OUTPT
DESTROYS: A, B, C, D, E, H, L, F\F'S
DESCRPTON : GTHEX ACCEPTS A STRNG OF HEX
DGTS FROM THE KEYBOARD,
DSPLAYS THEM AS THEY ARE
RECEVED AND RETURNS THER
VALUE AS A 16 BT NTEGER. F
MORE TAHN 4 HEX DGTS ARE
RECEVED ONLY THE LAST 2 HEX
DGTS ARE DSPLAYED N THE
DATA OF THE DSPLAY. N ETHER
CASE,A DOT WLL BE DSPLAYED AT
THE RGHTMOST EDGE OF THE
FELD. A CHARACTER WHCH S
NOT A HEX DGT TERMNATES
THE STRNG AND S RETURNED AS
AN OUTPUT OF THE FUCTON. F
THE TERMNATORS S NOT A
PEROD OR A COMMA THEN ANY
HEX DGTS WHCH MAY HAVE
RECEVED ARE CONSDERED TO BE
NVALD. THE FUNCTON RETURNS
A FLAG NDCATNG WHETHER
OR NOT ANY VALD HEX DGTS
WERE RECEVED.
022B 0E00 GTHEX MV C, 00 ;RESET HEX DGT
FLAG
022D C5 PUSH B ;SAVE DSPLAY AND HEX
DGT FLAGS
022E 110000 LX D, 0 ;SET HEX VALUE TO ZERO
0231 D5 PUSH D ;SAVE HEX VALUE
0232 CDE702 GTH05 CALL RDKBD ;READ KEYBOARD
D-22
0235 FE10 CP 10H ;S CHAR. A HEX DGT?
0237 D25502 JNC GTH20 ;NO-GO CHECK FOR
TERMNATOR.
YES-ARG-NEW HEX DGT S
N A
023A D1 POP D ;ARG-RETREVE HEX VALUE
023B CD9F02 CALL NSDG ;NSERT NEW DGT N HEX
VALUE
023E C1 POP B ;RETREVE DSPLAY FLAG
023F 0301 MV C, 1 ;SET HEX DGT FLAG i.e.
HEX DGT HAS BEEN READ
0241 C5 PUSH B ;SAVE DSPLAY AND HEX
DGT FLAGS
0242 D5 PUSH D ;SAVE HEX VALUE
0243 78 MOV A, B ;TEST DSPLAY FLAG
0244 0F RRC ;SHOULD ADDRESS FELD
FELD OF DSPLAY BE USED
0245 D24902 JNC GTH10 ;YES-USE HEX VALUE AS S
NO-ONLYLOWORDER BYTE
OF HEX VALUE SHOULD BE
USED FOR DATA FELD OF
DSPLAY
0248 53 MOV D, E ;PUT LOW ORDER BYTE OF
HEX VALUE N D
ARG-HEX VALUE TO BE
EXPANDED N D & E
0249 CD6C02 GTH10 CALL HXDSP ;EXPAND HEX VALUE
FOR DSPLAY ARG-
ADDRESS OF EXPANDED
HEX VALUE N H & L
024C 78 MOV A, B ;ARG-PUT DSPLAY FLAG N
A
024D 0601 MV B, DOT ;ARG-DOT N APPROPRATE
FELD
024F CDB702 CALL OUTPT ;OUTPUT HEX VALUETO
DSPLAY
0252 C33202 JMP GTH05 ;GOGETNEXT CHARACTER
;LAST CHAR WAS NOT A HEX
DGT
0255 D1 GTH20 POP D ;RETREVE A HEX VALUE
0256 C1 POP B ;RETREVE HEX DGT FLAG
N C
0257 C33202 JMP VALCH ;VALDTY CHECK
D-23
D-24
025A 0000 NOP ;YES-READY TO RETURN 026D 0F RRC ;CONVERT 4 HGH ORDER
025C FE11 CP PERO ;NO-WAS LAST CHAR. '.'? BTS TO A SNGLE
025E CA6702 JZ GTH25 ;YES READY TO RETURN CHARACTER
`NO-NVALD TERMNATOR- 026E 0F RRC
GNORE ANY HEX DGT 026F 0F RRC
READ 0270 0F RRC
0261 110000 LX D, 0 ;SET HEX VALUE TO ZERO 0271 E60F AN 0FH
0264 C3F702 JMP RETF ;RETURN FALSE 0273 21F9FF LX H, BUFF ;GET ADDR.OF OUTPUT
0267 47 GTH25 MOV B, A ;SAVE LAST CHARACTER BUFFER
0268 79 MOV A, C ;FHFT HEX DGT FLAG TO 0276 77 MOV M, A ;STORE CHAR.N O/P
0269 0F RRC ;CARRY BT BUFFER
026A 78 MOV A, B ;RESTORE LAST 0277 7A MOV A, D ;GET FRST DATA BYTE AND
CHARACTER CONVERT 4 LOW ORDER
026B C9 RET ;RETTURN BTS TO A SNGLE
CHARACTER.
***************************************************
FUNCTON : HXDSP-EXPAND HEX DGTS FOR DSPLAY
NPUTS : DE-4 HEX DGTS
OUTPUTS : HL-ADDRESS OF OUTPUT BUFFER
CALLS : NOTHNG
DESTROYS : A, H, L, F/F'S
DESCRPTON : HXDSP EXPANDS EACH NPUT BYTE
TO 2 BYTE N A FORM SUTABLE
FOR DSPLAY BY THE OUTPUT
ROUTNES.EACH HEX DGT S
PLACED N THE LOW ORDER 4 BTS
OF A BYTE WHOSE HGH ORDER 4
BTS ARE SET TO ZERO. THE
RESULTNG BYTE S STORED
N THE OUTPUT BUFFER THE
FUNCTON RETURNS THE
ADDRESS OF THE OUTPUT BUFFER.
HXDSP
026C 7A MOV A, D ;GET FRST DATA BYTE
0278 E60F AN 0FH
027A 23 NX H ;NEXT BUFFER POSTON
027B 77 MOV M, A ;STORE CHAR.N BUFFER
027C 7B MOV A, E ;GET SECOND DATA BYTE
027D 0F RRC ;CONVERT 4 HGH ORDER
027E 0F RRC ;BTS TO A SNGLE CHAR.
027F 0F RRC
0280 0F RRC
0281 E60F AN 0FH
0283 23 NX H ;NEXT BUFFER POSTON
0284 77 MOV M, A ;STORE CHAR. N BUFFER
0285 7B MOV A, E ;GET SECOND DATA BYTE &
;CONVERT LOW ORDER 4
BT
0286 E60F AN 0FH ;TO A SNGLE CHARACTER
0288 23 NX H ;NEXT BUFFER POSTON
0289 77 MOV M, A ;STORE CHAR. N BUFFER
028A 21F9FF LX H, OBUFF ;RETURN ADDRESS OF
OUTPUT
028D C9 RET ;BUFFER N H & L
D-25
028E DB05 NBYTE N, STATUS ;GET 8279 FFO
0290 E607 AN,07 ;STATUS & KEEP
0292 FE00 CP,00 ;COUNT
0294 CA8E02 JZ,NBYTE ;F NO ENTRY WAT
0297 3E40 MV A,40H ;F ENTRY OF
KEYBOARD N
0299 D305 OUT 05H ;FFO
029B DB04 N,DATA ;THEN GET BYTE N
ACC.
029D C9 RET
029E FF ;BLANK
****************************************************************
FUNCTON : NSDG-NSERT HEX DGT
NPUTS : A - HEX DGT TO BE NSERTED
DE - HEX VALUE
OUTPUTS : DE - HEX VALUE WTH DGT NSERTED
CALLS : NOTHNG
DESTROYS : A, F/F'S
DESCRPTON : NSDG SHFTS THE CONTENTS OF D
& E. LEFT 4 BTS (1 HEX DGT) &
NSERTS THE HEX DGT NA. THE
LOW ORDER DGT POSTON OF
THE RESULT. A S ASSUMED TO
CONTAN A SNGLE HEX DGT N
THE LOW ORDER 4 BTS AND
ZEROS N THE HGH ORDER
4 BTS.
*****************************************************************
029F EB XCHG ;PUT D & E N H & L
02A0 29 DAD H
02A1 29 DAD H
02A2 29 DAD H
02A3 29 DAD H
02A4 85 ADD L ;NSERT LOW ORDER DGT
02A5 6F MOV L, A
02A6 EB XCHG ;PUT H & L N D & E
02A7 C9 RET
D-26
********************************************************
FUNCTON : NXTRG - ADVANCE REGSTER PONTER TO
NEXT REG.
NPUTS : NONE
OUTPUTS : CARRY - 1 F PONTER S AADVANNCE
SUCCESSFULLY
0 OTHERWSE
CALLS : NOTHNG
DESTROYS : A, F/F'S
DESCRPTON : F THE REG.PONTER PONTS TO
THE LAST REG.
N THE EXAMNE REG. SEQUENCE,
THE PONTER
S NOT CHANGED AND THE
FUNCTON RETURNS FALSE.
F THE REG. PONTER DOES NOT
PONT TO THE LAST
REG. THEN THE PONTER S
ADVANCED TO THE NEXT
REG. N THE SEQUENCE & THE
FUNCTON RETURNS TRUE.
NXTRG
02A8 3AFDFF LDA RDPTR ;GET REG. PONTER
02AB FE0C CP NUMRG-1 ;DOES PONTER PONT TO
LAST REGSTER
02AD D2F702 JNC RETF ;YES-UNABLE TO ADVANCE
PONTER RETURN ELSE
02B0 3C NR A ;NO ADVANCE REG.PONTER
02B1 32FDFF STA RGPTR ;SAVE REGSTER PONTER
02B4 C3FA02 JMP RETT ;RETURN TRUE
D-28
02C4 3E94 MV A, DDSP ;CONTROL CHARACTER FOR
**************************************************** O/P TO DATA FELD OF
FUNCTON : OUTPUT - O/P CHARACTER TO DSPLAY DSPLAY
NPUTS : A - DSPLAY FLAG 0=USE ADDRESS FELD 02CC6 D30500 OUT10 OUT CNTRL
1 = USE DATA FELD 02C9 7E OUT15 MOV A, M ;GET O/P CHARACTER
B - DOT FLAG 1 = O/P DOT AT RGHT EDGE OF 02CA EB XCHG ;SAVE O/P CHARACTER
FELD ADDRESS N D & E
0 = NO DOT 02CB 217803 LX H, DSPTB ;GET DSPLAY FORMAT
HL - ADDRESS OF CHARACTER TO BE OUTPUT TABLE ADDRESS
CALLS : NOTHNG 02CE 85 ADD L ;USE O/P CHARACTER AS A
DESTROYS : A, B, C, D, E, H, L, F/F'S PONTER TO DSPLAY
DESCRPTON : OUTPUT SENDS CHARCTERS TO FORMAT TABLE
THE DSPLAY. THE ADDRESS 02CF 6F MOV L, A
OF THE CHARACTER S RECEVED 02D0 7E MOV A, M ;GETDSPLAYFORMAT
AS AN ARGUMENT ETHER CHARACTER FROM TABLE
2 CHARACTERS ARE SENT TO THE 02D1 61 MOV H, C ;TEST COUNTER WTHOUT
DATA FELD,OR 4 CHARACTERS CHANGNG T
ARE SENT TO THE ADDRESS FELD 02D2 25 DCR H ;S THS THE LAST
? DEPANDNG ON THE DSPLAY CHARACTER
FLAG ARGUMENT THE DOT FLAG 02D3 C2DC02 JNZ OUT20 ;NO-GO OUTPUT CHAR.
ARGUMENT DETERMNES AS S
WHETHER OR NOT A DOT (DECMAL 02D6 05 DCR B ;YES-S DOT FLAG SET?
PONT) WLL BE SENT ALONGWTH 02D7 C2DC02 JNZ OUT20 ;NO-GO OUTPUT CHAR.
THE LAST OUTPUT CHARACTER. AS S
OUTPT 02DA F601 OR DTMSK ;YES-ORNMASKTO DSPLAY
FELD 02DD D30400 OUT DSPLY ;SEND CHARACTER TO
02BB 0E04 MV C, 4 ;NO-COUNT FOR ADDR. DSPLAY
FELD 02E0 EB XCHG ;RETREVE O/P
02BD 3E90 MV A, ADSP ;CONTROL CHARCTER FOR CHAR.ADDRESS
OUTPUT TO ADDRESS FELD 02E1 23 NX H ;NEXT O/P CHARACTER
OF DSPLAY 02E2 0D DCR C ;ANY MORE O/P CHARACTER
02BF C3C602 JMP OUT10 02E3 C2C902 JNZ OUT15 ;YES-GO PROCESS
02C2 0E02 OUT05 MV C, 2;COUNT FOR DATA FELD ANOTHER CHARACTER
02E6 C9 RET ;NO-RETURN
D-27
02B7 0F RRC ;USE DATA FELD?
02B8 DAC202 JC OUT05;YES-GO SET UP TO USE DATA
02DC 00 OUT20 NOP
DOT WTH LAST CHARACTER
D-29
****************************************************
FUNCTON : RDKBD-READ KEYBOARD
NPUTS : NONE
OUTPUTS : A - CHARCATER READ FROM KEYBOARD
CALLS : NOTHNG
DESTROYS : A, H, L, F/F'S
DESCRPTON : RDKBD DETERMNES WHETHER OR
NOT THERE S A CHARACTER N
THE NPUFT BUFFER F NOT THE
FUNCTON ENABLES NTERRUPTS
AND LOOPS UNTL THE NPUT
NTERRUPT ROUTNE STORES A
CHARACTER N THE BUFFER.WHEN
THE BUFFER CONTANS A
CHARACTER,THE FUNCTON FLAGS
THE BUFFER AS EMPTY AND
RETURNS THE CHARACTER AS
OUTPUT.
RDKBD
02E7 21FFFF LX H,BUFF
02EA 7E MOV A, M
02EB B7 ORA A ;F HGHER ORDER BT
02EC F2F302 JP RDKO ;ONE THEN
02EF F3 D ;BUFFER EMPTY,DSABLE
NT.
02F0 CD8E02 CALL NBYT ;NPUT BYTE
02F3 3680 RDKO MV M, EMPTY ;SET B
02F5 FB E
02F6 C9 RET
*******************************************************
FUNCTON : RETF-RETURN FALSE
NPUTS : NONE
OUTPUTS : CARRY =0 FALSE
CALLS : NOTHNG
DESTROYS : CARRY
DESCRPTON : RETF S JUMPED TO BY FUNCTONS
WSHNG TO RETURN FALSE.RETF
RESETS CARRY TO 0 AND RETURNS
TO THE CALLER OF THE ROUTNE
NVOKNG RETF.
RETF
02F7 37 STC ;SET CARRY TRUE
D-30
02F8 3F CMC ;COMPLEMENT CARRY TO MAKE
02F9 RET ;T FALSE
*******************************************************
FUNCTON : RETT-RETURN TRUE
NPUTS : NONE
OUTPUTS : CARRY=1 TRUE
CALLS : NOTHNG
DESTROYS : CARRY
DESCRPTON : RETT S JUMPED TP BY ROUTNES
WSHNG TO RETURN TRUE. RETT
SETS CARRY TO 1 AND RETURNS
TO THE CALLER OF THE ROUTNE
NVOKNG RETT.
RETT
02FA 37 STC ;SET CARRY TRUE
02FB C9 RET
********************************************************
FUNCTON : RGLOC-GET REGSTER SAVE LOCATON
NPUTS : NONE
OUTPUTS : HL-REGSTER SAVE LOCATON
CALLS : NOTHNG
DESTROYS : B, C, H, L, F/F'S
DESCRPTON : RGLOC RETURNS THE SAVE
LOCATON OF THE REG.
NDCATED BY THE CURRENT
REGSTER PONTER VALUE.
RGLOC
02FC 2AFDFF LHLD RGPTR ;GET REG. PONTER
02FF 2600 MV H, 0 ;N H AND L
0301 01ED03 LX B, RGTBL ;GET REG.SAVE
LOCATON TABLE
ADDRESS
0304 09 DAD B ;PONTER NDEXES
TABLE
0305 6E MOV L, M ;GET LOW ORDER
BYTE OF REGSTER
SAVE LOCATON
0306 26FF MV H,(RAMST SHR B) ;GET HGH
ORDER BYTE OF
0308 C9 RET ;REGSTER SAVE
LOCATON
D-31
***********************************************************
FUNCTON : RGNAM-DSPLAY REGSTER NAME
NPUTS : NONE
OUTPUTS : NONE
CALLS : OUTPT
DESTROYS : A, B, C, D, E, H, L, F/F'S
DESCRPTON : RGNAM DSPLAYS N THE ADDRESS
FELD OF THE DSPLAY, THE
REGSTER NAME CORRESPONDNG
TO THE CURRENT REGSTER
PONTER VALUE.
RGNAM
0309 2AFDFF LHLD RGPTR ;GET REGSTE PONTER
030C 2600 MV H, 0
030E 29 DAD H ;MULTPLY PONTERVALUE BY 4
030F 29 DAD H ;REG. NAME TABLE HAS 4 BYTE
ENTRES)
0310 01B903 LX B, NMTABL ;GET ADDRESS OF START OF
REGSTER NAME TABLE
0313 09 DAD B ;ARG-ADD TABLE ADDRESS TO
PONTER-RESULT S ADDRESS OF
APPROPRATE REG.NAME N H & L
0314 AF XRA A ;ARG-USE ADDRESS FELD OF
DSPLAY
0315 0600 MV B, NODOT ;ARG-NO DOT N ADDR.FELD
0317 CDB702 CALL OUTPT ;OUTPUT REGSTER NAME TO
031A C9 RET ADDRES FELD
D-32
********************************************************
FUNCTON : RSTOR-RESTORE USER REGSTER
NPUTS : NONE
OUTPUTS : NONE
CALLS : NOTHNG
DESTROYS : A, B, C, D, E, H, L, F/F'S
DESCRPTON : RSTOR RESTORES SALL CPU
REGSTERS,FLP/FLOPS,
NTERUPT STATUS, NTERRUPT,
STACK PONTER AND PROGRAM
COUNTER FROM THER
RESPACTVE SAVE LOCATON N
MEMORY,BY RESTORNG THE
PROGRAM COUNTER,THE
ROUTNE EFFECTVELY TRANSFERS
CONTROL TO THE ADDRESS N THE
PROGRAM COUNTER SAVE
LOCATON.THE TMNG OF THS
ROUTNE S CRTCAL TO THE
CORRECT OPERATON OF THE
SNGLE STEP ROUTNE.
F ANY MODFCATON CHANGES
THE NUMBER OF CPU STATUS
NEEDED TO EXECUTE THE
ROUTNE THEN THE TMER VALUE
MUST BE ADJUSTED BYTHE SAME
NUMBER.THS S ALSO ENTRY
PONT FOR THE TTY MONTOR
TO RESTORE THE REGSTER.
RSTOR
031B 3AF1FF LDA SAV ;GET USER NTERRUPT
MASK
031E F618 OR 18H ;ENABLE SETTNG OF
NTERRUPT MASK AND
RESET RST7.5 FLP FLOP
D-33
D-34
0320 30 SM ;RESTORE USER NTERRUPT MASK
RESTORE USER NTERUPT STATUS
0321 3AF1FF LDA SAV ;GET USER NTERRUPT MASK
0324 E608 AN 08H ;SHOULD USER NTERRUPT BE
ENABLED
0326 CA2D03 JZ RST05 ;NO-LEAVE NTERRUPT DSABLED
0329 FB E ;YES-ENABLE NTERRUPT FOR
USER PROGRAM
032A C33103 JMP RSR10
SETRG
CONVERTED TO THE
CORROSPONDNG
REGSTER PONTER
VALUE, THE PONTER S
SAVED, AND THE FUNCTON
RETURNS
'TRUE'.OTHERWSE,THE
FUNCTON RETURNS'FALSE'
032D 37 RSR05 STC ;DUMMY NSTRUCTON-WHEN
SNGLE STEP ROUTNE S BENG
USED,THE
032E D23103 LNC RSR10 ;TMER S RUNNNG AND EXECUTE
TME FOR THS ROUTNE MUST NOT
VARY
0331 21E9FF RSR10 LX H, MNSTK ;SET MONTOR STACK
PONTER TO START OF STACK
0334 F9 SPHL ;WHCH S ALSO END OF REGSTER
SAVE AREA
0335 D1 POP D ;RESTORE REGSTERS
0336 C1 POP B
0337 F1 POP PSW
0338 2AF4FF LHLD SSAV ;RESTORE USER STACK PONTER
033B F9 SPHL
033C 2AF2FF LHLD PSAV
033F E5 PUSH H ;PUT USER PROGRAM COUNTER ON
STACK
0340 2AEFFF LHLD LSAV ;RESTORE H & L REGSTERS
0343 C9 RET ;JUMP TO USER PROGRAM
COUNTER
********************************************************
FUNCTON : SETRG-SET REGSTER PONTER
NPUTS : NONE
OUTPUTS : CARRY-SET F CHARACTER FROM KEYBOARD
S A REGSTER DESGNATOR RESET
OTHERWSE.
CALLS : RDKBD
DESTROYS : A, B, C, H, L, F/F'S
DESCRPTON :SETRG - READS A CHARACTER FROM THE
KEYBOARD F THE CHARACTER S A
REGSTER DESGNATOR, T S
0344 CDE702 CALL RDKBD ;READ FROM KEYBOARD
0347 FE11 CP 10H ;S CHARACTER A DGT?
0349 D2F702 JNC RETF ;NO-RETURN FALSE-
CHARACTER S NOT
A REGSTER DESGNATOR
034C D603 SU 3 ;YES-TRY TO CONVERT
REGSTER DESGNATOR TO
NDEX NTO REGSTER
PONTER TABLE WAS
CONVERSON SUCCESSFU?
034E DAF702 JC RETF ;NO-RETURN FALSE
0351 4F MOV C, A ;NDEX TO B & C
0352 0600 MV B, 0
0354 21AC03 LXH, RGPTB ;GET ADDRESS OF
REGSTER PONTER TABLE
0357 09 DAD B ;NDEX PONTS NTO TABLE
0358 7E MOV A, M ;GET REGSTER PONTER
FROM TABLE
0359 32FDFF STA RGPTR ;SAVE REGSTER PONTER
035C C3FA02 JMP RETT ;RETURN TRUE
********************************************************
FUNCTON : MODAD-UPDATE ADDRESS FELD OF
DSPLAY
NPUTS : B - DOTFLAG - 1 MEANS PUT DOT AT
RGHTEDGEOF FELD
OUTPUTS : NONE
CALLS : HXDSP,OUTPT
DESTROYS : A, B, C, D, E, H, L, F/F'S
DESCRPTON : UPDAD UPDATES THE ADDRESS
FELD OF THE DSPLAY USNG THE
CURRENT ADDRESS
OF THE DSPLAY 038E n 8C
USNG THE CURRENT DATA BYTE 038F U EA
UPDDT: 0391 h 8E
036B 3AF8FF LDA CURDT ;GET CURRENT DATA 0391 G DA
036E 57 MOV D, A ;ARG-PUT CURRENT DATA N D 0392 J E0
036F CD6C02 CALL HXDSP ;EXPAND CURRENT DATA FOR 0393 y E6
DSPLAY. ARG-ADDRESS OF 0394 O CC
EXPANDED DATA S N H & L. 0395 3E46 4(19)
0372 3E01 MV A, DTFLD ;ARG-USE DATA FELD OF DSPLAY 0397 01FF
ARG-DOT FLAG S N B 0399 01FF
0374 CDB702 CALL OUTPT ;OUTPUT CURRENT DATA TO DATA
FELD
0377 C9 RET
0378 00 FA
D-35 D-36
MODAD 0379 01 A0
035F 2AF6FF LHLD CURAD ;GET CURRENT ADDRESS 037A 02 7C
0362 EB XCHG ;ARG-PUT CURRENT N D & E 037B 03 F4
0363 CD6C02 CALL HXDSP ;EXPAND CURRENT ADDRESS FOR 037C 04 A6
DSPALY. ARG-ADDRESS OF 037D 05 D6
EXPANDED ADDRESS S N H & L 037E 06 DE
0366 AF XRA A ;ARG-USE ADDRESS FELD OF 037F 07 B0
DSPLAY 0380 08 FE
0367 CDB702 CALL OUTPT ;OUTPUT CURRENT ADDRESS TO 0381 09 B6
ADDRESS FELD 0382 0A BE
036A C9 RET 0383 0B CE
0384 0C 5A
********************************************************
FUNCTON : MODDT - UPDATE DATA FELD OF DSPLAY
NPUTS : B - DOT FLAG - 1 MEANS PUT DOT AT RGHT OF
FELD
0 MEANS NO DOT
OUTPUTS : NONE
CALLS : HXDSP,OUTDT
DESTROYS : A, B, C, D, E, H, L, F/F, S
DESCRPTON : UPDDT UPDATES THE DATA FELD
0385 0D EC
0386 0E 5E
0387 0F 1E
0388 H AE
0389 L 4A
038A P 3E
038B A0
038Cr 0C
038D BLANK 00
D-37
D-38
MESSAGES FOR OUTPUT TO DSPLAY 03B0 0C DB 12 :PCL
039A 15 BLANKS DB BLANK, BLANK, BLANK, BLANK 03B1 07 DB 7 :H
;FOR ADDRESS OR DATA FELD. 03B2 08 DB 8 :L
039B 15 03B3 00 DB 0 :A
039C 15 03B4 01 DB 1 :B
039D 15 03B5 02 DB 2 :C
039E 15 ERMSG DB BLANK, LETRE, LETRR, LETRR 03B6 03 DB 3 :D
;ERROR MESSAGE FOR ADDRESS 03B7 04 DB 4 :E
FELD 03B8 05 DB 5 :FLAGS
039F 0E
03A0 14 ********************************************************
03A1 14 EXMSG DB LETRE, BLANK, BLANK, BLANK NMTBL : REGSTER NAME TABLE
;EXECUTON MESSAGE : NAMES OF REGSTER N DSPLAY FORMAT
03A2 0E 03B9 15 DB BLANK, BLANK, BLANK, LETRA
03A3 15 ;A REGSTER
03A4 15 03BA 15
03A5 15 03BB 15
03A6 0F SGNAD DB F r E 03BC 0A
;SGN ON MESSAGE 03BD 15 DB BLANK, BLANK, BLANK, LETRB
(ADDR. FELD) ;B REGSTER
03A7 14 03BE 15
03A8 13 03BF 15
03A9 0E 03C0 0B
03AA 16 SGNDT DB n d 03C1 15 DB BLANK, BLANK, BLANK, LETRC
;SGN ON MESSAGE(DATA FELD) ;C REGSTER
03C2 15
********************************************************
RGPTB REGSTER PONTER TABLE
:THE ENTRES N THS TABLE ARE N THE SAME
ORDER AS
THE REGSTER DESGNATOR KEYS ON THE
KEYBOARD EACH
ENTRY CONTANS THE REGSTER PONTER VALUE
WHCH CORROSPONDS TO THE REG.
DESGNATOR. REGSTER PONTER VALUES ARE
USED TO PONT NTO THE REGSTER NAME TABLE
(NMTBL) AND REGSTER SAVE LOCATON TABLE
(RGTBL).
03AC 06 DB 6 :NTERRUPT MASK
03AD 09 DB 9 :SPH
03AE 0A DB 10 :SPL
03AF 0B DB 11 :PCH
03C3 15
03C4 0C
03C5 15 DB BLANK, BLANK, BLANK, LETRD
;D REGSTER
03C6 15
03C7 15
03C8 0D
03C9 15 DB BLANK, BLANK, BLANK, LETRE
;E REGSTER
03CA 15
03CB 15
03CC 0E
03CD 15 DB BLANK, BLANK, BLANK, LETRF
;F REGSTER
03CE 15
03CF 15
03D0 0F
D-39
D-40
03D1 15 DB BLANK, BLANK, BLANK, LETR
;NTERRUPT MASK *************************************************
03D2 15 REGSTER SAVE LOCATON TABLE
03D3 15 ADDRESSES OF SAVE LOCATONS OF REGSTERS N THE
03D4 13 ORDER N WHCH THE REGSTERS ARE DSPLAYED BY
03D5 15 DB BLANK, BLANK, BLANK, LETRH THE EXAMNE COMMAND
;H REGSTER
03D6 15 RGTBL
03D7 15 03ED EE DB ASAV AND OFFH ;A REGSTER
03D8 10 03EE EC DB BSAV AND OFFH ;B REGSTER
03D9 15 DB BLAMK, BLANK, BLANK, LETRL 03EF EB DB CSAV AND OFFH ;C REGSTER
;L REGSTER 03F0 EA DB DSAV AND OFFH ;D REGSTER
03DA 15 03F1 E9 DB ESAV AND OFFH ;E REGSTER
03DB 15 03F2 ED DB FSAV AND OFFH ;FLAGS
03DC 11 03F3 F1 DB SAV AND OFFH ;NTERRUPT MASK
03DD 15 DB BLANK, LETRS, LETRP, LETRH 03F4 F0 DB HSAV AND OFFH ;H REGSTER
;STACK PONTER HGH ORDER 03F5 EF DB LSAV AND OFFH ;L REGSTER
BYTE 03F6 F5 DB SPHSV AND OFFH ;STACK PONTER
03DE 05 HGH ORDER BYTE
03DF 12 03F7 F4 DB SPLSV AND OFFH ;STACK PONTER
03E0 10 LOW ORDER BYTE
03E1 15 DB BLANK, LETRS, LETRP, LETRL 03F8 F3 DB PCHSV AND OFFH ;PROGRAM
;STACK PONTER LOW ORDER BYTE COUNTER HGH
03E2 05 ORDER BYTE
03E3 12 03F9 F2 DB OCKSV AND FFG ;PROGRAM
03E4 11 COUNTER LOW
03E5 15 DB BLANK, LETRP, LETRC, LETRH ORDER BYTE
;PROGRAM COUNTER HGH BYTE 000D NUMRG EQU ($ - RGTBL) ;/REGSTER SAVE
03E6 12 TABLE LOCATON NUMBER
03E7 0C OF ENTRES.
03E8 10
03E9 15 DB BLANK, LETRP, LETRC, LETRL
;PROGRAM COUNTER LOW BYTE
03EA 12
03EB 0C
03EC 11
D-41
*********************************************
T T Y
PRNT SGNON MESSAGE
*********************************************
03FA 218C07 SGNON LXH STRNG
D 4E S1 MOVC, M
E AF XRAA
F B1 ORAC
0400 C8 RZ
1 CDC405 CALLC OUT
4 23 NX H
0405 C3FD03 JUMP S1
*************************************************************
COMMAND RECOGNZNG ROUTNE
*************************************************************
FUNCTON : GETCM
NPUTS : NONE
OUTPUTS : NONE
CALLS : GETCH, ECHO, ERROR
DESTROYS : A, B, C, H, L, F/F'S
DESCRPTON : GETCM RECEVES AN NPUT
CHARATER FROM THE USER
AND USER AND ATTEMPTS TO
LOCATE THS CHARATER N TS
COMMAND CHARATER TABLE. F
SUCCESSFUL,THE ROUTNE
CORROSPONDNG TO THS S
SELECTED FROM A TABLE OF
COMMAND ROUTNE ADDRESSES,
AND CONTROL S TRANSFERED TO
THS ROUTNE. F THE CHARATER
DOES NOT MATCH ANY
ENTRES,CONTROL S PASSED TO
THE ERROR HANDLER.
GETCM
0408 21E9FF LX H, MNSTK ;ALWAYS WAMT TO RESET
STACK PTR TO MONTOR
040B F9 SPHL ;STARTNG VALUE SO
ROUTNE NEED NOT CLEAN
UP
D-42
040C 0E2E MV C,'.' ;PROMPT CHARCHTER TO C
040E CDF805 CALL ECHO ;SEND PROMPT CHARATER
TO USER TERMNAL
0411 C31404 JMP GTC03 ;WANT TO LEAVE ROOM FOR
RST BRANCH
0414 CD1F06 GTC03 CALL GETCH ;GET COMMAND
CHARATER TO A
0417 CDF805 CALL ECHO ;ECHO CHARCTER TO USER
041A 79 MOV A, C ;PUT COMMAND CHARCTER
NTO ACC.
041B 010600 LX B, NCMDS ;C CONTANS LOOP AND
NDEXCOUNT
041E 21AE07 LX H, CTAB ;HL PONTS NTO COMMAND
TABLE
0421 BE GTC05 CMP M ;COMPARE TABLE ENTRY
AND CHARATER
0422 CA2D04 JZ GTC10 ;BRANCH F EQUAL
COMMAND RECOGNZED
0425 23 NX H ;ELSE,NCREMENT TABLE
PONTER
0426 0D DCR C ;DECREMENT LOOP COUNT
0427 C22104 JNZ GTC05 ;BRANCH F NOT AT TABLE
END
042A C31106 JMP ERROR ;ELSE COMMAND
CHARACTER S LLEGAL
042D 21A007 GTC10 LX H, CADR ;F GOOD COMMAND. LOAD
ADDRESS OR TABLE OF
COMMAND ROUTNE
ADDRESSES
0430 09 DAD B ;ADD WHAT S LEFT OF
LOOP COUNT
0431 09 DAD B ;ADD AGAN -EACH ENTRY N
CADR S 2 BYTES LONG
0432 7E MOV A, M ;GET LSP OF ADDRESS OF
TABLE ENTRY TO A
0433 23 NX H ;PONT TO NEXT BYTE N
TABLE
0434 66 MOV H, M ;GET MSP OF ADDRESS OF
TABLE ENTRY TO H
0449 0E20 MV C,'.'
044B CDF805 CALL ECHO ;USE BLANK AS SEPARATOR
044E 7E MOV A, M ;GET CONTENTS OF NEXT
MEMORY LOC.
D-43
D-44
0435 6F MOV L, A ;PUT LSP OF ADDRESS OF 044F CDC706 CALL NMOUT ;DSPLAY CONTENTS
TABLE ENTRY MTO L 0452 CDA006 CALL HLO ;SEE F ADDRESS OF
0436 E9 PCHL ;NEXT NSTRUCTON COMES DSPLAY LOC.
FROM COMMAND ROUTNE S GREATER THAN
OR EQUAL TO
***************************************************************
COMMAND MPLEMENTNG ROUTNES
***************************************************************
FUNCTON : DCMD
NPUTS : NONE
OUTPUTS : NONE
CALLS : ECHO, NMOUT, HLO, GETCM,CROUT, GETNM
DESTROYS : A, B, C, D, E, H, L, F/F'S
DESCREPTON : DCMD MPLEMENTS THE DSPLAY
MEMORY (D) COMMAND
DCMD
0437 0E02 MV C, 2 ;GET 2 NUMBERS FROM
NPUT STREAM
0439 CD5B06 CALL GETNM
043C D1 POP D ;ENDNG ADDRESS TO DE
043D E1 POP H ;STARTNG ADDRESS TO HL
DCMO5
043E CDEB05 CALL CROUT ;ECHO CARRAGE
RETURN/LNE FEED
0441 7C MOV A, H ;DSPLAY ADDRESS OF
FRST LOCATON N LNE
ENDNG ADDRESS
FALSE DCM15 ;F NOT ,MORE TO
DSPLAY
0455 D25E04 JNC DCM15
0458 CDEB05 CALL CROUT ;CARRGE
RETURN/LNE FEED
TO END LNE
045B C30804 JMP GETCM ;ALL DOME
045E 23 DCM15 NX H ;F MORE TO GO,
PONTS TO THE NEW
DSPLAY
045F 7D MOV A,L GET LOW ORDER
BTS OF NEW
ADDRESS
0460 E60G AN NEWLN ;SEE F LAST HEX
DGT OR ADDRESS
DENOTES START OF
NEWLNE
0462 C24904 JNZ DCM10 ;NO-DOT AT END OF
LNE
0465 C33E04 JMP DCM05 ;YES-START NEW
LNE WTH ADDRESS
0442 CDC706 CALL NMOUT
0445 7D MOV A, L ;ADDRESS S 2 BYTES LONG
0446 CDC706 CALL NMOUT
DCM10
047A C38304 JMP GCM10 0494 4F MOV C, A
047D 7A GCM05 MOV A, D ;F NO STARTNG ADDRESS 0495 CDF805 CALL ECHO ;ECHO T
MAKE SURE THATCR 0498 79 MOV A, C ;PUT CAHR. BACK
TERMNATED COMMAND NTO A
047E FE0D CP CR 0499 FE1B CP TERM ;SEE F CHAR.S A
0480 C21106 JNZ ERROR ;ERROR F NOT TERMNATNG
0483 C31B03 GCM10 JMP RSTOR ;RESTORE REG. AND BEGN CHARACTER
EXECUTON (RSTOR S N 049B CAC704 JZ CM25 ;F SO ALL DONE
KEYBOARD MONTOR) ENTERNG
CHARACTERS.
049E CD7907 CALL VALDL ;ELSE CHECK TO SEE
F VALD DELMTER
TRUE CM05 ;F SO SMPLY
GNORE THS
CHARACTER
04A1 DA9104 JC CM05
04A4 CD5E07 CALL VALDG ;ELSE CHECK TO SEE
F VALD HEX DGT
FALSE CM20 ;F NOT, BRANCH TO
HANDLE ERROR
CONDTON
D-45
*******************************************************************************
FUNCTON : GCMD
NPUTS : NONE
OUTPUTS : NONE
CALLS : ERROR, GETHX, RSTTF
DESTROYS : A, B, C, D, E, H, L, F/F'S
DESCRPTON : GCMD MPLEMENTS THE BEGN
EXECUTON (G) COMMAND
0468 CD2606 GCMD CALL GETHX ;GET ADDRESS(F PRESENT)
FROM NPUT STREAM
FALSE GCM05
046B D27D04 JNC GCM05 ;BRANCH F NO NU. PRESENT
046E 7A MOV A, D ;ELSE GET TERMNATOR
046F FE0D CP CR ;SEE F CARRAGE RETURN
0471 C21106 JNZ ERROR ;ERROR F NOT PROPERLY
TERMNATED
0474 21F2FF LX H, PSAV ;WANT NU. TO REPLACE SAVE 1/4
PGM COUNTER
0477 71 MOV M, C
0478 23 NX H
0479 70 MOV M, B
D-46
*****************************************************
FUNCTON : CMD
NPUTS : NONE
OUTPUTS : NONE
CALLS : ERROR, ECHO, GETCH, VALDL, VALDG, CNVBN,
STHLF, GETNM, GROUT
DESTROYS : A, B, C, D, E, H, L, F/F'S
DESCRPTON : CMD MPLEMENTS THE NSERT
MODE NTO MEMORY
() COMMAND
0468 0E01 CMD MV C, 1
0488 CD5B06 CALL GETNM ;GET SNGLE NU.
FROM NPUT
STREAM
048B 3EFF MV A, UPPER
048D 32FDFF STA TEMP ;TEMP WLL HOLD
THE UPPER/LOWER
HALF BYTE FLAG
0490 D1 POP D
0491 CD1F06 CM05 CALL GETCH ;GET A CHAR. FROM
NPUT STREAM
D-47
D-48
04A7 D2C104 JNC CM20 MCMD
04AA CD100A CALL CNVBN ;CONVERT DGT TO BNARY 04D0 0E03 MV C, 3
04AD 4F MOV C, A ;MOVE RESULT TO C 04D2 CD5B06 CALL GETNM ;GET 3 NUMBERS FROM
04AE CD3F07 CALL STHLF ;STORE N APPROPRATE NPUT STREAM
HALF WORD 04D5 C1 POP B ;DESTNATON ADDR. TO BC
04B1 3AFDFF LDA TEMP ;GET HALF BYTE FLAG 04D6 E1 POP H ;ENDNG ADDR. TO HL
04B4 B7 ORA A ;SET F/F'S 04D7 D1 POP D ;STARTNG ADDR TO DE
04B5 C2B904 JNZ CM10 ;BRANCH F FLAG SET FOR 04D8 E5 MCM05 PUSH H ;SAVE ENDNG ADDRESS
UPPER 04D9 62 MOV H, D
04B8 13 NX D ;F LOWER ,NC ADDRESS OF 04DA 6B MOV L, E ;SOURCE ADDR. TO HL
BYTE TO STORE N 04DB 7E MOV A, M ;GET SOURCE BYTE
04B9 EEFF CM10 XR NVERT ;TOGGLE STATE OF FLAG 04DC 60 MOV H, B
04BB 32FDFF STA TEMP ;PUT NEW VALUE OF FLAG 04DD 69 MOV L, C ;DESTNATON ADDR. TO HL
BACK 04DE 77 MOV M, A ;MOVE BYTE TO
04BE C39104 JMP CM05 ;PROCESS NEXT DGT DESTNATON
04C1 CD3407 CM20 CALL STHFO ;LLEGAL CHARACTER 04DF 03 NX B ;NR. DESTNATON
04C4 C31106 JMP ERROR ;MAKE SURE ENTRE BYTE ADDRESS
FLLED THEN ERROR 04E0 78 MOV A, B
04C7 CD3407 CM25 CALL STHF0 ;HERE FOR ESCAPE 04E1 B1 ORA C ;TEST FOR DESTNATON
CHARACTER /P S DONE ADDR
04CA CDEB05 CALL CROUT ;ADD CARRAGE RETURN
04CD C30804 JMP GETCM
****************************************************
FUNCTON : MCMD
NPUTS : NONE
OUTPUTS : NONE
CALLS : GETCM, HLO, GETNM
DESTROYS : A, B, C, D, E, H, L, F/F'S
DECRPTON : MCMD MPLEMENTS THE MOVE DATA N
MEMORY(M) COMMAND
04E2 CA0804 JZ GETCM ;F SO CAN TERMNATE CMD.
04E5 13 NX D ;NCREMENT SURCE
ADDRESS
04E6 E1 POP H ;ELSE GET BACKENDNG
ADDR
04E7 CDA006 CALL HLO ;SEE F ENDNG
ADDR=SOURCE ADDR
FALSE GETCM ;F NOT
COMMAND S DONE
04EA D20804 JNC GETCM
04ED C3D804 JMP MCM05 ;MOVE ANOTHER BYTE
SCMD COMMAND.
04F0 CD2606 CALL GETHX ;GET A NUMBER F
PRESENT, FROM NPUT 0514 CD1F06 XCMD CALL GETCH ;GET REGSTER
04F3 C5 PUSH B NDENTFER
04F4 E1 POP H ;GET NU. TO HL-DENOTES 0517 4F MOV C, A
MEMORY LOCATON 0518 CDF805 CALL ECHO ;ECHO T
04F5 7A SCM05 MOV A, D ;GET TERMNATOR 051B 79 MOV A, C
04F6 FE20 CP '.' ;SEWE F SPACE 051C FE0D CP CP
04F8 CA0005 JZ SCM10 ;YES CONTNUE 051E C22705 JNZ XCM05 ;BRANCH F
PROCESSNG NOTCARRAGE RET
04FB FE2C CP '.' ;ELSE SEE F COMMA 0521 CDEA06 CALL REGDS ;ELSE,DSPLAY
04FD C20804 JNZ GWTCM ;NO TERMNATE COMMAND REG.CONTENTS
0500 7E SCM10 MOV A, M ;GET CONTENTS OF 0524 C30804 JMP GETCM ;THEN TERMNATE
SPECFED LOCATON TO A COMMAND
0501 CDC706 CALL NMOUT ;DSPLAY CONTENTS ON 0527 4F XCM05 MOV C, A ;GET REG.DENTFER
CONSOLE TO C
0504 0E2D MV C,'.' 0528 CD1B07 CALL RGADR ;CONVERT
0506 CDF805 CALL ECHO ;USE DASH FOR SEPARATOR DENTFER NTO
0509 CD2606 CALL GETHX ;USE NEW VALUE FOR RTAB TABLE ADDR
MEMORY LOCATON F ANY 052B C5 PUSH B
FALSE SCM15 ;F NO VALUE PRESENT,BRANCH 052C E1 POP H ;PUT PONTER TO
050C D21005 JNC SCM15 REGSTER ENTRY
050F 71 MOV M, C ;ELSE,STORE LOWER 8BT OF NTO HL
NUMBER ENTERED 052D 0E20 MV C,"
0510 23 SCM15 NX H ;NCREMENT ADDR. OF MEMORY 052F CDF805 CALL ECHO ;ECHO SPACE TO
LOCATON TO VEW USER
0511 C3F504 JMP SCM05 0532 79 MOV A, C
0533 32FDFF STA TEMP ;PUT SPACE NTO
TEMP AS DELMTER
0536 3AFDFF XCM10 LDA TEMP ;GET TERMNATOR
0539 FE20 CP '.' ;SEE F A BLANK
053B CA4305 JZ XCM15 ;YES-GO CHECK
PONTER N TABLE
053E FE2C CP '.' ;NO SEE F COMMA
D-49
****************************************************
FUNCTON : SCMD
NPUTS : NONE
CALLS : GETHX, GETCM, NMOUT, ECHO
DESTROYS : A, B, C, D, E, H, L, F/F/'S
DESCRPTON : SCMD MPLEMENTS THE
SUBSTTUTE NTO MEMORY
(S) COMMAND
D-50
*********************************************************
FUNCTON : XCMD
NPUTS : NONE
OUTPUTS : NONE
CALLS : GETCH, ECHO, REGDS, GETCM, ERROR, RGADR,
NMOUT, CROUT, GTHEX
DESTROYS : A, B, C, D, E, H, L, F/F'S
DESCRPTON : XCMD MPLEMENTS THE REGSTER
EXAMNE AND CHANGE (X)
0553 46 MOV B, M ;FETCH LENGTH FLAG EROM 0577 E1 POPH ;PUT ADDR.OFSAVE
TABLE LOCATON NTO HL
0554 D5 PUSHD ;SAVE ADDR.OF SAVE 0578 B7 ORA A ;SET F/F'S
LOCATON 0579 CA7E05 JZ XCM25 ;F 8 BT REG,
0555 D5 PUSH D BRANCH
0556 E1 POP H ;MOVE ADDRESSS TO HL 057C 70 MOV M, B ;SAVE UPPER 8 BTS
0557 C5 PUSH B ;SAVE LENGTH FLAG 057D 2B DCX H ;PONT TO SAVE
0558 7E MOV A, M ;GET 8 BTS OF REG FROM LOCATON FOR
SAVED LOCATON LOWER 8 BTS
0559 CDC706 CALL NMOUT ;DSPLAY T 057E 71 XCM25 MOV M, C ;STORE ALL OF 8 BT
055C F1 POP PSW ;GET BACK LENGTH FLAG OR LOWER 1/2 OF 16
055D F5 PUSH PSW ;SAVE T AGAN BT REG.
055E B7 ORA A ;SET F/F'S 057F 110300 XCM27 LX D, RTABS ;SZE OF ENTRY
055F CA6705 JZ XCM20 ;F8BT REG.NOTHNG TO NRTAB TABLE
DSPLAY
0562 2B DCX H ;ELSE FOR 16 BT REG.GET 0582 E1 POP H ;PONTER NTO
LOWER 8 BTS REG.TABLE RTAB
D-51
D-52
0563 7E MOV A, M
0540 C20804 JNZ GETCM ;NO-MUST BE CARRAGE 0564 CDC706 CALL NMOUT ;DSPLAY THEM
RETURN TO AN END 0567 0E2D XCM20 MV C,'-'
COMMAND 0569 CDF805 CALL ECHO ;USE DASH AS
0543 73 XCM15 MOV A, M SEPARATOR
0544 B7 ORA A ;SET F/F'S 056C CD2606 CALL GETHX ;SEE F THERE S A
0545 C24E05 JNZ XCM16 ;BRANCH F NOT AT END OF VALUE TO PUT
TABLE NTO REGSTER
0548 CDEB05 CALL CROUT ;ELSE O/P CARAGE RETURN FALSE XCM30 ;NO GO
LNE FEED CHECKFORNEXT
054B C30804 JMP GETCM ;AND EXT REG.
054E E5 XCM18 PUSH H ;PUT PONTER ON 056F D28705 JNC XCM30
STACK 0572 7A MOV A, D
054F 5E MOV E, M 0573 32FDFF STA TEMP ;ELSE SAVE THE
0550 16FF MOV D, RAMST SHR 8 ;ADDRESS OF SAVE TERMNATOR FOR
LOCATON FROM NOW
TABLE 0576 F1 POP PSW ;GET BACK LENGTH
0552 23 NX H FLAG
C 05C4 F3 D
0590 F3 D 05C5 C5 PUSH B
0591 E5 PUSH H 05C6 E5 PUSH H
0592 0609 MV B, BTS 05C7 060B MV B, BTS0
0594 20 C1 RM 05C9 AF XRA A
0595 B7 ORA A 05CA 3E80 CO1 MV A, 80H
0596 FA9405 JM C1 05CC 1F RAR
0599 2A9AFF CHLD HALFBT 05CD 30 SM
059C 2D C2 DCR L 05CE 2AC0FF LHLD BTTME
059D C29C05 JNZ C2 05D1 2D CO2 DCR L
05A0 25 DCR H 05D2 C2D105 JNZ CO2
05A1 C29C05 JNZ C2 05C5 25 DCR H
05A4 2AC0FF C3 LHLD BTTMC 05C6 C2D105 JNZ CO2
05A7 2D C4 DCR L 05C9 37 STC
05A8 C2A705 JNZ C4 05CA 79 MOV A, C
05AB 25 DCR H 05CB 1F RAR
05AC C2A705 JNZ C4 05CC 4F MOV C, A
05AF 20 RM 05CD 05 DCR B
05B0 17 RAL 05CE 2CA05 JNZ CO1
D-53
0583 19 DAD D ;ADD ENTRY SZE TO PONTER
0584 C33605 JMP XCM10 ;DO NEXT REGSTER
0587 7A XCM30 MOV A, D ;GET TERMNATOR
0588 32FDFF STA TEMP ;SAVE N MEMORY
058B D1 POP D ;CLEAR STACK OF LENGTH FLAG
058C D1 POP D & ADDR. OF SAVE LOCATON
058D C37F05 JMP XCM27 ;GO NCREMENT REG. TABLE
PONTER
********************************************************
UTLTY ROUTNE
********************************************************
FUNCTON : C
NPUTS : NONE
OUTPUTS : A - CHARACTER FROM TTY
CALLS : DELAY
DESTROYS : A, F/F'S
DESCRPTON : C WATS UNTL A CHAR. HAS BEEN
ENTERED AT THE TTY AND THEN
RETURNS THE CHAR. VA THE A
REG. TO THE CALLNG ROUTNE.
THS ROUTNE S CALLED BY THE
USER VA A JUMP TABLE N RAM
D-54
05B1 05 DCR B
05B2 CABC05 JZ C5
05B5 79 MOV A, C
05B6 1F RAR
05B7 4F MOV C, A
05B8 00 NOP
05B9 C3A405 JMP C3
05BC E1 C5 POP H
05BD FB E
05BE 79 MOV A, C
05BF C9FFFF JMP 3PASS
05C2 FF BLANK
05C3 FF BLANK
****************************************************
FUNCTON : CO
NPUTS : C-CHARACTER TO OUTPUT TO TTY
OUTPUTS : C-CHARACTER OUTPUT TO TTY
CALLS : DELAY
DESTROYS : A, F/F'S
DESCRPTON : CO-SENDS TS NPUT ARGUMENT
TO THE TTY.
C0
D-55
05E1 E1 POP H
05E2 C1 POP B
05E3 FB E
05E4 C9 RET
05E5 FF BLANK
05E6 FF BLANK
05E7 FF BLANK
05E8 FF BLANK
05E9 FF BLANK
05EA FF BLANK
********************************************************
FUNCTON : CROUT
NPUTS : NONE
OUTPUTS : NONE
CALLS : ECHO
DESTROYS : A, B, C, F/F'S
DESCRPTON : CROUT SENDS A CARRAGE
RETURN AND HENCE A
LNE FEED TO THE CONSOLE.
CROUT
05EB 0E0D MV C, CR
05ED CDF805 CALL ECHO
05F0 C9 RET
D-56
********************************************************
FUNCTON : DELAY
NPUTS : DE - 16BT NT.DENOTNG NUMBER OF TMES TO
LOOP.
OUTPUTS : NOTHNG
DESTROYS : A, D, E, F/F'S
DESCRPTON : DELAY DOES NOT RETURN TO
CALLER UNTL NPUT ARGUMENT S
COUNTED DOWN TO 0.
DELAY
05F1 1B DCX D ;DECREMENT NPUT ARG.
05F2 7A MOV A, D
05F3 B3 ORA E
05F4 C2F105 JNZ DELAY ;F ARG NOT 0,KEEP
GONG
05F7 C9 RET
********************************************************
FUNCTON : ECHO
NPUTS : C - CHARACTER TO ECHO TO TERMNAL
OUTPPUTS : C - CHARACTER ECHOED TO TERMNAL
CALLS : CO
DESTROYS : A, B, F/F'S
DESCRPTON : ECHO TAKES A SNGLE CHARACTER
NPUT AND VA THE MONTOR
SENDS THAT CHARACTER TO THE
USER TERMNAL. A CARRAGE S
ECHOED AS A CARRAGE RETURN
LNE FEED, AND AN ESCAPE
CHARACTER S ECHOED AS $.
ECHO
05F8 41 MOV B, C ;SAVE ARGUMENT
05F9 3E1B MV A, ESC
ERROR TERMNAL
0611 OE2A MV C,'*' 0622 E67F AN PRTY0 ;TURN OFF PARTY
0613 CDF805 CALL ECHO ;SEND '*' TO BT N CASE SET BY
CONSOLE CONSOLE
0616 CDEB05 CALL CROUT ;SKP TO BEGNNG OR NEXT 0624 4F MOV C, A ;PUT VALUE N C
LNE REG.FOR
0619 C30804 JMP GETCM ;TRY AGAN FOR ANOTHER 0625 C9 RET ;RETURN
COMMAND
D-57
05FB B8 CMP B ;SEE F ECHONG AN
ESCAPE CHARACTER
05FC C20106 JNZ ECHO5 ;NO BRANCH
05FF 0E24 MV C, '$' ;YES ECHO AS $
0601 CDC405 ECHO5 CALL CO ;DO OUTPUT THRO'
MONTOR
0604 3E0D MV A, CR
0606 B8 CMP B ;SEE F CHAR. ECHOED WAS
A CARRAGE RETURN
0607 C20F06 JNZ ECH10 ;NO-NO NEED TO TAKE
SPECAL ACTON
060A 0E0A MV C, LF ;YES-WANT TO ECHO
LNEFEED
060C CDC405 CALL CO
060F 48 ECH10 MOV C, B ;RESTORE
ARGUMENT
0610 C9 RET
********************************************************
FUNCTON : ERROR
NPUTS : NONE
OUTPUTS : NONE
CALLS : ECHO, CROUT, GETCM
DESTROYS : A, B, C, F/F'S
DESCRPTON : ERROR PRNTS THE
ERRORCHARACTER (CURRENTLY
AN ASTERSK) ON THE CONSOLE
FOLLOWED BY A CR LF, AND THEN
RETURNS CONTROL TO THE
COMMAND RECOGNSER.
D-58
********************************************************
FUNCTON : FRET
NPUTS : NONE
OUTPUTS : CARRY-ALWAYS 0
CALLS : NOTHNG
DESTROYS : CARRY
DESCRPTON : FRET S JUMPED TO BY ANY
ROUTNE THET WSHES TO
NDCATE FALURE ON RETURN.
FRET SETS THE CARRY FALSE
DENOTNG FALURE & THEN
RETURN TO THE CALLER OF THE
ROUTNE NVOKNK FRET.
FRET
061C 37 STC ;SET CARRY TRUE
061D 3F CMC ;THEN COMPLEMENT TO MAKE T
FALSE
061E C9 RET ;RETURN APPROPRATLY
********************************************************
FUNCTON : GETCH
NPUTS : NONE
OUTPUTS : C - NEXT CHAR. N NPUT STREAM
CALLS : C
DESTROYS : A, C, F/F'S
DESCRPTON : GETCH RETURNS THE NEXT CHAR.
N THE NPUT STREAM TO THE
CALLNG PROGRAM.
GETCH
061F CD9005 CALL C ;GET CHAR. FROM
AN ERROR NDCATON. F THE FALSE ERROR ;ERROR, F NOT A VALD
FRST (VALD)CHARACTER DGT
ENCOUNTERED N THE NPUT 0648 D21106 JNC ERROR
STREAM S NOT A DELMTER, 064B CD100A CALL CNVBN ;CONVERT DGT TO TS
GETHX WLL RETURN WTH THE BNARY VALUE
CARRY BT SET TO 1;OTHERWSE 064E 1EFF MV E, 0FFH ;SET DGT FLAG NON-0
THE CARRY BT S SET TO 0 AND 0650 29 DAD H ;*2
THE CONTENTS OF BC ARE 0651 29 DAD H ;*4
UNDEFNED. 0652 29 DAD H ;*8
0653 29 DAD H ;*16
GETHX 0654 0600 MV B, 0 ;CLEAR UPPER 8 BTS OF BC
0626 E5 PUSH H ;SAVE HL PAR
0627 210000 LX H, 0 ;NTALZE RESULT 0656 4F MOV C, A ;BNARY VALUE OF
CHARACTER NTO C
D-59
********************************************************
FUNCTON : GETHX
NPUTS : NONE
OUTPUT : SBC - 16 BT NTEGER
D - CHAR. WHCH TERMNATED THE NTEGER
CARRY - 1 F FRST CHAR NOT DELMTER
- 0 F FRST CHAR. S DELMTER
CALLS : GETCH, ECHO, VALDL, VALDG, CNVBN, ERROR
DESTROYS : A, B, C, D, E, F/F'S
DESCRPTON : GETHX ACCEPTS A STRNG OF HEX
DGTS FROM THE NPUT STREAM
& RETURNS THER VALUE AS A
16 BT BNARY NTEGER.F MORE
THAN 4 HEX DGTS ARE ENTERED,
ONLY THE LAST 4 ARE USED THE
NUM. TERMNATES WHEN A VALD
DELMTER S ENCOUNTERED.
THE DELMTER S ALSO RETURNED
AS AN OUTPUT OF THE
FUNCTON.LLEGAL CHAR. (NOT
HEX DGTS OR DELMTERS) CAUSE
D-60
062A 1E00 MV E, 0 ;NTALZE DGT FLAG TO
FALSE
062C CD1F06 GTH05 CALL GETCH ;GET A CHARACTER
062F 4F MOV C, A
0630 CDF805 CALL ECHO ;ECHO THE CHARACTER
0633 CD7907 CALL VALDL ;SEE F DELMTER
FALSE GHX10 ;NO BRANCH
0636 D24506 JNC GTX10
0639 51 MOV D, C ;YES-ALL DONE,BUT WANT
TO RETURN DELMTER
063A E5 PUSH H
063B C1 POP B ;MOVE RESULT TO BC
063C E1 POP H ;RESTORE HL
063D 7B MOV A, E ;GET FLAG
063E B7 ORA A ;SET F/F'S
063F C23207 JNZ SRET ;F FLAG NONE-0ANUM.HAS
BEEN FOUND
0642 CA1C06 JZ FRET ;ELSE DELMTER WAS FRST
CHARACTER
0645 CD5E07 GHX10 CALL VALDG ;F NOT DELMTER SEE F
DGT
0665 D21106 JNC ERROR COUNT
0668 C5 PUSH B ;ELSE SAVE NUM.ON STACK 069A F8 RM ;F NEGATVE,PROPER
0669 2D DCR L ;DECREMENT RESULT ON STACK
MAX.ARG.COUNT 069B E1 POP H ;ELSE GET RETURN ADDR
066A 25 DCR H ;DECREMENT ACTUAL 069C E3 XTHL ;REPLACE TOP RESULT
ARG.COUNT WTH RETURN ADDR
069D C39906 JMP GNM30 ;TRY AGAN
D-61
D-62
066B CA7706 JZ GNM10 ;BRANCH F NO MORE
0657 09 DADB ;ADD THS VALUE TO PARTAL NUM.WANTED
RESULT 066E 7A MOV A, D ;ELSE GET NUM.
0658 C32C06 JMP GHX05 ;GET NEXT CHARACTER TERMNATOR TO A
066F FE0D CP CR ;SEE F CARRAGE RETURN
********************************************************
FUNCTON : GETNM
NPUTS : C - COUNT OF NUM. TO FND N NPUT STREAM
OUTPUTS : TOP OF STACK-NUM.FOUND N REVERSE
ORDER (LAST ON TOP OF STACK)
CALLS : GETHX, HLO, ERROR
DESTROYS : A, B, C, D, E, H, L, F/F'S
DESCRPTON : GETNM FNDS A SPECFED COUNT
OF NUMBERS, BETWEEN 1 & 3,
NCLUSVE, N THE NPUT STREAM
AND RETURNS THER VALUES ON
THE STACK. F 2 OR MORE NUM.
ARE REQUESTED THEN THE FRST
MUST BE LESS THEN OR EQUEL TO
THE SECOND, OR THE FRST &
SECOND NUM. WLL BE SET EQUAL.
THE LAST NUM. REQUESTED MUST
BE TERMNATED BY A CARRAGE
RETURN OR AN ERROR NDCATON
WLL RESULT.
GETNM
065B 2E03 MV L, 3 ;PUT MAX. ARG.COUNT N L
065D 79 MOV A, C ;GET THE ACTUAL
ARG.COUNT
065E E603 AN 03 ;FORCE TO MAX.OF 3
0660 C8 RZ ;F 0,DON'T BOTHER TO ANY
0661 67 MOV H, A ;ELSE PUTACTUALCOUNT
NTO
0662 CD2606 GNM05 CALL GETHX ;GET A NUM.FROM /P
STREAM
FALSE ERROR ;ERROR F NOT THERE-TOO
FEW NUMBERS
0671 CA1106 JZ ERROR ;ERROR F SO TOO FEW
NUM.
0674 C36206 JMP GNM ;ELSE PROCESS NEXT NUM.
0677 7A GNM10 MOV A, D ;WHEN COUNT 0,CHECK
LAST TERMNATOR
0678 FE0D CP CR
067A C21106 JNZ ERROR ;ERROR F NOT CR
067D 01FFFF LX B, 0FFFFH ;HL GETS LARGEST NUM.
0680 7D MOV A, L ;GET WHAT'S LEFT OF MAX.
ARG COUNT
0681 B7 ORA A ;CHECK FOR 0
0682 CA8A06 JZ GNM20 ;F YES,3 NUM WERE /P
0685 C5 GNM15 PUSH B ;F NOT? FLL REMANNG
ARG WTH 0FFFFH
0686 2D DCR L
0687 C28506 JNZ GNM15
068A C1 GNM20 POP B ;GET THE 3 ARG. OUT
068B D1 POP D
068C E1 POP H
068D CDA006 CALL HLO ;SEE F FRST=SECOND
FALSE GNM25 ;NO BRANCH
0690 D29506 JNC GNM25
0693 54 MOV D, H
0694 5D MOV E, L ;YES-MAKE SECOND EQUAL
TO THE FRST
0695 E3 GNM25 XTHL ;PUT FRST ON STACK GET
RETURN ADDR
0696 D5 PUSH D ;PUT SECOND ON STACK
0697 C5 PUSH B ;PUT THRD ON STACK
0698 E5 PUSH H ;PUT RETURNADDR.ON
STACK
0699 3D GNM30 DCR A ;DECREMENT RESDUAL
D-63
********************************************************
FUNCTON : HLO
NPUTS : DE - 16 BT NTEGER
HL - 16 BT NTEGER
OUTPUTS : CARRY - 0 F HL < DE
1 F HL => DE
CALLS : NOTHNG
DESTROYS : F/F'S
DESCRPTON : HLO COMPARES THE 2 16 BT
NTEGERS N BL AND DE. THE
NTEGERS ARE TREATED AS
UNSGNED NUMBERS.THE CARRY
BT S SET ACCORDNG TO THE
RESULT OF THE COMPARSON.
HLO
06A0 C5 PUSH B ;SAVE BC
06A1 47 MOV B, A ;SAVE A N B REGSTER
06A2 E5 PUSH H ;SAVE HL PAR
06A3 7A MOV A, D ;CHECK FOR DE=0000H
06A4 B3 ORA E
06A5 CAC106 JZ HLO5 ;WE'RE AUTOMATCALLY DONE
06A8 23 NX H F HL S NCREMENTED BY 1
06A9 7C MOV A, H ;WANT TO TEST FOR 0
06AA B5 ORA L RESULT AFTER NCREMENTNG
06AB CAC106 JZ HLO5 ;F SOHL MUST HAVE CONTANED
0FFFFH
06AE E1 POP H ;F NOT RESTORE ORGNAL HL
06AF D5 PUSH D ;SAVE DE
06B0 3EFF MV A, 0FFH ;WANT TO TAKE 2'S COMPLEMENT
OF DE CONTENTS
06B2 AA XRA D
06B3 57 MOV D, A
06B4 3EFF MV A, 0FFH
06B6 AB XRA E
06B7 5F MOV E, A
D-64
06B8 13 NX D ;2'S COMPLEMENT OF DE TO DE
06B9 7D MOV A, L
06BA 83 ADD E ;ADD HL AND DE
06BB 7C MOV A, H
06BC 8A ADC D ;THS OPERATON SETS CARRY
PROPERLY
06BD D1 POP D ;RESTORE ORGNAL DE CONT.
06BE 78 MOV A, B ;RESTORE ORGNAL CONT.OF A
06BF C1 POP B ;RESTORE ORGNALCONT.OF BC
06C0 C9 RET ;RETURN WTH CARRY SET AS
REQURED
06C1 E1 HLO5 POP H ;F HL CONTENTS 0FFFFH,THEN
06C2 78 MOV A, B CARRY CAN ONLY BE SET TO 1
06C3 C1 POP B ;RESTORE ORGNAL CONTENTS OF
REGSTERS
06C4 C33207 JMP SRET ;SET CARRY AND RETURN
********************************************************
FUNCTON : NMOUT
NPUTS : A - 8 BT NTEGER
OUTPUTS : NONE
CALLS : ECHO, PRVAL
DESTROYS : A, B, C, F/F'S
DESCRPTON : NMOUT CONVERTS THE 8
BT,UNSGNED NTEGER
THE A REGSTER NTO 2 ASC
CHARACTERS. THE ASC
CHARACTER ARE THE ONES
REPRESENTNG THE 8 BTS. THESE
TWO CHARACTERS ARE SENT TO
THE CONSOLE AT THE CURRENT
PRNT POSTON OF THE CONSOLE.
D-65
D-66
NMOUT 06E7 09 DAD B ;ADD DGT VALUE TO HL
06C7 E5 PUSH H ;SAVE HL DESTROYS ADDRESS
PREVAL 06E8 4E MOV C, M ;GET CHAR.FROM MEMORY
06C8 F5 PUSH PSW ;SAVE ARGUMENT 06E9 C9 RET
06C9 0F RRC
06CA 0F RRC ********************************************************
06CB 0F RRC FUNCTON : REGDS
06CC 0F RRC ;GET UPPER 4 BTS TO LOW NPUTS : NONE
4 BT POSTON OUTPUTS : NONE
06CD E60F AN HCHAR ;MASK OUT UPPER 4 BTS- CALLS : ECHO, NMOUT, ERROR, CROUT
WANT 1 HEX CHAR DESTROYS : A, B, C, D, E, H, L, F/F'S
06CF 4F MOV C, A DESCRPTON : REGDS DSPLAYS THE CONTENTS
06D0 CDE206 CALL PRVAL ;CONVERT LOWER 4 BTSTO OF THE REGSTER SAVE
ASC LOCATONS,N FORMATTED
06D3 CDF805 CALL ECHO ;SEND TO TERMNAL FORM,ON THE CONSOLE.
06D6 F1 POP PSW ;GET BACK ARGUMENT THE DSPLAY S DRVAN FROM A
06D7 E60F AN HCHAR ;MASK OUT UPPER 4 BTS- TABLE, RTAB,WHCH
WANT 1 HEX CHAR CONTANS THE REGSTERS'S PRNT
06D9 4F MOV C, A SYMBOL, SAVE LOCATON
06DA CDE206 CALL PRVAL ADDRESS,AND LENGTH (8 OR 16
06DD CDF805 CALL ECHO BTS).
06E0 E1 POP H ;RESTORE SAVED VALUE OF
HL REGDS
06E1 C9 RET 06EA 21C407 LX H, RTAB ;LOAD HL WTH ADDRESS OF
START OF TABLE
*********************************** ******************** 06ED 4E REG05 MOV C, M ;GET PRNT SYMBOL
FUNCTON : PRVAL OF REG.
NPUTS : C - NTEGER RANGE 0 TO F
OUTPUTS : C - ASC CHARACTER
CALLS : NOTHNG
DESTROYS : B, C, H, L, F/F'S
DESCRPTON : PRVAL CONVERTS A NUM. N THE
RANGE 0 TO F
HEX TO THE CORROSPONDNG
ASC CHARACTER,0-9,
A-F.PRVAL DOES NOT CHECK THE
VALDTY OF TS NPUT ARGUMENT.
PRVAL
06E2 21B407 LX H, DGTB ;ADDRESS OF TABLE
06E5 0600 MV B, 0 ;CLEAR HGH ORDER BTS
OF BC
06EE 79 MOV A, C
06EF B7 ORA A ;TEST FOR 0 END OF TABLE
06F0 C2F706 JNZ REG10 ;F NOT END,BRANCH
06F3 CDEB05 CALL CROUT ;ELSE CARRAGE
RETURN/LNE FEED TO END
DSPLAY
06F6 C9 RET
06F7 CDF805 REG10 CALL ECHO ;ECHO CHARACTER
06FA 0E3D MV C,'='
06FC CDF805 CALL ECHO ;O/P EQUAL SGN i.e. A =
06FF 23 NX H ;PONT TO START OF SAVE
LOCATON ADDRESS
0700 5E MOV E, M ;GET LSP OF SAVE
LOCATON ADDRESS
TO E
D-67
0701 16FF MV D, RAMST SHR 8 ;PUT MSO OF SAVE LOC
ADDRESS TO E
0703 23 NX H ;PONT TO LENGTH FLAG
0704 1A LDAX D ;GET CONTENTS OF SAVE
LOC.
0705 CDC706 CALL NMOUT ;DSPLAY ON CONSOLE
0708 7E MOV A, M ;GET LENGTH FLAG
0709 B7 ORA A ;SET SGN F/F
070A CA1207 JZ REG15 ;F 0,REG. S 8 BTS
070D 1B DCX D ;ELSE 16 BT REGSTER SO
MORE TO DSPLAY
070E 1A LDAX D ;GET LOWER 8 BTS
070F CDC706 CALL NMOUT ;DSPLAY THEM
0712 0E20 REG15 MV C,' '
0714 CDF805 CALL ECHO
0717 23 NX H ;PONT TO START OF NEXT
TABLE ENTRY
0718 C3ED06 JP REG05 ;DO NEXT REGSTER
*******************************************************************
FUNCTON : RGADR
NPUTS : C - CHARACTER DENOTNG REGSTER
OUTPUTS : BC - ADDRESS OF ENTRY N RTAB
CORROSPONDNG TO REG
CALLS : ERROR
DESTROYS : A, B, C, D, E, H, L, F/F'S
DESCRPTON :RGADR TAKES A SNGLE CHARACTER AS
NPUT.THS CHARACTER DENOTES A
REGSTER. RGADR SEARCHES THE TABLE
RTAB FOR A MATCH ON THE /P
ARGUMENT.F ONE OCCURS,RGADR
RETURNS THE ADDR OF THE SAVED
LOCATON CORRESPONDNG TO THE
REGSTER. THS ADDRESS PONTS NTO
D-68
RTAB. F NO MATCH OCCURS, THEN
CONTROL S PASSED TO THE
ERROR ROUTNE.
071B 21C407 RGADR LX H, RTAB ;HL GETS ADDR. OF
TABLE START
071E 110300 LX D, RTAB5 ;DE GET SZE OF A
TABLE ENTRY
0721 7E RGA05 MOV A, M ;GET REG.
DENTFER
0722 B7 ORA A ;CHECK FOR TABLE END
(DENTFER S 0)
0723 CA1106 JZ ERROR ;F AT END OF
TABLE,ARG.S
LLEGAL
0726 B9 CMP C ;ELSE, COMPARE
TABLE ENTRY &
ARGUMENT
0727 CA2E07 JZ RGA10 ;FEQUAL,WE'VE
FOUND WHAT WE'RE
LOOKNG FOR
072A 19 DAD D ;ELSE NCREMENT
TABLE PONTER TO
NEXT ENTRY
072B C32107 JMP RGA05 ;TRY AGAN
072E 23 RGA10 NX H ;F A MATCH NR.
TABLE
072F 44 MOV B, H ;PONTER TO SAVE
LOC.ADDR.
0730 4D MOV C, L ;RETURN THS VALUE
0731 C9 RET
0734 3AFDFF LDA TEMP ;GET HALF BYTE FLAG 0755 47 MOV B, A ;SAVE BYTE N B
0737 B7 ORA A ;SET F/F'S 0756 79 MOV A, C ;GET VALUE
0738 C0 RNZ ;F SET TO UPPER DO NOT 0757 0F RRC
DO ANYTHNG 0758 0F RRC
0739 0E00 MV C, 0 ;ELSE WANT TO STORE THE 0759 0F RRC
VALUE 0 075A 0F RRC ;ALGN TO UPPER 4 BTS
073B CD3F07 CALL STHLF ;DO T 075B B0 ORA B ;OR N ORGNAL LOWER 4 BTS
073E C9 RET 075C 77 MOV M, A ;PUT NEW CONFGURATON BACK
075D C9 RET
D-69
********************************************************
FUNCTON : SRET
NPUTS : NONE
OUTPUTS : CARRY = 1
CALLS : NOTHNG
DESTROYS : CARRY
DESCRPTON : SRET S JUMPED TO BY RUTNES
D-70
********************************************************
FUNCTON : STHLF
NPUTS : C - 4 BT VALUE TO BE STORED N HALF BYTE
DE - 16 BT ADDR. OF BYTE TO BE STORED NTO
OUTPUTS : NONE
CALLS : NOTHNG
DESTROYS : A, B, C, H, , F!F"S
WSHNG TO RETURN DESCRPTON : STHLF TAKES THE 4 BT VALUE N C
SUCCESS.SRET SETS THE CARRY AND STORES T N HALF OF THE
TRUE & THEN RETURNS TO THE BYTE ADDRESSED BY REGSTER
CALLER OF THE ROUTNE NVOKNG DE. THE HALF BYTE USED(ETHER
SRET. UPPER OR LOWER) S DENOTED BY
THE VALUE OF THE FLAG S TEMP.
SRET STHLF ASSUMES THAT THS FLAG
0732 37 STC SET CARRY TRUE HAS BEEN PREVOUSLY SET
0733 C9 RET RETURN APPROPRATELY (NORMALLY BY CMD)
********************************************************
FUNCTON : STHFO
NPUTS : DE - 16BT ADDRESS OF BYTE TO BE STORED
NTO
OUTPUTS : NONE
CALLS : STHLF
DESTROYS : A, B, C, H, L, F/F'S
DESCRPTON : STHFO CHECKS THE HALF BYTE
FLAG N TEMP TO SEE F T SET TO
LOWER. F SO, STFHO STORES
A 0 TO PAD OUT THE LOWER HALF
OF THE ADDRESSED BYTE :
OTHERWSE,THE ROUTNE TAKES
NO ACTON.
STHFO
STHLF
073F D5 PUSH D
0740 E1 POP H ;MOVE ADDR. OF BYTE N HL
0741 79 MOV A, C ;GET VALUE
0742 E60F AN 0FH ;FORCE TO 4 BT LENGTH
0744 4F MOV C, A ;PUT VALUE BACK
0745 3AFDFF LDA TEMP ;GET HALF BYTE FLAG
0748 B7 ORA A ;CHECK FOR LOWER HALF
0749 C25207 JNZ STH05 ;BRANCH F NOT
074C 7E MOV A, M ;ELSE GET BYTE
074D E6F0 AN 0F0H ;CLEAR LOWER 4 BTS
074F B1 ORA C ;OR N VALUE
0750 77 MOV M, A ;PUT BYTE BACK
0751 C9 RET
0752 7E STH05 MOV A, M ;F UPPER HALF,GET BYTE
0753 E60F AN 0FH ;CLEAR UPPER 4 BTS
D-71
D-72
******************************************************** ********************************************************
FUNCTON : VALDG FUNCTON : VALDL
NPUTS : C - 1 ASC CHARACTER NPUTS : C - CHARACTER
OUTPUTS : CARRY - 1 F CHAR. REPRESENTS VALD HEX OUTPUTS : CARRY - 1 F NPUT ARGUMENT VALD
DGT DELMTER
0 OTHERWSE - 0 OTHERWSE
CALLS : NOTHNG CALLS : NOTHNG
DESTROYS : A, F/F'S DESTROYS : A, F/F'S
DESCRPTON : VALDG RETURNS SUCCESS F TS DESCRPTON : VALDL RETURNS SUCCESS F TS
NPUT ARGUMENT S N ASC CHAR. NPUT ARGUMENT S A VALD
REPRESENTNG A VALD HEX DELMTER CHARACTER (SPACE,
HEX DGT (0-9, A-F) AND FALURE COMMA, CR)AND FALURE
OTHERWSE. OTHERWSE.
VALDL
VALDG 0779 79 MOV A,C
075E 79 MOV A, C 077A FE2C CP ',' ;CHECK FOR COMMA
075F FE30 CP 'C' ;TEST CHAR. AGANST '0' 077C CA3207 JZ SRET
0761 FA1C06 JM FRET ;F ASC CODE S 077F FE0D CP CR ;CHECK FOR CARRAGE
LESS,CANNOT BE VALD RETURN
DGT 0781 CA3207 JZ SRET
0764 FE39 CP '9' ;ELSE SEE F N RANGE '0'-'9' 0784 FE20 CP ' ' ;CHECK FOR SPACE
0766 FA3207 JM SRET ;CODE BET' '0' - '9' 0786 CA3207 JZ SRET
0769 CA3207 JM SRET ;CODE EQUAL '9' 0769 C31C06 JMP FRET ;ERROR F NONEOF ABOVE
076C FE41 CP 'A' ;NOT A DGT-TRY FOR A
LETTER ********************************************************
076E FA1C06 JM FRET ;NO CODE BET' '9'-'A' MONTOR TABLES
0771 FE47 CP 'G' ********************************************************
0773 F21C06 JP FRET ;NO CODE THAN 'F'
0776 C33207 JMP SRET ;OKAY CODE S 'A' TO 'F' 078C 0D SGNON DB CR, LF, 'MCROFREND-' CR, LF
EOT.
078D 0A
078E 4D494352
0792 4F465249
0796 454E442D
079A 4920200D
COMNMAND 07C5 EE DB ASAV AND 0FFH
ROUTNES ;ADDRESS OF
07A0 0000 DW 0 REGSTER SAVE
07A2 1405 DW XCMD LOCATON
07A4 F004 DW SCMD 07C6 00 DB0 ;LENGTH FLAG 0=8
07A6 D004 DW MCMD BTS 1=16 BTS
07A8 8604 DW CMD 0003 RTABS EQU $-RTAB;SZE OF AN ENTRY
07AA 6804 DW GCMD N THS TABLE
07AC 3704 DW DCMD 07C7 42 DB 'B'
CTAB ;TABLE OF VALD 07C8 EC DB BSAV AND 0FFH
COMMAND 07C9 00 DB 0
CHARACTERS 07CA 43 DB 'C'
07CB EB DB CSAV AND 0FFH
07AE 44 DB 'D' 07CC 00 DB 0
07AE 47 DB 'G' 07CD 44 DB 'D'
07AE 49 DB '' 07CE EA DBD SAV AND 0FFH
07AE 4D DB 'M' 07CF 00 DB 0
07AE 53 DB 'S' 07D0 45 DB 'E'
07AE 58 DB 'X' 07D1 E9 DB ESAV AND 0FFH
0006 NCMDS EQU $-CTAB ;NUM. OF VALD 07D2 00 DB 0
COMMANDS 07D3 46 DB 'F'
DGTB ;NUM. OF PRNT VALUE OF 07D4 ED DB FSAV AND 0FFH
HEX DGTS 07D5 00 DB 0
07B4 30 DB '0' 07D6 49 DB ''
07B5 31 DB '1' 07D7 F1 DB SAV AND 0FFH
07B6 32 DB '2' 07D8 00 DB 0
07B7 33 DB '3' 07D9 48 DB 'H'
07B8 34 DB '4' 07DA F0 DB HSAV AND 0FFH
07B9 35 DB '5' 07DB 00 DB 0
07BA 36 DB '6' 07DC 4C DB 'L'
07BB 37 DB '7' 07DD EF DB LSAV AND 0FFH
07BC 38 DB '8' 07DE 00 DB 0
07BD 39 DB '9' 07DF 4D DB 'M'
07BE 41 DB 'A' 07E0 FD DB MSAV AND 0FFH
07BF 42 DB 'B' 07E1 01 DB 1
07C0 43 DB 'C' 07E2 53 DB 'S'
07C1 44 DB 'D' 07E3 F5 DB SSAV AND 0FFH
07C2 45 DB 'E' 07E4 01 DB 1
D-73
079E 0A
079F 00 LSGNON EQU S-SGNON ;LENGTH OF
SGNON MESSAGE
CADR ;TABLE OF
ADDRESSES OF
D-74
07C3 46 DB 'F'
RTAB ;TABLE OF REGSTER
NFORMATON
07C4 41 DB 'A' ;REGSTER
DENTFER
D-75
D-76
07E5 50 DB 'P' 0811 9CFF U1RAM
07E6 F3 DB PSAV+1 AND 0FFH 0813 AE0E LOAD
07E7 01 DB 1 0815 4108 CODE
07E8 00 DB 0 ;END OF TABLE 0817 B70C SAVE
MARK 0819 FD00 STEP
07E9 000B79 DB 0 081B 5109 REG
07EC BOC2C2 JMP CO ;TTY CONSOLE 081D 8B01 SET
OUTPUT 081E CB00 RUN
07EF 0CC3CA JMP C ;TTY CONSOLE NPUT 0821 5C08 COD-A 00 MOVE BLOCK
07F2 0C3E95 0823 E50B 01 FLL BLOCK
07F5 D305C3 0825 DD08 02 NSERT BYTE
07F8 9503 0827 2909 03 DELETE BYTE
07FA C3C405 0829 BD08 04 BLOCK SEARCH
07FD C39005 082B 5109 05 HEX TO DECMAL
07F0 C3CA0C 082D 9F09 06 DECMAL TO HEX
07F3 3E95 CODE0 MV A, 95 082F F10B 07 PROGRAMMNG
07F5 D305 OUT CNTRL 0831 A70B 08 VERFY
07F7 C39503 JMP CODE1 0833 1502 09 FERR
0395 3EF7 CODE1 MV A, BLANK DOT 0835 1502 0A BLANK CHECK
0397 D305 OUT DATA 0837 E60A 0B BLANK CHECK
0399 C9 RET 0839 650B 0C CHKSUM
0800 08 CMDTB GO 083B 1502 0D FERR
0801 00 SET 083D A608 0E COMPLEMENT
0802 03 REG BLOCK
0803 02 STEP 083F 5B0E 0F ROLLNG DSPLAY
0804 0B SAVE 0841 0600 CODE MV B, NODOT
0805 01 CODE 0843 CDD701 CALL CLEAR
0806 0A LOAD 0846 CDF307 MV B, DTFLD
0807 0C U1 0849 06 CALL GTHEX
0808 0D U2 084A 01
0809 0E U3 084B CD2B02 JNC ERR
080A 0F U4 084E 1600 MV D, 00
080B A5FF CMDAD U4RAM 0850 7B MOV A, E
080D A2FF U3RAM 0851 FE11 CP 10
080F 9FFF U2RAM 0853 D21502 JNC ERR
D-77
D-78
0856 212108 LX H, CODEA 08AC 7E CM1 MOV A, M
0859 C3A40C JMP RMNCOD 08AD 2F CMA
085C 3EFF MOVEBLK MV A, 0FF 08AE 77 MOV M, A
085E 32BFFF STA COPYTEST 08AF 00 NOP
0861 CD780A BLMOV CALL LDAL 08B0 BE CMP M
0864 2AB9FF LHLD DSSAVE 08B1 C21502 JNZ ERROR
0867 EB XCHG 08B4 23 NX H
0868 2ABDFF LHLD SSAVE 08B5 EB XCHG
086B 3ADFFF MB1 LDA COPYTEST 08B6 CD6F0A CALL S-E
086E FE00 CP L 08B9 D2AC08 JNC CM1
0870 CA7708 JZ MB2 08BC CF RST 1
0873 7E MOV A, M 08BD CD460C BLOCKSEARCH CALL SRLD
0874 C37A08 JMP MB3 08C0 2ABDFF LHLD SSAVE
0877 CDD60B MB2 CALL READ 08C3 46 BZ MOV B, M
087A 47 MB3 MOV B, A 08C4 3AB8FF LDA SERSAVE
087B EB XCHG 08C7 B8 CMP B
087C 77 MOV M, A 08C8 CCD408 CZ DSPLY
087D 7E MOV A, M 08CB 23 NX H
087E B8 CMP B 08CC EB XCHG
087F C21502 JNZ ERR 08CD CD6F0A CALL S-E
0822 13 ND X 08D0 D2C308 JNC BS1
0823 23 NX H 08D3 CF RST 1
0824 E5 PUSH H 08D4 E5 DSPLY PUSH HL
0825 CD6F0A CALL 08D5 D5 PUSH DE
0828 D1 POP D 08D6 F5 PUSH PSW
0829 D26B08 JNC MB1 08D7 CD6203 CALL UPDAD1
088C CF RST 1 08DA C3910D JMP DSP1
088D CD46 08DD CDAA0A NSERT CALL SED ;LOAD DE
088F 2ABDFF FLL BLK LHLD SSAVE 08E0 0601 MV B, 01
0892 3AB8FF LDA SRSAVE 08E2 CDD701 CALL CLEAR ;DOT N ADDR. FELD
0895 47 MOV B, A 08E5 0E03 MV A, 03
0896 00 NOP 08E7 CDC20A CALL DTDSP
0897 77 MOV M, A 08EA 00 NOP
0898 7E MOV A, M 08EB 0600 MV B, 00
0899 B8 CMP B 08ED CD2B02 CALL GTHEX ;A
089A C21502 JNZ ERR 08F0 D21502 JNC ERROR
089D 23 NX H 08F3 EB XCHG
089E EB XCHG 08F4 22B6FF SHLD ASAVE ;A
089F CD6F08 CALL S-E 08F7 CD490C NS1 CALL SRL1 ;LOAD SR
08A2 D29208 JNC FB1 08FA 2ABBFF LHLD SESAVE
08A5 CF RST 1 08FD 54 MOV D, H ;HL:SS-SE
08A6 CD930A COMPLEMENT CALL LDSSE 08FE 5D MOV E, L
08A9 2ABDFF LHLD SSAVE 08FF 13 NX D ;DE:DS(SE+1)
D-79
D-80
0900 7E NSZ MOV A, M ;DATA AT SS 0939 CD2B02 CALL GTHEX
0901 47 MOV B, A 093C D21502 JNC ERR
0902 EB XCHG 093F EB XCHG
0903 77 MOV M, A 0940 22B4FF SHLD DASAVE
0904 7E MOV A, M 0943 000000 NOPS
0905 B8 CMP B 0946 E5 PUSH H
0906 C21502 JNZ ERR 0947 D1 POP D
0909 1B DCX DE 0948 23 NX H
090A 2B DCX HL 0949 3EFF MV A, FF
090B EB ECHG 094B 32BFFF STA COPYTEST
090C D5 PUSH DE 094E C36B08 JMP MB1
090D E5 PUSH HL 0951 0E05 HEX-DEMV C, 05
090E 2AB6FF LHLD ASAVE 0953 CDC20A CALL DTDSP
0911 EB ECHG 0956 0600 MV B, 00
0912 E1 POP HL 0958 CD2B02 CALL GTHEX
0913 7D MOV A, L 095B D21502 JNC ERROR
0914 93 SUB E 095E EB XCHG
0915 7C MOV A, H 095F 22B1FF SHLD HESAVE
0916 9A SUB D 0962 AF RAA
0917 D1 POP DE 0963 32B1FF STA CARRY LOC
0918 D20009 JNC NS2 0966 010000 LX B, 00
091B 2AB6FF LHLD TASAVE 0969 7C HD0 MOV A, H ;SEE HL=HEX
091E 3AB8FF LDA SRSAVE COUNT 00
0921 77 MOV M, A 096A B5 ORA L
0922 47 MOV B, A 096B CA8909 JZ HD3 ;OVER
0923 7E MOV A, M DSPLAY BC
0924 B8 CMP B 096E 2B DCX HL ;DECMAL
0925 C2150A CF JNZ ERROR CARRY CLEAR
0929 CDAA0A DELETE CALL SED1 096F AF XRA A
092C 0601 MV B, 01 0970 79 MOV A, C
092E CDD701 CALL CLEAR 0971 3C NR A ;NCREMENT C
0931 0E04 MV C, 04 0972 37 DAA ;DECMALLY
0933 CDC20A CALL DTDSP 0973 4F MOV C, A
0936 00 NOP
0937 0600 MV B, 00
09A1 CDC20A CALL DTDSP 09E5 FAE809 JP BRD
09A4 0600 MV B, 00 ;GET N DE 09E8 20 BR1 RM
09A6 CD2B02 CALL GTHEX 09E9 B7 ORA Z
09A9 D21502 JNC ERR ;DECMAL 09EA FAE809 JM BR1
09AC D5 PUSH DE ;NUMBER 09ED 21FAFF LX H, -6
09AD C1 POP BC ;BC:NUMBER 09F0 1E04 BR3 MV E, 04
09AE 219999 LX H, 9999;HL:9999 09F2 1D BR4 DCR E
09B1 110000 LX D, 0000 ;DE:00 HEX 09F3 C2F209 JM BR1
CNTR 09F6 23 NX H
09B4 AF XRA ;CLEAR CARRY 09F7 20 RM
09B5 00 NOP 09F8 B7 ORA A
09B6 08 DSUB ;UNSPECFED LODE 09F9 F2F009 JP BR3
HL-BC NTO HL 09FC E5 PUSH H
09B7 3E99 DH2 MV A, 99 ;9999-NUMBER 09FD 24 NR H
09B9 BD CMP L 09FE 2C NR L
09BA C2C509 JNZ DH0 09FF 22C0FF SHLD BT TME
09BD BC CMP P ;S HL 9999? 0A02 E1 POP H
09BE C2C509 JNZ DH0 ;F NO LOOP 0A03 B7 ORA A
D-81
D-82
0974 D26909 JNC HD0 ;F NO CARRY 09C1 D5 PUSH DE ;SAVE HEX COUNT
0977 AF XRA A 09C2 C3640C JP DH2 ;DSPLAY HEX
0978 78 MOV A, B COUNT
0979 3C NR A 09C5 AF DH0 XRA A ;CLEAR CARRY
097A 27 DAA 09C6 13 NX DE ;NCREMENT HEX
097B 47 MOV B, A 09C7 7D MOV A, L
097C D26909 JNC HD0 ;F NO CARRY CHECK 09C8 3C NR A ;DECMAL
097F 3AB1FF LDA CARRY LOC ADJUST
0982 3C NR A 09C9 27 DAA & NCREMENT H1
0983 32B1FF STA CARRY LOC ;CARRY 09CA 6F MOV L, A
AFTER 09CB D2B709
0986 C36909 JMP HD0 ;EACH BC 09CE AF XRA A
0989 3AB1FF HD3 LDA CARRY LOC ;DECMAL 09CF 7C MOV A, H ;DECMALLY
098C 67 MOV H, A NCREMENT
098D 68 MOV L, B ;N ADDRESS 09D0 3C NR A ;H AND
098E C5 PUSH BC ;CARRY & 09D1 27 DAA ;CONTNUE
098F CD6203 CALL MOD DAD1 ;HGHER 09D2 67 MOV H, A
BYTE OF 09D3 C3B709 JMP DH1
0992 C1 POP BC ;BCD COUNTER 09D6 FF
DATES 09D7 C30F0E SERAL JMP SRL1
0993 79 MOV A, C ;SHOWN OVER BYTE 09DA CDE309 CALL BRD
0994 CD6E03 CALL MODDTA 09DD CDFA03 CALL SGNON
0997 76 HLT 09E0 C30804 JMP GETCM
0998 TO 099E S BLANK. 09E3 20 BR0 RM
099F 0E06 DEC-HEX MV C, 06 ;DSPLAY DE 09E4 B7 ORA Z
D-83
D-84
0A04 7C MOV A, H 0A46 7B MOV A, E
0A05 1F RAR 0A47 32ACFF STA CnSAVE
0A06 67 MOV H, A 0A4A C9 RET
0A07 7D MOV A, L 0A4B 3AACFF SSTCP LDA CnSAVE
0A08 1F RAR 0A4E FE00 CP 00
0A09 6F MOV L, A 0A50 CAFD00 JZ STEP
0A0A 24 NR H 0A53 2AF2FF LHLD PCSAVE
0A0B 0606 MV B, 06 0A56 EB XCHG
0A0D C3080E JMP 6PASS 0A57 2AADFF LHLD BrSAVE
0A10 79 CNVBN MOV A, C 0A5A 7D MOV A, L
0A11 D630 SU '0' 0A5B BB CMP E
0A13 FE0A CP 10 0A5C C22601 JNZ STP20
0A15 F8 RM 0A5F 7C MOV A, H
0A16 D607 SU 7 0A60 BA CMP D
0A18 C9 RET 0A61 C22601 JNZ STP20
0A19 0601 MV B, 01 0A64 3AACFF LDA CnSAVE
0A1B CDD701 CALL 0A67 3D DCR A
0A1E 0E07 MV C, 07 0A68 32ACFF STA CnSAVE
0A20 CDC20A CALL 0A6B C3AB0C JMP SST0
0A23 000600 0A6F 2ABBFF LHLD SESAVE
0A26 CD2B02 CALL GTHEX 0A72 7D MOV A, L
0A29 D21502 NC ERROR 0A73 93 SUB E
0A2C EB XCHG 0A74 7C MOV A, H
0A2D 22ADFF SHLD BRASAVE 0A75 9A SBB D
0A30 21E20A LX H, CnADR 0A76 EB XCHG
0A33 AF XRA A 0A77 C9 RET
0A34 47 MOV B, A 0A78 CD930A LDALL CALL LDSSE
0A35 CDB702 CALL OUTOUT 0A7B 0601 MV B, 01
0A38 3E01 MV A, 01 0A7D CDD701 CALL
0A3A 47 MOV B, A 0A80 0E02 MV C, 02
0A3B 21310B LX H, 0B31 ;BLANK 0A82 CDC20A CALL
0A3E CDB702 CALL OUTPUT 0A85 000600
0A41 0601 MV B, 01 ;USE ADDRESS FELD 0A88 CD2B02 CALL GTHEX
OF DSPLAY & DOT 0A8B D21502 JNC ERR
0A43 CD2B02 CALL GTHEX 0A8E EB XCHG
D-85
D-86
0A8F 22B9FF SHLD DSSAVE 0ADC 0B
0A92 C9 RET 0ADD 14
0A93 0601 LDSSE MV C, 01 0ADE 15 SRADR
0A95 CDD701 CALL DDSP 0ADF 15
0A98 0E00 LHLD SSAVE 0AE0 05
0A9B CDC20A CALL UPDAD1 0AE1 14
0A9D 00 NOP 0AE2 15 CnADR
0A9E 0600 MV B, 0 0AE3 15
0AA0 CD2B02 CALL GTHEX 0AE4 0C
0AA3 D21502 JNC ERROR 0AE5 16
0AA6 EB XCHG 0AE6 CD160B BLANCKCHK CALL PrLOAD
0AA7 22BDFF SHLD SSAVE 0AE9 210080 LX H, 8000
0AAA 0601 MV B, 01 0AEC 000000 NOPs
0AAC CDD701 CALL 0AEF 06FF BC1 MV B, FF
0AAF 0E01 MC C, 01 0AF1 7E0000 MOV A, M NOP NOP
0AF4 B8 CMP B
0AF5 C4D408 CMZ DSPLAY
0AB1 CDD20A CALL 0AF8 23 NX H
0AB4 000600 0AF9 EB XCHG
0AB7 CD2B02 CALL GTHEX 0AFA CDD60B CALL CALC
0ABA D21502 JNC ERROR 0AFD 67 MOV H, L
0ABD EB XCHG 0AFE 2EFF MV L, FF
0ABE 22BBFF SHLD SESAVE 0B00 000000 NOP
0AC1 C9 RET 0B03 000000 NOP
0AC2 0600 DDSP MV B, 00 0B06 000000 NOP
0AC4 21CE0A LX H, SSADR 0B09 0000
0AC7 09 DTDO DAD BC 0B0B 7D BC3 MOV A, L
0AC8 09 DAD BC 0B0C 93 SUB E
0AC9 3E01 MV 01 0B0D 7C MOV A, H
0ACB C3B702 JMP OUTPUT 0B0E 9A SBB D
0ACE 0505 SSADR DCR B 0B0F EB XCHG
0AD0 05 DCR B 0B10 D2EF0A JNC BC1
0AD1 0E 0B13 CF
0AD2 0D 0B14 EF
0AD3 05 0B15 FF
0AD4 13 0B16 21310B PrLOAD LX H, PrADR
0AD5 0A 0B19 AF XRA A
0AD6 0D 0B1A 47 MOV B, A
0AD7 0A 0B1B CDB702 CALL OUTPUT
0AD8 10 0B1E 3E01 MV A, 01
0AD9 0E 0B20 47 MOV B, A
0ADA 0D 0B21 21310B LX H, 0B ;BLANK OF
0ADB 0E DSPLAY DOT
D-87
D-88
0B24 CDB702 CALL OUTPUT 0B6E 0E00 MOV C, 00
0B27 0601 MV B, 01 0B70 210080 LX H, 8000
0B29 CD2B02 CALL GTHEX ;GET HEX N 0B73 7E CH0 MOV A, M
ADDR. 0B74 81 POP D
0B2C 7B MOV A, E 0B75 4F ADD C
0B2D 32A7FF STA PrSAVE 0B76 23 NX H
0B30 C9 RET 0B77 7B MOV A, E
0B31 15 PRADR b 0B78 95 SUB L
0B32 15 b 0B79 7A MOV A, D
0B33 12 p 0B7A 9C SBB H
0B34 14 R 0B7B D2730B JNC CH0
0B35 CD900C DUPL CALL DDSP 0B7E 69 MOV L, C
0B38 3AA9FF LDA PRSAVE 0B7F 2600 MV H, 00
0B3B FE01 CP 01 0B81 CD620B LX H, CHADR
0B3D CA460B JZ DUP1 0B84 3E01 MV A,01
0B40 21FF07 LX H, 07FF 0B86 0600 MV B,00
0B43 C3490B JMP DUP2 0B88 21A50B LX H, CHADR
0B46 21FF0F DUP1 LX H, 0FFF 0B8B CDB702 CALL OUTPUT
0B49 110030 DUP2 LX D, 3000 0B8E 76 HALT
0B4C 19 DAD DE 0B8F 0000 NOPs
0B4D 22BBFF SHLD SESAVE 0B91 7B CH2 MOV A, E
0B50 EB XCHG 0B92 95 SUB L
0B51 22BDFF SHLD SSAVE 0B93 7A MOV A, D
0B54 2600 MV H, 00 0B94 9C SBB H
0B56 C3B10C JMP DUP3 0B95 E1 POP H
0B59 F7 0B96 D2710B JNC CH0
0B5A 0B 0B99 CD6203 CALL UPDAD1
0B5B CD880C COPY CALL CDSP 0B9C 3E01 MV A, 01
0B5E AF XRA A 0B9E 21A50B LX H, CHADR
0B5F 32BFFF CHKSUM STA COPYTEST 0BA1 CDB702 CALL GTHEX
0B62 C36108 JMP BLMOV 0BA4 76 HALT
0B65 CD160B CALL PrLOAD 0BA5 0C CHADR NR C
0B68 CDD60B CALL CALC 0BA6 00 NOP
0B6B 57 MOV D, A 0BA7 0000 VERFY NOP
0B6C 1EFF MOV E, FF 0BA9 CD800C CALL VDSP
D-89
D-90
0BAC 2AB9FF LHLD DSSAVE 0BF4 2AB9FF LHLD FF89
0BAF EB XCHG 0BF7 EB XCHG
0BB0 2ABDFF LHLD SSAVE 0BF8 2ABDFF LHLD FFBD
0BB3 EB XCHG 0BFB 7E MOV A, M
0BB4 46 VFY1 MOV B, M 0BFC 47 MOV B, A
0BB5 EB XCHG 0BFD EB XCHG
0BB6 7E MOV A, M 0BFE 77 MOV M, A
0BB7 EB XCHG 0BFF E5 PUSH H
0BB8 B8 MOV A, M 0C00 C5 PUSH B
0BB9 78 XCHG 0C01 F5 PUSH PSW
0BBA C4D408 CMP B 0C02 D5 PUSH D
0BBD 23 NX H 0C03 0600 MV B, 00
0BBE 13 NX D 0C05 CD6203 CALL 0362
0BBF E5 PUSH HL 0C08 D1 POP D
0BC0 2ABBFF LHLD SESAVE 0C09 D5 PUSH D
0BC3 7D MOV A, L 0C0A EB XCHG
0BC4 93 SUB E 0C0B 0600 MV B, 00
0BC5 7C MOV A, H 0C0D 7E MOV A, M
0BC6 9A SBB D 0C0E CD6E03 CALL 036E
0BC7 E1 POP H 0C11 D1 POP D
0BC8 00 NOP 0C12 F1 POP PSW
0BC9 D2B40B JNC VFY1 0C13 C1 POP B
0BCC CF RST 1 0C14 E1 POP H
0BCD E5 0C15 7E MOV A, M
0BCE CD6E03 0C16 B8 CMP B
0BD1 F1 0C17 C21502 JNZ 0215
0BD2 CD6E06 0C1A 13 LDAX D
0BD5 76 0C1B 23 NX H
0BD6 3AA9FF CALC LDA $20A9 0C1C E5 XCHG
0BD9 47 MOV B, A 0C1D CD6F0A CALL 0A6F
0BDA 3E03 MV A, 03 0C20 D1 POP E
0BDC 37 STC 0C21 D2FB0B JNC 0BFB
0BDD 17 RAL 0C24 CF RST 7.5
0BDE 05 DCR B 0C25 00 NOP
0BDF F2DC0B JP 0BDC 0C26 D5 PUSH DE
0BE2 C680 AD 80 0C27 11FF19 LX D, 19FF
0BE4 C9 RET 0C2A CDF105 CALL DELAY
0BE5 CD460C CALL SRKD 0C2D D1 POP DE
0BE8 CD8F08 JMP 088F 0C2E 7A MOV A, D
0BEB 000000 NOPs 0C2F F660 OR 60
0BEE 0000 NOPs 0C31 D302 OUT 02
0BF0 00 PROGRAM NOP 0C33 13 NX D
0BF1 CD780A CALL 0A78 0C34 23 NX H
D-91
0C35 EB XCHG
0C36 E5 PUSH H
0C7B 0E00 MV C, 00
0C7D C36B0C JMP MESG
D-92
0C37 2ABBFF LHLD SESAVE 0C80 CD780A VDSP CALL LDALL
0C3A 7D MOV A, L
0C3B 93 SUB E
0C83 0E01 MV C, 01
0C85 C36B0C JMP MESG
0C3C 7C MOV A, H 0C88 CD160B CDSP CALL PRLOAD
0C3D 9A SBB D
0C3E E1 POP H
0C8B 0E02 MV C, 02
0C8D C36B0C JMP MESG
0C3F EB XCHG 0C90 CD160B DDSP CALL PRLOAD
0C40 D20E0C JNX PRO
0C43 C3360E JMP PR1
0C46 CD830A SRKD CALL LDSSE
0C49 21DE0A LX H, SRADR
0C4C AF XRA A
0C4D 47 MOV B, A
0C4E CDB702 CALL OUTPUT
0C51 3E01 MV A, 01
0C53 47 MOV B, A
0C54 CDB702 CALL OUTPUT
0C57 0601 MV B, 01
0C59 CD2B02 CALL GTHEX
0C5C D21502 NC ERR
0C5F 7B MOV A, E
0C60 32B8FF STA SRSAVE
0C63 C9 RET
0C64 CDD701 DH2 CALL CLEAR
0C67 E1 POP HL
0C68 C38D0D JMP DH3
0C6B C5 MESG PUSH BC
0C6C CDD701 CALL CLEAR
0C6F C1 POP BC
0C70 0600 MV B, 00
0C72 21980C LX H, PADR
0C75 C3C70A JMP DDO
0C78 CD780A PDSP CALL LDALL
0C93 0E03 MV C, 03
0C95 C36B0C
0C98 b 15 BLANK
0C99 p 12 P
0C9A b 15 BLANK
0C9B V 17 U
0C9C h 15 BLANK
0C9D r OR 0C C
0C9E b 15 BLANK
0C9F D 0D D
0CA0 B 15 BLANK
0CA1 S 05 S
0CA2 b 15 BLANK
0CA3 L 11 L
0CA4 19 RMNC0D DAD D
0CA5 19 DAD D
0CA6 7E MOV A, M
0CA7 23 NX H
0CA8 66 MOV A, M
0CA9 6F MOV L, A
0CAA E9 PCHL
0CAB C22601 SST0 JNZ STP20
0CAE C3FD00 JMP STEP
0CB1 22B9FF DUP3 SHLD SSAVE
0CB4 C3F70B JMP PROG
D-93
D-94
0CB7 CD930A SAVE CALL LDSSE ;GET SS AND 0D0A 57 MOV D, A
SE BLOCK 0D0B 23 NX HL
LMT 0D0C 0B DCX BC
0CBA 21550D LX H, FnSAVE ;DSPLAY Fn 0D0D 78 MOV A, B
0CBD CD190B CALL PrLOAD 0D0E B1 ORA C
0CC0 32BAFF STA FnSAVE 0D0F 7A MOV A, D
0CC3 0E04 MV C, 04 0D10 C2090D JNZ SUM0
0CC5 CD6B0C CALL MESG 0D13 B7 ORA A
0CC8 CD040D CALL CHKSUM1 ;SAME FLE NAME 0D14 C9 RET
0CCB 32BFFF STA (CHSAVE) ;SAVE CHECKSUM 0D15 5E TAPEOUT MOV E, M ;OUTPUT A MEMORY
0CCE 21A00F LX H, 4000D BLOCK TO
0CD1 DA1502 JC ERROR ;MSMATCH ERROR 0D16 CD210D CALL OUTBYTE ;TAPE
0CD4 CD590D CALL 1KOUT ;1KHz LEADER FOR 4 0D19 23 NX HL
SEC. 0D1A 0B DCX BC
0CD7 21BAFF LX H, BUSTADR ;BUFFER START 0D1B 78 MOV A, B
ADDRESS 0D1C B1 ORA C
0CDA 010600 LX B, 0006 ;6 PARAMETER OP 0D1D C2150D JNZ TAPEOUT
0CDD CD150D CALL TAPEOUT ;SEND Fn,SE,SS & 0D20 C9 RET
CHECKSUM 0D21 1608 OUTBYTE MV D, 08
0CE0 21A00F LX H, 4000 0D23 B7 ORA A
0CE3 CD5E0D CALL 2KOUT ;O/P 2KHz MDSYNC. 0D24 CD350D CALL OUTBT
0CE6 CDF50C CALL GETPARA ;SET SS AND BLOCK 0D27 7B MOV A, E
COUNT 0D28 0F RRC
0CE9 CD150D CALL TAPEOUT 0D29 CD690F CALL OUTBT
0CEC 21A00F LX H, 4000D 0D2C 15 DCR D ;8 BT DATA
0CEF CD5E0D CALL 2KOUT ;2KHz END SYNC. 0D2D C2270D JNZ 0B
0CF2 C34E00 JMP SGNON ;FrEnd 0D30 37 STC
0CF5 2ABBFF GETPARA LHLD SESAVE 0D31 CD350D CALL OUTBT ;STOP BT
0CF8 EB XCHG 0D34 C9 RET
0CF9 2ABDFF LHLD SSAVE ;THS RETURN SS N 0D35 E5 OUTBT PUSH H
HL 0D36 D5 PUSH D
0CFC 7B MOV A, E ;AND BYTE COUNT N BC 0D37 C5 PUSH B
0CFD 95 SUB L 0D38 2600 MV H, 00
0CFE 4F MOV C, A 0D3A DA470D JC OUT1
0CFF 7A MOV A, D ;BC=DE-HL=SE-SS 0D3D 2E08 MV L, 08
0D00 9C SBB H 0D3F CD5E0D CALL 2KOYT
0D01 47 MOV B, A 0D42 2E02 MV L, 02
0D02 03 NX B ;BC=BYTE COUNT HL:SS 0D44 C34E0D JMP OUT2
0D03 C9 RET 0D47 2E04 MV L, 04
0D04 CDF50 CHKSUM CALL GETPARA ;GET PARAMETER 0D49 CD5E0D CALL 2KOUT
0D07 D8 RET 0D4C 2E04 MV L, 04
0D08 AF XRA A 0D4E CD590D CALL 1KOUT
0D09 86 SUM0 ADD A, HL 0D51C1 POP B
0D76 1608 MV D, 08 0DBC C8 RZ
0D78 CD170F GET0 CALL GETBT 0DBD FE12 CP DCR
0D7B 7B MOV A, E 0DBF C2CF01 JNZ SUB15
0D7C 1F RAR 0DC2 C9 RET
0D7D 5F MOV E, A 0DC3 F1 NRDCR POP PSW
0D7E 15 DCR D 0DC4 2AF6FF LHLD CURAD
0D7F C2780D JNZ GET0 0DC7 FE10 CP NR
0D82 CD170F CALL GETBT ;STOP BT BYPASSED 0DC9 C2D00D JNZ DCR
0D85 C9 RET 0DCC 23 NX H
0D86 1D BT1 DCR E 0DCD C3C701 JMP SUB 20
0D87 C2860D JNZ BT1 0DD0 FE12 DCR CP DCR
D-95
D-96
0D52 D1 POP D 0D8A 20 RM
0D53 E1 POP H 0D8B 17 RAL
0D54 C9 RET 0D8C C9 RET
0D55 15 FnADR BLANK 0D8D CD6203 DH3 CALL UPDAD1
0D56 15 BLANK 0D90 76 HLT
0D57 0F F 0D91 F1 DSP1 POP PSW
0D58 16 n 0D92 CD6E03 CALL UPDAD1
0D59 0E61 1KOUT MV C, F1K 0D95 CDE702 DSP2 CALL RDKBD
0D5B C3600D JMP TONE 0D98 FE10 CP 11
0D5E 0E2E 2KOUT MV C, F2K 0D9A C2950D NZ DSP2
0D60 29 TONE DAD HL 0D9D D1 POP DE
0D61 3EC0 MV A, C0 0D9E E1 POP HL
0D63 C5 SQW PUSH B 0D9F C9 RET
0D64 30 SM 0DA0 C2490D LOAD3 NZ LOAD2
0D65 0D TP DCR C 0DA3 C34500 JMP CMMND
0D66 C2650D JNZ TP 0DA6 FE12
0D69 EF80 XR 80 0DA8 C21502
0D6B 47 MOV B, A 0DAB 3AFDFF PRVRG LDA RGPTR
0D6C 2B DCX H 0DAE FE00 CP 00
0D6D 7C MOV A, H 0DB0 CAF702 JZ RETF
0D6E B5 ORA L 0DB3 3D DCR A
0D6F 78 MOV A, B 0DB4 32FDFF STA RGPTR
0D70 C3640F JMP EXT 0DB7 C3FA02 JMP RETT
0D73 CD170F GETBYTE CALL GETBT ;OP DATA N E 0DBA FE10 CHK CP NR
D-97
D-98
0DD2 C2CF01 JNZ SUB15 0E2B 3E82 CLD0 MV A, 82
0DD5 2B DCX H 0E2D 0000 OUT 03
0DD6 C3C701 JMP SUB20 0E2F 3EF0 MV A, F0
0DD9 FE10 VALCH CP NR 0E31 D302 OUT 02
0DDB CA6702 JZ GTH25 0E33 C30800 JMP CLDBK
0DDE FE12 CP DCR 0E36 3E82 PR1 MV A, 82
0DE0 CA6702 JZ GTH25 0E38 D303 OUT 03
0DE3 C3C500 JMP GTH30 0E3A 3EF0 MV A, F0
0DE6 FE12 PRRG CP DCR 0E3C D302 OUT 02
0DE8 C21502 JNZ ERR 0E3E C3AD0B JMP VFY0
0DEB CDAB0D CALL PRVRG 0E41 3AA9FF READ1 LDA PrLOAD
0DEE C3C500 JMP 00C5 0E44 FEFF CP FF
0DF1 0603 3PASS MV B, 03 0E46 CA4C0E JZ READ2
0DF3 C3F80D JMP BTSPAS 0E49 C3D60B JMP READ
0DF6 0606 0E4C 7E READ2 MOV A, M
0DF8 2AC0FF BTSPAS LHLD BTTME 0E4D C9 RET
0DFB 2D BP DCR L 0E4E FFFF
0DFC C2FB0D JNZ BP 0E50 3E08 COMPARE MV A, 08
0DFF 25 DCR H 0E52 30 SM
0E00 C2FB0D JNZ BP 0E53 3EFF MV A, FF
0E03 05 DCR B 0E55 32A9FF STA PrLOAD
0E04 C2F80D JNZ BTSPAS 0E5B 217C0E ROLLNG LX H, STRNG
0E07 C9 RET ;HL:STRNG
0E08 2C 6PASS NR L ADDRESS
0E09 229AFF SHLD HALFBT 0E5E E5 DSP PUSH HL ;HL:SAVE
0E0C C3F80D JMP BTSPAS ADDRESS
0E0F 21250E SRL1 LX H, SERADR 0E5F AF ROLL1 XRA A ;A=0
0E12 AF XRA A ADDRESS
0E13 47 MOV B, A 0E60 47 MOV B, A ;NO DOT
0E14 CDB702 CALL OUTPT 0E61 CDB702 CALL OUTPT
0E17 21290E LX H, ALADR 0E64 3E01 MV A, 01 ;USE DATA
0E1A 3E01 MV A, 01 FELD
0E1C CDB702 CALL OUTPT 0E66 0600 MV B, 00 ;NO DOT
0E1F 3E0C MV A, 0C 0E68 CDB702 CALL OUTPT
0E21 30 SM 0E6B 11FFFF LX H, FFFF ;FULL
0E22 C2DA09 JMP SRL2 DELAY
0E25 S 05 0E6E CDF105 CALL DELAY
0E26 E 0E 0E71 7E MOV A, M ;FF S END OF
0E27 r 14 STRNG
0E28 13 0E72 FEFF CP EOS ;GET BACK
0E29 A 0A START
0E2A L 11 0E74 E1 POP H ;ADDRESS
NCREMENT
0E75 23 NX H ;F NOT AT EOS
0E76 C25E0E JNZ ROLL1 ;F NOT AT EOS 0E9B 13
0E79 C35B0E JMP ROLLNG 0E9C 16 n
0E9D 19 G
THE STRNG: 0E9E 15 BLANK
0E7C 15 BLANK 0E9F 17 U
0E7D 15 BLANK 0EA0 12 P
0E7E 15 BLANK 0EA1 FF EOS
0E7F 15 BLANK
0E80 15 BLANK MEMO Y LOACTON USED :
0E81 0D d
0E82 1B y 2080 15
0E83 16 n 2081 15
0E84 0A A 2082 X
0E85 11 L 2083 Y
0E86 1C o 2084 CD(GENERATED)
0E87 19 G 2085 AB(GUESSED)
0E88 15 BLANK 2086 0D
0E89 18 h 2087 D0
0E8A 0E E 2088 C0
0E8B 11 L 2089 0C
0E8C 12 P 208A A0
0E8D 05 S 208B B0
0E8E 15 BLANK 208C
0E8F 1B y 208D
0E90 1C o 208E
0E91 17 U 208F CMTR
0E92 15 BLANK 2090 (RANDOM N BETWEEN)
0E93 13
0E94 16 n 0EA2 CD730D PAPEN CALL GETBYTE ;MEMORY
0E95 15 BLANK BLOCK FROM
0E96 11 L HL
0E97 0E E 0EA5 73 MOV M, E ;COUNT N BC
0E98 0A A 0EA6 23 NX HL
0E99 14 r 0EA7 0B DCX BC
0E9A 16 n 0EA8 78 MOV A, B
D-99
D-100
R
SYNC. 0F29 DA330F JC 2KP
0EE4 F1 POP PSW 0F2C 2D DCR L
0EE5 47 MOV B, A
0EE6 DA1502 LDA Fn
0EE9 B8 CMP A, B 0F2D 2D DCR L
0EED CDF50C CALL GETPARA ;FLE NOT FOUND 0F2E 26FF MV H, FF
0EF0 DA1502 JC ERROR
0EF3 CDA20E CALL TAPEN 0F30 C3210F JMP GB0
0EF6 DA1502 JC ERROR ;LLEGAL 0F33 2C NR L
PARAMETER 0F34 7C MOV A, H
0EF9 CD040D CALL CHKSUM1 0F35 FE00 CP 00
0EFC 21BFFF LX H, CHSAVE
0EFF FE CMP A, M ;COMPARE DATA 0F37 CA210F JZ GB0
SUMWTHTAPE SUM 0F3A 7D MOV A, L
0F00 C21502 JNZ ERROR 0F3B 17 RAL
0F03 2ABDF LHLD SSAVE 0F3C E1 POP H
0F3D D1 POP D
D-101
D-102
0EA9 B1 ORA C 0F06 CD6203 CALL MODAD1 ;DSPLAY
0EAA C3490F JMP TAPEN START
0EAD FF ADDRESS ON
0EAE 21550D LX HL, (FnADR) ;GET Fn 0F09 76 HALT ;ADDRESS
0EB1 CD190B CALL PrLOAD FELD FOR
0EB4 0E05 MV C, 05 YOUR REF.
0EB6 CD6B0C CALL MESG ;L DSPLAY 0F0A 0603 1.5 SEC MV B, 03
0EB9 21E803 LX HL, 1000D 0F0C 11FFFF LOOP0 LX D, FFFF
0EBC CD410F CALL PEROD ;NC:1KHz 0F0F CDF105 CALL DELAY ;5 X 3 = 1.5
0EBF DAB90E JC LOAD0 ;LOOP UNTL SYNC SEC. DELAY
1KHz DOT 0F12 05 DCR B
0EC2 2B DCX HL 0F13 C20C0F JNZ LOOP0
0EC3 7C MOV A, H ;LEADNG SYNC 0F16 C9 RET
1000? 0F17 C5 GETBT PUSH B
0EC4 B5 ORA L 0F18 D5 PUSH D
0EC5 C2BC0E JNZ LOAD1 0F19 E5 PUSH H
0EC8 CD510E CALL PEROD 0F1A AF XRA A
0ECB D2C80E JNC LOAD2 0FAB 32FFFF
0ECE 21BAFF LX HL, BUFFST 0F1E 210000
0ED1 010600 LX B, 0006 0F21 CD510F GB0
0ED4 CDA20E CALL TAPEN ;GET Fn SE SS & CHK 0F24 14
0ED7 DAB90E JC LOAD0
0EDA 3ABAFF LDA (TAPEF n)
0EDD F5 PUSH PSW 0F25 15
0EDE CD6E03 CALL MODDT1 ;Fn S DATA FELD 0F26 C2400F
0EE1 CD0A0F CALL 1.5 SEC ;PASS OUT 2KHz
STA CARRY TEMP.
LX H, 0000
CALL PEROD
NR D ;NON
DESTRUCTV
E TESTNG
DCR D
JNZ TOOMUCH ;D 0 LONG
PEROD
;FOR 1KHz
DECREMENT
BY 2
;1KHz END OF
THS BT
;H=00 2KHz S
FRST
;L=(=/2KHz PEROD)-2
D-103
0F3E C1 POP B ;(=/ 1KHz PEROD)
0F3F C9 RET ;L+CARRY=0
8(2K),2(1K)
0F40 3EFF TOOMUCH MV A, FF ;L-CARRY=1
4(2K),4(2K)
0F42 32FFFF STA CARRY TEMP ;ERROR
WHLE READNG
0F45 E1 POP H
0F46 D1 POP D
0F47 C1 POP B
0F48 C9 RET
0E49 C2A20E TAPENO JNZ TAPEN ;CARRY = 1 F
ERROR
0F4C 32FFFF LDA CARRY TEMP 0 NO ERROR
0F4F 17 RAL
0F50 C9 RET
0F51 110000 PEROD LX D, 0000
0F54 20 RM ;GET N SD BT
0F55 13 NX D
0F56 17 RAL ;CARRY = BT
0F57 DA540F JC PH ;10+7 F CARRY PASS
HGH BT
0F5A 20 RM
0F5B 13 NX D
0F5C 17 RAL ;F NO BT 0 PASS
LOW BT
0F5D D25A0F JNC OF5A
0F60 7B MOV A, E
0F61 FE55 CMP A, THRSn ;F E
TRESHOLD 1 KHz
0F63 C9 RET ;F E TRESHOLD 2
KHz
0F64 C1 POP B ;D 0 TOO MUCH
0F65 C2630D JNZ SOW ;LOOP COUNT 2KHz =
57
D-104
0F68 C9 RET 1KHz = 114
0F69 5F NOB MOV C, A
0F6A C3350D JMP OUTBT
0F6D 3E60 BYTER MV A, 60
0F6F D302 OUT 02
0F71 60 NOP
0F72 3E30 MV A, 30
0F74 D302 OUT 02
0F76 11FF68 LX D, 200ms ;PREPARE
FOR 200ms
PHASE
0F79 CDF105 CALL DELAY
0F7C 3E60 MV A, 60
0F7E D302 OUT 02
0F80 0000 NOPs
0F82 3EF0 MV A, 60
0F84 D302 OUT 02
0F86 3E00 MV A, 00
0F88 32A7FF STA PrSAVE
0F8B C3E900 JMP BC0
0F8F FF
0F90 TO 0FFF S UNUSED ROM. T S AVALABLE FOR THE
USER.
1000 TO 11FF S USED FOR UPLOADNG & DOWNLOADNG
MON SOFTWARE (APPENDX F)
1200 TO 1FFF S UNUSED ROM & S AVALABLE FOR THE
USER
D-105
(PP6&'%A 6
P78'6'976 F87 9P18('%&G (&'
'8W&18('%&G
9Dloading 8Derating %nstru<tions
For Uploading DYNA-85 kit should be in serial mode.
1. Short P13 and P14 for serial mode.
2. Connect serial cable between the serial port of PC and serial
connector J6 of DYNA-85 kit.
3. Run tange on PC.
4. Press F9 and wordsize 7 bit.
5. Press reser of DYNA-85. Then press space key of terminal
keyboard. Message MCROFREND-1 and ". Prompt is
displayed in the screen.
Note : f wordsize is 8 message displayed is "CaSRhj4RQ4YV
and ". Prompt. Just gnore this message and do the following
for uploading.
6. For Uploading (from kit to PC)
a. Type G1100 (ENTER)
b. Specify SS (source start) on prompt "SOURCE START.
c. Press Enter.
d. Specify SE (source end) on prompt "SOURCE END.
e. Press F9.
f. Press L to capture file.
g. After specifying the file name press enter.
h. Message "Capturing file is displayed at the top of the
screen.
D-106
i. Press enter.
Data to be transmitted to the file is displayed on the
screen while transmitting .
After complete data tranmission ". Prompt appears on
the screen.
j. Press F9.
k. Press L to end capture. Then on prompt "Verify (y/n)
press "y key and then enter.
Uploading ends here.
'oCnloading 8Derating %nstru<tions
For Downloading DYNA-85 kit should be in serial mode.
1. Short P13 and P14 for serial mode.
2. Connect serial cable between the serial port of PC and serial
connector J6 of DYNA-85 kit.
3. Run tango on PC.
4. Press F9 and set wordsize 7 bit.
5. Press reset of. DYNA-85. Then press space key of terminal
keyboard.Message MCROFREND-1 and ". Pronpt is displayed
on the screen.
Note : f wordsize is 8 message displayed is "CaSRhj4RQ4YV
and ". prompt. Just ignore this message and do the following for
downloading.
D-107
6. For Downloading (from PC to kit)
a. Type G1000.
b. Press Enter.
c. Specify SS on prompt "source start and press enter.
d. Press F9.
e. Press m to transmit file.
f. Enter file name.
g. Press Enter.
h. Press F9.
i. After transmitting a file fully,. Prompt is displayed in the
screen .
Downloading ends here.

You might also like