home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CP/M
/
CPM_CDROM.iso
/
cpm
/
utils
/
asmutl
/
hd64180a.lbr
/
EXEC.DZC
/
EXEC.DOC
Wrap
Text File
|
1991-08-04
|
13KB
|
373 lines
To : Whom It May Concern
From : Richard C Holmes
Date : 23/07/1991
Re : Z80 Source code modules / monitor / Exec / download
In General
----------
The software on this disk / in this library constitutes a very large and
extended programming (and debugging) effort over a number of years. It
will be largely up to the user to determine how to use the software
provided as it has always been an in-house product - no manuals exist
for this software.
The software is used to provide a control monitor program with quite a
few facilities that make programming embedded Z80 systems a lot easier.
The software is supplied in source and library form suitable for the
RMAC/LINK/LIB digital research products and includes some batch files
for linkage. RMAC was used as this is what I learned on and stuck to,
thick and thin!
Stop here. I am not interested in a debate as to the reletive merits of
Intel instruction set vs Zilog. I learned on Intel with ASM on a CP/M
1.4 system and have stayed with these op-codes.
Well, o.k. - I'll have my say :)
I hate LD as an opcode - MVI/LXI/LHLD/LDED/STA/LDA.. etc.. are much more
descriptive and "talk better in my head". I feel they are thefore less
prone to being used by mistake than the common cure all LD instruction
when you gotta use brackets and other things. URK. I bet it's difficult
finding a mis-used LD instruction!
The Copyrights of SME Systems and Holmes Industries are mine. I am a
director of both companies and I HEREBY permit all the Z80 and HD64180
type software to be used so long as :-
1. No charge is made for it. It is still my code. You can use it, modify
it, extract from it BUT NOT SELL IT. If you sell it then lets talk!
2. No liability under any circumstance is placed upon me or any of my
companies due to its use or mis-use. You use the code, then any
problems are yours.
These notes have been written to a long time after the enclosed software
was written.
Signed...... Richard C Holmes.
CAVEATs
-------
The software that I give you has been used by me and my customers for
years. This is not to say that it is bug free or even that it is
suitable for anything other than looking at. Standard disclaimer..
All the code is in the Digital Research RMAC format and the (partial)
support library I wrote for the hitachi derivative are provided. There
are undoubtedly some enhanced instructions I have not bothered to
encode.......
I try to stick to a "RISC" type programming methode whereby I use a
limited set of simple instructions and avoid at all cost anything that
may get me "caught up". I like my code to be SIMPLE.
As to the software itself, I have not been overly bothered with triky
programming and tight code, rather, with making the source a little
easier to work with and therefore reletively "clean". If I needed a
faster program then I use a faster hardware solution. It is MUCH cheaper
than fiddling with software unless quantity is involved.
If you want tricky super tight software then forget it! I hope you agree
with me. To us in a small-run commercial environment where debug time
can be expensive, a little extra time spent planning and writing more
maintainable code has been encouraged.
I am giving this software to you because I have little use for it now. I
love the Z80 and its derivatives and would like to see other users
benefit from my effort.
If you feel strongly enough about the software that you must tell me
something, then please do so.
I can be reached best via our post box :-
Richard Holmes
SME Systems P/L
P.O. Box 409 Mitcham
Australia.
*** T H E S O F T W A R E ***
There are two software sections that interest embedded systems programmers.
1. MONITOR
A program for running in an embedded controller.
2. EXEC
A part of the monitor that acts as a pseudo-dos. It provides a few
functions and facilities that application programs can use.
To put this together into a monitor for a new embedded controller
product I follow these steps, assuming un-tried hardware :-
1. Design hardware. Use a Z80 or compatible.
2. Get hardware working with a port pulser. Pulse each port and observe
on a CRO. This simple technique I have found invaluable to detect
artwork faults.
3. Setup an I/O equates library for the hardware.
4. Modify an existing I/O driver library to suit.
5. Link modules together : monitor, exec, I/O, download
(an example for the "moke" board is provided)
6. Put into rom and hope. If the hardware is good then it usually works
first time or near enough. Usually it is a memory addressing or ram
type fault if the monitor does not work on new hardware.
--- Next I use the monitor to exercise all the hardware then I write my
application program and download it to ram and run it / modify it /
download it / run it till I'm happy. After this I tack my application
program at the end of monitor code in the ROM and make the monitor run
it automatically. Effectively then I ship out to a customer my monitor,
the exec code and the application code sitting above it all. In
practice, I have done this many times and with great success.
CMON - Monitor
--------------
Embedded controllers are a lot easier to work with when you can get
simple access to the ports, memory, run down-loaded programs etc.
Software for doing this I call a MONITOR. The "CMON" is such a monitor I
wrote for my COREBOARD Z80 processor card. A manual is provided, in
Wordstar format. The MOKEMON library is another example for a '64180
processor based card.
The CMON files are :-
CMON.ASM Monitor main module
CMON.MAN Wordstar(tm) manual
CSUBS.ASM Coreboard monitor subroutines
DOWNLOAD.ASM Receives code from serial port and puts into ram
RAMIO.ASM Parallel port mass memory storage driver
IOAD.ASM A-D I/O driver
IOLCD.ASM LCD I/O driver
IOMAP.LIB '64180 port names and addresses (map)
CORE.LIB Coreboard equates library
HDZ.LIB Partial '64180 equates
HDZ80 '64180 equates
Z80.LIB Digital research Z80 library
EXEC.LIB Library of EXEC call name equates. Vital.
LNKCMON.ASM Linkage batch file to make a monitor 'com file.
An example of another complete monitor is the MOKEMON. This is supplied
in a separate library called "MOKEMON". There will be some duplicate
code but it is complete in itself.
EXEC
----
We write/wrote a lot of embedded controller software and this usually
means a lot of assembler programming. To make this a bit easier I
decided to impliment a sort of "pseudo-DOS" or "toolkit" of functions in
the standard monitor accessable via an "RST" instruction.
The result of this is that an embedded controller application program
can be loaded onto the end of our monitor code, automatically run, an
use the RST entry point to get a lot of services and facilities.
One interesting point with the EXEC module is that I have provided a
means to tie into the interrupts of the 64180 so that an application
that it downloaded can take interrupts for serial I/O, timer and
whatever then release them when it terminates.
Another thing, the exec uses the concept of "channels". A channel is a
means of doing I/O, usually character I/O to an LCD or printer or serial
terminal etc. An example of what happens is that an application program
selects the serial terminal, does its I/O then selects the LCD for more
I/O and so on again and again. By doing this it allows an application
program to use all the formatted routines for inputting and outputting
to a bunch of different devices without having to do extensive
re-writes.
Modules
EXEC Controller-Base module. Picks up commands, dispatches to I/O
EXDIN "Dinos" '64180 I/O driver.
EXMOKE Moke board I/O module
EXECCORE Core board EXEC
EXCORE I/O for core board
EXECMON Old CMON modified for EXEC. Use CMON. Sample only.
EXECCPM CP/M-Base module. Picks up commands, dispatches to I/O
EXCPM Limited CP/M I/O driver. Test modules.
Examples / Miscellaneous
ET.ASM Test program for EXEC functions.
IMI/O.ASM Interrupt driven I/O module for '64180. For example use.
CSIO.ASM A play test of the clocked-sync-I/O port on the 64180
CLOCK.ASM An interrupt driven real time clock. Suspect bug at 24.00.
CODE-LOADING
------------
When developing an embedded system, it is very handy to be able to test
code without having to continually blow eproms then erase them. A real
time saving is to send the code down a serial port, save to memory and
then run it from the monitor.
CODELOADING is the action of sending a '.COM file down a serial link and
running on target hardware.
The DLOAD.COM program sends a nominated file out the CP/M port. At the
embedded controller it is caught and stuffed into the memory address
that is specified by the user of the DLOAD program. The software in the
controller should be using the "CODELOAD" module.
Running the downloaded program is next done by the "G xxxx" command in
the monitor.
CODELOAD.ASM Source code to embedded controller "catcher"
DLOAD.ASM Source to CP/M "sender" program (with V-terminal).
DLOAD
-----
This is the CP/M program for sending programs down a serial link to an
embedded controller for running in ram.
Press "C" for connect mode to act as a virtual terminal.
Exit terminal mode with a control-\ (backslash)
Press "Q" or ESC or Control-C to exit.
Press "D" to start downloading.
(DLOAD will now send an ESC to terminate/flush any
buffer/activity by the controller and then collect and ignore up
to 50 bytes returned by the controller).
> Enter the file name to download to the controller
> Enter the address to load to.
> Enter number of bytes to download.
Dload is NOT real smart. You can easily trick it. It is intended for use
by not-dumb users which means anyone that tinkers with embedded
controllers. The source is there for those that must have it - don't
expect too much - enjoy!!
---- H A R D W A R E ----
This is not a list of items for sale. If you just must have one then
maybe we can do a deal but I'd rather not!!! I would have to find one
that works, test it........
It is provided to let you know what the software I am supplying runs on.
DINOS
-----
A processor card that forms the basis to a point of sale terminal as
used in a PIZZA shop. It controls a 4 line 40 char LCD display, reads a
100 key switch array and is networked via an RS-485 link to a host
computer. Features are :-
* Fused switch mode power supply, transient protected.
* One RS-232 port, transient protected.
* One RS-485 port, , transient protected.
* Connects to 4 line 40 char LCD
* 12.288 mhz 64B180
* 32k rom, 32k ram
* Batter backed ram
* Power fail, watchdog via MAX-691
* Reads 8 by 16 matrix switch array
* Beeper
* Switched output for driving cash drawer
* 6 bits of configuration input port
* Spare 8 bit output port
CORE Board
----
Some years ago I designed a "CORE BOARD" which had a HUGE amount of I/O
and ports / options to make it suitable for embedded controller and
special functions applications.
It has
* Z80, 4mhz (design, could go faster - 8255's limiting factor)
* 32kb ram, 32kb rom (small mods required)
* Real time clock, battery backed.
* Power fail detect
* Watchdog
* 2 serial ports,
* 4 X 8255 non-dedicated chips for general purpose I/O
* All cmos (chip dependant).
* Size 280mm by 165mm
* +5, +12, -12 supplied required ('148x RS-232 drivers - old design - sorry)
To support this board the "CMON" monitor was made.
MOKE board
----
This is a small general purpose cpu board designed by a friend in his
spare time. It is used as a basis to small embedded controller
applications of his. I wrote a special monitor for it for him which is
still being used in a breath tester of all things!.
The hardware specs of the moke board are :-
* HD64B180 (Hitachi) enhanced Z80, 12.288 mhz
* 2 serial ports. MAX-232 charge pump chip on one port.
* One male 25pin "D".
* Un committed chip selects to expansion connector
* Reset switch
* 32k ram, 32k rom
* Power fail/watchdog/battery support with MAX-691
* Address, control, data lines to expansion sockets
* All cmos (chip dependant).
* Size 110mm by 112mm
* Single 5v supply
Please see the MOKEMON libary. This (should be) a complete ready to go
EXEC / CODELOAD / DMON file in some packed format. Unpack it, assemble
the files under RMAC and link with LINK and use the LNKMOKE.SUB batch
(I mean SUBMIT file) file.
Good luck. Z80 forever.......Richard.