Download Ipso Facto Issue 16

Transcript
--
----------------------
•
INDEX
111~
P!,-f-
. MARCH 1980.
A.C.E. EXECUTIVE COMMITTEE ..•.......•....•....•...••.•. ·2
EDITORIAL COMMENTS .•.•.....•....••..••••.•••...•.•.••.•. 3
THE MONITOR ••••••••••• _:_
11
A COMPARISON OF NETRONICS AND QUEST: "FULL BASIC" •••..• 19
ROLL OVER HEX WHILE LOADING ..•...•......• i • • • • • • • • • • • • • 21
SOFTWARE FOR THE ETI 2708 EPROM PROGRAMMER .••.•••.•.••. 22
LETTERS TO THE EDITORS •...••...•.•..•.....•.•.....•...• 24
SOME THOUGHTS ON DEVICE INPEPENDENT 1/0 ......•...•.•..• 25
THE 1/Nth DEGREE .•.••.••.•..•.•...•.......•..••.•••••.• 27
•
8K EPROM MEMORY BOARD .••••••.•..••..••••....••••.•••.•• 28
SOME THOUGHTS ON THE FUTURE OF THE 1802.••.•.•••.•....• 30
FUTURE MEETINGS AND NEW LOCATION ••........••..••..••..• 32
ITEMS FOR SALE ••..•••••••••••••••••••••.••••••••••••••• 33
ASSEMBLY LISTING FOR COSMAC GRAPHICS PROGRAM .......•••• 33
PROTO BOAR D•••• '• ••••• '•••.•••••••••••••••••••••••••••• • • 110
BYTE CONTROL 1811 .•.••...••.•.•....•.••.•.•..•.•..•••••• !t3
MINUTES OF ACE MEETINGS ••.•••••.•••....•.•.•...•..••••• 50
64K DECODING FOR TEKTRON MEMORY ..•••...•.••...•.••...•• 51
CUDDLY SOFTWARE: A PRODUCT REVIEW •.•....•.•.•••....•••• 52
ERRATA ••••••••••••••••••••••••••••••••••••••••••••••••• 511
PALO ALTO TINY BASIC INTERPRETER ••.•••.•.•.•... ,•.•••••. 55
NEW PRODUCT: SUPER ISOLATOR .•.....••.•......•...•.•..•• 55
MEMBERSHIP INFORMATION ••.........•...••.•..•..••..•..•• 56
IPSO FACTO is published by the ASSOCIATION OF COMPUTER
EXPERIMENTERS
(A.C.E),
a
non-profit,
educational
organization. Information contained in IPSO FACTO is
belieVed
to be accurate and reliable. However, no
responsibility is assumed by
IPSO
FACTO
or
the
ASSOCIATION OF COMPUTER EXPERIMENTERS for its use; nor
for any infringements of patents or other rights of third
parties which may result from its use.
•
Send newsletter correspondence to
>
Bernie Murphy,
102 McCraney St.,
Oakville, Ontario,
Canada.
L6H 1H6
•
PAGE:
2
•
1979-1980 ACE EXECUTIVE COMMITTEE
PRESIDENT
Ken Bevis
220 Cherry Post Rd.
Toronto, ONT., L5A 1H9
416-277-2495
TREASURER
Mike Franklin
24 Duby Rd,
Acton, ONT., L7J 2P1
519-853-3421
ASSOCIATE EDITOR
Vic Kushnir
2640 Barnstone Cr.,
Mississauga, ONT., L5K 2C1
416-822-6505
ASSOCIATE EDITOR
Earle Laycock
2772 Hollington Cres.,
Mississauga, ONT, L5K 1E7
416-823-1345
ASSOCIATE EDITOR
Bob Silcox
562 Forestwood Cr.,
Burlington, ONT., L7L 4K3
416-681-2848
CONSULTING EDITOR
Bernie Murphy
102 McCraney St.,
Oakville, ONT., L6H 1H6
416-845-1630
D R A F T I N G J . Myszkowski
99 Augusta St.,
Hamilton, ONT.
416-529-0250
MEMBERSHIP CO-ORDINATOR
Blair Gerrish
2110 Prospect St., Apt. 3,
Burlington, Ont., L7R 1Y9
416-634-0268
HARDWARE CO-ORDINATOR
Fred Feaver
105 Townsend Ave.,
Burlington, ONT., L7T 1Y8
416-637-2513
PROGRAM CO-ORDINATOR
Fred Pluthero
1013 Upper Wellington St.,
Hamilton, ONT., L9A 3S4
416-389-4070
PUBLISHING COMMITTEE
Dennis Mildon
44 Wildewood Ave.,
Hamilton, ONT., L8T 1X3
416-385-0798
John Hanson
955 Harvey Place,
Burlington, Onto L7T 3E9
416-637-1076
•
•
•
PAGE:
•
3
EDITORIAL COMMENTS
As mentioned elsewhere in this issue, A.C.E. meetings will be
returning to the Stelco Auditorium in Hamilton, beginning in April.
The Oakville location which we have been using for the past few
meetings was excellent in almost every respect, but unfortunately,
turnout at these meetings has been rather poor -consistently so, and
so we felt that if we were getting fewer members out to meetings,
then apparently the membership in this area generally prefer the old
location. If there are any who have not been coming out because of
the move to Oakville, we hope to see you again starting with the
April 8 meeting (starting time 7:30 P.M.).
•
As noted on the back cover, we are now entirely sold out of
back issues 1-12, so please do not send in any further orders for
them. Work is currently in progress on our collection of the best
material from these issues, and this collection, tentatively titled
'De Facto', should be available before too long.
We cannot yet
specify the exact price (this will depend on a number of factors,
such as number of pages that we wind up with), or the exact date of
availability, so please do not send in orders at this time. We hope
to be able to supply this information before too long -- in issue 18
at the latest. 'De Facto' will be sold as loose leaf pages, with
3-hole punch, a cardboard cover, and plastic wrapping so that it
will survive the rigors of travelling through the postal system.
This format will, among other advantages, keep the cost at a
minimum, and make it fairly straight-forward to supply supplementary
volumes for issues beyond number 12 at a later date.
We have received two offers to serve as Education Co-ordinator,
and hope to feature material from one or both of these people in
upcoming issues.
•
The annual meeting is still a couple of months away, but it is
not too soon to start thinking about candidates for next year's for
next year's executive. In particular, the position(s) associated
with editing of the club newsletter may prove very difficult to
fill. The success of Ipso Facto, and its consequent growth from a
small newsletter into a more substantial publication, has brought
with it new problems, in that producing it can no longer be handled
by one person as it was originally. Availability of word-processing
equipment, or similar automatic e qi.t pmen t is almost a necessity for
producing it at its present size -- hand-typing a manuscript of this
size for each issue would keep a typist busy for a long time.
A
recent executive meeting addressed this problem without any definite
solution, after considering a number of ideas, such as assigning
responsibility for each issue to a different group of people. Ideas
on how we can keep Ipso Facto going -at its present level, in terms
of both quantity and quality, would be much appreciated. Even
better would be offers to take part in this unde~taking.
Please
give it some thought.
>
~teve
PAGE:
2510
4
THE MONITOR
"1eS
DellS
St.
Bossier City, LA
71111
As I did more and more machine language programming on ., Elf,
I realized that I needed a mOnitor with more than the usual memoryj
cassette routines. After looking over all the monitors available for
the 1802, I decided that none of them would meet all of my needs.
That's when I decided to design a custom monitor for my Elf.
I then sat down and tried to think of what commands I would
need now and in the future. After much consideration, the following
10 commands were chosens
1. Execute - X,P can be set to any value except 0 or 1.
2. Memory Examine/Load.
3. Register Examine/Load.
4. Breakpoint Insertion.
S. Fill memory with a byte.
6. Move a block of memory from one location to another.
7. Search memory for a varible length string of bytes.
8. Cassette Routines Save - Load - Verify at either 300 or 1200 baud using
named files of any length up to 16 characters (modified
Ipso Facto standard).
Another feature of this monitor is the ability to add to the
command set Without having to change any code in ROM. This is accomplished
by having the table lookup routine vectored through System RAM.
The first application of this feature will be the addition of an
EDITOR - ASSEMBLER to the monitor. Also, future plans include a BASIC
Pseudo-Compiler to be called by a monitor command. The actual operation
of this feature will be discussed in more detail later on in the article.
Other miscellaneous niceities of this monitor includes
1. Totally transparent to the calling program. D,DF, and
all registers except R(O) and R(1) are saved.
2. I/O vectored through System RAM. This allows the user
to dynamically change the I/O device while the program
is executing.
3. Eight Level Interrupts supported.
4. 12 utility subroutines available to the caller's program
through the SCRT subroutine convention.
As mentioned earlier in the article, this monitor requires a
block of memory to be dedicated as System RAM. This block (256 bytes)
can be located anywhere in memory. However, I recommend 9800 since the
Quest Super Elf already has memory there. The purpose of the System RAM
is for temporary storage of the buffer, register save area, stack, and
other varibles used by the monitor. Future additions to the monitor
will also use this RAM. A memory map of the System RAM is shown in
Figure 1.
After this monitor was written and debugged, I noticed I had a
little memory left over in the R page. Not wanting to waste good memory,
I decided to include software to drive a keyboard and memory mapped
video display (since I already had the board). After talking to some
friends, they asked if it would be possible to add a driver routine
for a RS-232 device. Since the monitor was designed to be independent
of I/O, there are no restrictions on the type of I/O software used.
Even though I have not given much thought to an RS-232 scheme, I am
sure the software Uart routines in the monitor could be used to
accomplish this.
•
•
•
PAGE:
•
S 00 - S 3F .
:§: 40 - :§: 5B
.§. 5c
S,5D
§:5E
S 5F - S 63
S 64 - S 66
S 67 - S 69
S 6A - S so
-S
6D - S 6F
-
.§. 70 - .§. 7F
•
S 80 - S 8F
S 90 - S CF
S DO - S FF
5
Input Buffer (64 characters wide)
Register storage (R(2).1 at S 40, R(2).0 at S 41,
• ••••R(F).O at ~ 5B)
DF of user's program stored
D register stored
X,P of user's program stored. This value defaults
to 2,.3. For other values of X,P , change
this location to the desired value.
Break location and contents stored
Long jump to Input routine (defaults to f 97)
Long jump to Output routine (defaults to f 9C)
Long jump to SoftWare Interrupt routine. When
the user's program executes a SWI (bytes
22 79 D1), control is vectored through
this location. (defaults to monitor·location
1. 04)
End-of-table pointer. This pointer defaults to
the area immediately after the monitor. It
is in this area that I plan to put future
additions to the monitor. If the user wishes
to add other commands, this pointer can be
changed to point to his table elsewhere in
memory.
Interrupt Vector: storage •.Vector. 7 is stored first,
followed:by vector.6, and so on. All vectors
except vector 0 default to NOP. Vector 0
defaults to the SWI routine, location L 71Cassette file name storage. (Note I the filename is stored backwards)
Unused
Monitor stack.
Figure 1.
••
While On the subject of I/O, I should mention that all input to the
monitor is first stored in a buffer. This allows the user to backspace
over any errors and correct the mistakes before typing a OR. The only
exception to this is in the Memory or Register Examine commands. While in
this mode, any input from the I/O. device is used directly by the command.
Before continuing on to discuss the commands, two bits of information
concerning my notation might be helpful. First, the monitor does not
require the commands to be entered in any particular format. The monitor
will ignore any excess characters entered. As long as the information is
in there somewhere, the monitor will accept it. For example, suppose the
operator types 'Memory Examine Location 0.300 Hex', the monitor will interpret
this as 'ME 0.300'. There are a few basic syntax rules, however.
1. All commands must begin in column 1.
2. There must be a.t least one space between the command and
any parameters •
.3. All parameters must consist of either 2 or 4 consecutive hex
digits, depending on the parameter •
PAGE:
6
Note that with this arrangement, commands can be abbreviated. All that
is needed by the monitor is the abbreviation that would make the command
unique. Later on, in the discussion of the commands, the abbreViation of
the command will be shown as both capitalized and underlined letters, with
optional letters being lowercase (i.e. BReak).
Concerning the second part of my notation, all references to the high
order byte of an address will be given by a underlined capital letter
(with I being the base page). This was done to enable the user to easily
relocate the monitor to any 2K block of memory. Any future references
to the monitor (or any subroutines) should also use this notation. This
way, everyone can maintain software compatibility while having the
flexibility of locating the monitor anywhere.
Also, any future expansion of "the monitor will use this notation,
beginning with the letter g. One exception to this convention was that the
letter S was chosen to represent the page where the System RAM resides.
As an example to this notation, I debugged this program this monitor
beginning at 0800, with my System RAM at 9800. Therefore, I would equal
08, .!!. equals 09, and so forth. Also, £ would equal 2§..
One last'thing should be mentioned. While discussing the commands,
the first parameter will be sy,mbolically represented as AAAA, with the
second parameter (as required) being BBBB, and so on. If a parameter only
needs two digits, it will be shown as AA (for the first Parameter),
BB (for the second parameter) and so forth. Also, a CR will be shown as ~.
With this in mind, the commands will each be listed separatly, with
a short description on each.
Ia , Execute AAAA~
-This command will transfer control to the user's program
beginning at AAAA. Before transferring control to the program, D,DF,
and all registers are restored. In order to use a different X and/or P
value for the program, change the byte at location S 5E to the desired
value. The new value of X,P is what the computer will use for the user's
program.
•
•
lb. Execute,}.
-This command has two subfunctions. If X,P have not been changed,
(X,P defaulted to 2,3) execution of the user's program will begin at
location 0000. If X,P has been changed, execution will be transferred
to the location pointed to by the register defined by P. This second
function is useful after a breakpoint has been serviced. To resume
execution after a break, simply type E ~ • This will transfer control
back to the point of the break with the original· value of X,P that the
user's program established.
Before control is passed to the user's program, the monitor
will print 'SST?' and wait for an entry. This will allow the user to
activate his single step circuitry. Note that the single step operation
is accomplished by hardware only I If single step circuitry is not
implemented on the system, change the byte at location ~ 33 from 39 to 30.
•
PAGE:
•
•
7
If the user does have single step capability, he can chose to
single step through the program by pressing a 'y' on the keyboard. The
program then loops until the hardware is activated. Once the circuitry
has been activated, pressing any key On the keyboard will start the
single step operation.
If the user does not want to single step through the program,
any key on the keyboard except 'Y' can be pressed. Control will then be
Passed to the target program.
2. MEmory examine AAAA ~
--This command is probably the most used command in the monitor.
It's purpose is to examine and/or load. data into memory. After the command
is entered, the monitor will print the location, a hyphen, and then .the
data. If the byte is also a valid ASCII character (between 20 and 7F), the
monitor will also print the character. This feature is useful for obserVing
text in memory.
There are five subcommands available. They are the carriage
return, line feed, space, back space, and escape keys. There functions
are as follows I
'The carriage return key will close the current location
and then open up the next location for examination/modification.
The line feed key will close the current location, increment
the pointer by 8, and then print the contents of the new location.
Pressing the space bar will step through memory one nibble
at a time • Any bytes spaced over are not changed •
Pressing the back space key will accomplish one of two thingsl
1) If the second nibble of the byte is being observed, the back space key
will move the cursor back to the first nibble. 2) If the first nibble of
the byte is being observed, pressing the back space key will close the
current location, decrement the memory pOinter, and then open up the new
location.
Finally, the escape key will exit the Memory Examine command
and reenter the monitor.
3. Register examine ~
- This command is used to examine or modify the registers that
were saved from the user's program. After the command is entered, the
monitor will print the number of the register being observed (R(2) is the
first register examined),a hyphen, and then the two-byte contents of the
register. These registers are later restored to the original program through
the use of the Execute command.
There are four options associated with this command. They are the
carriage return, space, back space, and escape keys. These options are
basically the same as the Memory Examine options, but with a few differences.
The first difference is that the options now operate on two-byte data,
instead. of one byte. The second difference is that the monitor will not
allow the user to space beyond R(F), or back space Past R(2). If the user
attempts this, the console bell will be rung •
•
PAGE:
8
4. SAve AA BB 'CCC ••• CC'~
--This command is used to save memory blocks (in increments of
bytes) on a storage device. The general form for this command is
SA AA BB ' cee ... CC'). , where AA is the number of the starting page,
BB is the number of the ending page, and 'ece ...ee' is the file name.
The file name can be any length up to 16 characters. If a name is not
16 characters long, it will be padded on the right with blanks. If the
name is longer than 16 characters, it will be truncated.
Before going on to the next command, some discussion on the
format is needed. When I first designed these routines, I wanted it to
be compatable with the Ipso Facto standard. However, I also wanted
longer file names than one character. After thinking over the possibilities,
I decided on the following format.
256
•
1) At l~ast five seconds of mark (2400 hZ) at the beginning
of a file.
2) .All data bytes are 8 bits, plus one start bit, even
parity, and two stop bits.
3) Tape format file name
16 bytes Any ASCII characters
between 20 and 7F.
start address
2 bytes (hi then 10 byte)
byte count
2 bytes (hi then 10 byte)
data bytes n x 256 bytes
checksum
1 byte
Checksum formed by adding all
bytes excluding file name and
checksum.
Besides the obvious advantage of having longer file names,
anotpar advantage of this format is the ability to have the data rate
at either 300 or 1200 baud. In order to Save or Load files at 300 baud,
the file name should begin with an '5' as the first character of the name.
If the file does not have the preceeding '5', the monitor will assume a
1200 baud rate.
Finally, the monitor does not reguire any additional hardware.
All Kansas City tones are software generated. Also, a routine has been
included (the PLL routine) to receive and decode these tones into a
binary 1 or O.
The only other difference is the checksum byte. In my software,
I did not complement the checksum, mainly because for a long time I did
not know how this method worked. However, it took about the same number
of bytes to do it either way, and I really did not want to hand re-assemble
the monitor allover again! Since the standard was mOdified anyway, I
decided that this difference was insignificent.
•
5.
Load 'CCC •.. CC,)
- This command is used to load memory with a file name of 'CCC ..• CC'
from a storage device. The monitor will search for this file name, while
printing 'FOUND CCC •.• CC' for every other file it skips over. If the
programmer wishes to only load the first file found, he can type'L ,.)
Also, there is no need to select the baud rate. The monitor
will select the baud rate from the first letter of the file name. Please
refer to the Save command for an explanation of this format.
•
PAGE:
•
There are two possible error indications associated with this
command. If a parity error occurs, the Q light will come on but loading
will continue. If a checksum error occurs, the monitor will then print
'CHECKSUM?'. One exception to these conditions is if a parity error
occurs in loading the header information. If an error occurs here, further
loading will stop and control will be returned to the monitor. This feature
was included to preserve memory from being wiped out by a misread tape.
6.
~erify 'CCC ••• CC'~
This command is the same as Load in every way except that
instead of a file being loaded into memory, the file on the storage
device is compared to the file already in memory. If the two files
match, control will be passed back to the monitor. If the two files differ,
the monitor will print 'ERROR IN XXXX'. One application for this command
is for checking if a file was transmitted to tape successfully.
7. BReak AAAA ~
•
This command is used to set a breakpoint at AAAA. Before a
breakpoint is inserted, the bytes at this and the next two locations
are saved along with the address of the break. A SoftWare Interrupt
Pseudo-op (bytes 22 79 D1) is then inserted. When the SWI is executed by
the user's program, D, DF, and all registers except R(O) and R(1) are
saved and control passes to the monitor. The monitor will then print
'BREAK AT AAAA' and then restores the bytes that were saved earlier.
Note that due to this process, only one breakpoint may be inserted at
a time. However, immediately after a break has been serviced, another
breakpoint may be inserted.
One word of caution, for the break routine to work properly,
either a Priority Interrupt I.C. must be connected to port 6, or the port
must not be used. If this port is being used, change the bytes at
locations L 4E and L 67 to a free port. If the routine still does not
work, make-sure that when the interrupt port is read, an FF is returned.
One disadvantage to this command is that a breakpoint can
only be inserted in RAM. However, in later extensions of the monitor,
I plan to add
interrupt driven breakpoint and SST software to eliminate
this problem.
After a break has been serviced, execution of the user's
program can continue by using the Execute command. Please refer to the
section on this command for further information.
8. MOve AAAA BBBB CCCC)
--The purpose of this command is to move the contents of the
memory from AAAA to BBBB to the new location beginning at CCCC.
9. fill AAAA BBBB CC)
This command will fill memory from AAAA to BBBB with the byte CC.
•
10. SEarch AAAA BBBB 'cc CC •••• cc'J
This command is used to search memory for a string of bytes.
The general form for this command is SE AAAA BBBB ICC CC •••• CC', where
AAAA is the search starting address, BBBB is the search ending address,
9
PAGE: 10
and ICC CC •••• CC I is the byte string to be searched for. Note that
•
the string can be any length up to 25 bytes long. After this c o n u n a n d .
is entered, the monitor will begin searching the target area. If the
string is found, the monitor will print 'FOUND AT XXXX' for every
occurance of the string. After the monitor prints a location, it will
then wait for any key on the keyboard to be pressed. The user should
then press a key to start the search again. After all searching is finished,
a prompt will be printed to indicate to the user that a new command may
be entered. If the monitor does not find the string, it will print
'NOT FOUND' and return control back to the monitor.
One very useful application of this command is in converting
programs from one 1802 system to run on another system. I have already
used this command to convert Netronic's monitor to run on my system
and in relocating Quest's monitor to lower memory (by finding and
changing all long branches).
Besides these· 10 commands, it is possible to add more commands
to the monitor. This feature is due to the way the monitor handles
unrecognized commands.
After searching the table contained in the monitor, the COMM-REC
routine will then run across a 01 byte. This byte signals the routine
that the next two bytes contain the address of the next table to be
scanned. This address in the monitor ROM points to the location S 6D.
This location in System RAM was initilized to 01 gOO. After the-search
is transferred to S 6D, the COMM-REC routine hits another 01 byte. This
time the new location is S 00 (the first location past the monitor). After
transferring the search to S 00 (Where there should not be any memory),
the monitor will start the search again. Since the byte at this location
should be greater than 60 hex, the monitor will realize that the
command table has been exhausted. Finally the monitor will print 'COMMAND?'.
In order to temporarily add commands to the monitor, the user
should change locations S 6E and S 6F to point to his table of new
commands. This table shoUld consist of the new commands in the following
format:
Command Abbreviation Delimiter Byte Address of routine
:<XXX. • • •
00
XXXX
Following the table of new commands, a FF byte should be inserted.
This will signal the COMM-REC routine that no more tables will follow.
Note that if the user adds some temporary commands, he must change
the end-of-table pointer (in System RAM) every time he enters the monitor.
If he wishes to add permanent commands, all that is required is to
locate the new command table at location gOO. There will be no need to
change any other locations.
As mentioned elsewhere in the article, this monitor was designed
to be system independent. However, there are a few locations in the
listing that should be cha~~d to reflect differences in the 1802 systems.
These locations are shown below:
Location
I 00
L 35
L 4E
L 67
P 82
P 88
B~~e
3D
6E
66
36
3E
Purpose
Turn off 1861 Video 1. C.-'
Loop on no keyboard input flag
Read interrupt vector port
Write to interrupt acknowledge port
cassette input flag
Cassette input flag
•
•
PAGE: 11 ."
•
This monitor has been extensively tested for any errors on several
systems. So far, the monitor has been successfully used on the Quest
Super Elf and Netronics Elf II. However, one quirk was discovered while
running the monitor on a friend's system. This quirk concerns the way
the output handles a carriage return.
When I was designing this monitor, I was using an output device
that simply used a CR (byte OD) to start a new line. Therefore, I designed
the print routines based on this fact. However, the terminal on my friend's
system needs a carriage return and a line feed. This is not a" major problem.
All that is needed is to change the output vector to a free space 'in memory.
In this space the user needs to insert a little routine that tests the
output characters for a CR. When a CR is detected, a CR LF should then be
output. Note that if the user has a memory mapped display, he may use
the video driver already in the monitor without worrying about this
problem.
MONI'l'OH LISTING
I 00
... 02
06
62 C4
7A 38 'Ill
Al
F8 I B1 F8 OD A3 D3
OD
E3 71 03
05
F8 S EO F8 5D AO
01 73
1C 93 B1 F8 00 AID 1
22 90 B9 B2 F8 ~ B5 B4
29 F8 16 1\4
2C F8 26 A5
2F F8 FF A2
32 D4 1. FD
35 .§ 6/1
10
16 81 V3 7E FA
•
37
3D
CO.£...:I1
CO J 0/+
co .e, 2f
40 01 Si 00
43 L I::C 1. EC L
4B 1.
EC
53 Fl"
'1
-
EC
1
EC L EC
EC
~1.
1
54 78 02 AD
57 F8 51': A7
5A F8 23 ')7
5D D4 d 11
60 OC 00
62 . 39 98
64
67
6C
71
74
77
7B
D4.i! tr
112 ')? ,:c,. Id ':B
zo
If 1 51f 20 00
Fl> 5E AC)
8D 59 19
49 Btl It 9 AA
1A lA EA
7E 49 73 49 73 09 ~A
84 8D FA Of FE FC 3C A9
8B 9A 59 19 8A 59
90
D4.!S 95
93 D4 1
11
96 OD 00
98 1)It.J 11
9B 38 00
9D F8 110 A9
•
AO
A4
A7
AA
AD
Turn off 1861
Save Accumulator
Sat RO) as PC
Disable Interrupts
Save D,DF in System RAM
Call RSGSf\VE
Initilize Registers
Call RAM INIT
RAM-Load Address
System I/O Vectors
SWI Program Vector
End-of-'fable Pt r ,
Interrupt Vectorn 7 - 4
Interrupt Vectors 3 " 0
Subroutine Delimiter
store T Register
Save X,P Default Value
Claar Screen
Do BREAK Routine if Q Set
Print 'BREAK AT '
Save T Register
Restore Saved Bytes
Save Location of Break
Print Location
Print CR
Print Prompt
Fill Buffer with Blanks
29 F8 20 59
89 3A AO
D4 J 36
D4 J 65
30
98
Call INBUFF
Call COMM-REC
1 AF D3
•
8F 73
8D 73
8B 73
89 73
87 73
85 73
F8 00
30 AF
DO
B8
00
C8
DO
DB
ID
E8
9F
9D
9B
99
97
95
73
/* REGSAVE */
73
73
73
73
73
73
73
.
8E
8e
8A
88
86
84
82
73
73
73
73
73
73
73
Return
Save Registers
9E 73
9C 73
9A 73
98 73
96 73
94 73
92 73
•
F8
EF 31
F3 7A
F4 FF
F8 27
FC D5
20 A7 F8 20
F3 7B 38
Initilize Duration, Pitch
Alternate On/Off
01 3A F4
87 3A ED
Do Pi tch Delay
Do Duration Delay
/* RAM-INIT */
~
FD
01
06
09
OB
46
06
46
30
16
B7 46 A7
FB FF 32 OD
57 17
01
D5
Get Load Address
Test for Delimiter
. Store Data Byte
Return
/* PSTRING */
OD AA
OE D4 S 67
11 46 3A OD
14 ~5
Save Character
Print Character
Test for Delimiter
Return
/* CALL */
D3
E2
93
46
30
15
16
lB
1F
23
Return
Save R(6)
Save PC in R(6)
Load Sub Address into PC
96 73 86 73
B6 83 A6
B3 46 A3
15
/* RETURN */
25 D3
26 96 B3 86 A3
2A E2 12 72 A6 FO B6
}O 30 25
C\I
r-
ta.J
o
cC
Q..
8A r'B OD
D5
8A FB 08
8A FB 07
89 FF 3F
D4 .!! 11
08 00
~ D4 I Ell.
59 3036
5B 8A FF 20
60 8A 59 19
3C
41
42
47
4C
51
/* BELL */
EA
65
6A
6£
73
78
7C
7E
83
86
8B
90
91
92
96
9B
9D
AO
A5
AA
DO
B7
BB
CO
C4
C9
Return
Load Return Address into PC CD
D1
Restore R(6)
D6
DB
DF
E4
•
/* INBUFF */
M. }2 89 32 56
35 29
}6 Dl. s 64
39 D4 :§ 67
Test for Start of Buffer
3A 42
32 32
32 56
3D 5B
Get Character
Print Character
Is it a CR?
Yes, so Return
Is it a Backspace?
Is it a Bell?
Ignore Char. if Buffer Full
Print Backspace
Ring Bell
3B 36
30 36
Valid Character?
Yes, so Store it in Buffer
/* COMN-REC */
Initilize Command Table Ptr.
B7 F8 B7 A7
Initilize Buffer Ptr.
00 A9 E9
Test for any other Tables
FB 01 3A 7E
Yes, so Load New Ptr.
47 B/\ 47 Ali.
B7 8A A7
6A
End of Table?
FF 60 3B 92
Yes, so Print 'COMMAND?'
Dlj. J 11
434F 4D 4D 41
4E 44 3F OD 00
Return
D5
19
Test for Match
47 F3 32 9D
Inc. Ptr. to next Command
473A 96 17 17
30 6A
Test for end of Command
07·3A 91
Test for Delimiter
89 FF 40 33 83
49 FB.2O 3A AO
Set PC to R(A)
93 BA F8 10 All. DA
Load Command Address and Exec.
17 47 B3 1,7 A} E2 D3
(Execute)
45 00 K BD
(Memory Examine)
1.D 45 00 !:1 75
(Register Examine)
52 00 N 00
(Save)
53 41 no !l B5
(Load)
4C 00 ~ 80
(Verify)
56 00
83
(Break)
42 52 0 1 cc
(Move)
4D 4F 00 1: AU
(Fill)
46 00 1. 89
(Search)
53 4500 L ED
End of Table Ptr.
01 .§ 6D -
93
F8
07
17
9A
30
07
•
•
/* H - A */
J E1 8A F6 F6
- ED FF OA 9A
F2 FF 09 F9
rr 30 FC
F9 F9 30 BA
FC 8A FA OF
! 00 FF OA 8A
05 FF 09 1"9
OA D5
OB F9 30 AA
OE D5
F6 F6 BA
3B F9
40 BA
Split Byte into two
Hex Characters
Convert High Hex Nibble
to ASCII
AA
3B OB
40 AA
Convert Low Hex Nibble
to ASCII
Return
Return
8A
FF
FF
FF
8A
8A
FF
OA
01
06
Fe
FA
00
FC 00
FF
30
3B
3B
33
09
OF
D5
D5
89
8B
8F
• 94
41 4D 45
3F OD 00
Return
8B
5D
FE FE F1 5D
Place Nibble in High
Order Hal f 0 f Byte
5D
Place Nibble in Low
Order Hal f of Byte
Return
/: PWORD */
Convert First Two Bytes
to ASCII
Print First Nibble
8A 73 9A AA
D4 ~ E7
9C 8A 13 9A AA
AO- D4 5 67
A3 12 02 AA
A6 D4.§ 67
A9 12 02 AA
99
Return Hex Nibble
Set DF, Return
Reset DF, Return
Compare Addresses
DF Set if ReF) ~'R(E)
/* EXPR, INBYTE */
F8 04 C8
F8 02 B1
91 A1
89 FF 40 33 2B
49 AA
D4! OF
3B 3D .
21 81 F6 3B 58
8A FE FE FE FE AD
8A 52 8D Fl AD
81 32 28
8D BD)O 3F
182
Call A - H
Valid Character?
No, 60 Print 'PARAMETER?'
95
2E 8E 52 BF F1
32 9E 52 9F 17
}6 D5
30 3~
6c
12
18
19
1A
, 1E
D4! OF
33 19
D4 J 11
50 41 52
54 45 52
D5
ED
8B F6 33
OD FA OF
8A FE FE
1B D5
OD FA FO
8A Fl 5D
1B 1D
D5
Test for Valid Character
3B 2B
24
2B
2B
AA
AA
/* TEST */
31
3A
3D
3F
44
46
49
4B
50
56
58
5D
60
64
61
69
192
/* A - H */
OF
14
18
1C
20
24
28
2B
Expr Entry
Inbyte Entry
Test for No Parameters
Call A - H
Invalid Character?
Shift Nibble to High
Order Half of Byte
Merge Nibbles to get Byte
Set DF if Finished
•
/* CHAR-STORE */
Print Second Nibble
Continue through PClIAR
/: PCHAR */
AC
D4
E7
AI<' 8A 73 9A AA
B3 D4.§ 67
i B6 12 02 AA
B9 D4 S 61
BC D5-
Conver~
~
J
Next Two Bytes
~Cll
Print First Nibble
Print Second Nibble
Return
/* EXEC */
BD
C2
C5
C1
CA
D1
D6
D9
DE
E1
09 FB 20
D4 K 31
3B b9
F8 5E A9
09 FA OF
9D 59 19
D4 ~ 11
53 53 54
D4.§ 64
D4.§ 67
E4 8A 1"B 59
E91A 38 1B
Be 92 EO F8
12 93 B1 F8
32
1>6
FE FC 3C A9
8D 59
3F 00
Test for No Parameters
oCall EXPR
Valid Character?
Get X,P
Store Address in Correct
Register
Print 'SST?'
32 EB
Get Answer
Print Answer
I f Yes, Set Q
40 AO ED
F8 A1 D1
Jump to REG-LOAD
."
>
~
....
w
•
•
/* REGLOAl' * /
rs
00
08
10
18
20
28
30
72
72
72
72
72
72
72
72
B2
B4
B6
B8
BA
BC
BIJ
1'6
72
72
72
72
72
A2
A4
A6
A8
AA
n AC
72 AIJ
72
72
72
72
72
72
72
72
113
US
B7
139
B8
IIU
BF
Restore Registers
72
72
72
72
72
A3
AS
1\7
A9
AB
T2 All
72 AI'
Continue through Interrupt
t33
35
37
39
3A
43
4B
55
59
5E
60
66
68
39
3D
70
D3
iiI
93
1'8
46
91
30
93
52
42
bC 42
61' 30
INTliRRUPT * /
71 21 22 78 22 73 71J 73
73 83 73 96 73 86 73
S 116 bE FA 07 I'li foC 70 A6
if3 46 A3
B6 FS 60 A6
39
Bl 1'8 66 Al Ul
66
1\3 42 B3
1'6 42
37
CC
CF
01
07
DU
ES
[;8
EC
Set Up Return Pointer
93
I2
7C 42
80 42
83 12
86 CO
Set PC to R(O)
Restore R(6)
Restore R(3)
Restore DF and U
Restore R(2)
Jump to SItI Program Vector
BO 1'8 77 AD UO
4 2 A6 42 B6
A3 42 B3
1'6 42
12 12
S 6A
::z
~
IN
C)
<
Q.
04 K 37
CB K 69
9U ifE 80 Ali
04 I' 37
3B 8C
90 BF 8U AI'
04 K 3A
3B 8C
1>4 K 2E
"otT- 3B EC
A6 80 51J 11' 30 Al
Get "From" Parameter
Invalid Character?
No, so Save in R(E)
Get "To" Parameter
Save in R(F)
Get Pi llcr Byte
.Finished?
Yes, so Return
No, so Store Byte
Get "From" Parameter
Invalid Character?
No, so Save in R(E)
Get "To" Parameter
Save in R(F)
Get New Location
fojnished ~oving?
Yes, so Return
04
38
92
4U
1'8
1'8
8U
OS
K 37
8C
B7 fo8
73 41>
III 51)
22 511
73 9U
Get Locat ion
Invalid Character?
63 A7 E7
73 Oll 73
2U rs 79 5U 2U
Save Old Contents of Location
Insert SI~J Pseudo-up
73
Save Location
/* SI:MCII */
Rl'store R(3)
Restore OF and 0
/* folLL */
89
8C
81'
93
96
98
9C
91'
AI
U4 K 37
3B 8C
90 BE SO Ali
04 K 37
38 8C
9D BI' SU AI'
D4 K 37
3B 8C
D4 K 21J
3B ITc
4E 5U 1U 30 C2
Set PC to R(l)
/* SIH */
71
77
'·IOVIJ */
/* BREAK */
Skip SST if Q Reset
Wait for Operator
Return to Interrupted Program
Go IJxecute Subroutine
Save·T, U and Ill'
Save R(3) and R(6)
Get Interrupt Vector
37
3S
38
t-
L AB
AE
BO
B4
B7
89
110
CO
C2
CS
C7
•
~I
En 0·1 K 37
1'0 38 BC
1'2 90 au SO
1'6 04 K 37
F9 38 8C
FB 90 BF SU
rr 88 FA FC
03 89 1'1' 40
08 49 AA FB
OE U4 K 2E
11 38 5U
13 04 K 3A
16 CB K 69
19 EE 8U rs
IE 29 09 FB
24 19
25 88 FA I'E
29 30 34
211 8B re 33
21' 18
30 8E AC 9li
34 11:
35 09 FB 27
Get "r r omll
Par~mc-~c::r
AE
Save in R(E)
Get ''To'' Parameter
AI'
AB
33 16
27 3A 03
Save in R(I')
Reset Flags
Search for Open Quote
Test for End of Search Range
Get Byte to be Searched For
32 2B
27 3A 1IJ
AB
Test for ~I:ltch
No ~Iatch, so Back Up Pointer
to Opell Quote
Reset "Found" folag
34
BC
3A OE
Set "Pound" Hag
Save Loca t i on of String
Increment Search Pointer
Continue Search if No Close Quote
101 } ...
- }E
41
46
4B
4F
52
55
57
5'"
5D
62
65
6...
6F
72
74
•
BE F9 02
D4 J 11
46 4F 55
20 41 54
9C BA ec
D4 K 95
D4 J 11
OD 00
D4 S 64
n}01E
8B FA 02
D4 J 11
4E 4F 54
4F 55 4E
D4 J 11
OD 00
D5
4E 44
20 00
Fa
AA
Print Location
Print CR
nait until a key is pressed
D4 K 37
18 3B 16
1.1. 9D BA 8DA!.
7E D4 K 95
81 D4 :f 11
84 20 2D 20 00
88 OD AA
8.1. D4 K AC
8D D4 J 11
90 20 00
92 OD AA FF 20 3B 9C
98 FF 60 3B 9F
9C }'8 20 A.A
9F D4 S 67
A2
D4 J 11
A5 20 00
17 5B FA F8 AB
A.B D4 S 64
AE 8.1. FB OD 32 D9
B3 FB 05 32 DC
B1 FB 02 32 EC
:a:a FB 2.1. 32 F6
B,F FD 3B 32 6F
03 8.1. l'F 20 3B A.B
08 D4 S 67
OB D4 K 64
OE 8B F6 33 A.B
D2 D4 J 11
D5 OD 00
D7 }01A
D9 1D 30 D2
DC 8B F6 3B :::9
EO 2B
E1 FB os AA
Ell D4 S 61
KT }O iB
2D 30
8D FC
9D ?C
30 D2
BB F'b
1B
FB 20
D2
oe
00 BD
~i
33
FA
FD
AA
FE 3OE4
l!OO
05
OA
OD
10
Return
1}
*/
17
1C
1F
22
24
28
2D
Get Location
Print Location
Print I _ I
Get Byte at
Curr~nt
Test for First Nibble
Yes, So Space
Print Space
DC)
/: REXAM
Print OR
MEJCAM
Decrement Pointer
Increment Pointer by 8
AD
Print 'NOT FOUND'
20 46
44 00
/*
75
·if 1'9
EC
3.1. 6F
•
•
Set "Found one" Flag
Print 'FOUND AT'
A.B
Location
Print Space
IT Byte is a valid ASCII
Character, Print It
Print Space
Reset Flags
Get new data or operation
Test for OR?
Backspace?
Line Feed?
• Space?
Escape?
Check for valid character?
Print it
Store it
Test for complete byte
Print CR
Increment Pointer
Test for First Nibble
No, so backspace
Print Backspace
"';'.
.... ~:
~
,"."':
.1.f.-'
...
}1
92 BDFB
8D F6 FF
D4.!! E7
D4 ~ 6?
D4 ~ 11
20 2D 20
4D DA OD
D4 K 95
D4 ~ 11
20 00
8D FA FB
D4 .§ 64
8A fB 1B
8A FB OJ)
8A FB OB
BA FD 20
BA FF 20
BD FF 50
D4 .! EA
36
3D
40
45
4.1.
40 30 28
4F D4 .§ 67
52 D4 li 64
55 BD FA 03
5.1. D4.!!11
50 OD 00
5F BD FF 5C
64 30 2B
66 BD FF 5A
6B 1D
60 BD F6 3B
70 1D 30 5.1.
7} BD FF 42
78 BD FA 03
7D BB F6 3B
81 2D
B2 FB OB AA
85 D4 .§ 67
8B 30 2B
8A BB FA 02
BF 2D 30 B1
92 2D 2D 30
40 AD
1E AA
00
AA 2D
*/
Set Up Register Pointer
Calculate Number of Register
Convert Number to ASCII
Print I t
Print' - ,
Print Register Contents
Print Space
AB
C2 M 6F
32 'bG
32 73
32 96
3B 28
3B 4F
Reset Fl..ags
Get New Data or Operation
Test for ESC?
CR?
Backspace?
Space?
Test for Valid Character
Test for Last Register
Yes. So Ring Dell
3.1. 28
Print Character
Store It
Test for First Nibble
Print CR
3D 0.5
33 4A
5A
33 7D
32 4A
BA
Test for Last Register
Yes, So get Operation Only
Test for Last Register
No, So Increment Pointer
to Next Full Register
Location
Test for First Register
Yes, So Ring Bell if First Nibble
Print· Backspace
32 92
5.1.
Decrement Pointer to Next Full
Register Word
"'0
>
(;)
("11
;~.".
~
V1
•
l! 96
9B
A2
A6
A7
AA
AC
AE
B3
8D
8B
8B
1B
F8
•
.'
~
IT 5A 38 A2
FA 03 FF 03 32 4A
F6 33 AC
Test for Last Register
Ring Bell if Last Nibble
20 AA
Print Space
30 85
lB 1 D
8B FA 03 32 5A
30 A7
/* SAVE */
B5
B8
BB
BD
CO
C2
c8
{:9
ce
Dl
D6
D8
DC,.
E2
E8
EA
ED
F1
F2
F6
F7
FC
~ 01
05
OA
OD
OF
15
18
1C
20
22
23
26
29
~ 2B
w
e,:,
<
c..
D4 K 3A
CB K 69
8D BE
D4 K 3A
3B B8
9E 52 8D F7 33 C9
D5
FC 01 BD
89 FF 3F 33 B8
49 FB 27 3A CC
FF 00
F8 10 BA BC
F8 ~ B7 F8 57 A7
93 BP F8 EA AF DF
30 F7
F8 06 BO
F800 AD AE
D7
20.90 3A ED
D3
97 BF F8 2D AF
09 FB 53 32 05
9C F6 F6 BC
09 FB 27 3A on
F8 20.38
49 DF
9A FF 01 BA 3A 05
F8 00 BB
9E DF 8E DF
9D DF 8D DF
4E DF
2D
9D 3A 20
8D 3A 20
9B DF
D,5
Get "From" Block
Get "To" Block
Calculate Length
Return if Negative Length
Test for end of Buffer
Search for Open Quote
Init. Name length, Cycle Ctr.
Init. ose Subroutine
Set PC to R(F)
Init. Header Delay
Call OSC
Decrement Header Delay
Set PC to RO)
. Init. TX UART Subroutine
Test for File Name of IS •••
. Divide #Cycle by 4
End of File Name?
Yes, so pad with blanks
Transmit File Name
Finished File Name?
Zero Checksum
Transmit Starting Address
Transmi t Length
Transmit Data
Decrement Length
Finished?
Transmit Checksum
Return
2C
2D
2F
34
36
3A
3B
3E
40
42
43
48
4A
4B
4F
51
52
/: TX UART */
D3
AA 73
F8 10 F6 AB Ae
30 3A
8A 76 AA 2C
D7
8C 3A
8B F6
E2 E2
D7
12 9B
FF 00
D7
C4 C4
FF 00
D7
12 02
•
Return
Save Character to be Transmitted.
Init. DF, Parity, Bit Ctr.
Get Bit to be Transmitted
Call OSC
Finished?
Get Parity
Nop
Transmit Parity
Add Byte to Checksum
Set DF •
Transmit Stop Bit
Nop
Set stop Bit
Transmit Second stop Bit
Restore Character .
36
F4 BB 22
E2 E2
30 2C
/* OSC */
56 DF
57 33 61
59 9C F6 A1
5C F8 OD 52
5F 30 68
61 9C All B
64 F8 01 52 E2
68 FF 01 3A 68
6c 21
6D 39 72
6F 7A 30 74
72 7B 7B
74 81 32 56
77 F8 06
79 FF 01 3A 79
7D 02 30 68
Return
Is the Bit a "1"
. Divide Cycl e Ctr by 2
Init. Period Delay
Delay one Period
Decrement Cycle Gtr
Al ternate Q on/orr;
Return if Finished all Cycles
Delay to balance half cycles
Restore Period Delay .
/* LOAD, VERIFY */
F8 00 C8
F8 FF BC
E2
7A
92 BD F8 8F AD
F8 P BF B7
F8?F A7
F8 56 AF
F8 10 AS
F8 00 A9
89 FF 3F C3 K 69
49 FB 27 3A 9D
22 22
AA 09 FB 53 32 B2
AF F8 02 C8
80
83
86
87
88
8D
91
94
97
9A
9D
A3
A8
Load Entry Point
Verify Entry Point
Reset Parity Error Indicator
Init. File Name Storage Ptr.
Init. PLL Subroutine
Init. UART Subroutine
Init. Name Length Ctr.
Reset Buffer
Test for End of Buffer
Search for Open Quote
Decrement Stack
Test for File of'S ••••
Set Baud Rate for 1200 Baud
$1 B2
B5
B7
BA
BD
~ BF
C3
C7
cc
DO
D3
D5
D9
D"
.1
E2
E5
EC
EF
F2
°F6
F9
FD
FD
P 00
- 04
08
OB
Or~
12
15
18
1F
22
27
2D
2E
34
36
39
3C
3E
41
46
4B
4F
52
•
F8 013 52
12 12
F8 02 BA
22 79 D7
3B B7
2A 911. 3A
DF 5D 2D
09 FB 27
49 F3 311.
8E 3A c3
30 1o'D
DF 5D 2D
8E 311. D5
F88F AD
D4 .T 11
46 4F 55
OD 2D AA
D4 r;o 67
2E 8E jA
D4 J 11
OD 00
30 87
1"8 00 BB
DF BE DF
DF BD DF
C1 r; 69
9C 311. 22
Df 5~ 1£
9D 311. OE
8D 311. OE
DF 52 9B
D4 •.1 11
43 48 45
53 55 4D
D5
DF 520E
2D tE
9D 311. 2E
8D 311. 2E
30 18
D4 ~ 11
45 52 52
20 l.9 4E
9E BA 8E
D4 K 95
co 6F
H
BA
2E
32 DO
D5
2E
F8 10 AE
4E 44 20 00
EC
AE
AD
2D
F7 F7 32 2D
43 4B
3F OD 00
F3 3A 3E
Set Baud Rate for 300 Baud
Restore Stack
Init. Header Length Delay
Call PLL
Test for Header
•
E 55
Get File Name
56
Test for Close Quote
511.
Test for Match
5D
5F
61
No Match, So Save File Name
64
Init. File Ptr., File Name Lensth ~~
Print 'FOUND '
6B
6E
Print File Name
70
73
76
Print CR
78
7B
Go get Next File
Clear Checksum
Get Starting Address
Get Length
7E
Abort Load if Parity Error
7F
Check Co~mand Flag
82
Load Data
84
Finishod?
86
811.
Compare Checksums
8B
8D
print 'CHECKSUM?'
8E
91
92
Return
95
Verify Data
•
/* RX UART */
D3
F8
22
33
30
22
3B
2C
02
08
79
5A
68
79
67
79
3B
9B
8B
02
7B
D7
73 1B
F4 BB
F6
3D 55
30 55
Return
Init. Parity Ctr., Bit Ctr.
Wait for Stop Bit
AB AC
D7
D7
1B
Get Bit
Increment Parity if Bit
Decrement Bit Ctr.
Shift Bit into Byte
Finished Byte?
Get Pari.ty
76 73
8c 311. 62
Add Byte to Checksum
Return Byte
Set Q if Parity Error
/: PLL
71
E2
36
F8
FF
FE
33
21
81
21
81
30
42 11.1
82
90
01 3E 86
0
91
=
*/
Return
Init. Cycle Ctr.
Wait for Low Cycle
Init. Period Delay Constant
Dec. Period while flag is low
Get Resultant Bit
0
32 7E
Decrement Cycle Ctr.
Return if done all cycles
3A 82
7E
Repeat ~: ~~ CYC~~s not Done
I:'~:-l·~II.. elll.
f.y-:le (;1.'.".
Finished?
4F 52
20 00
AA
Go Compare Checksums
Print 'ERROR IN '
Print Address
Return
.."
:I»
C)
rs:I
~
~
PAGE: 18
/* INPUT */
P 97
99
Wait for entry
Read keyboard port
3D 97
6D AA D5
/* OUTPUT */
9C
Al
A4
A9
BO
B3
B8
BC
Cl
C5
C9
CD
D1
D5
DA
DD
EO
E6
EA
EF
F2
F4
FA
FE
8A FF
8A 58
98 FF
F8 EO
47 58
97 FF
F8 20
98 FF
28 F8
F8 2E
FB ED
FB 01
FB 04
98 FF
88 32
28 30
F8 E1
F8 20
98 FF
E3 65
30 A3
88 FA
98 7C
30 A4
20
18
E2
B7
18
E2
58
E2
EO
58
32
32
3A
E1
C8
C5
B8
58
EO
3B C9
3B C5
B8 F8 20 A7
3B BO
18
3B B8
A8
D5
F4
EO
C8
33 DD
F8 FF A8
28
33 E6
Test for ASCII character
Print character
Test for end-of-screen
Yes, so scroll up one line
Blank bottom line
Print cursor and return
Test for CR? (OD)
Test for Form Feed? (OC)
Test for Backspace? (08)
Yes, so test for beginning-of-screen
Ignore backspace if cursor is at home
Backspace and print cursor
Clear the screen
Reset the Video Display I.C. (see note)
EO FC 20 A8
00 B8
•
Start a new line
Note: This I/O package is dependent on both the type of memory-mapped video
display and the computer system itself. This package was designed to
drive a video display based on-the S68047 (or MC6847). If the display
is not based on this I.C., change the three bytes at P EF to E2 E2 E2.
These locations, if left unchanged, will output a byte to the S68047
to reset it to the alphanumeric mode. Since both the port and the byte
itself is dependent on how the user has the I.C. wired, the control byte
was left blank in the listing.
This I/O package assumes the video display is mapped at location EOOO.
If the video board is at another location, change locations P A6, P AA, P B5,
P BE, P D7, PEl, and P EC to reflect this difference.
The only three locations that are system dependent are P 97, P 99, and
P FO. These locations are used to drive the input and output-ports-of a
Quest Super Elf. Owners of different systems should change these locations
to match their requirements.
•
•
Mike Franklin
PAGE: 19
•
A Comparison of Netronics and Quest:
NETRONICS
ilUEST
Program address
Work space
User space
I/O
0000-17FF
last RAM page
1800-RS232 - out Q
in EF4
0000-29FF
2AOO-2BFF
2COO-RS232 - out Q
in EF3
ARRAYS
STRINGS
MATHAMATI CS
- format
line I range
1inel ength
Execution mode
Serial Baud rate
- unlimited - any combination of
characters
- none
- 26 A(exp) - Z(exp)
max DIM 255
- 26 A$ - Z$
- Reverse Polish Notation
- Scientific notation + 8 digit
- Floating point ~ 8 digit mantissa
and 2 digit exponenti~l value
- normal
- 0 to 65535
- 72
cha ract ers
- direct
- program (with line I)
to 300
- identical or eqa1valent commands in both languages
REM
ClS
Cli
NEW
RUN
PRINT or PR
END
lET
GO TO
IF u , . ,IUEN
- ,26 - A-Z
- unlimited- - any combi nati on of
characters terminated with $
- 72 characters max
BASIC COMMAND SET
•
l7J 2Pl
"Full Basic"
, GENERAL
Variables
•
24 DUby Road
Acton, Ontario
- clean screen
- clear data
- clear program area
- 95 characters max
- Floating part ~
0.17 E38 5 digit
mantissa
- Interger ~ 2147483648
- 1 to 65534, 65535 is
auto "END"
- 95 characters
- direct
- program (with line I)
to +3000
PAGE: 20
INPUT
LIST
GOSUB-RETURN
FOR-STEP-NEXT
PEEK
POKE
BYTE (MEM)
SAVE
LOAD
DATA ]
READ
RESTORE
TOG (F II MODE)
RND
TAB
- input data form keyboard
-
calculate available program space
cassette programme save
cassette programme load
load and read data string
-
resets data pOinter
sets math funct ion
random number generator
cursor control
•
- + -/*
math operators
-)(=
math comparitors
SIN, COS, TAN, SQUARE, absolute value, LOG, INTERGER
Unique Netronics Commands
DEVICE 0-3
SET K, P, Q
EXAM
EXCL
INPORT
OUTPORT
STOP
CTL
HELP
-
selects I/O device
select serial baud rate
list all variables in use
delete variable from program
input hex data via ports 1-7
output hex data via ports 1-7
programab1e break point
control-cursor command
list command set
-
run from selected line #
ARRAY
cassette save data only
cassette load data only
define user space start location
prints address of end of program
prints address of end of data
programable delay
print ASCII character
returns value of ASCII characeters in string
returns # of ASCII characters in string•
•
Unique Quest Commands
RUN (expr)
DIM (var)
DSAVE
DLOAD
DFUS
EOP
EOD
WAIT
CHRS
ASC (string)
LEN
II
. •."continued on Page: 52
•
Bill Eckel
7711 So 73 Avenue
Omaha, Nebraska 68128
•
•
PAGE: 21
ROLL OVER HEX WHILE LOADING
I am very limited in my programing experience. Never-the-less I am
slowly learning. Your request for members to share their program~no
matter how small they ar~because others will learn by them and eventually
be able to submit their own or even improve upon themJis very true as seen
by modifications to members programs already submitted by others. This is
the case with me. In Ispo Facto #9 on page 9, Tom Jones submitted a little
program on entering data with a rollover effect on the hex displays before
pushing the input key. Although I have the Elf II with monitor system, I have
found this program very useful. It will tell you if you depressed your keys
completely or if the wrong information got entered before you load it into
memory. I modified this program SO that is may be entered on page one and
load on any page in memory.
Address
Code
Mneumonics
00
F8
02
03
BF
F8
LDI (set high address of page to loade
(should be 00 if 1st page)
PHI F
LDI (set low starting address of area
to load • If on page 1, must be
05
06
07
08
09
OA
OC
OD
OE
10
12
AF
EF
6C
64
2F
3F 07
6C
64
37 OE
30 06
STK i f set for page 1
.!1.)
PLO
SEX
INP
OOT
DEC
BN4
IMP
OUT
B4
BR
F
F
4
4
X
4
4
Address 01 will be the high address of the page to load. Example: 00 for
page 1, Q! for page 2, etc. Address 04 will be 00 if loading on any page but
1. If loading on page 1 (first 256 bytes), address 04 must be 11. After loading
display and appear to shift to left. Pushing input will load data into memory
starting at the address sent into the program. If program is set to load on page
one (address 01 is 00 and address 04 is 12), after loading, reset computer and
load the first 12 bytes as normal.
-Perhaps some one can take this program and incorporate it with some existing
monitor systems .
•
SOFTWARE FOR THE ETI 2708 EPROM PROGRAMMER
PAGE: 22
B. Murphy
102 McCraney St.
Oa kv ill e, On t •
Some of you may have considered building the EPROM programmer
that was written up in the December 1978 issue of ETI but hesitated
due to the lack of software.
This article solves the 1802 software problem for you. The
progr~
to run the EPROM programmer is shown in listing 1--all 60
hex b yt e S 0 fit.
•
HOW IT WORKS
Since the ETI programmer was designed to be a "universal" 2708
prog r-amme r , it uses a 300 BPS serial interface. The majority of the
program involves serializing the data via the Q line.
HOW TO RU~ THE PROGRAM
Set up the EPROM programmer UART for 8 data bits,no parity and 1
stop bit. Having connected the programmer via serial 29 mao loop
interface, serial RS232 interface, or just a 4050 bUffer, key in the
program on any memory page of the 1802. Next, load the 1K of data you
want to program in any 4 consecutive memory pages. Call the program
using R3 as the program counter. If you want, you can use RO as the
program counter by changing location 1 to a 90 and location 3e to a
DO. Once running,the program expects you to enter the page number where
the data to be programmed resides. Key in the page number,hold down the
reset button down until the EPROM programmer is powered up. Next, hit
the" I" key and go for supper •.• i t takeS about 50 minutes to program the
2708 at 300 bps!
POSSIBhE ENHANCEMENTS
You could speed things up by increasing the interface speed to 1200
or 2490 BPS.
This could be done by re-adjusting the 555 timer to run
at 1200x16 Hz or 2400X16 Hz respectively. The speed constant at
.location 52 would also have to be changed.
If you are only programming 256 bytes of information you need not
program all 1024 locations. To do this, simply change location 21 to a
•
01.
Well, thats the software story--the ETI article is very complete on
the hardware side.
Remember that if you decide to build the programmer do not skimp on
the capacitors. You should only use high quality mylar capacitors in
the timing circuits. Good luck!
References:
1. EPROM Programmer, Electronics Today, December 1978, p. 29
2. An RS232 Interface, IPSO FACTO issue 5, p , 4
j
•
•
LOCN OBJ CODE
STMT
1
2
SOURCE STATEMENT
1802 VER 1.7A
............................................................
THIS PROGRAM IS DESIGNED TO PROGRAM A EPROM
VIA THE
Cil LINE.
3
't
5
6
REGISTER USAGE:
RO-R1-FREE
R2-STACK
R3-MAINL·INE P. C.
R7-TX suaa P. C.
R8. 0-. OF TIMES TO PGM
R8.1-WORK
R9-ADDR OF DATA
Rl0-FREE
R11. O-WORK
R12-DELAV WORK
R13-TX sueR WORK
Rl't-BIT COUNTER
R15-DELAV P. C.
EQU
SEX
GHI
PHI
PHI
PHI
LDI
PLO
LDI
PHI
LDI
PLO
LDI
PLO
SEQ
BN"
B't
INP't
OUT't
PHI
LDI
PLO
LDI
PLO
PLO
LDI
PHI
GHI
PHI
LOX
OUT."
SEJ>
DEC
GLO
BNZ
GHI
BNZ
LDI
aOOFF
R2
R3
R7
R13
R15
A.OCSTACK)
R2
A.l(STACK)
R2
A.OCTXENT)
R7
A. DC DELAV)
R15
••
••
••
••
••
••
.•
**
••
•.
••
••
••
7
8
9
•
0000
0000
0001
0002
0003
000't
0005
0007
0008
OOOA
0008
0000
OOOE
0010
0011
0012
o 01't
0016
0017
0018
0019
001B
001C
DOlE
001F
0020
0022
0023
002't
0025
0026
0027
0028
0029
002A
002C
0020
002F
E2
93
B7
SO
OF
F8FF
A2
F800
B2
F83F
A7
F857
AF
7B
3F12
371't
6C
6't
B8
F87D
A8
F800
A2
A9
F80"
B9
98
B2
FO
6't
07
29
89
3A25
99
3A25
F8AO
-DOFF
.. oeN OB.I CODE
0031
0032
0033
003 ..
0036
0037
•
BB
2B
8B
3A32
98
3A32
0039 28
003A 88
0039 3A1C
003D O(l
10
11
12
13
1't
15
16
17
18
19
20
21 STACK
22
23
2't
25
26
27
28
29
30
31
32
33
3't
35
36
37
38
39
'to
'tl
.. 2
't3 NEWCVC:
't ..
't5
.. 6
't7
't8
't9
50 NXBVTE:
51
52
53
5 ..
55
56
57
58
STMT
STACK ADDR
STACK IS R2
GET CURRENT PAGE
SET UP R7
SET UP R13
SET UP R15
SET
UP
THE
STACK
•• SET UP TX ROUTINE
• • SET UP DELAV
TO MARK MODE
SET UP
AND READ
PAGE
WHERE DATA IS.
SAVE IT
•• :It OF TIMES TO PGM 2708
•• SAVE AWAV
• . CLEAR OUT
•• STACK AND
•• SIZE.
•• SIZE OF PGM AREA
• • IS 1K BVTES.
• • ADDR OF RAM AREA.
• • SET UP IN R2.
• . GET DATA BVTE.
• . DISPLAV 8: INC R2.
•. CALL OUTPUT ROUT.
• • DEC BVTE COUNT.
•• GET IT.
•• ARE WE DONE?
•. NO·CHECK HI BVTE
• • CHECK AGAIN
• . SET UP LOOP
• • Q
R8
125
R8
o
R2
R9
't
R9
R8
R2
R7
R9
R9
NXBVTE
R9
NXBVTE
:aAO
SOURCE STATEMENT
59
60 TIMOUT:
61
62
63
6 ..
65
66
67
68
69
PAGE: 23
1802 VER 1.7A
PHI
DEC
GLO
BNZ
GHI
eN'Z
Rl1
Rll
Rll
TIMOUT
Rll
TIMOUT
•. TO RUN 1 SEC ..•
DEC
GLO
BNZ
IDL
R8
R8
NEWCVC
.• OF TIMES TO PGM
•• DONE?
•• DONE ?
•• ARE WE DONE
•. JUST SIr THERE
PAGE: 24
LOCN OBJ CODE
003E 03
003F AD
00't0 F808
00~2 AE
00~3 7A
OO~~ OF
00~5 80
00~6 76
00~7 AD
00~8 CF
00~9 7A
OO'tA 38
00't8 7B
OO~C OF
OO~D 2E
OO~E 8E
o O'~F
3A~5
0051 7B
0052 OF
0053 OF
OOS~ 303E
0056 07
0057 F83E
0059
005A
OOSB
OOSC
OOSE
AC
2C
8C
3ASA
3056
0060
70
71
72
73
7't
75
76
77
78
79
80
81
82
83
PAGE
3
•
OUTPUT ROUTINE
REGISTER USAGE :
R15-PC FOR DELAY SUBR
COUNTER
R13-CHAR INPUT
R12-LOOP COUNTER
R7-PC FOR TXENT
Rl~-BIT
....
"""
8~ TXRTN:
85 TXENT:
86
87
88
89
90 TXSHIFT
91
92
93
9~
95
96
97
98
99
100
101
102
103
10~
105
106
107
108
109
110
111
112
113
1802 VER 1.7A
SOURCE STATEMENT
STMT
DLYRTN:
DELAY:
.• NOTE:
DECR:
11~
115
116
INPUTS:
D-DATA TO BE SENT
OUTPUTS:
Q LINE •.• SERXAL
. " ""
. " " . " " " " ""
SEP
R3
OUT
" ,," " " " ",,"" " " " " " " " " " " " " " """""""",,"" """""
RETURN TO CALLER
SAVE CHAR XN 0
8 BITS PER CHARACTER
NUMBER OF BXTS TO GO
SET START BIT
DELAY ONE BXT TXME
GET BXTS TXLL NOW
GET HXGH BXT XNTO OF
SAVE SHXFTED VALUE
TEST IF BXT WAS THERE
NO... SO SET SPACE
SKIP THE SEQ
SET TO MARK
DELAY ONE BIT TXME
NUMBER OF BXTS TO GO
XNTO 0
BRA IF NOT DONE YET
SET STOP BXT (MARK)
DELAY FOR 1 STOP BIT
ANOTHER ONE..•
RETURN TO CALLER
PLO
LDI
PLO
REQ
SEP
GLO
SHRC
PLO
LSDF
REQ
SKP
SEQ
SEP
DEC
GLO
BNZ
SEQ
SEP
SEP
BR
R13
8
SEP
LOX
ABOVE
USE
PLO
DEC
GLO
BNZ
BR
R7
BACK UP 1 LEVEL
62
1 BXT TIME AT lMGHZ
VALUE WORKS ONLY FOR 1 MHZ CLOCK
HEX 71 FOR A 1. 795 MHZ CLOCK
R12
SAVE AWAY
R12
COUNT DOWN
R12
RESULT INTO 0
DECR
DONE ?
DLYRTN
RETURN TO CALLER
Rl~
R15
R13
R13
R15
Rl~
Rl~
TXSHXFT
R15
R15
TXRTN
•
END
o DXAGNOSTICS GENERATED
32 SYMBOLS
SYMBOL TABLE:
STACK
OOFF
TXRTN
003E
DELAY
0057
NEWCYC
TXENT
DECR
001C
003F
005A
Dear Bernie:
NXBYTE
TXSHIFT
0025
DOltS
TXMOUT
DLYRTN
0032
0056
LN. Shepard,
903 12th se ••
Huntsville, Tx.
USA 77340
. I surely do enjoy IPSO FACTO. I have an ELF II. Is anybody
else
havlng trouble ~ettin~ Netronics disassembler to load? Mine
won't
l~ad and Netronics refuses to answer my requests to re-record.
Looks
llke I have been had!
Keep up the
~ood
work.
(Eu~ene:
.
thHope someone out there can help. Have you checked the
ln case
ere is a second file/copy? -Editor)
tape
PAGE: 25
•
Some Thoughts on Device-independent I/O
-----------------------~----------------
Volker Raab
Ramtenvy 30
DK8581 Nimtofte
Denmark
In issue 12, Wayne Bowdish presented a fine article about
deviceindependent i/o with just one mistake. It's the same mistake
that most of us software people, including myself, make most of the
time -- he is aiming far too high.
Frankly, I must admit that I rather like his ideas, but we must
not forget that our aim should be a powerful, but TINY i/o system.
What Wayne does suggest is an essential part of an operating system.
Of course, no one can suggest any meaningful future software systems
without an operating system in mind. I feel that we should not
invent an operating system in bits and pieces, and am not sure that
the time has come to decide on THE 1802 operating system.
On the
other hand, Jim Howell has convinced me that an 1802 operating
system should be a TINY UNIX system. I would like Wayne to discuss
his ideas with Jim before he gets too far. There are, however, some
principles I want to add to the discussion:
1. About operating systems.
•
Any system should be a tiny system, meaning that it should be based
on a suitable collection of simple (but powerful) ideas .
2. Files and Directories.
Files can be placed anywhere, in RAM or PROM (must be a read-only
file
obviously) on cassette tape or floppy disk. They may be
entered sUbsequently from a keyboard or written to a printer or
display (TV screen).
A directory is just another file. A system
directory contains all directly accessible files, i.e. the physical
devices, or rather their descriptions. Another directory contains
the working files, or rather their descriptions, including a
reference to the physical device in case of multi-file devices.
Other directories (on cassette or floppy) are updated to and from
this working directory.
This is one of the ideas of the UNIX
system. One of its benefits is the fact that i/o handling is
exactly the same thing as file handling as seen from a progam.
3. Programs.
Internally, programs use references (numbers) for the files which
they are using.
It is the task of the operating system (or
operator) to connect a logical file of a program to a meaningful
file of the current directory and thereby to a meaningful physical
device, before invoking the program.
•
4. I/O as Seen from the Program.
PAGE: 26
A file is a sequence of bytes, and is identified by a unique
identification in the program.
A file may be divided physically
into blocks or lines, and may be addressable (byte addressable for
RAM or ROM file, block addressable for a floppy disk file).
•
What can a program do to a file?
a) read the next byte.
b) write the next byte.
c) increase, decrease, or set the byte counter, if the file
byte addressable.
d) increase, decrease, or set the block counter, if the file
block addressable.
e) read a block. -l- i.e. initialize a block transfer, if
f) write a block. -:
the file is divided into blocks.
g) open a file.
h) close a file.
is
is
And that's most of it. Whether a file is buffered, queued, or
nothing at all, is of no concern to the program. Example: if the
program issues a read-byte, the program may immediately receive a
byte from a buffer, and continue, or it will have to wait until
someone types a character on the keyboard.
Obviously, a program
should be able to ask any file about its status, and the actual
values of its byte or block counters in order to be able to
manipulate them.
Error recovery may require in some cases that the program
provides a procedure that handles errors, but the normal situations
should be:
•
Input: 1. Open the file (for input?) (read first block?)
2. Read all bytes one at a time.
3. Close the file.
Output: 1. Open the file (for output?)
2. Write all bytes, one at a time.
3. Close the file (write last block?)
Update: 1. Open the file.
2. Set the byte-counter.
3. Read a byte.
4. Decrease the byte-counter.
5. Wr i te a fi 1 e
6. Close the file.
All the work should be done by a file-handler or i/o manager, i.e.
blocking, waiting for transfers, and so forth.
>
•
PAGE: 27
•
THE 1/Nth DEGREE
Bernie Murphy,
102 McCraney
Oakville, Ont., Canada,
L6H 3H6
A question by one of our readers prompted me to write this
short article. His question was how to easily compute the cube root
of a number using integer arithmetic a la TINY BASIC.
Going back in the memory banks, I recalled that it can be shown
that the Nth root of a number A can be computed by the iterative
formula:
X[n+1] = 1/N «n-1)Xn + A/Xn**(n-1»
for a square root, we have the familiar:
X[n+1] = 1/2 (Xn + A/Xn)
The derivation of the above formula can be found in any good College
Numerical Analysis text.
•
Taking Tom Crawford's article on A Tiny Basic Square Root
Routine, IPSO FACTO #7, page 44 as a basis, I came up with the
general solution as shown on ,the following page. Lines 1070 to 1075
evaluate Xn**(N-1) and line 1076 is the iterative formula. Some
sample data values and the corresponding results as found following
the program. High math strikes againl II
Sample Program and Output:
•
50 PR'ENTER NUMBER AND ROOT'
100 INPUT A,N
200 GOSUB 1000
300 PR'THE ';N;'TH ROOT OF ';A;' IS ';B
400 GOTO 50
1000 REM NTH ROOT ROUTINE RETURNS NTH ROOT OF A
1010 REM IN B, WORKSPACE IS C,D,T,Q
1020 IF A>1 GOTO 1050
1030 B=1
1040 RETURN
1050 B=A/182+2
1060 0=0
1070 REM COMPUTE B**N-1
1071 T=N
1072 Q=1
1073 Q=Q*B
1074 T=T-1
1075 IF T <> 1 GOTO 1073
1076 C=«N-1)*B+A/Q)/N
1077 IF (A-A/(2*B)*B*2) > B C=C+1
PAGE: 28
1078
1080
1085
1090
1100
1110
1120
1130
1140
1150
1160
REM ABOVE TO SEE IF C SHOULD BE ROUNDED UP
IF B=C RETURN
REM CHECK FOR OSCILLATION OF RESULT
IF (B-C) =D GOTO 1130
D=C-B
B=C
GOTO 1070
REM PICK LARGEST OF B OR C
IF B>C RETURN
B=C
RETURN
:RUN
ENTER NUMBER
THE 2TH ROOT
ENTER NUMBER
THE 3TH ROOT
ENTER NUMBER
THE 2TH ROOT
ENTER NUMBER
THE 8TH ROOT
ENTER NUMBER
THE 2TH ROOT
ENTER NUMBER
THE 2TH ROOT
ENTER NUMBER
THE 3TH ROOT
AND ROOT? 49,2
OF 49 IS 7
AND ROOT? 64,3
OF 64 IS 4
AND ROOT? 100,2
OF 100 IS 10
AND ROOT? 1024,8
OF 1024 IS 2
AND ROOT? 55,2
OF 55 IS 7
AND ROOT? 32767,2
OF 32T67 IS 181
AND ROOT? 27,3
OF 27 IS 3
>
--_.
8K EPROM Memory Board
Tom Crawford
50 Brentwood Drive
Stoney Creek, Onto
•
•
L 8G 2W 8
This printed circuit board w~s dEveloped to meet the requirement
cf keeping system software
(Monitor, Tiny BASIC, e t c , ) readily
e v a i I (l b I €
i n R0 r-! • I t i s des i g n€ d for the 4 4- pin bus u S € d wit h the
Tektron TEK-1802 ml cr o-ic omp u t s r (S(:(' Figure 1), with several small
modif l c a t ions.
The board wi I I hold up to 8 2708 EPROM chips. Thes€ chips occupy
contiguous 1K Breas in an 8K block of memory specc. The 8K block can
be selected as 1 of 8 blocks in the CPUos 64K memory address space,
using on-board DIP switches. The address end data lines are fully
bufferEd (see the schematic, Figure 2).
Power requiroments for the board are as follows:
1K l
Voltage::
_. - - -
- --
+5 volts
-
+12 volts
-
-1 2 volts
-
-
-
nst a l l c d
-----------typical
meximum
typicel
maximum
typical
maximum
7
10
44
65
34
45
8K installed
------------
mG.
mao
me.
mi? •
mao
mao
350
520
270
360
mao
rna.
mao
me.
•
•
.
•
•
-12V(2'
.
MWR
•
1-
T
MRD
I
7905
.r
HlV)
T
I
-
~
+5v~+5Y
TPA
tn\._I·_~
.....
.....
.....
.....
GNO~
v
& J , O I X4
"::"
I
+~v
.....
-~l>
1802 SYSTEM - 8K ROM BOARD
.....
....
v
.....
.....
AI
V
4050
1858
07
06
05
04
I
I
1/47400
rJ.
03
02
01
10
~
0 0 0 0 0 D [I
2708
2108
2108
DO
2708
2708
2708
2708
"'G
>
18H
oP'I
N
'"
-,
PAGE: 30
N
N
•
II:
o
t;
ILl
I
8
ILl
e
o
ILl
(I)
ILl
ex
~
I')
I')
X
~
f'oo
CD
CD
CD
0
0
0
~~
COMPONENT LAYOUT FOR THE 8K ROM BOARD
Some
Thou~hts
•
on the Future of the 1802
Bob S I Icox
562 Forestwood Cres.
Bur Iington, Onto
L7L 4K3
Various speculations on the future of the 1802 (and of A.C.E)
have appeared In these pages, so this Is not a new Issue. However,
It seems to me that It Is a subject which cou I d st I I I stand some
more thought. Below Is a letter which was sent to our treasurer.
Ken Mantel
1254 E. 26th Street
San Bernardino, Calif.
92404
Dear Mike Franklin,
Thank you for explaining why I had not received
IPSO FACTO
since October.
(EdltorOs note - Mike explained to him that, among
other reasons, the decreasing volume of good quality articles has
caused delays in the appearance of some Issues.) The problem of
decreasing contributions by readers struck me, 'so I am returning a
comment and suggestion.
4It
PAGE: 31
•
The same decline has hit the Los Angeles Elf of the Velley club!!
We have not published a newsletter since last summer.
At our
meetings It Is clear that everyone Is moving apart as each person
grows and bul Ids his own unique system.
Many have pur~hased
TRS-80os too, or Vlpos, or modems to connect their terminals to
subscription telephone timeshare systems.
Articles were getting so specialized that only one or two other
members really got anything out of most of the construction
articles. My interest moved to Assembly language and 2716 EPROM
programming.
I did a lot of work but dldnOt feel It worthwhile to
write up accounts of most of It. Oral presentations of my work at
meetings elicited little response.
I think this phenomenon may be
widespread.
We watched IPSO FACTO and our Elf newsletter grow for two years.
Then, when contributions fell off, we quit publishing and waited for
enough material to accumulate to make a full-sized °respectableo
Issue. This may be a mistake.
•
I think the publication should continue, with a reduced number
of pages If necessary.
ItOs Important to keep the lag between
contribution and publication smal I. When submitted articles donOt
show up quickly, authors will stop writing. So I suggest IPSO FACTO
stay on a bl-monthly schedule even If It Is only 10 pages!
It may
experience a permanent size decrease. But If Its appearance becomes
Irregular, I think It will die very quickly.
I ac~nowledge my share of the gul It.
I have some Ideas lOve
been meaning to write up--but Just hevenOt done It. Shame on me.
also want to thenk you and the rest of the IPSO FACTO steff, past
and present, for your efforts.
I have really enjoyed IPSO FACTO.
It Is the main reason I went 1802 Instead of buying a Z-80 starter
kit.
Good luck,
Ken Mantel
In reviewing this letter, I must first acknowledge that the
large gap between Issues 14 and 15 was partly the fault· of the
editorial staff (It really Is hard to get around to things during
December, with Christmas shopping, parties, and so forth). The
points he raises, however, are as relevant to A.C.E. as to the Elf
of the Valley club.
Our articles have tended to become quite
advanc~d
and
s pe c l a l ized both In the hardware and software areas, and while the
response to the newsletter' has been generally good,
IcanOt help
wondering how much of most Issues Is really useful to most members .
•
PAGE: 32
A major root of these problems Is the fact that a large number
of our members have never expanded their systems beyond the lK
level, and so are unable to r;un the majority of the software which
we have published. On the hardware side, people who do not have a
technical
background are often Intimidated by the amount
of
knowledge necessary to get the hardware projects working properly.
•
We have not experienced as steep a fal I-off In contributions as
Mr. Mante lOs group has (knock on wood II I),
but the appearance of
fairly advanced articles in IPSO FACTO seems to have had the effect
of Intimidating potential article writers whose projects are not on
the same lofty level.
This Is really a pity, because It Is
precisely these more elementary-level submissions which are of use
to the largest number,
and which can help reduce Instead of
enlarging the gap
(or should
I .say chasm) which seems to be
appearing In the membership.
On the hardware sld£, club-sponsored projects such as the
standard backplane, memory boards, oo o various other items, wi II, it
Is hoped, help a I argE number of our members to bui Id their systems
up to the point where th~y wi I I have access to more of the material
which we have publ l s he d , This Is c fairly ne cc.s s a r v development,
since
I do not think that the club or newsletter can be vleble for
ver y long if wo c snn o t present me t c r I a I r c qu I ring at I east 8K memory
without bypassing a majority of the membership.
Applications for
smaller s vs t om s h e vs certainly not been e xh e us r a d (one area that
comes to mind is us~ of microos to control
household systems and
e pp t l e nc e s ) but It would bc very difficult to put together a wholE'
newsletter, or even a significant portion of It dedicated solely to
topics of use to systems in the lK size area.
•
It hasnOt boen my intention her~ to present a picture which
Is
ell
gloom and doom. The possibi I ities for continuing success are
there.
We must, however, address the problems raised hare (and in Mr.
MEnteiOs letter)
if we wish our long-term prospects 10 continue to
be favoureble.
Future Meetings
--------------The March 11 meeting will be held at Sheridan College at
7:30 P:M. as previously announced.
However, the April 8 and May 13 meetings will be held back
at our former location, the Stelco auditorium in Hamilton. These
meetings will also begin at 7:30 P.M.
>
•
PAGE: 33
•
FOR SALE:
A.L. V~n Caul art,
4102 Tree Top Crescent,
Mississeuga, Ont.,
Canada. L5L 2L8
Tel: 416-828-7799 (Evenings)
ASR-33 TELETYPE with Tape winder
ASR-38 TELETYPE with Tape winder
KSR-38 TELETYPE
INTERDATA MOD 4 16 bit CPU with 32K bytes of memory
together with NCR305 Cabinet, muffin fans and
support rails. Ar c h l t e c r ur s of this machine is
near IBM/360 f em l l v .
•
1
1
30
IBM SYS/3 MOD 10 Computer System
1-5410 Processor 16K bytes
2-5440 Disk Drives (20 Meg/bytes, 10 fixed,
10 removeable)
1-5424 ~lultl-Function Card Unit t Cap eb t Iities of
print/punch, interpret, merge
sort, collate)
1-5413 200 LPM printer with 132 print positions
1-Set of IBM maintenance documentotlon with cart
Card Cabinet for 96 col cards
Wright Line Optiomedla Cabinet for disk packs
Disk packs for 5440 Disk Drives
Complete: Price only $20,000
Indlvidu~1
itoms can
b~
neqoti3ted.
Assembly Listing for COSMAC Graphics Program
In response to a number of requests, we are printing here
the assembly listing to the graphics program for which object
code was presented in the last issue.
It is hoped that this will make it easier to use, and will
aid in overcoming any p~oblems which might be encountered •
•
. ••Continued next page
PAGE: 34
THI: :.IA"I L, TI-[
t
:l
3
~
4
4
•
5
*
t,
"
F~LUl.dl[
HtTTCn:-.'~
, ••••• ,.(* •••• '*(.**~*******••••••••• *~* ••••••••••••••••••••••••••• ~ ••••••
S~eHC'Jl
INi'T
INt:
•
0',001O'.H rl
I
I':'.JC·
"
__J2
O,:,CI}
C4CO
C4;~
:}'1vlJ
C-.C3
L.;
Ott0;"
(,,0 15[0
~~ 05
,;1
1-.
15
C'tCb
C', C c
I-a
INTRPT
Ai
1
: 7
Cite"
C4vo
C'teL
r,
..''''
"
,6
1e
I',
.,
~v
21
..
_-----~-_.-
':'4
-. c,
z;
a~1-
S~TUP
lhHPT
I ~Il
HJ
U~H
0111
OFH
0""
1-" Ff/\,\
-: ,I,
041-.
C'tllJ
f
~
lj
1.,1·:
:."I
::1
(,I,
i. f-
u')
,;2
"J
TU'\NS
t>l
N= 1
(
u... ~:.
rb
) 'j
.36
jt
,]4,:tJ
~~ 4 i r:
0 .. :>9
~(f
C42:,
c.,, ' j
r;"
f"b
04lJ
'J<t2r:
n~
OFH
MJ
uC~
Ill)
05
iJCH
5
0-. <I
i
C4t"O
"/'t
l:
/e
M
5E
FIKST OJT GF
JC
•
~ •••• q.c..;.
~
•..
CUK
---~--------_.'1';.<
,.
':/. ~ .
U
"
r0
';1
04JI.
r; '1 :~ til
,?
,to
:"j
:"~5
'j~
C.,.j'i
~b
:4 jA
(
SCI.
"11
'"
L.I~
O,+jl,
ro
-J{1
04,;(,.
hJ 0E
J'
'J
04:Jt
..
0,.40
---"',1
Sl T AUTI': ON 1=11
Otl-
~
L~X
)Q
L"'l
I\CH
llli
OOtl
. ~~l-'--IJI
Ii:"
r. '+
!IP
'l"t
i-CJ
~~
ra:.
LEX
.j,,/.;;
.~
'::'. 't
~ ~
1
I'~l
05H
K
O-.,,~
F~
bl
::-7"'----l;:.~=~1=~;7,";~7;7--;:-;:--;;-;;-;:--;-:7':"------------­
oeH
SET JUMP AND ERASE UfF (-01
~(;
6'1
:JCH
ao
NLT5
,\0
b I
'1 (H
J5
7(,
5
Ct" tr-
c '15 C
t':)
I:) 00
71
C':'~2
3A 5"
1flj
C'154
7A
5~
F~
0'1
,\D
1j'."JA
FJ
(45ll
0:,5;)
~D
O~h
-'A
NOHl
71>
17
7iJ
I),
':·4?t-
1b
FB
f2 JC
d"
'H62
C4c3
C'."5
7
C'ftb
05
G;';
fi '7
0;67
fO
04,,8
.:; 1
""H
FJ ·JC
,A 1C
eD
?
OCH
Deli
1:
dU
C45e
C i ')'J
04/;J
'j
K .. 0
C4:>1
oj
b5
RETURN TO HAII\
tt
ts
74
)0
11.!
04
?
,,-.4(.
~H
7I
9;J
=5
Tu MAIN
tr;
J4
~I
AUru SET UH 1-0/
N[rUR~
~;.4r_
n
.:.---------------~---
V---------·
IJ
18
•
INPUT GCES INTC D
.. [ 1
~
f...~
I ..
11
"" • • $ • •
JA
.. 1
.:> ,j
..
0
:0
1
\~.
14
I~IU
'•• .;
't .. '7
';'
1~
I"'PUT K GUtS
K .. D ?
_dEaLJ.••::.....
"t
lj
*••••••**
01H
l)~
--ll
~ ••••••••
$\\ • • qt:
INE CURSUR
0011
NUll
~'t"'L
.
JUMP .. CfF
RETU"N
(=01
1=0/
\"0 I
Lei
t;','.J
,l
.. Uff
~UT~
ERASE" uFF
SEX
IIlX
~ l' I
Ul
SLI
JA "4
Ft
it . .&1, iW
SET
. ~·H-I-··~--·O(t'----·_-_·· __· _ - SEF,
R(lU~N TO MAiN
)7
I~
*.. t* =~.~: $.4-
SW~Ruur
.J,
r.', j
bYTE -1
DCI-
r
"> 't
CUR~CR
0=0
45
',f.:.
I.
I 8 i>1 I.'J. CIII P
.:It
3;
~
u ~
I-IGH (MU~~ ICCNE~S OF lhiTIA~ LURSl.~ POSITluN
lS PUT IN KE~ISI~q E
LO" CRDt:R AiJGillSS UF n.illAC c.i..E\SCI'. PCSi r i c.,
IS pur IN REGISTEK t
'j
,
C(EAR2, .. eY1EpAGE (()90C - ()<;Hl
.Jc,
Cit "C
'.2
AJDR(~S
I:
.)/, L l..
~
I~TEMM~PT
HIGH OReCR AOgRESS CF D~MM\ LUCATION
IS PJT IN RFGISTtH 7
LCo tMuER ADOKlSS LF OU~"Y LCCATll.N
IS PUT 1N RL~ISTER 7
,-I}
.:, 'J
CR~ER
F·F
7
,1
31
~c~
OAI-.
001-
jA II)
t-lJ 15
~:. 1 c
Q,.lU
... ;~
•
73
:/.1J
2'1
n
ftCCHESS ,,"Ekl SlACK ST ftqS
PAGE kHEKE CL~"'.:INJS START I~ ~E ~(aD C~ "~ITleh
'At THiS'riGH CKOlh ADDhtSS LU~MAhu~ RECYCLe TJ C~N
~G~G dRANCH USED TJ AVLIC LFfPAGE ShJ~T ~~~\C~
.-:fi.IGH (jj<l)lH INHKKuPT AOO",lSl>
1
rJA
fa 00
1A
07COl-
,,~lICC~'
0410
i)l,
(
Or,'.
fA
';41rJ
2...:
(
O~
Yt',jL
C40F-
0'.12
22
i ~~
S 1••(,.K
Ci"t.D
.~
,o
CI·
0111
01
ODti'-'-JOh
ODH
AC
_
K ..
e
SET
JUMP
?
ON ("11
SO tR~SE OH ( .. o 1
5
RE.TURN.... Ju HAIN
a(.1i
K .. C ?
NtTI:
HIC
•
,~
04<,(
~o
<;1
.. 2
~,
~4
05
'H
,.~
0:'10
~s
C/,71
94
.. 5
,e
uO
3A 15
i"47'
,;
,7
Cft/S
lJ4
'ii.
ilj
"i'1
1:' .:i
1Jl
lP
1:3
U4
I~ 5
L .. 6
tF
c-cu:
041h
04/A
(47.,
0"lC.
an
05 66
HI FF
EE
f2
5f;
C.,/O
E7
O',1f.
30
0', ,j)
Co't 11
O'o",j
~,u
34
84
8',
FO 01\
10~
l1J
III
C4>o,'l
Ill,
III
(4tA
\.i4 03
05
III
113
Ill,
115
de.
1i 1
1I"
11'.
oW
-j/i'
I' •
In
124
~4
US
--1';,
a...>\.
C."O
04<lt
C',;O
C40;,
0" .. .:1
C~{;4
._t,·,,,
",""Ji!
("0;.,
1>2
";/t A t1
I~;
l:.:'t ...M
04':'l.
C4,'tL;
134
1.>5
04A.l
O.Al
1l'l
IlC
"l
iii
..._,~.l .. ~.
1(
la
"9
fJ
J5- 3M
3C H
ro
fQ 02
;4 "I
1~2
3D
EE
f)~i.,.r:lo
h"
04,jL
c.., tj[;
I" 'J
FL.
?iA
\)"
C'tC~
0"
0"1.1
l!t';
!:i)
1;;1
1:;,)
c.,c:
0.,,;,
C4D4
O".;~
1,,1
"04LlI
C'te!}
--..1',2
c',el\
le.4
If.J'::
_.l!.}
1 ~ ..:i
II·;
III
112
1 13
1/',
17;
11"
17'1
1'/.,
lI'J
j Ii
r;
1"~
O~
2(,
14S
15 J
151
152
l' 3
.iG
t J
hl
.:IA
~f:
1 ~ 't
':'1
JS
15u
1~ 1
O~
L,,)
1.1.1
1(; 7
30 EE
C5
CF
1 J'1
h;
05- 10
139
140
i"l
1-92
143
1',4
145
146
14 '1
;;A
04-':,
1.; 1
llel
FO
lj')
--l2.i.
03
"':t,Cc-;
L.'4
l~l
1',3
!.:lc
D1
:lil
05 5j
J"
"...
')4
,;,.)5
F2
FtJ J8
04fl
U5
;)4
C, 16
0,
4
,\W[ A3
oalV
liB
..
1.
I 1
CI\LL SUBRl.oUTINE I\REAI
..
~._
K
.
_,._...
.._... .•.•.
~
2 1
t.""
.~
CALL SUBROuTll\E AREA3
04H
NeH
SEF
CALL SUtlRUUl INE Aql;A/t
~~
4
/liltA4
llelv .
leX
SD I
OcH
II.
~/\l
N(T6
l~
Lex
4
ARFAE
CCIV
SCI
on
0 SI"
11J
III
172
113
114
175
1IC
117
11 d
179
II.
I'k
II.
'" 4 1
__.....
...
.
_.~_
_..
..
___.- ,-_.._'''-,-_.-
..... ..
..
6 ?
CALL SU ~RGUTlI\E AREA"
I(
.
1 ?
••
CALL SUI:IR CUT 1M I\REA7
. ?
"CALL 8 SU8RlJlJl
I
, t
1\1: AREA8
UCIV
LC~
~~-{_.,--
N'~fl,
aSH
K': -
SLF
SOl
4
CALL
l.~
AR~At;
b~
UOlV
5
[\l,; fG
5£P
llClv
~EP
e,,"
~EP
"OCT
5
,-
'I 1
SU~kOUTIr.E
I\REA9
RETUllf>j HJ MAL"
C.ALL Sl.8RCUT 1M oaT
Rf:TURI\ lC ·'11\1,..
•• ••••• c... u,............................................'•••'........'• •••••••••••••••••
••
,
I
K" 3 1
SC I
1£,-;-----·-
1\AU rcz
T1'3E cnl\'
03H
I~Gl3"
ui;i--'--NCYa
SEt'
4
A~CAll
C.
~L18
REfUR'" Tu MI\IN
If AOlu SU liFF 111<:''\1.11 r i
~iJl
c~
lid
..
?
F
O/\Z
srP
Nu17
tl
10
u.
lo~
1('~
I)'.t[
04H
bW
JI.MI'
CAU SUBREiUUIIE AI\EA2
.. _........_"- .•._.- ._.
LlCTV
;A EC
O,',Eu
leX
HI
'"
"Ie
III.T2
4
AR(A2
aelv
AW~A7.
1'0 C'J
05 OA
j0 lE
HL___ .,_.(J1t-
C..
f)4i :.
U'.
Lex
;'C.l.___2.!H
r~ ~ Z
Nl r i
SEP
4
[;~
AREA I
r~
Cl.1V
lOX
li~ Z
:,(p
[.
Ncr"
7
IF JU"" SET Cr. t;Rl\ric.ti
OCr
otH
c El ~ Y
I:W
l ex
04"1.1
0 /.. L:J
C'tttj
ell:
GHI
1~~
~o
C"r:;!
oeli··
l')J
C4t;
J5
j,J c, E
l'''r·-
4
II> ..
It 5
It (,
10 /
O~
02~
",e17
Ll4
OC,t 1
LEI
l~Z
0:..1,.,i..
0't :c.
C~.~r
d
NAUlll2
r•
1\(14
5
OHi
III
IIR
.'lien
x TO
R"SET
II.
SEF
GHI
_,_._-
......
!.~.~1;J;
RETURN TO 1'11\1/\
srp
"'Jl2
~---._._
CALL SUIJRUUTII\E 1M T
HP
1" 1
...
5
e~z
l~J
30 t:E
fu
~A
NUL
13~
34
FO
:hCA
0', (e
e.-.eL;
131
1;2
.
IF ERASE SET CI\ BRANCH TU eRAse
I tRM.CI- TO Gl
IF It
CALL SUllROUlll\e MASK
C I1AS MASK TO MAKE NTH BIT ZE ... a
4
I ~ IT
l.
SFP
lCX
"'lila
]15
--~"""-"'."
K a 1\ 1
1:1\Z
I\~lJ'(;l
12.
1,0
Fli
C4C5
o..e"
l:HAY
In
13C
ut,
0..
0"0
_.-..._.-
1n
1';5
C...,ob
O'.J I
Cft t:(,
1"~
125
t2L.
05 4E
30 H
l!t ")
1'06
1't1
-
114
LJ ..
04.\1
ll.t~
NOTl'
12 j
04ci
1.,
I\(l~
Ull
Fb Ol
PAG£:
TO rolAIN
P.~l
~[P
NUF
j7, 'iD
ON 'aU
";-C-I--'-o At
OfH
115
~ETURN"
Jli~P
50 I
l.~&
1',1
E~ l
lC~
E:I\l
131
1 J iJ
1 ,,'J
C.. )L
0.. 1: ..
tHSK
OFfH
StX
OEH
Hr
SJ_R_._QJ;H
SEX
7
fR
Jli~P
CHI
on«
11"
111
rD o 1
,A 41
t;"
.. e4A)
c~
115
'Y"'ll
129
131
In
SEP
31. 93
.l .\
It 1$
E~.\SE
91
4
FD Of
C/.,:.,O
c:. '.,!;
c,,~~
Ol:H
e~z
114
',e,
O',~,
5
FO
.. F
Sit
ERASt
ODH
~tt.
JUMP
lOd
Cit Ii II
In
~1
101
JA 80
OlH
~?I
11)6
~:)
ll,
~KA~E
10.1
101
li,,2
103
104
IC5
O"~"
112
Ltl
He
SH
GLe
c,
'11
.. 8
99
04 !7
C'.
NulC.
.
I l,
11'l
l};.l
•
Fo ,)1
7A
,0
III
•
C4~l
SlllKCUT I !IE ARH1
III
PAGE: 36
-7-:C-----------,-;:-;--.------'-.-'
--------luI
! >l
•
"1·;;2
/j'tf
2
c'.r j
IU2
11ll
lU4
NLTBVl
lu>
1)(1-
\lIb
O'ir
Ftl 'J I
1U1
In
a It-
.'II-
05'
l~S
19)
a[
l'd
ff 08
1',2
I'J j
1''''
l'i 5
JF
Id"
04~5
1>5
C"Fl
aE
Cit. c
1':1..
l'j I
0"f4
lOU
C"fll
1''1 -.--------,C4FfJ
I,')
04rE
04Ff
I" 1
1,2
C15Jv
C502
h3
1'14
C:iJ3
fl·
l'J5
U:>
c :.>()4
eI,
AE
AE
\I'
1~"
111
1~1
HJ
l';~
l<i';
2'lC
ZJJ
UE
0>05
0)C6
ff
lB
csell
.~
O~C4
AI:
05
2J2
l4
201
08
OH,
5
.xcrevr
(lEH
Oet'
·-a~H'7-------------------------------
OFr
RETUR~TC
5
CURSCR
,IRFA . 1
20~
2C,
20~
2.1
"1
201
ZOe
~.J9
209
O:..fJA
Uf
L 1-')
0'jO~
hJ
:)1
2i 1
V~CL:
11
CfJIG
jA
UI:
Ff
1<
C=,lj
fa '16
Zit:
0515
.~
<11
dU
<1'1
22J
dl
2'2
·hl£'
0511
u~
21 ]
1I1
2U
213
21-<
215
210
2d
~E
ZI~
uS",'"
,13
21 '.
,J,
21S
•
OEh
204
2)5
212
1'\
6 ?
202
ZJo
E ~ .J
r.. •
(lur
1'),;)
!ill
7;1
o•
OfH
"REA 7
~o
'06
JA fl-
.~
f
l~
~F
OHA
A[
..O~
n
AI:
J8
RETUR~
Te
CU~SCR
NcrlVl
liS
224
22J
Ul
2a
22J
224
•
*•••••
(•• ••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
2, S
225
•
O~lli
2f
C, It.
,)5
22,;
za
2H
22"
226
0510
0>11:
0520
'loa
0,23
C525
0,20
6r
227
III 'Jti
3A 2A
RETURN TO CURseR
~
•AHA4
0:>20
M
2J5
0;'2<'
05
2.,;:>
.!.jb
oJ,ZA
If
2~1
t:?2d
J5
236
231
2H
239
»
l40
:
2;1
2>2
,j't
~Jj
01:
fF J I
A[
fb 01
2H
2.),J
-nl 4 ?
hi
2',1
"~2
C~2C
Z.:.
~
052~
2,,4
(:~2F
bf
fl) 1)1
Jk 3'.
t:;.J«
(:>J4
t'f;'
1'0
2~C;
C'jj5
r;5,31
4F
2,,~
i~'J
C,J J<j
lJ5
(';1
CS; ....
2:;2
C j JA
"r
)
251
252
253
,5J
274
2SS
,~..,
05.::c
j,~
, '.;.j
J',''v
' '.
u[
261
"-_.---_. 0~4!
tot.
263
OS4.'!
0544
2>~
dr
t·~
2S1
\,J"
'. E
fC" Cl
'\1:
fb QI
~541.
U~
,IV 5
t:'~4l;
dE
C~lt~
2~ j
os... e
H. CB
AI:
26;;,
201
,;t~
C541.
If
.\f
P5
26d
2ll ..
.no
·····R·Ey·Uti'N'·'·T'O ""C'L"RSO~f-' _.....-.-.-.. -....--.- . -- ...---.
OFr
>
kCTUR~
TU CURSCR
•••• »••••••••• ',.*•• ••••••••••••••••••••••••••••••••••• t •••••••••••••••
•
sue:~GUrUH AREAL
• 41 GlC
OFH
~
~
A~o
~ •••••,
••
ouEn---r..-(
j 11'13
SCI
GlG
2t2
C,41
Que
OfH
5
2(,3
204
20r.j
~(J 1
U~
01H
oel-
2~ll
2',5
rut;!
.. t
O~H
-2,-<;
2,,0
261
---L~4
.
~
NiH 1'12
OCI-
2'.1
24b
25,
c::, :h~
".
Olh
01H
2~
'J?
csrc
_ _~.). 1
III
ce
2~'"
2:'c
,51
AE
.
SU'~curl"'e AFlEA6 '
,Itt
O~ ~
2', 'J
£ 11
el
H-
..............
241.
243
2......
24:;
2/t~
1
ARI:,A4
228
22
2JC'.
2H
"32
2J3
B4
2J.
'.
2JO
SLBROU1'lNE
,~Cl
,,'13
ACI
OEn
01H
'FL(
LO I
JEH'
C IH
FL(
So F
GLL
HI
•
-'O~F'-'I----_-~"";'77E..-"'~:7"o;==;__---.....,.-------------'i
IlETUR~ 1C CU~SCR
OEI-
PL~
OdlOEh
1N (
0 fh
SEP
5
054E
lie
Q5 /,t
H,
05~1
.IE
05,~
(,5
r.'J
.1.71
272
273
274
775
i!16
l.1f
210
21'1
05~4
iJf
FU 01
oQ
Q5~')
j-(,J'I
21> 7
O:':Ju
05,(,
AL
1-0 08
i:.H
Af
c~~,.,
u~
Ll:S
2"'0
2'iI
O,lJ
dt
~92
C:"u5
u~
RETURN '0
~£f
SLuRa~TIN~
•4hA)
CURS~R
·
·••••·••-.·
.
2~o
Qd'~
FC
.
A~EA3
jA,
,'\E
21
PLL
u
.l.lj3
2114
I:r15
._ ...,
ACI
••••••••• t
d[
O)~4
GLL
•
.:~~~
(j~L~
HIlIlQlJT!N~ A R f A l '
~~l:A2
..
~81
f):.i~f.
~5<,1
•
loO
Lal
f):;, ~j
PAG!: 37
•
..................................................................................
Od
Rl:TURN .'0 CURSOR
NO11";3
2 .. 3
294
.....
•
.1
'U CURseR
RE'URN
"
'-
~,
s~eROUT1NE
•
•
~
-
'
-
'
MASK
.............•
'
t
301
0)(:,0
~F
Jill
0:';c1
.\(,
303
CS"lj
1-8 Jl
il5tA
"c.
71.
ac
Che
3)1
3-:9
3)9
HO
311
312
313
314
315
C5uL
_
R ••
._._
,I,
on
307
~l
OlERC
OCH
32
O':.iur
057'0
Q5/1
c) 72
'iC
Jed
JO<l
GI-l
H
310
SH
C514
'iC
ll5
C'j7~
UL
JIJ
5tj
PMI
OCH
412
bj:
~ASKI
(;,~I
OCI-
SE!'
S
JIlj
.l16
317
31 7
iHER(
•
.......Ut
•
REGISTER f !NTL RECllliA ,
I
O~OER
HI<.H
REGISllR C • C
OCH
OC~
.. 11
31J
314
o_
OIl-
PI<I
CEC
GLC
05tO
Jib
•
Lei
3u4
31l 5
30b
CO~'
O'h
OCH
"LC
PLC
~
u
c•
0 ?
HliOH. CRD~!!. ..I\EGISUR .L._._ .....
SHIFT CLEF'
HIGH C~DEA REGISTER C • D
l)
•
C-REG. C.I
kETUAI\
hfH Blf • I, OTHERS. 0
·••• ii••••••.. ... . . . .. . . ..... . ... . .
;;; •••••·
SLKkUUTI~E.OGT
•
•DuT
3l~
.He
~J:-:l"")"---------------"~:---:'---~-------------------------------------~-Jl~
32"
1;) 10
iJ,+
32,)
.)~l
C511
0',7"
C, If.
e, h;
C5 66
I.E
,Ll
~2 j
lP
j~4
HC
0,10
1'1
AC
1·5
3A ,)0
C57f
7B
tic.
325
.IlL>
32 i
.l2u
O~tsl
5E
;12<;
02t?
0;34
C,t:5
05:j()
e,iH
05<9
Ftl 02
U(.
JJI
2C
332
~,2
~2 ;
3< <,
OjlC
c~a'C
'iC
.ll~
d5
u~
SEP
eft
H.
31.2
4
CALL
MASK
S~dROU'lhE
MASK
OEIl
OC~
OCH
~lEI<U
OEf-
330
Q2f!
OCH
lJ~LAY
TIME CELAY
Jer
1
.13J
OCH
j:)~
OtLAYl
335
3:>t
5
RETUR~
fC CUkSCR
Hi
3.H
JJ~
HC
1l5eA
t-b 10
3 /• I
('.)':C
01.
,42
c:.. t:.J
~c.
341
C~jL
~
...
~
3'11
H
~C
05
.\4
eo
jA
~,"3
D..
341
(,5 <'0
Iii fl-
Hd
3~~
C~
.1't';
C':.I',tJ
~",4
CC
,2
C5"",
j~2
0:"'11.
,~
3,2
3"'
c)';U
~
353
354
2C
(5';1-
... _ .. _. __ . 05~ I
CALL Sc.dROUflNE MASK
51:: T
ler
erc
37 A4
64
Ghl
JA9E
lJ4
05A:>
05 66
8IT TI,;
o
OEH
'it.
05A2
05.\4
1\ TH
::'51
CHAO
I!l\l
KEY2
..
Ne
j!iJ
C~'-1~
O:;i'lf
IN~uT
OFLAY2
J4~
3~u
d 10
flC
CI-l:CK feR
346
35L
C5·;;)
wl'~
J't°'t
H5
1
'J
TtME tLL'Y
SfF
c.
OCIl
OCH
TIME CELAY
~ITH
CHECK FOR IkPUf
KEY2
OCH
.HOELAY3
'+
MASK
CALL
SU~ROUTI~l:
MASK
'.
---"5TT-- -ou:-----S"lT"N1H e i r TO
l~
SIR
SEf
O[~
5
~(TU~~
TL
~AIN
IhTEMRU:l NeUTINE
.
Ih Tk~1
," .
"
,-
091-
KESTuME D ~EGISTE~
FRu~ IhTEkKUPT
REGISTER Z IS SIAC~ r(I~TER
SA~E , REGISTER Oh STACK
~RllYRN
5A~~
c
REGISTERL~ ST~CK
SYNC
SYNC
SYIIC
PUT ADDRESS OF PAGE S INTO REGISTER 0
()
OCH
J
'J
GET
2
hCP
o
ll~E
START ADDRESS
'J
o
fo<CP
)
2
o
hCP
J
RE,RSH
IIXTRTfo<
LCCP TIL "DISPLAY STATUS" lLw
OU~MYLlJCATlO~
JUM~Y
USED
bU~E(;ISHR
7
'...............
*
' .....................•................ ................•..........
*'
•
•
••
CALL AMJ
~ETURN
E~ll A
>LP
3
C ~LL
I
JeH
SA~E C
50
021'
·C~I---O·f~H. .- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ROUTINES
p~
51 XC
GLe
SlXC
06H
(,bl
Pf<1
GLL
He
LeA
pd
LeA
lIle
•
....
:::s:se ;
i.''''
•EX! 1M
HT
SAVE 0
ObH
OIlH
•
~.**.4*
..
•'*SETUP
_ _~E'-"XJ.H
RESTORE 0
•• J'4~.** •• 4.*¥ •••• *~** •••• *•••• *•••••••••• *•• ~ •••••••••• *•• $~.$
S I' I LP
CALL
J4~
CAL L
04H
R£1
051'
REl
SET UP REGISTEPS 4 Ahe 5 FOR
CALL AND RElURII RCUllhES
•
C~f
4,2
4';3
... ~4
O!H" f&
qSFb.. ;ll
4),
";to
O~~l
o.
ff
A2
\,0 0002
OHI.
f"
uSH
451
4,J
":,'J
- . _ - - _ . _ - - - . - •••• __ ..•. _*
•
"t r)")
""I
",2
QuG2
1J,,0J
')4
"ttl]
'0',4
04 OJ
07
45 ,
otu<
~I~
4('.;.)
0("';6
Fo
JO
4bu
4.',7
C6Cr.
40 ,
4 t . :1
1')(,;,'1.1
19
>I l2
C;:..OD
'on
O<..I~
4'4
O(.,l~
"1":'
061li
CI.11
<o1d
4U
C"I ..
ifblU
Obl(.
40 ')
0"18
""I
}t.
'ti2
"<13
4oj4
4.:15
1)4
05 ~A
3(> 08
'IF
FE
Fo\
·)f
~7
fl
IL
1"2:.#"..
H
4111
4"2
4tJ3
4>J4
41'j ~
Ctolf
l)l"t:L.
H
0,,21
lJ/f
cun
04
,4
5'7
3~
4HI.
(to
4;;7
43d
CG>2~
hi JF
4b I
>~1:.I27
32 411
J7 3C
04
')5 IIh
4&el
25
".,2
'o~"
ce 2(j
J,(,0
O,',,2t
411
(I.J~\..
4',2
l<',
4'/3
414
C~ ..Iv
«(
~I
jQ
48»
4'iC
UC
fA Of
G" 3'.
~,
50)
C'i3h
E'l
~O:)
5-Jl
C,,~ll
F4
~J2
((.;'1",.
:;''l
501
502
5.J3
(Jt~
~(';4
Su3 L
O~Jlt~
I',
:)4
.;4
07
FD
J2
JO
Fo
~11
C.)--.4
d~
5':7
0042
";J&
C""4
0",,<..
::>1'7
510
OF
4e
OB
07
C(.l.\~
.~'J
~
Cu~E.
,)'!
51 :,
~1:J
S,~41-
rG>
~l~
'.>10
511
(lISG
fd
r6
0'51
01.52
~l-""
Cl5j .~1
1j
!)4
21
Gt.~5
0.. 31
522
CI. 57
C7
5<3
06:>d
HJ
~'.?'t
~~JA
32 46
C9
1-/1 bf
524
~2
~
~1. ~
0,,5C
~27
~"):JO
06,F
;~"
OlJtU
'>7
G4
,11;,
,2.,
flExI
~F
til
"~lYl
LH
·ff'.l
t'.
nF
LC It
C"/Iol) ,
,9
li:"
S"R
~
5<1
4
C~
CURSCR
~Ll
Of ...
1>1
LCf\
Mil
dEGIN
LCf\
j
;,,2.,
52G>
I
~IR
)/~
SfP
~2.'J
U~
53C
5J I
LCI\
SC I
5:>2
rocG>
J2 'oM
5,1.
~1
1'1
,jj
I'"
G"'l
S~~
53b
531
~
:!::
539
54,1
0... ,,(.
C"ol
53 ..
5Cj
:,2 4E
JO H
UI
:iJIo
,H
541)
PUT ADDRESS OF PAGt: lIlTH 5TCl;,(0
tCvv~,,::,~
·,···.·._·~·_·.····
_ _ w_
1>11
•'"
'"
CCHMANC PUT INTO REG. 1
CAl.L SUclRCUTINE'tUKSD~
7
ClI4MAl\O a F 1
C;
Off;
7
4
----c~Ksdll
SCI
5:"
5311
53S
.INPU.raF ,.?
.. ~
Of
~9
INPUT PAtlCol:D niTG '1IR 1<;/)
I/IoCRE~ENT "CII ESS
IN II E(j • 9
C.ALL Sli6Rl.uTl f\E Cl.kSCR
SHIF T RIGHT 4 11"'FS TC l.of\PAC" (;("",,,A/IoJS
SH
Sf!'
J"(
,()
fD
~exT liIIPL1 SH;REO IN "IRl7))
9
Hl
04 31
CLLe
.
')
....T·
C6b~
Cool,
tALL. SuallDuTl Ne Ill!';'i\
ACC
STR
9
9
I"C
SFI'
"
Cn ----c'URSCI'
7
LC"
OfH
SOl
Pl
RtGIf\
OR
NKEY
lrln
C"ND
'JIJt.-4
CtJtJ(1
I NPUTan
OF'"
AuTDI
I'.AUT tI
7
4
GfH
7
SO
r:>f,61
~>3
'.
7
(~
)
534
4
Cl.j. sell.
f4
~
!!
•
SI;Itr &0 1""IoIT PUT IN,TO .. laUII
tAll SUIl~L.hJT 1M tuRSGR
9
OfH
Ul:GIN
I<EYI
4
IlllNlCo
~jl
~j
• 'Vril !HPIJ
pL
Sl'l
St-L
SH
S"~'
sa
"
INPUT IiO£:S 1t,lC HIRI7) i
Q LEFT It T1I'ES
SKU I
H~
51"
:'11
51.\
::>1>
52J
,-tJ
Fa
513
'-'·"0u G-~.
JO
nEG I!II
*
1;
sex
~O.;
Cb4t
lilAC INPUT fRCI' lColVPAC
IF AuTe GN BVP ASS CHHlCo FOR UEPRE SSb.l "tyPAIl
t
0\"1
SIR
50(;
501
5il8
~12
'.OF';
HP
::>~~
.?10
,11
51.!
sfil
II, P
.HI
S;' R
ut,
~'l
5J4
.:II
0
S'?
Cr,
bf'
Gf I
et.l
LC"
SCI
~03
INIT
eRA!';C" If KfYP'C CE?Rl~EC
tALL SUdROUTIf\E 6LI~~
c.
f\~l YI
SUd~CU1INE
KEY
4
Illi "I<
/Io,(l'Y
OF"
hLIG
NAUI",
SF.P
'.o.Jr.J
513
514
:. ~,)
==
NlloI"l
AI.TUI
~
4', ,
4" ..
A~hhE~E
ADD"ESS OF PAGE ",ltEKI' COpy
CF tOM"'A~lC:> ceES
IVIA IlE~. 9/
')
8<,
$hL
4-(;
4W
c, : ..
f\IhUIU
AlIL
4",u
U
t'jb41
KEY
CALL
4
1f\11
CMNC
9
CMND
L: '"'
ftC
.N;(t: Y
~EV!
C<..3G>
0037
SJ
L,1#
p. I
4'':
494
o ,)j~
Be "';\ 11 T£t.
LONG bRANtt- '''IN CMy
~
O.
.f
34 35
n .:13
4:;~
~~5
f\
4'n
4'.1.
'oi/7
,,?ij
soe
~,\I
"4t1,;"
0L j I
06 Ll
-o
I"
'"
470
4Tl
472
413
4700
47"
"'b
47'
471;
4H
jA IT
J7 15
LI
L\.
""
'lCI: It'
,fltf $1 ACK
•• ••••• c•• , ~C"**"""*"'.,~~,!.'.•,~~'''!'''.!.''''''''''.:*' ••~'.~.!.!!,' ...............
I
•
46,
41. e
40"
SET LP REGISTU 2 "OR
,~Alt.
-1..,11
•
4bJ
464
f8
C6:"
Oole
j<.>l2
PH
L:n
PI.O
45-.
4,5
4:p
4,1
45d
4,9
400
401
01,,)1
41"
'011
'012
0'.>1'
STAtK
OZI'
STA(.I\
02M
LClt
~!i2
C6C~
4,'J'J
He
.) l'
4'.~
"11
••
ij
,
"'S
•
A'.>
... >1
7
OHI
tlCGIN
9
9
l;NIJCCiR
tlEGII\
NEXT
l\EXT COMMANO PliT INTO REG. 7
CALL SUBROuTINE CU"SOR
C(,;r~MAf\C
a f 1
Cfi SIORACE SPACE C~ TO BE .. II\
FNO tF STUKACE ~PA(;E IS W~SIOUEO AS
bEGINNING UF CISPLAV PAlik
AT liND
P
j\
REG.
PAGE: 40
PROTO BOARD
•
Eugene E. Jackson
3637 Snell Ave #385
San Jose. Calif
95136
ph: 408-224-0837
Last year I published a small article in Questdata mag. in an
effort to form a local 1802 club in this so-called silicon valley.
I received only 3 responses from people too far away to make a
meeting practical.
Even though I was dissappointed with the first
attempt I will be willing to have my name, address, & phone number
published in IPSO FACTO with hope that there are now enough 1802
fans nearby to form a club.
I like the idea of the project boards using the 44 pin buss.
Quest made a design error by not buffering data befor hitting their
44 pin but this can be remedied by immediately buffering data on the
interface adaptor that I will have to use before rearranging the pin
assignments to yours. If one wants to get fancy, bells and lights
can be added at this point for debugging purposes. May I suggest
someone draw a sketch of this proposal for the next issue.
I have taken considerable time to provide as much detail as
possible on this project in hope that someone may wish to try it.
The sound generator chip was used to test the feasibility of the
control board. This interface board was really the main goal of the
project! As an avid experimenter hobbiest this board provides a
means of evaluating hardware and theories. The SN76477 is a bargain
and a compromise and if one wants to produce more exact effects
there are better more expensive ways to do it.
•
A large gap seems to exist between the versitile micro and the
real world due to lack of standards. Until the manufacturers can
get their acts together the home micro will remain just an expensive
toy.
There is one thing to consider as we wire our circuits, play
the games and program our micros. We are evolving a new form of
life. I hope some improvements can be made.
While I think of it, have any members had experience relating
micros with handicapped or bedridden people. I ask because this is
part of the reason I got involved in electronics as a child.
There is a vast resource at talent in such people if a few were
willing to take the time to teach programming and theory.
1 1 1 1 get back on the project now; sorry; sometimes
wander and wonder.
I
tend
to
As to the Proto Board questions, yes, several other chips and
designs could accomplish the same thing but I designed this for
maximum flexability with the least hardware. I think you will find
•
PAGE: 41
•
th~
extra work well worth the effort!
I have made certain important changes in the program & design
that make the board easier to live with. Namely the 63 instruction
(N0 + Nl) is now used to strobe data to the board.
This prevents
. the usual 64 output instruction from falsly strobing a D & A. I am
including specific details about the board in the event you may
pUblish or modify the design.
The 4515 decoder was chosen so that the extra 7 output lines
could be used to select notes if a 50240 chromatic tone generator is
added. I have an idea how to use the Hexkeypad for 8 octave note
selection by direct entry, no conversion charts necessary, but more
about that some other time.
The 4042 Q outputs were selected so that during a program loop
that decrements a register the successive data will result in an
increasing frequency. Note that 50 toggles faster than 5F.
This
can be inverted by replacing the 4049 buffer with a non-inverting
4050 type but be wure to switch to Q outputs on DD # 1 & 2 for
active High logic.
•
The active High outputs of N0, Nl & TPB are combined through a
diode "and gate"~ iriverted and applied to the 4515 decoder to
provide the data accept strobe pulse for the 4042 latches •
1 M ohm range trim pots may be added to the common leads of the
D & A outputs which also presents a minimum value when all outputs
are active High.
Two D & A's may be combined to form a single 256 step unit if
the resistor matrix is changed but each D & A must be addressed by
separate program bytes (5F + 67 = step 247 or 15 X 16 + ') 7).
Once the logic & parameters have been set for the SN76477 the
only thing needed is the q output trigger pulse to activate the
sound. This facilitates a wide variety of user programs since once
the parameters have been latched all that is needed to produce sound
is the Q trigger. As you see, one doesn't really need the 1802 at
all~
it mearly adds speed and variety to the sounds one wishes to
produce. A few switches and a push button could do as well but much
slower.
The little gadget wired to pin 11 of the SN7fi477 is a homemade
optoisolator. Just take an LED & a photoresistor, put them together
using a bit of heat shrink tubing to exclude outside lignt and that
makes a voltage dependent resistor. I use it to modulate the output
level by varing Q duty cycle but it could also be used to alter some
other parameter as well. Fairly fast attack/decay periods can be
implememted using the optoisolator under program control.
•
Radio Shack supplies an excellent data sheet on the SN76477 and
I have tried to design around their parameters.
PAGE: 42
The program I have included is a modified version of "Four Byte
Del ight" wi th an 8 Byte D & A setup sequence tacked
to
the
beginning.
It references to page 0F for the sequence tables and
i ncl ud es the 63 output st robe fea tur e.
It yo u wan t
to
refe rence
some other page change the byte at 0017 to the page desired.
I use
page 0F because of chip 8.
•
The short program at 0090 is independent of the
first program
and can be used by itself to check out the different byte effects.
Run this test program, then enter the sequence:
l2,28,3C
4E,SA,60,70,8E via hexheypad
using "I" key entry between bytes of
course.
Presto!
El f becomes R2D2.
Now every "I" operation
produces a new sound.
To checkout a new value simply enter the new
byte and operate "I" again.
Example:
to lengthen the decay period
"8E", enter "8F"
and operate" I".
Be sure to write down what you
have entered for parameters because this simple program only shows
the new entry and the resulting sound depends upon all the previous
entries as well.
Enter 3010
Now tr y a test of the main program.
following sequences on page 0F starting at 0F00:
and
load
the
R2D2 Versus The Te lephone
0F00
0F10
0F20
0F30
0F40
12
28
3C
4E
SA
60
71i'1
8E
80
50
5F
2D
20
2A
28
50
04
04
00
03
01
01
02
04
11
00
00
11
00
00
11
11
11
01
00
11
04
04
11
11
4F
8F
40
5C
5C
20
4E
2D
01
01i'1
00
03
03
00
00
06
F0
00
00
F0
F0
00
00
11
08
00
0F
0F
0F
00
0F
11
•
The sequence tells a little story in sound.
If you have used
the same component values and wired your board like mine the message
will be quite plain and iS,good for a laugh.
It's hard to believe that such unusually complex sounds can
created using just one chip.
be
If no sound results from a particular sequence suspect either a
"2F" inhibit has been latched or the one shot parameter is too
fast
for the attack period.
A chart of the parameters
designing a particular sound.
is
included
to
help
in
custom
I think I will wire this circuit as a permanent part of my Elf
to replace the click/buzz output of the speaker.
Right now a small
transistor radio with a phono jack wired to the volume pot provides
my audio amp.
)
•
•
PAGE: 43
BYTE CONTROL #84
Eugene Jackson
3637 Snell Ave., #385
San Jose, Calif., 95136
This is a control program suitable for use with the sound
effects chip, the SN76477. Included in this article is the circuit
and program for my 44 pin experimentor's board.
The
board
incorporates a small Super Strip to accomodate any configuration of
IC or parts. All inputs and outputs are tied to Molex type pins to
facilitate patching via small jumpers to this strip. This way, the
user can assign functions of hardware. The board could include 8
more D/A converters but space didn't permit.
Rather than flowcharts, the listings have been presented with a
number of symbols.
Underlined bytes are relative jumps with an arrow indicating
direction.
The numbers indicate the LSD of the jump address. A
bracket under a byte indicates a byte altered within the program
0072
•
85
B3
Save
LR5
(pause)
in
HR3 (slow p.)
that can be modified to produce other effects .
I like to start programs at 0010 to leave room for expansion,
so be sure to use '30 10' for access. An end-of-page halt at 0082
provides a gate to some other program.
Program Narrative:
The program starts at location 0010, occupies a half-page of
memory, and takes data sequentially from tables on page OF. These
tables preset 8 D/A converters and very 0 on and off duty cycles.
The D & A and 0 outputs set parameters on an experimental 44-pin
expansion board.
Parameters can be defined as logic levels, D to R or D to C
values on a Super Strip socket. 0 functions as an overall output
level control and trigger.
•
The table location on page OF is selected via keypad entry and
is displayed on the hex D output. Upon operation of the 'I'key,
the program jumps to the selected location and displays the first 8
bytes from the table in sequence. This sets and latches each D/A
converter on the '64' instruction. The program then looks at the
following data in 4 byte sections. The first byte of this data is
displayed on the hex display.
If 00 is encountered here, the
program returns for a new location to be specified. The second byte
sets the number of repetitions, and the third sets 0->1 time and
pause duration.
The fourth sets 0->0 time and pause. If, for
example, data continues for sixteen bytes, four separate sequences
will occur with new data displayed with each four-byte set. Upon
PAGE: 44
completion of the sequences (00 detected), the program returns to
display the last location selected. This enables the same sequence
to be repeated by just operating the 'I' key.
If a new table is
desired, merely enter the location and push 'I'. Any number of
separate functions or devices can be software controlled using this
method.
•
Program Listing:
Comments
Set RB.1, RC.O, RD.1 to 00
Define insert point in RD.O
Define work page in RA.1
Access to RA.O for location insert
Set index pointing to data in RD
1D
AA
Keypad entry (loc.), display, put RA.O
1E
Prevent advance of RD
'1
21
3
22
Return for new entry if I : 0
Hold loop on I : 1
e 24
37~~
I : 0, now store seq# in RB.O
26
F8~AB
F8 40 BC
set display timer to 40 in RC.1
29
point X to data in RA
2C
EA
3~
2D
64 2B
Display data, advance RA, deer. RB
1!2F
2C 9C 3A 2F
Deer. timer, return if not: 0
...8B
time up, so check sequence count
33
if not = zero, reset timer, get next
34
3A ~
byte
Sbr. Selects starting point on Pg OF with keypad entry. Jumps
to selected location and displays the first 8 bytes in
succession for (40) duration.
Address
0010
14
17
1A
~
£
*
Code
90 BB
F8 1B
F8 OF
F 8 ,00,
ED
6C 64
2D
3F 1D
AC BD
AD
BA
AA
•
The sequence # may be any value and is always followed by
the 4 Byte Sbr.
The timer SBR was added just to give a slow visual display
of the 8 byte sequence.
~
37
FO
32 ~
39
64
3A
72
3B
3C
A6
16
00 3 6
If.
~::
43
72 A 1 A5
FA FO A1
11
Load current Data via RA to D
If current D:OO return & display last
location entry in RD, wait for new
keypad entry.
If current Data .NOT.: 00 (1st byte)
display and advance RA to (2nd byte)
Load current Data via RA to D and advance
RA to (3rd byte).
Copy current Data to LR6
Increment R6 by 1 to assure 01 00 does
not become FF on a Dec instruction
(RA on 3rd byte) Save 3rd byte in LR and
LR5
and imm. D with FO to cancel the Least
significant Digit and Str. in LR1
Inc R1 to assure 01
•
PAGE: 45
•
85 FA OF
47
4B
FE FE FE FE
A5 15
Sbr.
Selects 4 Byte sequwnce if .NOT.=OO and disassembles the
byte into nibbles. These are restored in the original
registers after being processed.
01-
004D
~4F
~ t51
55
57
~5A
~
~5E
@
62
64
~67
68
6C
~6E
71
•
Copy LR5 to D and AND IMM with OF to
cancel the Most Sig. Digit
Shift D left 4x to recover as MSD
Copy to LR5 and increment R5 to assure
44
90
81
23
39
7A
7B
14
22
39
7A
7B
21
A4
A3
83 3A 51
~
.....
30 5B
~
84 A2
82 3A 5E
~
...30 68
-,.
81 3A 50t
ii7B 1c? -72.
Set LR4 to 00 to initialize
Copy LR1 to LR3
Dec. R3 and loop until = 00 (Q=O times)
If Q=O and R3=0 jump to (Q to 1)
otherwise Q->O goto R4 timer
Q->1
Inc R4 and copy to LR2
Dec R2 and loop until=OO (Q=1 time)
if Q=O goto (Q to 1)
Q->O goto R1 timer
Q->1
Dec R1 and loop until = 00
if Q=O goto (Q to 1)
Q->O goto pause timer now
Q->1 start pause timer Sbr.
If Q enters this Sbr. as 0 it leaves as a 1 and v. versa .
Sbr. transfers Data through R1,2,3,4 making Q=1 or 0 decisions
to achieve and incrementing Q->1 or decrementing Q->O
duty cycle. DATA -08 gives short D. cycle. DATA -F7 =
long duty cycle.
0072
74
78
:tt
8
23 5
93'"-3A 74
31
..-
7A
eli) 7E
26 86 32 82
2A 2A 30 3D;
L.82
8A 3A ~
00 00 00
85
Save LR5 (pause) in HR3 (slow p.)
Dec R3 and loop until=OO (p. timer)
If Q=1 Q attack and pause is complete
(3rd byte) return to get Decay and pause
Dec R6 (Rep. value) if =00 goto. Pg check
(Rep .NOT.=OO) then backspace RA 2 bytes
and return to reinitiate Att. P. cycle.
LRA .NOT.=O nto end pf pg return to
start next 4 Byte sequence
End of Page now Halt
Sbr. determines pause time, repeat sequence and end of page.
•
*
sequences may be speeded up by shortening the pause timer
and loading and checking LR3 .
To use: Sequence all memory to 00 (90 AE BE EE 73 30 03)
------ Enter the program in memory as shown from 0010 to 0087
PAGE: 46
Enter an 8/4 byte sequence on Pg OF as shown in the
the example (location OF20 to OF2B)
Reset and enter a jump to the program using a 3010
Reset and run; enter 20 on the Hexpad and press "I" key.
Program will jump to Of20 and do the sequence. Operating
"I" upon completion of the sequence will cause a repeat
provided the same Location is selected.
Address
0010
14
17
1D
24
26
29
2C
2F
~
3A
3D
40
..2i!l
4D
51
57
5B
5E
64
68
6E
"72
7A
7E
82
85
Code
90 BB AC
F 8 1B AD
F8 OF BA
ED 6C 64
37 24
F8 08 AB
F8 40 BC
EA 64 2B
2C 9C 3A
8B 3A £2..
FO 32 1D
72 A6 1b
72 A1 A5
FA FO A1
85 FA OF
90 A4 81
23 83 3A
7A 30 5B
14 84 A2
22 82 3A
7A 30 68
21 81 3A
7A 30 71.
85 B3 23
26 86 32
2A 2A 30
8A 3A 36
00 00 (jQ
~
Comments
BD
1
--I
1
F8 00 AA
AA 2D 3F 1D
-
1
1
1
1
--I
Insert Point on Keyboard entry
Work Pg and Loc insert Display
location.
1
--I
1
1
1
1
1
1
2F
1
1
Initial D/A Set (8 Seq)
D/A Set timer.
Display 1st 8 bytes.
1
--I
64
1
--I
1
1
11
FE FE FE FE A5 15
A3
21 39 ~
7B
1
1
1
Byte disassembly and
restore.
1
1
--I
1
--I
1
1
Q-) 1 Q-)O
Vary duty cycle.
5E 39 67
7B
•
50 39 71
7B
-
93 3A 74 31 3D
82
-
3D
-
Pause timer
1
1
1
1
1
1
1
-- 1
Backup 2 bytes
end of page Halt.
Register assignments:
HRA
LRA
LRB
HRC
LR1
LR2
LR3
LR4
LR1
LR5
LR6
WORK REG
LOCATION INSERT POINT
D/A SETUP SEQUENCES
D/A HOLD AND DISPLAY TIME
INITIAL VALUE
SCRATCH FOR Q ON DURATION
SCRATCH FOR Q OFF DURATION
SCRATCH FOR A AND D VALUES
ATTACK OR DECAY VALUE SAVE
PAUSE VALUE SAVE
REPEAT VALUE
EXAMPLE OF A SEQUENCE: (Noise and one shot 1 3 pauses)
•
PAGE: 47
•
--> Initial display sequence
12 22 38 40 50 61 7A 86
OF20
-->
AA 02 86 42
OF28
(PRESETS 8 D/A'S)
0 TRIGGER OUTPUT
I I
I I
I I
I I
: :---------0=0 (pause on 0=0)
I
1----------0->0 dur (decay speed)
:------------0=1 dur (pause on 0=1)
-------------0->1 dur (attack speed)
----------------2 repeats (3 cycles total)
Note: 00 here causes pgm to return
-------------------Index Byte (can be used to alter the effect)
(All FF on page OF will take about 28.6 hours to complete
256-8 = 248 bytes divided by 4 = 62 seq * 256 rep *6.5 sec
=103,168 seconds!)
00/1 ENVELOPE SELECT:
LOGIC INPUTS
--------------------( Byte
•
(4 )
II)
Data
Pin 28
10
12
14
16
0
0
1
1
(2)
(1)
Pin
Pin 3
0
1
0
1
VCO
One shot
Mixer
VCO/Act
External N input
0012 MIXER SELECT:
----------~-------
(4 )
(2)
Data
Pin 27
Pin 25
PIN 26
20
21
22
23
24
25
26
27
0
0
0
0
1
1
1
1
0
0
1
0
( Byte 11)
1
0
0
1
1
(8 )
(1)
1
0
1
0
1
0
1
Pin 22
VCO
SLF
N
1
= INT O=EX
VCO/N
SLF/N
SLF/VCO/N
SLF/VCO
INHIBIT
Parameter Test Program:
•
0000
07
OF
7A E2 6C 64 22 3F 00
7B F8 FF B5 25 95 3A OB
37 08 30 00
Display keypad entry
0->1 Pause on 1=1
Return on 1=0
Example: If on the keyboard a 36 is output, D/A 113 is selected and
latched to level 6.
~
/[\
Tb
I
...
,to ...
f~'PNI
(.fl ""LIAES 'iZEIJ) 1'1
AANCi-!. OF- ,~To
o:roOES ~Ss.1> 'TO
tAs.vEf>J; tt~
DlI'IATS rtLo f-I\
c:.o""g~ '" ~f>J 7H!
&.ADPEJl. Ou.Tf'u..T
e:
(REVEto!.£. !noPES t.F ~
~S ENA8&£.P
t
U~
Cl. ~1A't~ 1JoJST~AJ»)
piA
~'KA.
La
l~ ,If- I} It.
QIf- Dy. p~ ~l
e~
\/
\'\.'Jo~lf,""
iii
i i i
(
Do
Q
Pitt
I 1.0
"
D)
/
r ,., Il.
.
,
'\c
~
'f
S-"
iii
'1
,) '''' ,)
C\
iii
/0
II
1>1> :: ~rm~
tL
iii
o/A e
N1.
C%C",rr SELECTs"'!
pIA TO ~E. &.4TU1EI) oN
1>/A ". M PlA))IIt , . OJ
I>~Crrr1tL. W,,"UtEP
1t)
PJ"",-rs
DI(#-:tT1U. To
D£vu:.£ ~Ec.T£D·
(
.)
_ _ _.....
~I~~Sf. ~"
"~"'3''-
rll/~T:
T"EM.S'.~
ItOS-O
To -.0"'''~R6L.E
(w~* I>/~ 7D ICE.
c,
~"',.
"tV~1.0c;. L"Tt.t+EI>
'1N'U.T'S
("yo)
o
<
To 9CApu>
(OllIESltoT)
/4 TO I OF If,)
\..
ut'TC."
t
OlA't""'''
L-£Jo'
U-%NM
~f
1
tsJ
Q
L
EN~e.
c.~T(.H F~
lt~'$"
4515
.::T
/)/,.
1
1>'
,1"1 I)' ,2.
co
+S'"v
4042
wit
1.A-TUf-9)
\/ \/ \/ \I
1
(!No
GlI $IT PI p", p~
"'.,. 1., '\.~py. a.
"btl- o«.\"rl'u.T-
'I.
f9 gl I!.I 6"1.
'0 ..
Cl~
1\
ItO SO
""W~ ~
Pr> /1-
PI> "
,
81
\/
,4.
JS()~ ~N I~ sTEPS)
7't) .,..
ElL......~E: 3~ TNS"tIltU.c:.'tt.O IlJ &.ATt~ES
#3 To A VAL"'E O~
+,..
DO
~,,""7~
cmc. •. PlI
*
•
•
•
», Oc, »~ p&I-
u.n...
t.Eltp~
BYTE CONTROL
* 84
•
•
•
BYTE. CONTROL 1tS4
19~1'
TO OTHER 4042
QUAD LATCHES
't4 TO 8
TO SN76477
ANALOG CONTROL
Jf\
OIP TO AUDIO AMP.
D/A#3
14 "N.C. .-t.
~B!T B
....
4
~
~
....
I
-'0/0#2
1M
YIh
0/liII:4
:iJ
.r-I
20")
SLF
lut...
-
21
,..-------f22
lut+
DIGITAL TO DIGITAL
LATCH OIPf/:2
TO 9176477 LOGIC
J
~~~
.5ut
r8
......
DECAY
•
OOIlNT L7
Y:j:~}Q4042
~25
DA~8
-
1ONE SHOT NOISEr
t:L
J
FlLT.L
24
• 5 1---~--+-<DA4#6
-
D* -
25 A
_--II
DIGITALTODIGITAL
LATCH 01Pf¢1
TO SN76477 LOGIC
~I
t:j:~}Q
i
I :lYl<
NSa.. _
EXTIINT 4 ~
MIXER
EXT
-
0/0#1
.002
r-t
IiI
I
-'-
6
23
:tr
16
141374
1
*.001
-:!:-
I
4042:tr
16
!i!f
-
-
-'-
?
24
.-128 eN. sa.2 si~Y I
....
/\/\/\/\
BIT , 8· 4
....
2 I,
FROMD0/J:2
SN76477
810'2
4515
21
DECODER
I
), /\ /\
FROM
D8
4050
3
D5
BUFFER
12
D4
04
4049
INVERTER
DI
~
~
I
....
D~
--
F\
BITI248
'.,
23
D7
'
Q
10K
& &
~ ~
'"
/\
HI NO TPB-
,..
---
-
/\/\/\/\
D7D6D5D4
D4D3D2*,
if\1t\1f\
""0
»
"
C')
rq
D3D11DI DO
.z=
1.0
PAGE: 50
MI NlJ'l'.l!:~; 01" MEETING -
NOV.
I.'J)
, 19'(9.
Mike Franklin
Eugene and Anthony Tekatch and John Myszkowski prsented new products from Tektron for
the 1802. Eugene presented a positive reportof the acceptance by industry of the 1802.
and highlighted some of the remote sensine; and multi-processor controlling application
currently under development. Anthony demonstrated the prototype of the NS57109 Number
Oriented Microprocessor (NOM Dec,78, Jan 79 Radio Electronics) and John presented his
Mc6847 colour video board proto-type. El1gene also presented his company's versatile
EPROM programmer.
The Executive were directed during the business portion of the meeting, to investigate
methods or incorporation of the club, and to review alternatives, such as liability
insurance, and to report the results at the next meeting. The club members in attendance
endorsed the ACE hardware proposal and buss pin assignment, with further discussion to
be held at the D~cember meeting.
MINUTES OF MEETING - DEC. 11, 1979.
This meeting was devoted to club business, the subject of club incorporation and the
hardware project. Mike Franklin presented a review of information supplied by Netronics
on new products to be introduced soon. 'rhese products include a 10 slot 86 pin
expansion board, an Epromer, Eprom board, A-D, D-A board and new software support.
With active interest evident from various manufacturers in the production of more
1802 products, the club discussed the merit of producing competing products, trying
to establish standards in clock frequency, monitor location, and I/O conventions.
The club formally adopted the 44 pin buss and the ACE buss pin assignment as the club __
standard, see Ipso Facto #14, and the use of a CPU clock rate of 1.758Mhz, derived from
a standard colour burst crystal, and the use of a regulated buss for board design.
aSSign~
To facilitate other systems, each hardware board will have the provision for pin
ment changes by the use of two pads,with a removable strip between, on each buss lead
at the edge connector. By removing the strip, users will be able to easily jumper the
leads to any pin assignment desired. The club was directed to produce a 10 slot backplane, with buffering between slots 1 and 2 for data, address, timing and MRD and MWR
leads to facilitate system expansion. A system interconnect from Netronics to ACE
buss will also be given proiority.
Two boards are already proto typed and debuggedan 8K Eprom board and a wire wrap board. A 16k 2114 RAM board with the Mc6847 colour
video circuit on board is currently being debugged. Boards in design include a Kansas
City Digital Cassette interface, Real Time Clock, and dynamic RAM. Production and
sale is expected to begin in the spring. All boards will be sold etched, drilled and
plated through, with gold edge connectors. No parts will be sold with the boards.
On the subject of incorporation, the club directed the Executive to investigate further
the insurance option, and to report the cost of insurance verse incorporation at the next
meeting.
MINUTES OF MEETING - JAN. 8, 1980.
The president reported that liability insurance was not available at a reasonable price
compared to the cost of incorporation. The Executive had examined the two options, and
concluded that incorporation offer the best protection to the Executive, Editors,
article Authors, and to the membership at large, should a law suit arise from slander,
economic or physical damage to an individual using hardware or software writes up in ~
Ipso Facto or from the use of one of the club's boards. The Executive will continue t~
develop the requirements for incorporation, and proceed with the process them selves to
minimize costs.
PAGE: 51
•
A third Executive member is required for incorporation, and since both the President and
Treasurer occupy two poistions, a third member was required. Bernie Murphy was nominated
and elected unanimously to serve for the remainder of the club year.
Mike Franklin advised the members present of his intention to seek ammendment of the
constitution at he annual meeting in May, to the effect that the executive be re-organized
into 4 committees, an executive committee, comprising the President, past President,
Secretary/Treasurer, and three members who would each represent one of the other
committees- newsletter/publication, hardware/software projects, and club activities
committees. Each committee would report to the Executive through their representative,
and maintain their own budgets and minutes. Mike stressed the advantages of more
autonomy and smaller woking units as the advantages of his proposal.
Fred Plethero advised the club of his intention to seek ammendment of the constitution
to change the election of the executive for specific positions to election to the
executive at large, with the executive choosing their own positions. Fred maintained
that in this manner, people may be more willing to run for office with the prospect of
being able to do what they liked, and possibly changing positions during the year to
learn new jobs and make it more interesting.
Should any of the membership wish to seek ammendment of the constitution, they must
advise the club of the subject of their ammendment, and have it distributed to the
menbership prior to the May meeting.
•
Fred Feaver moved that the next meeting at Sheridan College begin at 7:30 (Feb 12) to
permit more time for club discussion. The motion was approved.
The topic for the night was a demonstration by Vern Lowe of AMP of Canada, a manufacturer
of electrical connectors. He presented a talk on the use of industrial connectors, and
answered questions on particular applcations and on problems ctbuss expansion.
>
64K Decoding for Tektron Memory
------------------------------This circuit has been designed
boards which only decode for 16K.
Dan Carrigan
to decode and enable memory
The decoder enables memory in 16K blocks. The two most significant bits of the address are latched by a latch (74LS74) and decoded
by the AND gates (74LSOO).
•
One immediate application that comes to mind is for people who
own Tektron 7K memory boards. These boards only decode 16K of memory
so if anyone wants to expand beyond 14K and still use the Tektron
7K memory, it can be done easily with this little circuit.
>
... Continued on Page: 54
PAGE: 52
... Continued from Page: 20
Unique Netronics Math Chip Function
DEG
INV
IX
EX
LWX
MS
MR
PI
POP
ROLL
RAD
SF 1 or 2
SL or SR
SQRT
TENX
XM, XY
YX
- radians to degrees
- inverse tri 9
•
- I IX
- E to
-
X
natural log
memory store
memory reca 11
PI constant
pop stack
roll stack
degrees to Radians
set flag 1 or 2
shift left or right - multiply or divide by 10
square root
raise X to ten power, MAX 7
math register date exchange
raise Y to X power
>
•
Cuddly Software: A Product Review
---------------------------------
John McLaren
41 Walker Street
Coorparoo, Queensland,
Australia, 4151
r recently purchased CSOS and CSTP software from Cuddly
Software in the United States. I was pleasantly surprised with the
programs they work; they work well; they do precisely as the
advertisement says they will; and the documentation is excellent. A
full user manual and hex program listing are provided, with the
manual giving good details of all the commands plus examples of
usage. The guy (Paul) is obviously not making much money from the
deal because the standard of documentation is high, with crisp
reproduction the manual looks like it probably was printed using an
offset printer with paper plates.
Oh! Yes, as a throw-away line. I happened to mention to him that I
have two Elf II's: one without a vro board for the kids, the
neighbourhood, and apparently the rest of Australia, and one with a
vro board which is mine! mine! mine! So guess what happens. Cuddly
Software send two versions of their programs.
One for a non-VIO
system and one for a VIO system, and all for the same price!! That
is service.
•
PAGE: 53
•
•
The CSTP (Cuddly Software Trace Program) is good.
Once you
accept that 8-bit hardware has limitations, then you will find that
CSTP is one of the best debug aids available for 1802's.
As Paul
says, it turns your machine into a "super 1802" - if the program
being traced (manual or automatic single step by the way) wants
input, then you have to give it input, if it wants an interrupt then
you have to give it an interrupt. So, set it into automatic single
step, set the time for each step, and sit back to watch your program
go. Lovely!
The one which excites me, though, is CSOS (Cuddly Software
Operating
System)
which
is
a rudimentary operating system
(hereinafter denoted OS) that has great possibilities. Let's see it
allows you to: add, change, delete and erase bytes in any page, and
block-move data forward or backward within the entire address
space(64K). It displays full and successive pages on your TV.
It
has 64x32, 64x64, and 64x128 resolution (if you have the memory) and
allows you to run programs you enter or load behind it.
•
Additionally, there is a good discussion on how to alter (and
by implication, design) the characters displayed on your screen if
you don't happen to like them. Plus there are a few freebies in the
form of patches which Cuddly Software will give you if you ask
nicely.
However, the beauty of OS is that it is task-driven through a
task select table which can be altered (e.g. ERASE PAGE fills the
page with 0 (use judiciously, please) but you could alter the
function name to ZERO PAGE and relocate it within the task table).
Thus, by implication, you could add your own routines (e.g.
read/write totape or disk, write to printer, display graphics, jump
to language, etc.) which means that you could come up with a pretty
good operating system.
Finally, Paul is helpful. It you can't answer the questions on
his configuration sheet, just tell him what you have got in the
hardware line e.g. a standard Netronics Elf II with Giant Board,
etc. He does the rest. All in all, a very good package and worth
the money.
Editor's note:
We have had other favourable comments on Cuddly
well. Their address is:
Cuddly Software
98 Thorndale Terrace
Rochester, N.Y., 14611
>
•
Software
as
PAGE: 54
•
•
... Continued from Page: 51
A7
2 D
o !5
3 C
'Q6
ENO
4
!5
ENI
4
13
A6
12 D
TPA
II C
0
9
II
8
EN2
ENS
10
74LS74
74 LSOO
16K BLOCK ENABLE DECODING
•
Errata: Day of the Week Program
Michael Mirsky VE3 INC
10 De Quincy Blvd.
Downsview, ant. M3H 1Y5
Following are some corrections for the day of the
that appeared in issue 15.
week
program
Line 170 was omitted. It should read:
170 IF A=999 GOTO 60
Line 80 should read:
80 K=(60+(10000/(100*M)))/100
Sorry about these errors, I don't know how I let them slip by.
Also, it should be pointed out that the program works because of
Tiny's integer arithmetic.
If full Basic, with floating point
arithmetic is used, the program will have to be modified using the
INT function for every division in lines 80 to 120 so that all
;ractional parts are truncated as Tiny does in division.
•
PAGE: 55
•
•
PALO ALTO TINY BASIC INTERPRETER
-----------------------~--------
Robert Edwards
104 Montreal Lane
Oak Ridge
TN, USA 37830
The Palo Alto Tiny Basic Interpreter for the 1802 is alive and
well. Now that its checked out, the subsidy on its distribution is
being withdrawn. Thus the current price for a copy of the source
listing
is
$2.00 (US), which just covers expenses. I have
distributed some 70 copies of the source code to date. I would like
to hear from experimenters on their success (or lack of it) with the
interpreter. Also, I would like to hear from US and Canadian owners
of Netronics and Quest systems who could serve as distribution
centers for cassette copies of the code.
This
means
that
experimenters can send the center a quality cassette and $1.00 (for
postage and package) and would receive a copy of TBI1802 on the
cassette in the return mail.
•
SUPER ISOLATOR--NEW PRODUCr' RELEASE
ESP Electronic Specialists
171 South Main St.
Natick, Mass. USA
01760
IPSO FACTO has received the following new product
which may be of interest to readers:
announcement
"Severe AC power line spikes, surges, noises and hash are
prevelent
in many MicroProcessor installations. Operators are
plagued with unexplained crashes, memory loss and program glitches.
Disks,
printer and processor often interact, aggravating the
problem.
ELECTRONIC SPECIALISTS' recently announced SUPER ISOLATOR is
designed to curb these severe electrical problems. Incorporating
heavy duty surge/spike suppressors, the SUPER ISOLATOR features 3
individually
dual-PI
filtered
3-prong AC sockets. Equipment
interactions are eliminated and disruptive/damaging line spikes and
hash are controlled. The SUPER ISOLATOR can accomodate an 1875 watt
load, with each socket capable of handling 1000 watts.
Severe power line spike/surge and hash control is combined
interaction-free operation for $79.95 (Model ISO-3)."
•
>
with
PAGE: 56
•
MEMBERSHIP RENEWAL/CHANGE OF ADDRESS
The dues for the new club year, September 1979 to
are as follows:
Canada ••••••••••••••••• $15.00
Elsewhere ••••••••••••••• $18.00
August
1980
•
(Canad ian)
These new rates include provision for FIRST CLASS POSTAGE which
should ensure that your copy of IPSO FACTO arrives as quickly as
possible.
Do you have any friends? If so, they might
gift subscription to IPSO FACTO.
well
appreciate
a
New members are required to pay the full dues for the current
year and will receive all the IPSO FACTO issues for the current year
(September 1979 to August 1980lBack issues for IPSO FACTO 1-12 are completely
so1d out. I
Please make cheque or postal money order payable in
Canadian funds and send to:
ADDRESS CHANGE
Cl
NEW SUBSCRIPTION
o
RENEWAL
o
D
"THE ASSOCIATION OF COMPUTER EXPERIMENTERS",
c/o M.E. Franklin, Treasurer,
A.C.L,
24 Duby Road,
ACTON, Ontario, Canada.
L7J 2Pl
•
,
ATTACH OLD MAILING LABEL
HERE FOR CHANGE OF ADDRESS
•