Double D_Firmware_1983 D Firmware 1983
User Manual: Pdf Double-D_Firmware_1983
Open the PDF directly: View PDF
.
Page Count: 151
| Download | |
| Open PDF In Browser | View PDF |
JADE COMPUTER PRODUCTS
CP/M 2.2 - DOUBLE D
THE FOLLOWING IS A LIST OF FILES PRESENT ON THE JADE DOUBLE
DDISKETTE. A BRIEF DESCRIPTION IS ALSO INCLUDED.
i
~
ASM.COM
£lIM. ASM
1- BIM.HEX
BIOS.ASM
'V
BI OSGEN. COM
'~
BLT. ASM
*'
BOOT. COM
CBIOS.ASM
CPM20.COM
::I<
DCM.ASM
A< DCM. HEX
X DCMGEN. COM
,X
DDBIOS. ASM
'DDBIOS.HEX
DDT. COM
DEBLOCK.ASM
DISKDEF.LIB
DUMP.ASM
DUMP. COM
ED. COM
>t FORMAT. ASM
~ FORMAT.COM
~
)f
LOAD. COM
MOVCPM. COM
CP/M ASSEMBLER - PROVIDED BY DIGITAL RESEARCH.
BOOTSTRAP INJECTION MODULE - PART 2 OF, A SYSTEM
BOOTSTRAP PROM. IN TDL MACRO ASSEMBLER SOURCE.
BOOTSTRAP INJECTION MODULE - THIS FILES IN INTEL
HEX FORMAT.
BASIC I/O SYSTEM - PROVIDED BY DIGITAL RESEARCH.
BIOS FOR MDS DEVELOPMENT SYSTEM.
BIOS GENERATOR UTILITY - USED TO READ AND WRITE AN
IMAGE OF THE USERS CBIOS FROM AND TO SYSTEM TRACK
O. THE IMAGE OF CBIOS RESIDES AT 1000H TO 13FFH.
USE DDT TO PUT THE CBIOS IMAGE AT THAT ADDRESS.
BIOS LOADER TRANSIENT - SOURCE CODE FOR "COLD
START LOADER" AS GENERATED BY MOVCPM.COM.
BOOT - PRESENTED AS A COM FILE,
IF EXECUTED BY A
SINGLE DENSITY CP/M SYSTEM IN WHICH THE DOUBLE D
ALSO IS PRESENT, THIS WILL BOOT THE DOUBLE D
SYSTEM.
BASIC I/O SYSTEM - SKELETAL BIOS PROVIDED BY
DIGITAL RESEARCH.
IMAGE OF COLD START LOADER, CCP AND BDOS IN THE
SAME FORMAT AS GENERATED BY MOVCPM 20 * AND THEN
SAVE 34 CPM20.COM.
DISK CONTROLLER MODULE - SOURCE CODE (TDL ZSO) FOR
THE DOUBLE D ONBOARD Z80A.
DISK CONTROLLER MODULE - INTEL HEX FORMAT OF DCM.
DCM GENERATOR UTILITY - USED TO READ AND WRITE AN
IMAGE OF THE USERS DCM FROM OR TO SYSTEM TRACK O.
THE IMAGE OF DCM RESIDES AT 1000H TO 13FFH.
USE
DDT TO PUT DCM IMAGE AT THIS ADDRESS AND TO MAKE
PATCHES.
DOUBLE D BIOS - CP/M ASSEMBLER FORMAT SOURCE CODE
FOR DOUBLE D BIOS. THIS ASSEMBLE IS LISTED IN THE
SOFTWARE MANUAL.
DOUBLE D BIOS - INTEL HEX FORMAT DDBIOS FILE.
DYNAMIC DEBUG TOOL - DIGITAL RESEARCH.
DEBLOCKING SOURCE CODE - DIGITAL RESEARCH.
DISK DEFINITION LIBRARY - DIGITAL RESEARCH.
FILE DUMP UTILITY - SOURCE BY DIGITAL RESEARCH.
FILE DUMP UTILITY - COM BY DIGITAL RESEARCH.
EDITOR UTILITY - DIGITAL RESEARCH.
FORMAT UTILITY - DOUBLE D FORMAT PROGRAM SOURCE.
FORMAT UTILITY - DOUBLE D FORMAT PROGRAM. FORMATS
ON ANY DRIVE A THROUGH D IN SINGLE AND DOUBLE
DENSITY.
LOAD UTILITY - DIGITAL RESEARCH.
CP/M RELOACATION UTILITY - GENERATES CP/M SYSTEM
WI Tf:-I BL T FOR ....IADE DOUBLE D.
1
OL[ISYS. COM
PIP. (:01'1
SBD.ASM
STAT. COM
SUBMIT. COM
,t SYSGEN. COM
XSUB.COM
SYSGEN UTILITY - DIGITAL RESEARCH SYSGEN. COM AS
DOCUMENTED IN CP/M MANUALS.
FILE TRANSFER UTILITY - DIGITAL RESEARCH.
SYSTEM BOOT DRIVER - PART 1 OF SYSTEM PROM BOOT.
ASSEMBLED SOURCE LISTING IS IN SOFTWARE MANUAL.
SYSTEM STATUS UTILITY - DIGITAL RESEARCH.
CP/M BATCH SUBSYSTEM - DIGITAL RESEARCH.
CSL/CCP/BDOS GENERATOR UTILITY - DOUBLE D SYSTEM
TRACKS
COMPATABLE.
SIMILAR
TO
SYSGEN. COM
DESCRIBED IN CP/M MANUALS BUT DOES NOT READ OR
WRITE BIOS. USE BIOSGEN FOR YOUR CBIOS.
EXTENDED BATCH SUBSYSTEM - DIGITAL RESEARCH.
THE SYSTEM TRACKS HAVE A DIFFERENT LAYOUT THAN THE DISKETTES
DISTRIBUTED BY DIGITAL RESEARCH.
THIS SECTION PRESENTS
A
DISCRIPTION OF THE SYSTEM TRACKS (0 AND 1) AS DISTRIBUTED FOR THE
.JADE DOUBLE 0 DISK CONTROLLER BOARD.
THOSE MODULES RESIDING ON
THE SYSTEM TRACKS WHICH OFTEN NEED TO BE MODIFIED FOR A SPECIFIC
SYSTEM ARE ON TRACK 0, WHICH IS IN SINGLE DENSITY. CCP AND BDOS,
WH I CH ARE NOT MOD I F I ED BY· THE USER ARE ON TRACK 1 .I N DOUBLE
DENSITY.
ALL DATA TRACKS ARE IN SINGLE DENSITY SUCH THAT THE
DOUBLE D DISTRIBUTION DISKETTE CAN BE READ AND MODIFIED ON MOST. 8 11
SINGLE DENSITY CP/M SYSTEMS.
THE" FOLLOWING TABLE SHOWS THE LAYOUT OF SYSTEM TRACK O. THIS
TRACK IS FORMATTED IN SINGLE DENSITY WITH 26 SEQUENTIALLY NUMBERED
SECTORS.
SEcTQR
NUMBER
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
EXECUTION
ADDRESS
FORMAT
LO AODR
MOOULE
NAME
N.A.
1380H (OD>
1000H
1080H
1100H
11S0H
1200H
1280H·
1300H
13S0H
1400H
1480H
1500H
1580H
16QOH
1680H
1700H
1780H
1800H
1880H
1900H
1980H
1AOOH
1 ASOH
1BOOH
lBSOH
lCOOH
1CSOH
IDT
BLI
':LDi
BIOS
BIOS
BIOS
BIOS
BIOS
BIOS
BIOS
BIOS
RSV
OCM
OCM
OCM
OCM
OCM
OCM
OCM
OCM
RSV
RSV
RSV
RSV
RSV
RSV
1)
4AOOH+B
4A80H+B
4BOOH+B
4B80H+B
4COOH+B
4C80H+B
4DOOH+B
4080H+B
1000H (00)
1080H (00)
1100H (00)
1180H (00)
1200H (DO)
1280R (Ob)
1300H (OD)
1380H (00)
1400H . (DO)
1480H (DO)
1500H (DO)
1580H (00)
1600H (OD)
1680H (00)
18L (
c.. {\l\
Dc..1f'tt
SPIJRc
131 0 'S
/
\~
THE FOLLOWING TABLE SHOWS THE LAYOUT OF SYSTEM TRACK 1. THIS
TRACK IS FORMATTEO IN DOUBLE DENSITY WITH 48 PHYSICALLY STAGGERED
SECTORS.
3
J.DT
P/R
SECTOR
NUMBER
01
02
03
04
05
06
07
08
09
10
11
1'-'
.....
13
14
15
16
17
18
19
20
21
22
23
24
..,......'
.:..
26
'27
28
29
30
31
32
33
34
35
36
37
-.~.
...:to
3';>
40
41
42
43
44
45
46
47
48
EXECUTION
ADDRESS
3400H+B
3480H+B
3500H+B
3580H+B
3600H+B
3680H+B
3700H+B
3780H+B
3800H+B
3880H+B
3900H+B
3980H+B
3AOOH+B
3A80H+B
3BOOH+B
3B80H+B
3COOH+B
:3C80H+B
3DOOH+B
3080H+B
3EOOH+B
3E80H+B
3FOOH+B
:3F80H+B
4000H+B
4080H+B
4100H+B
4180H+B
4200H+B
4280H+B
4300H+B
4380H+B
4400H+B
4480H+B
4500H+B
4580H+B
4600H+B
4680H+B
4700H+B
4780H+B
4800H+B
4880H+B
4900H+B
4980H+B
4
FORMAT
LD AD DR
MODULE
NAME
1 DOOH
ID80H
lEOOH
1E80H
IFOOH
1F80H
2000H
2080H
2100H
2180H
2200H
2280H
2300H
2380H
2400H
2480H
2500H
2580H
2600H
2680H
2700H
2780H
2800H
2880H
2900H
2980H
2AOOH
2A80H
2BOOH
2B80H
2COOH
2C80H
2000H
2D80H
2EOOH
2E80H
2FOOH
2F80H
3000H
3080H
3100H
3180H
3200H
3280H
3300H
3380H
3400H
3480H
SPARE
CCP
CCP
CCP
CCP
CCP
CCP
CCP
CCP
CCP
CCP
CCP
CCP
CCP
CCP
CCP
CCP
BOOS
BOOS
BOOS
BOOS
BOOS
BOOS
BOOS
BOOS
BOOS
BOOS
BOOS
BOOS
BOOS
BOOS
BOOS
BOOS
BOOS
BOOS
BOOS
BOOS
BOOS
BOOS
BOOS
BOOS
BOOS
BOOS
BOOS
BOOS
SPARE
.SPARE
SPARE
SYSTEM TRACK GENERATOR UTILITIES:
THE THREE GENERATOR UTILITIES
SYSGEN. COM. BIOSGEN.COM. AND
DCMGEN.COM PROVIDE THE END USER THE ABILITY TO EXTRACT AND
REWRITE VARIOUS SECTIONS OF THE SYSTEM TRACKS.
THE FOLLOWING
TABLE SHOWS WHICH SECTIONS OF MEMORY ARE USED BY EACH PROGRAM AND
WHICH SYSTEM TRACK MODULES ARE READ OR REWRITTEN.
SYSGEN. COM IS
SIMILIAR TO THE SYSGEN. COM DESCRIBED IN THE CPtM 2.0 MANUAL SET.
NOTICE THE DIFFERENCE IS THE BIOS MODULE. EACH OF THESE PROGRAMS
PROVIDE A FILE LOAD FEATURE.
AN EXAMPLE.
IF YOU HAD A FILE
CPM32.COM AND YOU WISHED TO WRITE THIS FILE TO THE SYSTEM TRACKS.
A:>DDT CPM32.COM
(DDT DISPLAYS MESSAGE)
·-GO
A>SYSGEN
(AND THEN WRITE YOUR FILE)
A>SYSGEN CPM32.COM
(YOU GET A FILE LOADED MESSAGE)
NOW WRITE YOUR FILE.
IN CHANGING THE CP/M SYSTEM SIZE. YOU MUST REWRITE BLT/CCP/BDOS
US I NG SYSGEN. COM AND REWR I TE BI OS US I NO BI OSGEN. COM.
DCMGEN I.S
USED TO MODIFY DCM FOR SUCH PARAMETERS AND DISK DRIVE STEP
TIMING. CONSULT YOUR DCM LISTING FOR THE TIMING PARAMETERS.
UTILITY
MODULE
TRACK
SECTORS
SYYSTEM ADDRESS
SYSGEN. COM
BLT
CCP
BDOS
0
1
1
2
2-17
18-45
0900-097FH
0980-117FH
1180-1F7FH
BIOSGEN.COM
BIOS
0
4-11
1000-13FFH
DCMGEN.ASM
DCM
0
13-20
1000-13FFH
NOTES FOR RELEASE #1 DISKETTES.
THE DDBIOS IS ASSEMBLED FOR A
REV B DOUBLE D CONTROLLER BOARD.
DDBIOS SOURCE SHOULD BE
MODIFIED. REASSEMBLED. AND WRITTEN TO SYSTEM TRACK 0 FOR REV C
BOARDS.
5
THE FOLLOWING JUMPERS SHOUULD BE USED TO CONFIGURE A SHUGART 800
DISK DRIVE.
EACH DRIVE:
A.
DRIVE A:
DRIVE B:
DRIVE c·
DIRVE D:
DS1
DS2
DS3
DS4
LAST DRIVE:
T1.
..
......
B.
C.
Y.
T~'
T3.
T4.
T5.
T6
DS.
800
THE L JUMPER IS SET DEPENDING ON THE -5V SUPPLY.
CONSULT YOU SA800 MANUAL.
USE ONLY THESE JUMPERS. NO OTHERS.
1
",
C:
NEW CP/M 2.2
BDOS FUNCTIONS
,~*********************************
: FUNCTION 37:
RESET DRIVE
:
***********************************
*
*
,~
*
*
Entry Parameters:
Register
C:
Register DE:
25H
Drive Vector
Returned Value
*
*
*
*
*
*
,~
Register
A: 00H
'k**,;~-J(**-J(,~**************************
The RESET DRIVE function allows resetting of specified
drive(s). The p~ssed p~rameter is a 16 bit vector of drives
to be reset, the least significant bit is drive A:.
In order to maintain compatibility with MP/M, CP/M
returns a zero value.
**********************************
* FUNCTION 40:
*
WRITE RANDOM WITH*
ZERO FILL
*
**********************************
* Entry Parameters:
Register
C:
Register DE:
* Returned Value:
*
Register
A:
*
*
*
28H
*
FeB Address *
Return Code
*
*
********~*************************
The WRITE RANDOM WITH ZERO FILL operation is similar
to FUNCTION 34: with the exception that a previously
c
unallocated block is filled with zeros before the data
is written.
DIGITAL RESEARCH CP/M R 22 FIELD SOFTWARE CHANGE
Copyright c 198r1 Digital Research
c
ID#
CPM22-~~~l
PROGRAM: BDOS
ISSUE DATE: ~2/l9/8~
Error Description: The following change affects only those CP/M systems which
are using the optional blocking and deblocking algorithms listed in Appendix G of the
CP/M Alteration Guide. If you are in doubt as to the applicability of this field change,
please contact Digital Research or your CP/M distributor.
Patch Procedure:
Ensure you have an archive copy of the distributed
MOYCPM.COM file. Make changes to a version of MOYCPM.COM by carefully fonowing
the steps shown below: MOYCPM.COM is loaded into memory using DDT and the
changes are made using the Assemble (A) and Set (S) commands. After making the
changes, return to the console command processor using the Go (G) command, and
SAVE the altered memory image on disk. The memory image on tracks rI and 1 must
also be updated. This can be accomplished by executing the new MOYCPM program,
as described in the CP/M Alteration Guide, and integrating your customized I/O system.
ddt movcpm.com
DDT YERS 2.(,1
NEXT PC
27(11'" "'1 (H~
-alcd2
lCD2 nop
lCD3 nop
lCD4 lxi h,'"
lCD7
-GfI1
save 38 movcpm.com
NOTE: This Field, Software change is not installed in the CP/M version 2.2. It
must be instaJJed in all systems which use the deblocking algorithms listed in Appendix
G of the CP/M Alteration Guide.
'
''W
(
",.. j.
l..f 3 1-1
fj!V k.¢ kt.~,
BNk:. \ R a
c-{. IE /fR:,
STlT~:r
f5Q.U
EQ.LJ
Odc96 aCe:)
()8
(2.i
1.2) CD (!.).
IE
I I 8.
£CCll'.fl
BVSY
WJ....J[) 0 '/'/
1N!0f)C9tc..
E6 bllP~B
OJ c; tY C? I C7c>o
B
IN i M P(JJ 0\.)
C(J)tvffioLLci'¢.
w
I 1'-.9 b 0 (A./
_I,
100 T' I@Ar=.'5IE.;J (""$ I I
£xcc.(rrt~c;.
fr J) D ~ '13 I r
"
/1
PG-M
e'i
(,;;; WI rct-< )
J3 L. {) c/<..,
r';) '7 ()
CBe M.D
@
,}:: 7& (-1
c..BpRIV
D@
1>£3
"/L
e.g
T~I<-
DB
TRf~Uc,
73
C..BS!:: C
,D 8
St=c..TC"I)R .it
7 lI'
ce FF6-
DB
F6Il~ /fIlL A-
CD SPReB MoD
CG STS
DB
1/
75
7 (,
7)
?~
tw LA··.D
7n
CWLWG-
't-Oc..A-T 10 IV
'/6
. C. (!!) WI /l1/Hvj) #. ¢-7
'P~II/6:
DB
Maj)E
DB
';"1·
""1-
r FL4(YS
SElEcrS
c. C!J N Tic CJ L L E. lC2;
j)w
DW
&~}-{
:/.;L
t,..olLD
l:...ClA-D
MUST
l3£
6TATU~
11'.0 f) (~
L 1=i'JG-
r 1-/
(}jf
;
2
,t'
l.;:.'
. 1:. 0& -() tv
WIC I TE
.5E:c..ro r:...,
1) j)
C. IfIID
~ LOC I.:.
j)
I? A"SS E J)
( C13 P RV)
~
I
.J ,.......
L- ......
:J) R' V E
CC.BTf".\( )
(C.B S~(,)
-
_....-
~
/
_
I 10 ~
#
( e5 - "3 ")
(CB
(C13 STS )
I ~
g&1IRb
.:SIA- T'
TRfTC.!',
sec.TOR
(J
LJ
S
DD
PftR: 14-l/V't S
PA-S5 £ D
(C:8D~V) -:: :
(c. \'3 TR k J
(CB SEC)
ltv ~
D~~vl~
#.
:=.
TR A CK
d::t.
::::
S t: c.. r(J K
Q
.ii
(jtf~3)
TO
,0
. S £ E J:::,
R Sf3-D ,
'I 3 is''0 1-/
. I
1) J) -
(CB])~V)
(CB rR\~-)
(CB ~~ c.)
@ . ','3 &-0 (-I
.o~
\VE
D (51::-
~
((~
-TRA-(fr:.. . "#
(),c
-
5£c rot:;
=STA·,R T
-3)
5ECTtJ/~
~
TO (jJ.t:;) IE
(9 F
/-'2 S"'--r8 yrE.:. :SE C Tt!!R. PFTTA-
.r~
WR I
,,1:
DD
f'A-R !A'WlS
(c. G DRV) -=
(t 15 5gC.)::
(c. B rf?-KJ : : .
@ '17 If B'
? AK I'\-M ~
. / IV ~
PftS '5EJ)
-
..DR \ V E
( C. W LN
(??f-- 3)
rtPr¢.MA-r FLh6-
TRAc.J(;'TO
srA-f":.T
PA5St5J)' (9vr
(C.SST sj
-#:.
~
C.J : :
6) F
-:
ST:4-TV S
~
Ft9~ 'MftT
r=e>RVVd'l-T"
P Go WI "
DD
r~E A-l)
c(~) (\j
T.
:1>(
, .' C
Ir
~I'-
"7
PfCrRiTl'<\-S
t'
".
,Pfrt-S3E.i)
N&rvE
IN
DDBI.oS
..
C.·."
PAGE 1
TDL 180 CP/M DISK ASSEMBLER VERSION 2.21
BIOS - JADE DOUBLE D CP/M 2.2
'r:£ lLE r'?;UE,
#'
;******~***********************************************
B I 0:::; - CPI"I :;;::. 2
*
*
*!
;******************************************************
*
*
*
*
';,t()2!5t) ,
U. :3. A.
*
*
;******************************************************
**
VERSION:
2.2
PROPEF.:TY OF:
JADE COMPUTER PRODUCTS
4901 W. ROSECRANS BLVD.
HAWTHORNE, CALIFORNIA
;******************************************************
TI-II::;; BIO::;; C:ONTAINS [lI:=;~::: :;:;UBROUTI NF:;:; WHICH ARE *
COMF'f4f?iBLE WITH THE DCt1-:2.2 1'10DULE AND THE .JADE *
DOUBLE D DISK CONTROLLER.
THIS COMBINATION WILL *
IN fERFIiCE UP Tf) FOUR :::: DH I 'v'ES H.J :::: I Nt,LL AND DCIUBLE *
DENSIlY.
THE CONSOLE, READER/PUNCH, AND PRINTER *
INTERFACES SHOULD BE ALTERED FOR SPECIFIC END USER *
SYSTEMS AS NEEDED.
*
;*********************************************** SK ***
II
1-,
J
c
1
TDL l80 CP/M
: BIOS, -
~ADL
DIS~
ASSEMBLE~
VERSION 2.21
PAGE 2
DOUBLL U CP/M 2.2
EClU{i"j'L !:;;
o
;******************************************************
*
; DI:;:;K IJPEHATING SY:3TEM ADDRI::::::;SES.
;******************************************************
(lLI,OO
NK. ::;Y!:;
K.BYTE
:j()()O
C:F'I""I. :;:;Z
0014
20
;SYSTEM SIZE IN K BYTES.
1024
;lK BYTE SIZE.
NK.SYS*K.BYTE
;TOPSYSTEM ADDRESS.
CF'I'1. SZ--(20*1<. BYTE) ;CP/I'1 BIAS VALUE.
C:PI'1. BS+3400H
; ADDI~ES:::; (JF CCP.
CPt'i. BS+3(:001-l
;ADDRESS OF BOOS.
~~;(.)~)C)
:3l00
c::cr::'
:~:CUU
B[lO:;:;
1+;.~()()
BIO::;;
C:PI"I. R:;+4AOOH
; (4DDRE:::;::;; OF B I O~:;
C(::.UO
() 1 {)t)
Bre)S. H
1000H-BIOS
~DDT
..,.'PA
r
rOBYTE
01001",1
OFFI-I
[IF.DRV
!:::;EC. SZ
O(l::::OH
():l.e!,)
r:'I"I"T' .. S Z
0100H
'.)0(,.:,:
N.
2·
Ol)f"
;
'~DDRE:3:3
OF
TPf~.
;INITIAL IOBYTE VALUE.
;INITIAL DEFAULT [lRV.
CBYTES PER SECTOR.
;FORMAT BUFF SIZE.
; 1 ---4 DR I VE:;:;.
(>
DF~"'/!;::;
OFFSET 1000H LOAD.
;******************************************************
*
*
;******************************************************
;
D()UBL.E: D Hf4F:Z
D:;:;. HLr
D:~:; •
HLT
--
_.. _..
.- . ..
IFG
---..
IFG
_.......
.
.
,
; DOUBLE D PerkT f)DDRE:3::; •
; TRUE 1'-"
-=- A ONE.
.
,:: r':' ZERO.
; FALSE I''''
; !:;ET TRUE FOR REV B BO{-\RDS;.
;SET TRUE FOR HEV C BOARDS.
n~UE
F~~LSE
HEV. B,
[
; S'fATU:':; PORT HALT
002H
REV. e,
00lH
:rNDICi~TI.JRJ
[
;
::;;'f(..)TU:3 PORT HALT I NDIC:ATOH::I
;******************************************************
;
DOUBLE D
HARDWARE
*
COMMANDS
;******************************************************
0001
00(11
0003
0000
(lOO~'?
DC.
SIN
..__.
DC. j"!DO
DC. I"iBl
-._--
DC. ::;OT
DC:. INT
_.....-
..- .....
0000000lB
00000001B
lEI
O()OOOOOOB
00(10001
00000010B
; SWITCH [1[1 BANK 0 INTO SY:::;TEI'1.
; :3ELECT DOUBLE D 8(4NI< 0.
; SELECT DOUBL.E D BAM::: 1
;SWITCH DD 1'1£1"1 UUT OF :;:;YSTEM.
, I ::;;:::;1..1£ [lD Zf3()?i I NTERF,UPT .
.
.
;******************************************************
o
PAGE 3
TDL 180 CP/M DISK ASSEMBLER VERSlON 2.21
B Ie):::: .- ,.H:'[l1:::
[uJU:OI... E
D t:P / j'1 ::2.:2
C:C!UA·rE:::'::
;******************************************************
*
; DISK CONTROLLER MODULE LINKAGE (DCM - VER 2.2)
;******************************************************
;*******( COMMAND BLOCK DEFINED )**********************
1):3?O
0:371
u:37:::::
lID.CBT
[lD. DFN
():){:'It)
DD.TRK
DD.SEC
DD. !:::rS
DD.BUF
LlD.FBF
··DD.'DF'B
()::;::fJ 1
DD.D[lF
().J].3
C)::::}'/
U ..~::3(J
i) :.:.:() ()
-'-*..... -
O::::7(1H
0::3'711-1
--
0::;031-1
1):::::77H
O:3:30H
-------
--..
0:::::72H
0300H
03AOH
O::':::B1H
; COMMAND BYTE
;DRIVE NUMBER
; TRACK NUMBER
; SECTOF.; NUI"IBER
;CMMD STATUS
;SECrOR BUFFER
;r:ORMAT BUFFER
, ID SEC: [lPB
, ID SEC FL?K;S
··
(BANI<
(BANI<
(BANK
(BANI<
(BANI<
(BANI<
(BANI<
(BANI<
(BANK
(I) •
·
0)
·
I» •
0)
0) •
·
0) ·
0)
1)
0)
·
·
;*******( DeM COMMANDS >*******************************
0000
0001.
(>002
DC:.
DC.
DC. Wf"'1·H
0001·1
0011--1
;
INPUT
· lNPUT
· INPUT
,
,
ST?iTUS BIT
::::T?"iTUS IN'v'ERT
DAT(~
ponT
; OUTPU''''' ST.0j·ru:::; PORT
; eIU'fPUT :=:T(:iTU~:: BIT
; ()UTPUr S'fATU:;:: INVEHT
, OUTPUT DATA POH"I'
·
;******************************************************
;
AS::::El"IBLER Dr HEel' I'v'E::';;
*
;******************************************************
.p{m::;:
• PI·-IEX
.XL.INK
• LUC:
;******************************************************
C'
,
I
I
\'i
PAGE 4
CP/M DISK ASS~MBLER VERSION 2.21
BIOS - JADE DOUBLE D CP/M 2.2
CP/M C810S JUMP VECTORS
TDL Z8u
····'0.
"
.;'
;******************************************************
*
; BIOS JUMP VECTOR TABLE
;******************************************************
4{)OO
Lj-AO::;:
c::-::
4{~~O,':'
C:::::: 4C:30
4f.i(6'
·q·H':·'C:
.': j, j".~j i. ,I J-
il·j:41 ::;~
..,1'...,
j',
"!'!-'.I. L'
c:::::
c..: :
c. ..~::
4C:BC
t:j'(::;;;:PI
4C'):;:;
4(,;:'';::::
C: :.:: .~~~ t:: ,; :", "/
C:::;: 4C{';4
C::::: 4(::3(:
(.::::::: ·4·(:4- J.
lj.{i:t ::~
.;h~i:/J.
41,,:,::,;:4
.Lf.P!:,;:"i'
C:3 LI·C;::.~:::i
C::;;: ·'lC6r-:)
C3 4[:U:3
C:3 4[1:;2:3
·q·(.~::::O
C::::: 4C('H:{
C:_:: 4(:/0
4Pt:::::::;:
C:3
4A2D
4B~iO
;COLD START ENTRY
.)i:1P
.JI"IP
.JMF'
..JMP
WARM
; RELOAD C:CP/BDO:;:;
C:N:::;. (:1<
CN:::;. IN
;OE1 CONSOLE STATUS
.)i'1P
C:W:;;;.OT
.CONSOLE OUTPUT
.JI"iF'
•...II"IP
...IMP
LI:;:;T
j;:'UNCH
; PR I NTER OUTPUT
; PUNCI··1 (JUTPUT
; HEADER 1NPUT
INIT
~E:rmER
;CONSOLE
INPUT
; HOME ::;;EL:ECTED DR I VE::
;SELECT DISK DRIVE
;SET TRACK NUMBER
.JlvlP
.)i"iP
•..IM'::·
•..IMP
.JI"IF'
.JI"IP
•..IMF·
. /·-iOi'1E
::;;ELDSI<
,JI"IF'
LIST:::;T
;PERFORM DISI< WRITE
;RETURN LIST STAT
.JMP
•..IMP
S;ECTHN
FORMAT
;TRANS~ATE SECTOR
; FORMAT A TRAC~<
::;;ETTHK
:::;ETSEC
:;:;ETDMA
DI::::;I
13'r • ~=;F' j. = .BYTE
0
BT.MO[l~
. BYTE
BT. ST::;: • :BYTE
BT. UH): . worm
OOOOOOOOB
BT" LN(i:
• WOF·m
0
0
0
LI·(~7E
(lOOO
(>
0000
Bl. DiYJA ~
Uf.PTR:
. HunD
4{i:30
• WCrF************************
C. LCJC,O: LXI
4ACO
4?K::3
4AC6
4AC')
4ACC:
21 4.!4CF
CD 4U4E
~2A "h!404
2:;;~ 4AOl
C::::: 4CBC
4ACF
4AD:)
4AEC
4AED
4AEE
M!:a3. ::;:(1.:
ODO{:.tODOA
4A414445204:3
:~:O
SYS.TD:
~:()
!:;YS.IJD=
4B204:3~i02F4D
H , 1'1~::;rJ. !;:;O
;SION ON MSG ADDR.
; I !;:;SUE MESSAGE.
;WARM START ADDRESS.
;RESET COLD START.
;PERFORM WARM BOOT.
CALL
LHLD
SHLD
..JMP
M!;:;(i.OT
BI0S+4
BI08+1
WARM
.F4SCII
.ASCII
• BYTE
.BYTE
.ASCIS
[CRJ[LFJ(CR)[LF)
/JADE COMPUTER PRODUCTS "[CRJ(LF)
"'0'"
;TENS DIGIT.
/0/
;ONES DIGIT.
/K CP/M VERS 2.2 ~[CR)[LF][CRJ[LFJ
;*******< FILL OUT DIRECTORY BUFFER >******************
4£10:3
· IFC,
• UJC
(DIR. BF+SEC. SZ-. ), [
DIR.BF+SEC.SZ
;FILL OUT SECTOR SIZE)
;*****************************************************~
·
,.
,\
PAGE 6
TDL Z80 CP/M DISK ASSEMBLER VERSION 2.21
BIOS - ~ADE DOUBLE D CP/M 2.2
READ AND WRITE SECTOR
o
;******************************************************
*
; READ A DISK SECTOR ROUTINE
;******************************************************
4B()3
4B05
4B07
4B09
4BOC
4BOF
4812
4BH::
4B16
::::E01
D343
3E01
CD 4B78
C~:~~ 4849
2{4
4',~?E
EH
Ol 0::::80
2A 0040
4Bl';'
()'~i
4BIA
4B1[1
4B20
01
00:;::0
CD 4BA7
C'-:'
'-' 4B4:;:
DISKRD: MVI
OUT
MVI
CALL.
,JNZ
LHL.D
XCHG
LXI
LHLD
, DAD
LXI
CALL
...IMP
A.DC.SIN
D.PORT.
A.DC.RDS
DSK.EX
DSK.ER
BT.DMA
B.DD.BUF
D.ADDR
B
B.SEC.SZ
BLOCK
D5K.OK
;SWITCH DD INTO SYSTEM.
; ISSUE DO COMMAND.
; READ SECTOR COMMAND.
; PERFORM OPERATION.
; ERROR EXIT.
; LOAD USER aUF ADDRESS
; MOVE HL TO DE.
; LOAl) BUFFER OFFSET.
; LOAD DO WINDOW ADDR.
;HL NOW SECTOR BUFFER.
; LOAD SECTOR SIZE.
; BLOCK MOVE ROUTINE.
; NORMAL RETURN.
;******************************************************
; WRITE A DISK SECTOR ROUTINE
'
*
;*************************************~****~*******~***
4B:"2~:
4·B::::~f
4B27
4B2A
4B2D
4B::;:(J
4B31
4B:32
4B:3:'=i
:;:£01
[1::::43
01 00:::0
2A 0040
11
19
()::::~::()
ED
2A 4A7E
C~D 4BA7
4f3::::::::
:3Et)2
4B3A
CD 4B7::::
CA 4B43
C:3 4B49
41:::3[1
4B40
DISKWR: MVI
OUT
LXI
LHLD
LXI
DALI
XCHG
LHLD
CALL
MVI
CALL
,-'z
,JMP
A.DC.SIN
D.PORT
B,SEC.5Z
D.ADDR
D.DD.BUF
D
DT.DMA
BLOCK
A.DC.WRS
DSK.EX
DSK.OK
DSK.ER
;SWITCH DO INTO SYSTEM.
; ISSUE HARDWARE CMND.
; LOAD ~=;ECTOR SIZE.
;DD SYSTEM ADDRESS.
;rm BUFFER OFFSET.
;HL NOW DD BUF ADDR.
;DE NOW o.D BUF AD[IR.
;HL NOW USER BUF ADDR~
; BLOCK MOVE ROUTINE.
; LOAD WRITE SEC CMND.
; CALL DISK EXECUTIVE.
;~UMP If:." WRITE OK.
; ERROR EXIT.
0
;******************************************************
*
; DISK READ/WRITE/FORMAT EXITS
;******************************************************
4B4::::
4B45
4B4]
4B4f:
:3EOO
4B4':!I
4B4B
4B4D
4B4F
:3EOO
tl~:43
AF
C9
D:::~43
::::EFF
C9
DSK.OK: MVI
OUT
XRA
RET
A.De.SOT
[I. PORT
A
;SWITCH DD OUT OF SYS.
; ISSSUE HARDWARE CMND.
rZERO A REGISTER.
~ERROR EXIT.
DSK.ER= MVI
OUTMVI
A,DC.SOT
D.PORT
A,OFFH
;SWITCH DD OUT OF SYS.
; ISSSUE HARDWARE CMND.
; LOAD ERROR FLAGS.
; ERROR EXIT.
RET
; ********~,*********************************************
Cl
,'.
TDL Z80 CP/M DISK ASSEMBLER VERSION
BIOS - JADE DOUBLE D CP/M 2.2
(:.; FORMAT lRACK AND Dr:::;~::: EXEC
PAGE 7
2.21
;******************************************************
; FORMAT A DISK TRACK ROUTINE
*
;******************************************************
4D~;O
:3EO:L
4B!:;2
[1::::4:3
:3 EO::::
D:34:3
01 0100
2PI 0040
1 1 0300
4B~54
4E{~:,,:::,
4B~::;:3
4B~:,B
4B::;:;E
4B(:, 1
LI·862
4Bl;.:;:
4Bf::.;;:,
4 BtS'
4Bt,B
4B6[1
4B6F:4B7'2
4B7::;
1-:;0
.'
EB
~2A
4(4"1E
CD 4W::;l
3EOl
D343
3E03
CD 48'7::::
roo'
J'.
_·H 484:;:
C::3 4£149
FORMAT: 1'1 VI
OUT
MVI
(JUT
LXI
LHLD
LXI
DAD
XCHG
LHLD
CALL
MVI
OUT
MVI
CALL
'f
.-'z
.-'MF'
A,DC.SIN
D.PORT
A,DC.MBI
D.PORT
B, FI"IT. SZ
D.ADDR
D,DD.FBF
D
BT.DMA
BLOC:K
A,DC.MBO
D. PCJRT
A,DC.FMT
[I:::;K. EX
DSK.OI<
DSK.EH
;SWITCH DD INTO SYSTEM.
; I:::;8UE HARDWARE CMND.
; SELECT DD BANI< 1; 18:::;UE HARDWAfi:E CMND.
; FORMAT PROG SIZE.
;DD SYSTEM ADDRESS.
;DD FORMAT BUF OFFSET.
; HL NOW DD FBUF ADDR.
;DE NOW DD FBUF ADDR.
; FORMAT PROGRAM ADDR.
; BLOCK MOVE ROUTINE.
;RESELECT DD BANI< O.
; ISSUE TO DD HARDWARE.
; LOAD FORMAT TRK CMND.
; C:ALL Dl::;;I< EXECUTIVE.
;,JUMP IF WRITE OK •
; ERROR EXIT.
;******************************************************
; DOUBLE D EXECUTION SUBROUTINE
*
;******************************************************
("
487::::
4B7B
4B?E
4B:;::1
4B84
4B85
4B:;::6
4B::::'7'
4B:;::C
4B8E
48';:'0
417391
4B94
4B'::',~.
4B98
4B9B
489[1
4B9F
4BA2
4BA~:;
4Bf.:i6
C
....
.._, ...., 4,-·7····'
I;, d::'
'':'.'::'
01 000"1
1 1 0:370
~2A
1. ":)
0040
EB
21 4i::;72
C:D 4BA7
:3EO:2
D:::;:4::;:
EB
01
OOO~5
[lB43
E602
C:2 4B94
3EOl
[134:3
CD 4Bf.i7
:~:A 4A79
A7
C9
STI~
LXI
LXI
LHLD
DAD
XCHG
LXI
CALL
MVI
OUT
XCI·-lCi
LXI
IN
ANI
.JNl
MVI
OUT
C:ALL
LDA
ANf'~
HET
BT. CI'1D
B,7
D,DD.CBT
D.ADDR
D
H,BT.CMD
BLCICK
A.DC. INT
D.PORT
B,5
D.PORT
D::;;. HL T
DSK.WT
A,DC.SIN
D.PORT
BLOCK
BT. ::;;TS
A
;STORE DCM COMMAND.
;NMBR BYTE TO MOVE.
;COMMAND BYTE OFFSET.
; DD ::;;VS ADDRESS.
;HL NOW PTS CMND BLK.
;NOW ADDR IN DE.
;BIOS CMND BLOCK.
;PERFORM BLOCK MOVE.
;LOAD DO INTERRUPT.
; ISSUE DD INTERRUPT.
;EXCHANGE SRC/DSTN.
;:i RETURN BYTE:::;.
; READ DD :::;T tHU::;;.
;TEST HALT* FLAG.
;TEST UNTIL HALTED.
;SWITCH DO INTO SYS.
; ISSUE HARDWARE CMND.
;GET DD STATUS.
;LOAD STATUS BYTE.
;TEST FOR ERRORS.
;RETURN TO CALLER.
;******************************************************
...
PAGE 8
TDL l80 CP/M DISK ASSEMBLER VERSION 2.21 .
BIO::;; _.....IADE DOUBl.E D CP/M 2.2
BLOCK MOVE AND LOG-ON
o
;******************************************************
; BLO.CK .- BLOCK MOVE
(l80 LDIH REGISTER IJSE'AGE)
*
;******************************************************
4B{~7
4BA::;:
4B(-)';!)
4B?iA
4BAB
4BP,C
4BAU
4BAE
4BBl
"7E
.12
BLOCK:
........,
"::"',;''1
1":'
'-'
OB
78
Bl
('::2
4BA7
C9
MOV
STAX
INX
INX
DCX
MOV
CIRA,
....INZ~
RET.'
A~M
D
H
D
B
A,B
C
BLOCK
; GET BYTE.
; STORE BYTE.
;INC SOURCE PNTR
;INC DESTINATION PNTR.
; DECREMENT COUNT.
;GET HIGH COUNT.
;OR IN La COUNT.
; ANOTHER BYTE.
; RETURN TO USER.
;********~*********************************************
; LOO"'ON
SET
[I
I SK PARAMETER BLOCK
*
;******************************************************
4BB2
4BB!:5
4B87
~:::A
4A:::2
E(:'01
c····
...:;. 4B43
;*******C CHECK
IF LOG~ONREQUESTED
LOG. ON: LDA
ANI
....INZ
LOO.RQ
00lH
[lSK.ok
>******************
;c~Eck LOG REQUEST.
;LOG ON BIT TEST.
;~ETURN1 NO LOG-O~.
;*******( READ IDENTITY SECTOR >***********************
4BBA
4BBD
4BBF
4BCl
4BC~::
4BC6
4BC9
4BCC
22 4ti8()
3£01
D34:2::
:3EOO
CD 4B78
CA 4BC:F
21 0000
(::3 4849
SHLD
MVI
OUT
MVI
CALL
.jZ
LXI
.JMP
DT.PTR
A,DC.SIN
D.PORT
A.DC.LOG
DSK.EX
LOG. C:K
H.O
D8K.ER
c
;STORE.DRV TBl PNTR.
;SWITCH DD INTO SYS.
; ISSUE HARDWARE CMND.
;LOAD DCM LOG-ON CMND.
;PERFORM DISK OP.
;GO TO LOGON ERROR.
;ERROR, BAD LOG ON.
;BIOS EXIr •
;*******( CHECK FOR .JADE ID >**************************
4BCF
4BD2
4BD5
48D(:'
48D9
48DB
4BDC:
4BDD
4BEO
4·BE1
11 0380
:;'~A
0040
1';>'
DtH:!
4D4F
Ot:.08
iA
BE
C2 4COA
11
O~i
(:2
LOG.CK: LXI
LHLD
4BIJB
LXI
MVI
LOG.ID: LDAX
CI'1P
..JNZ
D,DD.BUF
[I.ADDR
D
D, ....IADEID
B,ID.SZE
D
M
LG:3740
DC~R
B
...INZ
LOO.ID
;*******( (!ISI***********************
4[:1)(4
4C()[r
4CI0
4C:1:3
L:~C:
1 '~I
4C1.9
4C1C
CD 4C:1F
C:D 4C31
01 OOOF
21 4[1::2C
CD 4BI-'17
:2~j 4t480
C:3 4B4::::
U3:3740= CALL
CALL
LXI
LXI
CALL
LHLD
,JMP
TR:3740
[lPEI.AD
B, DPB. ~:;Z
H, ::;;[1. PBK
BLOCI<
DT.PTR
DSK. OK
;SET SECTOR TRANSLATE.
; :;:;ET REGISTER DE.
;DPB SIZE IN BYTES.
; ADDRES::;; OF BLI< IMAGE.
; MOVE INTO DPB.
; RELOAD POINTER.
;EXIT BIOS JUMP.
;*******( SET 3740 SECTOR TRANSLATION )****************
('i
4C:l.F
4C22
4C2:i
4(:2,::'
4C27
4C::2:::=::
11
::;~A
4D12
4(4::;:0
n~::::740:
LXI
LHLD
7:3
MeN
::2:3
INX
IYjOV
RET
72
C9
D,SDTRAN
DT.PTR
M,E
H
M,D
; SECTC)R TRAN TBL ADDR.
;ADDR DIS;K PARA HDER.
;LOW ORDER ADDR.
;POINT NEXT BYTE.
; HICiH ORDER ADDR.
;RETURN TO LOG USER.
;*******( SET NO SECTOR TRANSLATION >******************
"'+C:2';-
{4F'
4C:;;::A
4C:2[1
4C:;;::[
4C2F
4C30
2A
4 A:::: 0
7'1
,,:.,,:-
•.:,. ....1
'77
C9
TRNONE= XRA
LHLD
MOV
INX
MOV
HET
A
[IT.PTR
1"1, A
H
M,A
;ZERO A REGISTER.
;ADDR CJF PARA HDER.
;ZERO LOW ORDER ADDR.
;NEXT BYTE •
; ZERO HIGH BYTE.
; RETURN TO LOG USER.
;*******( GET DHIVE PARA BLK ADDR )********************
4(::31
4C34
4C:3'7
2A
4A:~:;:O
1 1.
OOOA
4C::3:3
~:iE
'''':,.:'
4C:::::9
4C3A
4C3B
19
":""-'
[lPB.AD: LHLD
LXI
DAD
MOV
INX
~::;6
1"10 V
(:9
RET
DT.PTR
[1,10
D
E,M
H
[I,M
;ADDR DISK PARA HDER.
;[lPB TBL PNTR OFFSET.
.;NOW AT [IPS PNTR.
;LOW ORDER ADDR.
; NEXT BYTE.
;HIGH ORDER ADDR.
;RETURN TO LOG USER.
;*****************************************************i
!
o
PAGE 10 ....•
rDL l80 CP/M DISK ASSEMBLER VERSION 2.21
BIOS - JADE DOUBLE D CP/M 2.2
DISK PARAMETER SUBROUTINES
;*******( HOME DRIVE )*********************************
4(::3(:
4(;::;::E
OEOO
c:::: 4(:60
HC)I"IE:
1"1 V 1
.JMP
C,O
SETTRK
;C REGISTER TO ZERO.
;PERFORM SET TRACK.
;*******( SELECT DRIVE - LOGON )***********************
4C41
4(:"/·4
:~;: 1
0000
79
4C:L/·.~5
:::::;~:
il·(:il·::::
4C:Lj.{:i
FE:02
4(:413
4(:4C:
7B
4A7:3
[10
: LXl
MOV
!::'TA
C:PI
RNC
MOV
STf:%
HETD:3K= LD{':,
SELD::;~:::
".:,.,,:,
.....
..:...
4PI::::~~
4C4F::
:3i~
4fY73
Lj.C~:i~~:
6F
/"ICJV
4C::::;:3
2600
1"1 VI
4C::i~5
• ,::• •~l'
"-'1"",
4C~51':;.
29
4C'57
29
L~C:!5:3
:29
4C5':;;-
1 1 4DSi'
.1 9
(::3 4BB2
DAD
D{m
DAD
DAD
LXI
D(-4D
.JMF'
4C~5C
4Ct;iD
;*******( SET
H,I)
A,C
flT.DRV
N. DR'..,'!:;
A,E
LOG. RG!
BT.DRV
L,A
/-1,0
H
H
;*4.
H
; *::.:::.
H
; ·l~ 1 (:. U:; 1 ZE OF HE{4DER)
;DRIVE 0 LI.P.H.
; HL::= DRIVE N DPH.
; 130 CHEC:K LOG-···(JN.
[I,DO.DPH
D
LCIG. ON
TRACK
.q·C60
79
A, C:
l.j.C6.1
4C64
32 4A74
BT.
C9
; ERROR RETURN (:ODE.
;PUT DRIVE NMBH IN A.
; STORE DRIVE NU/"IBER.
; CHECK IF LEGt~L [I/;~ I VC-:-=.
;NO C:{-)RRY IF ILLEGAL.
; CHECI< IF' LOG-'-ON HEO.
;STCIRE LO(30N REGI=:;TER.
; GET' DRIVE NUI'1BER.
;L - DISK NUMBER.
; ZERO H REGISTEF:.
; *2: •
.
}**********************************
TR~:::
RET
;MOVE TRACK NUMBER.
;SAVE TRACK NUMBER.
;RETURN TO CALLER.
;*******( SET SECTOR )*********************************
4C65
4C66
4C6'::I
,
SETSE(::
'7(.,
.'
l"lOV
A,C
STA
RET
BT. ::"EC
;MOVE SECTOR NUMBER.
;SAVE SECTOR NUMBER.
;RETURN TO CALLER.
;*******< SET TRANSFER ADDRESS )***********************
·Q·C6A
4(:.:::.B
60
69
·1·(:6(:
4..:..
4C6F
(:9
.--:."':.
4P,7E
::;;ETD!'"IA: MOV
!'"1(lV
:;:;HLD
HET
H, B
L, C
Err. DI'1f4
;HIGH ORDER MOVE.
; LOl.-\1 OI:::DE1=< MOVE.
;SAVE TRANSFER ADDRESS.
;RETURN TO CALLER.
1'\
",'~/
PAGE 11
TDL Z80 CP/M DISK ASSEMBLER VERSION 2.21
BIOS - JADE DOUBLE D CP/M 2.2
CCON!:'\OLE, READER/PUNCH, AND PRINl'ER DRIVER!::;
;*******( SECTOR TRANSLATION >*************************
4C70
4C71
4C72
4C75
4C76
4C77
4C7::;:
4C7A
4(:78
4C7E
4C7F
7A
B:'::
CA 4C7B
EB
09
,:::'E
:~:I~J()()
C9
:.2 :l 0001
09
C')
SECTRN= MOV
ORA
,JZ
XCHC,
DAD
MOV
MVI
RET
NOTRAN: LXI
DAD
RET
A,D
E
NOT RAN
B
L,M
H,O
H,1
B
; TESTING TBL ADDR.
;ADDR IN REG DE.
;IF ZERO, NO TRANS.
; (HL) NOW TRAN!:; TBL.
; (HL) NOW TRANS SECTOR.
;L I~; TRANSLATED SEC.
;HIGH ORDER BYTE ZERO.
; RETURN TO CALLER.
;SET HL TO ONE.
;ADD S;EC NMBR TO HL.
; RETURN TO CALLER.
;******************************************************
;******************************************************
*
; CONSOLE INPUT STATUS
;******************************************************
4C::;:0
4(::::::2
4(:84
{'"
4C::=;~:t
4C8?
4(:::::9
DBOO
EEOO
E602
(::3
CN!::;. CI<: IN
XRI
ANI
CNI. SF'
CN I. !:;;I
CNI. SB
RZ
3EFF
MVI
RET
C:9
A,OFFH
; INPUT STATUS
;F'OLARITY -AD,JUST
; MA!31< STATUS BIT
; RETURN NOT RDY
;SET READY FLAG
; RETURN RDY
;******************************************************
*
; CONSOLE INPUT CHARACTER
;******************************************************
4C:::::A
4C8[1
4C90
4(:92
4C:9L~
CD 4C80
CA 4C:::A
[lBOl
E67F
C9
CNS. I N:
CI~LL
,JZ
IN
ANI
RET
CNS. C~<
CNS;. IN
CNl.DP
07FH
;CALL STATUS CHECK.
;REPEAT TILL READY.
; INPUT CHARACTER.
;7 BIT ASCII+SIGN.
;RETURN TO CALLER.
;******************************************************
*
; CONSOLE OUTPUT
;******************************************************
4C95
4C97
4C9,)
4(:9B
4C91:.:
4C';:"F
c
[lBOO
EEOO
E604
CA 4C9~i
CN!3.0T: IN
XRI
ANI
...IZ
79
MOV
E67F
fiN I
·4C?H
D301
4C:A::::
C'::'
OUT
RET
CNO.SP
CNCI.SI
CNCI.SB
eNS.OT
A,C
07FH
CNC). [lP
; INPUT !:;Tf~TU!:;:;
; AD,JUST POLAR I TY
;MA!::;K !:nATUS BIT
;TRY AGAIN
;GET CHARACTER
; 7 BIT {-lSCI I
; !:;END CH(.~f~ACTEF<
;******************************************************
TDL l80 CP/M DISK ASSEMBLER VERSION 2.21
BIOS - JADE DOUBLE D CP/M 2.2
CONSOLE. READER/PUNCH. AND PRINTER DRIVERS
o
;******************************************************
; READER AND PUNCH DRIVERS - USER DEFINED
*
;******************************************************
4C:A4
4CA6
3E1A
C·:;!
READER: MVI
RET
4C:('~7
(:9
PUNCH:
A.CNTL.Z
RET
;RETURN END OD FILE.
;NOT IMPLEMENTED.
;NOT IMPLEMENTED.
;******************************************************
*
; PRINTER DRIVER AREA
;******************************************************
4C?):;::
C::::!
4C?"1B
4C:?iD
C9
l.j.C:·::i~i
3EFF
LIST:
•..11'11::'
eNS. OT
; SEND TO CONSOLE
LH::TST: MVI
RET
A. OFFH
; READY
;******************************************************
*
; SEND MESSAGE SUBROUTINE
;******************************************************
4Ct:jE
4C:P,F
4(:[:0
4CB3
4CB4
F~5
CD
MSG.ClT: PUSH
F:EF'T: MOV
C:,!4LL
MOV
INX
ANI
...IZ
POP
RET
.
4E
4C';:J~5
7"E
4C:B!:'5
..:[6::::0
4(:B7
CA
4CB{~
Fl
4Cl:lB
(:9
'-~'-t
"'::'
4C{-'1F
«
psw
C,I"I
CNS.OT
A.M
H
O:::OH
. .REPT
psw
; SAVE CALLER FLAGS.
;LOAD CHARACTER •
; CONSOLE OUTPUT.
; SAME CAHRACTER.
, INCREMENT POINrER.
; TEST SIGN BIT.
; ANOTHER CHARACTER •
; RESTORE FLAGS.
; RETURN TO CALLER.
~,..
!~
.
;******************************************************
OOOA
;(lOD
(>0 1 (.~
LF
C:R
CNTL.Z
--
-._-
OOAH
OODH
01AH
; ASCI I LINE FEED.
;CARRAIGE RETURN.
;CONTROL-Z (EOF) •
;******************************************************
o
Ci
PAGE 13
TDL l80 CP/M DISK ASSEMBLER VERSION 2.21
BIOS - JADE DOUBLE D CP/M 2.2
WARM Boor ENTRY
;******************************************************
; WARM REBOOT ENTRY - LOADS CCP/BDOS - INITIALIZES
*
;******************************************************
;*******( SET UP FOR SYSTEM BOOT >*********************
4CBC
4CBF
4CCI
31 00::::0
3EOO
::::~::: 4A73
4(:C4
01 3400
4CC7
4CCA
4CCC
4CCF
4(:[11-
CD 4C6A
OE02
CD
4C6~i
OE01.
C:D 4C60
WARM:
LXI
MVI
STA
LXI
CALL
MVI
CALL
Mvi
CALL
SP.OO80H
A,O
BT.DRV
B, CC:P
SETDMA
C:,2
SETSEC
1- I
SETTRK
0
_0
,
;SET UP STACK.
;DRIVE 0 VALUE.
; SELECT DISK.
;CP/I"I CCP ADDRESS.
;SET DMA ADDR.
;CCP 1ST SECTOR.
;SET SECTOR NMBR.
;CCP/BDOS TRACK.
; !:::ET TRA(:J< NUMBER.
;*******( READ CCP/BDOS >******************************
('~
4C[l4
4C:[l7
4C[l8
4CDB
4CDE
4CEO
4CE:;::
4CE4
4CE7
4C:EA
4CED
4CEE
4CFl
CD 4BO:;::
A7
roo";' 4CF4
3{~ 4A75
FE2D
CA 4C:FB
_0":;'
~:C:
:32 4A o
75
11 0080
2A 4A7E
19
22 4A7E
C3 4(:D4
W.READ: CALL
ANA
JNZ
LDA
CPI
.-'z
INR
STA
LXI
LHLD
DAD
SHLD
,JMP
DISKRD
A
W.EROR
BT.SEC
45
W.ZRPG
A
BT.SEC
D,SEC.SZ
BT.DMA
D
BT.DMA
W.READ
; READ CINE SECTOR.
;SET FLAGS.
;EXIT IF ERROR.
; GET SECTOR NMBR.
; LA!::T SECTOR CHECK.
; C:;OTO ZERO PAGE SET.
; INCREMENT SECTCIR.
; STORE NEXT SECTOR.
;[;ET !:;:ECTOR SIZE.
;GET TRANSFER ADDR.
; CALCULATE NEW ADDR.
;SET NEW ADDRESS.
;DO ANOTHER WARM READ.
;*******( READ ERROR DETECTED >************************
4CF4
4CF7
4CFA
21 4D4::::
CD 4CAE
76
W.EROR: LXI
CALL
HLT
H,MSG.LE
MSG.OT
;GET ERROR MESAAGE.
; ISSUE MESSAGE.
;OR GOTO MONITOR
;*******( INITIALIZE SYSTEM PARAMETERS >***************
4CFB
4CFE
4[101
4[104
0008
11 0000
21 4[1:3B
CD 4BA7
01
W.ZRPG: LXI
LXI
LXI
CALL
B,8
D,O
H,BS.IMG
BLOCK
; BASE IMAGE SIZE.
; BASE ADDRESS SET.
; BASE IMAGE ADDR.
; BLOCK MOVE ROUTINE.
;*******( ,JUMP TO CCP >********************************
C~
4[107
4DOA
4DOD
o4DOF
21
0080
22 4A7E
(lEO!)
C::~:
:3400
LXI
SHLD
MVI
...IMP
H.(1080H
BT.DMA
C,(l
CCP
; DEF/4ULT SECTOR BUFF.
; S;ET THANSFER ADDRESS.
;DISK NMBR: OLD DISKo?
;,JUMP INTO CCP CP/M.
;*****************************************************~
PAGE 14
TDL Z80 CP/M DISK ASSEMBLER VERSION 2.21
BIOS - JADE DOUBLE D CP/M 2.2
TABLES AND VARIABLES
o
;******************************************************
; (DISK REQUEST PARAMETERS)
;******************************************************
0040
D.ADDR
==
0040H
;DD SYSTEM MEM ADDRESS.
;**************~*************************~*************
; 3740 FORMAT PARAMETERS ******** CP/M SINGLE DENSITY *
;******************************************************
;*******< SINGLE DENSITY CP/M SECTORING >**************
4D12
4D18
4D1E
4D24
4D2A
01070D131905 SDTRAN: • BYTE
OB111703090F
• BYTE
1502080E141A
• BYTE
060C121804(1A
• BYTE
10H:.
• BYTE
0IH,07H,ODH.13H.19H,05H
OBH.l1H,17H,03H,09H,OFH
15H,02H.08H.OEH,14H.1AH
06H.OCH.12H.18H,04H,OAH
10H. 1~.H
;*******< DEFAULT DISK PARAMETER BLOCK >***************
4D2C
4D2E
4D2F
4D30
4D:=: 1
40::::3
40::::5
4[136
4 IX.37
4D:39
(lOlA
03
Cfl
00
00F2
003F
CO
00
0010
0002
SD.PBK: .WORD
• BYTE
• BYTE
.BYTE
• WORt'
• WORD
• BYTE
• BYTE
• WORD
• WORD
26
3
7
; SECTORS PER TRACK.
;BLOCK SHIFT FACTOR •
;BLOCK MASK •
o
; NULL MASK.
242
;DISK SIZE - 163
;DIRECTORY MAX •
11000000B ;ALLOC O.
o
;ALLOC 1.
16
;CHECK SIZE.
2
; TRACK OFFSET.
c
;******************************************************
*
; ZERO PAGE IMAGE
;******************************************************
4D:3B
4D:3E
4D40
C3 4AO::::
FFOO
C3 3C06
BS. IMG:
,-IMP
• BYTE
JMP
BIOS+03H
IOBYTE.DF.DRV
BDOS+06H
;WARM BOOT VECTOR.
;1/0 BYTE AND DFLT DRV •
;BDOS CALL VECTOR.
;******************************************************
*
; MESSAGES
;******************************************************
4D43
ODOA4C4F4144 MSD.LE: .ASCIS
[CRJ[LFJ'LOAD ERROR'
;******************************************************
*
; ID LABEL DEFINITIONS
; **************************************.****************
4D4F
0008
4A6164652044 JADEID: .ASCII 'JADE DD
ID.SlE -- .-JADEID
~
; ID LABEL.
;LABEL SIZE.
;******************************************************
o
PAGE 15
TDL lSO CP/M DISK ASSEMBLER VERSION 2.21
BIOS - JADE DOUBLE D CP/M 2.2
C:!DRIVE P{H;:{4METER HE(.~DERS
;******************************************************
*
; DRIVE PARAMETER HEADER AREA
;******************************************************
4D57
4D59
4[158
4D:iD
4D5F
4D61
4D6:3
4D6~i
0000
0000
0000
0000
4A:::::3
4f~:36
4E18
41.)97'
DO. DPH: • WORD
• WORD
• WORD
• WORD
• WORD
.WORD
.WOFm
• WORD
(.I
(J
(I
0
DIR.BF
DO.DPB
DO.CHK
DO. ALL
; SECTOR TRAN TBL.
; SCRATCH AREA.
; SCRATCH AREA •
; SCRATCH AREA.
; DIRECTORY BUFFER •
;DRIVE PARAM BLK.
;DRIVE CHANGE BLI<.
;DRIVE ALLOCATION.
~******************************************************
4D,:;,]
4[16';:;'
41)68
4(161)
4D6F
4D7'1
4D73
4[175
0000
0000
0000
0000
4A=;:::J
4{44~:;
4E2B
4DB::::
D1.DPH: • WORD
. WORD
• WORD
. WORD
• worm
• WORD
. we'RD
• WORD
0
(>
(I
(>
DIR.BF
D1.DPB
D1.CHK
D1. ALL
;******************************************************
4D1'7
407'7
4D'78
4D7D
4D'7F
4D:::::1
4D8:3
4 D:;:: 5
0000
0000
0000
0000
4A83
4A:i4
4E:3B
4D[l9
D2.DPH: • worm
• WORD
• WORD
• WORD
• WORD
• WORD
• WORD
• WORD
0
0
(I
0
DIR.BF
D2.DPB
D2.CHK
D2.ALL
;**************************************~.***************
4D::{7
4D89
4D::::B
·4D::;:[I
4D:=:F
4[1';;;1,
4D';:/::':;:
4D9~5
0000
0000
0000
0000
4A:=:~:
4A6::'::
4E4B
4DFA
[1:3. DPH= • WORD
• WORD
• WORD
• WORD
.WORD
• WORD
• WORD
• WORD
0
0
(>
0
DIR.BF
D:3. [lPB
D~::. CHK
[13. ALL
;******************************************************
c
, ~-
.
-"
PAGE 16
DL Z80 CP/M DISK ASSEMBLER VERSION 2.21
lOS - JADE DOUBLE 0 CP/M 2.2
ORK AREAS
o
;******************************************************
*
; DRIVE ALLOCATION AREAS DECLARED
;******************************************************
4D97
0021
ADDR
ALL. SZ
4[197
I.j·DB::::
DO. ALL
ADDR
Dl.ALL
ADDR
D2.ALL
ADDR
D:3. ALL
ADDR
4 DB::;:
4009
4[1[19
4DFA
·4DFr4
4E1B
=
;AT CURRENT LOCATION.
; ALLOCATION BLOCK SIZE.
--
.-......
.:.e..:.
--
AD DR
; ALLOCATION
ADDR+ALL.SZ
ADDR
; ALLOCATION
ADDR+ALL.SZ
; ALLOCATION
ADDR
ADDR+ALL.SZ
ADDR
; ALLOCATION
ADDR+ALL.SZ
=
==--
--
.-
-=
FOR DRIVE O.
FOR DRIVE 1.-,
FOR DRIVE .....
.j
FOR DRIVE .j.
;******************************************************
*
; CHANGED DISK CHECK AREAS DECLARED
;******************************************************
0010
4E1B
4E2B
4E2B
4E3B
4E:3B
4E4B
4E4B
4E!:iB
CHI<. SZ
DO.CHK
ADDR
Dl. C:HK
AD DR
D2.CHK
ADDR
D:3.CHK
ADDR
------=
; CHECK
16
; CHECK
ADDR
ADDR+CHK.SZ
; CHEC~(
AD DR
ADDR+C:H~:::. SZ
; CHEC~(
AD DR
ADDR+CHK.SZ
; CHECK
ADDR
ADDR+CHK.SZ
AREA SIZE.
AREA FOR DRIVE O.
AREA FOR DRIVE 1-
l~
\
}
AREA FOR DRIVE 2.
AREA FOR DRIVE
.j
oJ.
;******************************************************
.END
c
PAGE 17
TDL 280 CP/M DISK ASSEMBLER VERSION 2.21
BIOS - JADE DOUBLE 0 CP/M 2.2
('::: +++++ ::W/'1BOL TABLE +++++
?~D[JR
BIOS.R
BT.DMA
BT.MOD
BT • ::;; 1":::;
CNI.DF'
CNO.DP
eN:::;. C/<
CF'/,1. B::;;
C.IJNE::;;
4E5B
C.:;;.OO
4P,7E
4A7::;:
4A'l';:1
0001
0001
4 C::::;: 0
0000
L~ (:..) ';:/ ';')
DO.DPS 4(,431.::,
D.l.DPB /.j.Pf4~5
D2. DF'S 4?:)~5·q·
D3.DPB '+P'I~.:3
DC. LOCi 0000
DC. :::;1 N 0001
UU.CBT 0::::70
DD .. FEW 0:300
("
DF. DFi'
*
*
*
')0250,
U. !:::. A.
*
*
;*****************************************************
*
; .
:::::.:20 ,.," ::::" DR I VE::::
,*
PROPERTY OF:
JADE COMPUTER PRODUCTS INC.
4901 W. ROSECRANS BLVD.
HAWTHORNE, CALIFORNIA
~,
;*****************************************************
*
*
*
=*****************************************************
THE DISK CONTROLLER MODULE (DCM) RESIDES INTERNAL *
, TO THE JADE DOUBLE D DISK CONTROLLER BOARD. THIS *
PROGRAM PROVIDES A FACILITY Tb READ/WRITE DISKETTE *
SECTORS AND FORMAT DISKET'fE TRACKS (IN SINGLE AND *
DOUBLE DENSITY). THIS DeM SETS THE PARAMETERS FOR *
E?'iCH Dli I VI::: DUR I NC:; THE
LOG""'CIN" OPEF~AT I ON.
THE *
FORMAT. COM PROGRAM WRITES AN IDENTIFICATION SECTOR *
WHICH PF«lVIDES THE NEEDED INFORMATION.
IF THIS *
IDENTITY SECTOR IS NOT PRESENT ON THE DISKETTE, *
IT I::;:: {-'r;:::::;!'"Ii'1ED Tel BE A :3TANDARD ::::" :3740 I:;'ORMAT. *
THIS PROGRAM CONTAINS A 6 WORD TIMING BLOCK WHICH *
SHOULD BE PATCHED TO MATCH THE USERS DISK DRIVES. *
THIS HAS NORMALLY BEEN SET FOR SHUGART SASOO/SOI. *
t.JH I TTEN BY:
("
::::-r (~N
~::}:::UI'1ME
II
;*****************************************************
\
TDl l80 CP/M DISK ASSEMBLER VERSION 2.21
DISK OONTROllER MODULE (DCM)
HARDWARE DEFINI1ION
\
PAGE 2.
;***********************************************
THE FOLLOWING IS A LIST OF THE INTERNAL 1/0
ADDRESS ASSIGNMENTS. THESE PORTS AND
C~~TROLS CAN ONLY BE USED BY THE ONBOARD Z80A.
THESE PORTS AND CONTROLS ARE NOT IN THE S100
BUS ADDRESS SPACE.
(CONTROLLER PORT ASSIGNMENTS)
OOuo
()()()()
r)()() ..q.
Bl. :;:;'[":3
BL..CTL.
WD. C:j"lJJ
WD. s'r~::;
WD. TRI<
WD. :::;EC
l.JD.
OOOH
OOOH
004H
004H
OOSH
0061-1
0071,'"
[(f A
;BOARD STATUS PORT.
;BOARD CONTROL PORT.
;1791 COMMAND REGISTER.
;1791 STATUS REGISTER.
;1791 TRACK REGISTER.
;1791 SECTOR REGISTOR.
;1791 DATA REGISTER.
; (CONTROLLER FUNCTION ASSIGNMENTS)
(i(I()::::
0010
(j()~;~()
0040
UO~30
XF' STP
XP. 1'1,'ro
XP .. IHH
XP. MTX
XP. D::;;H
n
--_.._.
OO::::H
010H
O:20H
040H
080H
_..._.
--_.-
., I::;;8UE
::;;TEP PUL:3E.
; r-iOTOR TURN (JFF.
;S100 I N'T'--I~EG! HE::;Ef.
, r'10TC)R TIME EXTEND.
; DI~TA SYNC HOLD.
II(
; *.1l..1l'.1l'*{l'***.li-****-!!'***-!!'-!!'-1!'*'**'*'******************-l!.-jl.**
THE FOLLOWING LIST ASSIGNS EACH BIT POSITION
AND FUNCTION OF THE BOARD CONTROL PORT CBl.CTl).
(BIT ASSIGNMENTS)
0001
BC. D:::;A
_...-
0002
BC:. D:3B
0004
Be:. D:;:;;:;·
BC. EI('4
--._ -
·000::::
0010
0020
0040
00:;::0
Be. DDE
BC. [I,.:;:::;
BC:. peA
BC:. F'CB
....
_..
--_.---
._.. --
0000000lB
(lOOOOOI0B
O{JOO(Jl00B
00001000B
OOOlOOOOB
00100000B
OiOOOOOOB
lOOOOOOOB
;DRIVE SELECT A (2*0).
;DRIVESELECT B (2*1).
;DRIVE SELECT ENABLE •
;EIA SIGNAL LEVEL OUT.
;DOUBLE DENSITY ENABLE.
;DIRECTION AND SIDE
;PRECOMP SELECT A.
;PRECOMP SELECT B•
; (FUNCTON ASSIGNMENTS)
OOO:~:
BC:. D:::;N
BC:.
D:;:;A ! BC . [lSB
0000
BC. ::;;[1::;;
(>
0010
BC. DIY:;;
0040
Be. PC:H
00:30
BC. PC::!'1
BC.DDE
BC. PC:A
BC.PCB
OOCO
DC.PCL.
0000
BC.PC:l
Be. PC:;:i ! Be. PCEl
o
;DRIVE NMBR MASK.
; :::; J Nl:3LE DEN:::; :[TY •
;: DOUBLE DEN::;; I TV.
;PRECOMP
HEAVY.
;PRECOMP - MEDIUM.
; F'h:ECCJI'1F'
; PF{EC:CJMP
L 1 C:i~'fr •
Ol::'-F.
;***********************************************
V
I
PAGE ::::
TDL zeo CP/M DISK ASSEMBLER VERSION 2.21
CC)NlRDL.Lf::R p'l(JDULE (DC:M)
HARDWARE DEFINITION
Dr :;::;f<'
C
,
;**********************************************.
THE FOLLOWING LIST DEFINES EACH BIT AND
FUNCTION OF THE 80ARD STATUS PORT (BL.STS).
0001
0002
0004
000:;::
0010
0020
(lOLlO
0080
BS.
B'::'-'
.
U:30
U::;;1
BS. T::H
B::;; . INT
[is. E:rA
BS. 110F
B~;:3 1"::;;D
E~~=; DC:N
It
u
--
---__..
,.
---
_....-
-----
000000018
000000108
00000100B
00001000B
000100008
001000008
010000008
100000008
;USER SWITCH O.
. ; USEH SWITCH 1.
;TEST MODE SWITCH.
;HOST INT REQUEST.
;EIA SIGNAL LEVEL IN.
;MOTOH OFF INIDCATOR.
;TWO SIDED DRIVE FLAG.
;DISK CHANGE INDICATOR.
;*********************************************
THE FOLLOWING IS A LIST OF C:OMMAND C:ODE:;:;
ISSUED TO THE 1791-01 DISK CONTROLLER.
0010
001::;:
00:::::0
0(>f40
OOFO
OOC:U
OODO
OOD:::
DC.HDL..
DC.HDU
DC. RD:;:;
DC.WRS
DC.WRT
DC. R[f{4
DC:. :;:;1'::;;
---_..
---..
N'_"_
--
DC.IFI
I
0001 Sitt)OOB
0001 :i1000B
1 ()()() () ()() c) F.$
10100000B
11110000B
11000000B
11,010000B
11011000B
;SEEK/LOAD RW HEAD.
;SEEK/UNLD RW HEAD.
; READ SECTOR.·
:: WR I TE SEc:rcm.
;WRITE TRACK FORMAT.
;READ TRACK ADDRESS.
;SET TYPE 1 STATUS
;FORCED INTERRUPT.
;********************************************
THE FOLLOWING LIST CONTAINS ALL THE
MASKS USED TO TEST THE 1791-01 STATUS
CODES (PORT WD.STS).
00')[1
OOFD
OOE40004-
0020
00::::0
0004
DM. HEn
01'1. t·JER
._-_..
-- ..-
[IN. FER
.-.. ..
D1'1. TKO
DM. HDL
..........
[1M. DNH
D1'1. l..DE
'---
~
--..... -
100l 1 lOlB
1 1 1 1 1 1018
1 1 100100B
00000100B
00100000B
10000000B
00000100B
.,. F;:E?iD ERFWR -TEST .
;t-JRITE EF\HOR TE::;T.
; FOHMfiT ERRCJF;: 1E::::1- •
; rRAC:K <) TE:::;T.
, HEAD LOAD TE::;::-r.
;DRIVE NOT REI'4DY.
," LO:::;T D(.iTA nmOR.
;***********************************************
.....'$.
(
.
:"
to.
(
P,,:'GE 4.
TDL Z80 CPIM DISK ASSEMBLER VERSION 2.21
DISK CONTROLLER MODULE (DCM)
MEMORY ASSIGNMENTS
;********** (BASE ADDRESS FOR DCM) *************
1000
BASE
1000H
;********** (MEMORY BANKS) *********************
1.000
0400
1400
Bf:iNK. (>
BA:3E+(>OOOH
BAM:::" L
0400H
BANK. 1
B{~NK. O+BAN~:::.
; B(~NK
L.
(I DEF I NED.
; E:(')NK LENGTH ..
; BANK 1 [fEr= INED.
;*********** (RESTART VECTORS) *****************
1000
100::::
10:1.0
101.:::
1020
10:30
RSf.
0
R::;T. l
H::n". •....r::.,
':':'
F6T • .'-'
(-{ST. 4
R::n- •
E:;'
....1
RST. e;,
RSf. '7
Bf.'iNK. O+(lOOOH
B{%NK. O+OOO::::H
BANK. O+OOI0H
BANK. 0+001:;::1-1
--.-
._--.......-.
BI~NK.
-.-~
_......
0+00:20H
BANK. 0+002::::H
BriNK. O+OO::;:OH
BANK. O+OO:::::::H
_.. _.
---
; F:EST{4F?T'
·; HE:'!:;;TriRf'
RE:;:;T
·;, RESTART
·,, RESTART
·
·, REST{iFIY.
;RETURN AT OLD IV.
C
1. 30[1
:::;'j"ri
X'flY
F=
;RETRY ERROR COUNTER.
;******* (HOLDING AREAS) ***********************
1.30C
()()
(1
1.3()[l
()()
OOOH
;BL.CTL DRIVE BITS.
STATUS SAVE
;1791
;******* (TIMING VALUES,
130E
1:.:::10
1.3J.:::::
1 :::::14
()O~:;;O
OOOl
04BO
131 :::
·lM. "'·IL.D:
'1"1'1. :3TF'::
'1' I'll. {~L :;:; ::
. WOfm
~:~i()
• ~.JCIRD
GO
• ('JOFW
. t.JORD
:;::0
• hlORD
.10
TN. I'ITO:
TM.PL.D: .WORD
"1''1' 1.
::;{~W::
1
1200
SA GOO
TI'1. HLD=
"/"M. =::;"rF':
TM. {:lLS:
'/''1'1. i''lro:
"".•
Tlvl. F'''
" too!.'
,(/,'1. :;::; (i~..J :
·t.JWORD
or.:;; 0
· t.,IORD
·
·
· l..,JUI::;:D
·
*********
0.1 MS)
;HEAD ENGAGE TIME.
;STEPPER INTERVAL.
;AFTER L.AST STEP.
; MOTOR :~:;;T{Un UP.
;PHASE l.OCK RECOVERY.
;STEP AFTER WRITING.
FDDI0(>
::::···. c:
SA G50
:3::;()
~=:()
60
30
:::;:0
!:.::!()
120
!r.1()F~D
1
•L
•
1
I,.J()FW
1200
1.0
1.200
10
10
c
1200
;******* (DISKETTE FORMAT LABEL) ********************
i.e.
:/.3J.{i
000::::
4A6164652044 JADEID:
IV. :::;ZE
ID"L.BL
1 :3(i()
1:3('~O
1 :::::BO
1:3B1
0000
ID.BL.K
ID.:3PT
1[1.810
ID.FLG
ID.FLD
"""""-1
",,Jt4DE DD
"
(. - .)ADE I D)
BI...IF. B(.1+0000H
I D. LBL -H)O:~~OH
I D. BLl';;: +00001·-1
ILl .. BU<+0010H
ID. BU:;:'+'0011H
OO()()OOOOB
;DISKETTE ID LABEL..
; I D LABEL ::; I ZE.
;10 SECTOR LABEL.
; 1D BLJ)(A( AHEA.
; :::;ECTOH:;;;/,(Hl~C:K.
; :=;ECTOF~ STAGGER.
; DI :::;KETTE FLAG:::;.
; ::;::740 FLAG:::;.
;****************************************************
o
......
PAGE .-"::"o:,i
TDL l80 (~/M DISK ASSEMBLER VERSION 2.21
DISK CON1"RULLER MODULE (DCM)
I 'v'E Tf4BLE
CDR
;*******
0000
0001
000:2
0003
0004
OOO~i
0006
DV.NBR
DV.TRK
DV.SEC
DV.Spr
DV.STG
DV.FLG
DV.CTL
;*******
(DRIVE TABLE ENTRIES)
(I
1
2
"--
--
--
.-;:.
._'
4
==::
---
...'
C"
.--
6
1 :;::::;::~::
1:..:::.29
:L ::::::::0
13:.::7
0007
OOFF00000002 DT.DEO:
OlFF00000002 DT.DEI:
02FF00000002
(l:::;:FF00000002
04FFOOOOOOOO DT.DED:
.BYTE
.BYTE
.BYTE
• BYTE
.BYTE
[IF.
0002
000:3
DF. T:::;D
000:;;;:
DF.DFL
0,255,O,O,0.DF.DFL,OC4H
1,255,0,0,0.DF.DFL,OC5H
2,255,0,0,(I,DF.DFL,OC6H
3.255,(I,0.0,DF.DFL,OC7H
4.255,0,0.(1,0.0
DT. DEI--DT. [lEO
(FLAG BIT DEFINITIONS)
TID
DF.DTD
0001
**********************
;DRIVE TABLE ADDRESS.
[IV. DES
;*******
; CURRENT DRIVE NUMBER.
; CURRENT TRACK NUMBER.
; CURRENT SECTOR NUMBER
; !:;ECTORS PER TRACI<.
; SECTOR STAGGER NUMBER.
;SIDE AND DENSITY FLAGS
;LAST CONTROLS USED.
(DRIVE TABLE AREA)
[lV.TBL
*******************
"
.
;DRIVE O.
;DRIVE 1;DRIVE 2.
.-, .
;DRIVE .;.
; DUMMY.
;ENTRY SIZE.
****************
1
; TRACI< 1 DENS I TY (1 ::: DOUBLE).
2
;DATA TRACKS DENSITY (1 ::: DD).
:3
;TWO SIDED ( 1 ::: TWO SIDES).
l
'CB.FFG: .ByrE
CB" !;:;PF<= • E:rYTE
o
13/6
l :::;:'~':"7'
00
00
00
00
00
1 :.:::/::::
1. ::::/()
0000
0000
1::::74
eEl. t·10D;
C:B. !:;TS ~
• B'rrE
. BYTE
c:w. U·H): • WCJRD
c:w. LNG: . WOf~D
()
o
o
(J
(1
; LOAD ADDRES!:::.
• LO{·H) LENGTH
;******* (NODE BIT DEFINITIONS) ***********************
00::;:0
C:M. NRT
100000008
C:!3 " DNI:,(
..........
0040
c:=::; • WHP
,.---
OU::?O
0010
000:::
(:!::: • HNF'
E:T~::j
0004
0002
C::::;" cnc
(::::; • oLLIE
C:~=; " BTl
0001
c:~;.~: "
BTO
RETRYS
U::TATU!3 BIT [lEF I NIT IONS)
; iHi"IHi+lH
C:::;,.
;NO
-...
~-.
..- .....
._......
..__.
... .
~-
-....-
100000008
01000000B
001.00000B
(JOO10000B
00001 OOOB
0000010013
0000001.0B
0000000lB
( = 1 ).
***~"Hi'****1l'**********olf,"'-
LJ
;DRIVE NOT READY •
;WRITE PROTECTED.
; Ncn AS:::;: I GNED .
;RECORD NOT FOUND •
; CRe ERR()R.
;LOST DATA ERROR •
; NOT ASS; I GNED ..
; NOT {~SS I 13NED.
;******************************************************
c
PAGE 25
TIlL Z::::O C:::'/i"/ [11:::;1< i4S:::;EI"lBLEH VEHSION 2.21
DISK CONTROLLEH MODULE (DCM)
snnTsTPAPFD INITIALIZE
(}"'--'-
,
"".
;******************************************************
THIS SECTION RESIDES IN THE DCM SECTOR BUFFER. THIS *
SECTION MOVES DGM FROM BANK 1 DOWN TO BANK O.
THE *
C REGISTER IS SET FOR 1'791-01 OR 1793-01.
THE LAST *
OPERATION IS TO READ THE BIOS LOADER SECTOR TO *
OVERLAY THIS INITIALIZATION SEQUENCE.
BIOS LOADER *
THEN READ BIOS INTO BANK 1 AND HALTS.
*
;******************************************************
;*******( EXECUTES IN BANK
1 :::::::::0
13::::0
01 0400
11 :l 000
21
1400
LDBO
C:3 1 ::;::::::E
.LOC
INIT.B= LXI
LXI
LXI
LDIR
,-'I"IF'
1
BUF.BG
B,BANK.L
[I, B(4NK. 0
H,BANK.1
•• DOWN
>*************************
;RESIDES IN BUFFER.
;SET BANK LENGTH.
;SE1 DESTINATION.
;SET SOURCE ADDR.
; MOVE BLOCI< •
;JUMP TO NEW IMAGE.
;*******( NOW IN BANK 0, SET INT MODE >****************
1. :~:::~~:E
1 :3') 1
::;::1
1370
ED::i6
•. DO("JN: LX I
;*******( SET
OEOO
1::;':;'5
139'7
[lBOO
E601
:;;::()()2
139B
(JEFF
:;:;p, TF' • STK
II'l1
MVI
IN
f4NI
.JRNZ
MVI
1791-01/1793-01
C:,O
BL. !:ns
B !:". U!:;;c)
LD.BLT
C,OFFH
; SET ::H ACK PNTR.
;IN1ER~UPT MODE 1.
>************************
;UJAD C REG ZERO.
; BOARD ::HATUS.
;TE:3T U:::;ER SW .1:1:1 •
; !::;W OPEN - 179-::':.
; ~::;W GUY3ED ,,- 1791.
;*******( OVERLAY WITH BIOS LOADER TRANSIENT )*********
1390
1 :3f41
[lD:;;::l 1.:3:3E
:3E():2:
1::::A::::
1.::::A6
:3::;:~
1 :J{i:3
l:3AB
1::::{'~C
1:3"'/:3
DB40
21 1 :3::::f)
Ee::''-'
(::::: 1265
LD. 8LT: LXI
MVI
:3TA
IN
LXI
PU!;:;H
.JMP
v
DT. DED
",
.-,
A, ..::.
CB. SEC
XP. MTX
H, BUF. BG
H
HD. :3EC
;INI1" DHIVE TBL.
;BIOS LOADER SECTOR •
;SET SECTOR VALUE.
;MOTOR TIME EXTEND.
;SET RETURN ADDR.
;PUSH INTO STACK.
;GET BIOS LOADER .
;******************************************************
.END
TDL l80 CP/M DISK ASSEMBLER VERSION 2.21
DISK CONTROLLER MODULE (DCM)
+++.-j-.+ :::;Y"lBOL T'{:,BLE +++++
}3ANI< • 0 1.000
Be. D,~~) :;;; 00:20
BC. D:;:a:!. OO()::
BC. PC(4 0040
BC. PC: 1"1
BL. :::;'r:;:;
B::.:; • 1'10F
13!:;; 1...1::;; 1
CB. DF<'¥'
II
eEl. :;:;PR
C!"ID. EH<
00:;::0
0000
0020
000:;;::
1 ~371
1 =:::-l!:i
1:~:70
C:::':: • Bl~5 0020
B{4NK. 1.
BC .. DDE
Be. D::£
BC. PC:B
Be. PCZ
E~~:; [r(:N
13S. T::;;D
BUF. BO
CB. FFG
CB .. ~:;'r!::;
C:M. NRT
1. 4·00
0010
0004
C:~=: •
0008
II
eRe
oo:::.~o
0000
0080
0040
1:3:30
1::;::74
1:3T7
0080
c::::; . RNF 0010
c:!;:;. WRP 004-0
DC:. HU!.. 0010
DC:. FaJ:::: 00::::0
UF" DFL O(JO:2
DC. HDU
DC. :;:;T:;:;
DF. DT'D
DI'1. FEf~
r.WI. TKO
DT. DED
DV. NBR
DV. TBL
EX. I-·IDU
FMT. p .........'
ID. BLK
ID. SF'T
[WI.
[WI.
DI\IF~
0(i::::0
Ht::n 00'.;1[1
nf. DEl 1 :~:;~~S~I
U'J. FLI3
OOO~5
Ltv. ::::;fG 0004
I;::~
X• I···IDL
1 :2:31::
Fl"il. F3G 1700
HI::;:. VEe
ID. LBL
INIT. E'.,
LOG. ON
f~~::'~
'r ,.
1
Hs·r. "-.'
t::"
1006
1:3::::()
1;:::::;:0
1 1 1H3
100::::
102:::
RfV. ::'~;K (lOO!:;
•....
,
.::, 'oj • ~::;'r~=;
1::::0D
T"I'11::: • Ne 001(:
T·"·I. PL.D 1:31.6
l..JD. CMD 0004
WD. STS 0004
XP. D:::;/-I 00:::0
XP. S'fP 000::;:
$ .. IDLE 10[12
$. WHIT 1 O:;::.B
~
0018
OODO
000:2
00£4
0004
:L::::~:E
0000
1:322
124B
170r:::
1:3('KI
1. ::;:{:)o
10. ElL!< 1:370
lO6e:.
NM. INT
.....
H::::T • ..::.
1010
1.030
1 1:::0
RST. (.
SEEK
T IC:K. E 1074T1'1. ALS 1312
TI"I .. ::;A~;) l:3 1 ::::
WD.
[:rT,!..)
0007
WD. TRt::: ()()O~5
XP. IHR 0020
X. C:UTE 1.041
$. LOON :LOAF
1:309
B{4:;:;E
Be. D:;:;A
Be. ElA
Be. PC:L
BL. crL.
B:::;;. INT
I:~!:=; U:::;(l
CB. CND
1::::76
CB. :::;EC 1 ::::?:::;:
1:::::-7:2
CHK. RT
1~we
0001
c::::; • :BT1.
(l002
C::::: • LDE
OOO:~
BANK. L
BC. DO::::;
BC. D::;;N
BC. pel-!
Be:. ::;;[1:::;
0400
0010
B!;:; .. E::IA
0010
B::;;. T:::;T
BUF. ::::T
C13. MC)D
C:B. TRK
C:!:: .. BTO
C:!3. DNR
CW. LAD
DC:. IFI
DC. WRS
m::. T1D
DM. HDL
DM. WEf~
DV. CTL
DV. ::;:EC:
[IV. TRK
EX. ::;::'rs
HeWIE. D
ID. FLD
ID. STG
.JADEID
RD. SEC
RST. ::::
0004
F\::;;T.
-,
:::;ELECT
TICK. R
TI"I. HLD
1""1'1. STP
WD. INT
WH. ::;Ee
XP. tiTO
$. f4DDR
$.
RE{~D
OOO:~:
0040
0000
00::::0
a
1000
0001
000::::
(lOCO
0000
000::;:
0001.
1:3]0
1:37:;::
c:w. LNG J37A
00[1:3
DC:. R[I{.j OOCO
DC. WR..,.· OOFO
DF. 'f::3D 000::::
OOAO
0001
0020
(lOFD
0006
000:;;::
0001
1 ~;~~5:=:
:I. 126
0000
OM. LDE
OOOLI·
[IT. DEO 1J22
[1'1/ • DE:;:; 0007
D',) • :;:;PT 000:::;:
EHf.:.
CT 130B
I:::'ETCH
103F
HH .. I N"T l i):2:::::!
:I.::::BO
ID. FL.!:::; 1.J.Bl
ID. :;:;ZE: 000:::::
1:31f4
LD. BLT 1 ::':9D
1265
1 (1 1::::
1 <)::::f::
10DD
1.070
1:30E
1:310
1066
12940010
10CC
:L07C
HST. 0
.. 4-
r:;:~=;"'"
1000
.1020
RfV. L:::; 0009
:::;\j. tlH'v' 1:30(:
Tt·m • FT: 00:1.9
TI"I. MTCI 1 ::::: 14
lP. :::;T~::: 1::;:70
l..JD. :::;EC 0006
WF<. TF-:K 12(::;;:
XF' • I"ITX 0040
$. F()HI"I 1. O'){:J
......
.:p", 3f:'f~H
:lOCF
SBD
;******************************************************
*
*
;******************************************************
*
PR()PERTY CIF:
JADE COMPUTER PRODUCTS
*
4901 W. ROSECRANS BLVD.
*
HAWTHORNE, CALIFORNIA
*
90250,
U.S.A.
*
*
;******************************************************
*
VEF\SION:
2.2
*
*
;******************************************************
rHE :;:;YSTEM BOtJT:::;'1HAP DR 1 VER I S ONE OF TWu MODULE:::;
*
THAT MAKE UP THE SYSTEM RESIDENT BOOTSTRAP. "fHIS
*
MODULE IS TO BE EXECU1~D BY THE SYSTEM PROCESSOR.
*
DURING EXECUTION, THIS MODULE PERFORMS A BLOCK MOVE *
OF n-lE SEC:OND MODULE (BOOT I N.-'EC r I ON MODULE) I NTC'
*
THE DOUBLE D CONTROLLER MEMORY. A SUCCESSFUL BOOT *
OPERATION BY THE DOUBLE D WILL LEAVE DCM IN BANK 0 *
AND BIOS IN BANK 1. THE REMAINDER OF THIS MODULE *
THEN MOVES THE BI ():::; I MAC:;E TOfHE PROPER SYSTEM *
ADDRESS AND JUMPS TO THE BIOS COLD START ENTRY.
*
PRCII3RAi'1 1D:
SYSTEM BOOTSTRAP DRIVER
*
;*********************************************** SK ***
;******************************************************
; DOUBLE D HARDWARE PARAMETERS. PLEASE N01E THIS
; SECTION CONTAINS CONDITIONAL STATEMENTS.
(
*
*
;******************************************************
004::::
0001
:;;:;
=
[I!f;PORT
THUE
EG!U
EOU
TRUE
FALSE
FAU:;E
;DOUBLE D PORT ADDRESS.
;TRUE IS A ONE.
;FALSE IS"A ZERO.
;SET TRUE FOR REV B BOARDS •
;SET TRUE FOR REV C BOARDS.
; TRUE U"- MA 1 (I •...IUMPED (REV-B).
D:;:;SA::;:W
D$BA:::;;E
IF
E";:!U
EG!U
SET
ENDIF
REVSB
002H
OOCH
OE400H
;STATUS PORT HALT INDICATOR.
;STATUS PORT ADDR SW MASK.
;SYSTEM WINDOW BASE ADDRESS
IF
EOU
END I Fr..;"
I'lAI0
[lSBASE
(1000 ==
~-:ALSE
EGKI
0001
.:
E'~~U
0000
:;;:;
REVSS
REV$C:
0000
-
l'1t~
EIJU
0002 OOOC:
=
(l4::-::H
10
D:::;~-$HLT
DSSHLT
DSSASW
[iSBA!::;E
H~U
IF
EOU
1
0
OEOOOH
;SYSTEM WINDOW BASE ADDRESS
REVSC
f);HJ
001H
OOEH
H1U
OEOO(lH
;STATUS PORT HALT INDICA"rOR.
;STATUS PURr ADDR SW MASK.
;SYSTEM WINDOW BASE ADDRESS
ENDIF
c
;******************************************************
; BOOTSTRAP INJECTION MODULE PARAMEfERS
*
;******************************************************
1000 -00[:0 :;;:;
I MSADR
Ii'1$SlE
EG!U
1000H
EWJ
OO[:OH
;BOOT IN~ECTION MODULE ADDRESS.
;BOOT INJECTION MUDULE SIZE.
....
;
131":11,) 1:::;1 RAF' L 1NKAO£
* .(
ADDRESS.
;******************************************************
OOHO 0040 =
0:'377 0:37::: =
O~::7A
_.
B:::;TACK
D$ADDR
BL$LlCS
E:GRI
EL:".IU
BL$~WR
EQU
BL$BSZ
H~U
EI;~U
0080H
0040H
0377H
037:::H
037AH
; BOOTSTRAP TOP OF STACK.
; DOUBLE D ADDRESS POINTER.
;DCM DISK CON-r ROLLER STATUS.
;J)CM LOAD AND ;.JUMP ADDRESS.
;[I(:M BLOCK LOAD SIZE.
C!
;******************************************************
*
; DOUBLE [I HARDWARE COMMANDS
;******************************************************
(li)::::!)
=
OU01 -0000 -(l001 -000::;:: ==
0002 -.,
[lC$BGN
E:".IU
E:I.::!U
DC$MRI"~
DC$/VIRT
DC$MBO
[lC: $ 1'1£1 1
EI~).U
£ I;). U
E(':!U
DC$EXC . E::G!U
0801-1
00lH
OOOH
(lOIH
o 0::'::: H
O(l2H
;RESET Z80A AND EXECUTE..
; RE(;~UEST MEMORY WINDOW.
; RELEASE MEMORY WINDOW$
; SELECT MEMORY BANK 0.
; SELECT MEMORY BANK 1.
; ISSUE DOUBLE D INTERRUPT.
;**********************~*******************************
*
; A::;SEMBLEH DI RECl I VI:::S
;******************************************************
OkG
0100
0100H
;MODULE ADLIRESS (ALTERABLE).
;******************************************************
;
SE'l'
*
STACK AND CONTF!lMB i
D$PORT
D$ADDR
BLOCK
; C:ONTRfJLLER ADDRES!::; •
;LOAD {4DDPES:::; PNTF;:.
; !:;£T HL F'OINTEF\.
;LOW ORDEF: ADDI::;:.
, INCREMENT HL.
;HIGH ORDEJ~: {4[tDf~: •
; REG!U IRE!:;; BL. B!::;Z NEXT.
;Lm..J ORDER LENG "1"1"-1.
, INCREMENT HL.
;HIGH (JHDt::R L£r¥3TH.
...-, "...
; U:;:;E H·='
.)Ut1P ADDR.
:; !;:;WITCH Tel MEt'! BANK L
, !:;:;!:;;UE C:OMMAND.
; DOUBLE D MEI'1 ADD["E::;;S.
; MOVE B1O:::; MfJDULE.
·
·
·
;******************************************************
; TRANSFEH CUNTROL TO OPERATING SYSTEM
*
;******************************************************
;
0154 :~:E01
0.156 D343
MVI
OUT
RET
() 1 5:::: C:';I
A, DC$MBO
D$PORT
;SWITCH TO BANK.O
; I :;:;::;UE CCIMMAND.
; Gcrro BI Cf!3 C()LD ENTRY.
;******************************************************
; BLOCK MOVE SUBROUTINE (Z80 BLOCK MOVE REGISTERS)
*
;******************************************************
015'::'
(li5A
015B
015C
015D
015E
(J 1. !:;iF
("~ 0160
,.."
EB
OB
MOV
INX
XCHG
MCfV
INX
XCHG
DCX
7:=:
1'10V
01/':.1 81
ORA
.JNZ
RET
() 1 (~:2
7E
---:''::'
":""-'
EB
77
2:~:
(:2!;:i ':;' (1 1
0165 C9
BLCIC:K=
A,M
H
M,A
H
B
A,B
C
BLO(:r<
;OET BYTE.
INC PCfINTER
;GET DESTINATION.
;pur BYTE.
; INC POINTER
; GET :=;()URCE.
!jONE LE!::;:::; TO DC).
; (3E r HI COUNT.
;GET UJ C()UNT.
;FINISH LOAD INC.,.
;
;******************************************************
; ERHrJR HA:;:; BEEN DETECTED
*
;******"************************************************
SBD
PAGE 1
"fDL IBO CP/M DISK ASSEMBLER VERSION 2.21
SYSTEM BoorSTRAP DRIVER - JADE DOUBLE D
TITLE F'?K,E:
;******************************************************
*
*
*
;******************************************************
*
F'HOPERTY OF:
JADE COMPUTER PRODUCTS
*
4901 W. ROSECRANS BLVD.
*
HAWTHORNE, CALIFORNIA
*
*
PROOHAM ID=
SYSTEM BOOTSTRAP DRIVER
*
;******************************************************
*
*
*
;******************************************************
\. . ERSION=
THE SYSTEM BOOTSTRAP DRIVER IS ONE OF TWO MODULES *
"1"1-I(-"1T MA~:::E UP THE ::;Y:::;TEM RE::;IDENT BC)(JTSTRAP. THIS "IlMODULE IS TO BE EXECUTED BY THE SYSTEM PROCESSOR.
*
DURING EXECUTION, THIS MODULE PERFORMS A BLOCK MOVE *
OF THE SECOND MODULE
(BOOT INJECTION MODULE) INTO *
THE DOUBLE D CONTROLLER MEMORY.
A SUCCESSFUL BOOT *
OPERATION BY THE DOUBLE D WILL LEAVE DCM IN BANK 0 *
AND BIOS IN BANK 1.
THE REMAINDER OF THIS MODULE *
THEN MOVES THE BIOS IMAGE TO THE PROPER SYSTEM *
ADDRESS AND JUMPS TO THE BIOS COLD START ENTRY.
*
;*********************************************** SK ***
c
\
i
I,
PAGE 2
TDL Z80 CF'/M DISI< ASSEMBLER VERSION 2.21
SYSTEM BOOTSTRAP DRIVER - JADE DOUBLE D
DRIVER EI~UATES
o
;******************************************************
; DOUBLE 0 HARDWARE PARAMETERS. PLEASE NOTE THIS
; SECTION CONTAINS CONDITIONAL STATEMENTS.
*
*
;******************************************************
004:~:
0001
0000
0001
0000
0000
0002
oooe:
£400
D.PORT
TRUE
FALSE
REV.E!
REV.C
MAlO
DS.HLT
DS.A8W
D.BASE
---
; DOUBLE 0 PORT ADDRESS.
; TRUE IS A ONE.
; FALSE IS A ZERO.
;SET TRUE FOR REV B BOARDS.
;SET TRUE FOR REV C BOARDS.
; TRUE IF MAlO JUMPED (REV-B) •
043H
1
----
0
TRUE
FALSE
FALSE
.IFG
--
REV.B.
(l(l2H
(lOCH
OE400H
.IFG
MAlO. [
OEOOOH ; SYSTEM WINDOW BASE ADDRESS]
.IFG
REV.C.
i)OlH
OOEH
OEOOOH
--
-==
D.BASE
--
DS.HLT
DS.ASW
D.BASE
----
[
; STATUS PORT HALT INDICATOR.
; STATUS PORT ADDR SW MASK.
; SYSTEM WINDOW BASE ADDRESSJ
[
; STATUS PORT HALT INDICATOR.
; STATUS PORT AD DR SW MASI<.
; SYSTEM WINDOW BASE ADDRE~;SJ
.
;******************************************************
*
• BOOTSTRAP IN,JECTION MODULE PARAMETERS (ALTERABLE)
;******************************************************
0200
OOCO
IM.ADR
IM.SZE
===
0200H
OOCOH
C
;BOOT INJECTION MODULE ADDRESS.
;BOOT INJECTION MODULE SIZE.
;******************************************************
J BOOTSTRAP LINKAGE ADDRESS.
*
;******************************************************
0080
0040
(r377
()~~:7:3
037A
BSTACK
D.ADDR
BL.DCS
BL.ADR
BL.BSZ
-------
--
0080H
0040H
0::::77H
O:378H
O:37AH
; BOOTSTRAP TOP OF STACK.
; DOUBLE D ADDRESS; POINTER.
;DCM DISK CONTROLLER STATUS.
;DCM LOAD AND ,JUMP ADDRESS.
;DCM BLOCK LOAD SIZE.
;******************************************************
; DOUBLE D HARDWARE COMMANDS
*
;******************************************************
008<:1
OOOl
0000
0001
0003
0002
DC. BON
DC. MR(~!
DC.I"II::::T
[lC.MBO
DC.I'1B1
DC. EXC:
-_.._00-
---
_.---
080H
OO'lH
OOOH
001H
OO:::'~H
002H
; RESET Z80A AND EXECUTE.
; REG!UEST MEMORY WINDOW.
; RELEASE MEMORY WINDOW.
; SELECT MEMCJHY BANK O.
; SELECT MEMOHY BANK 1; ISSUE DOUBLE 1'1 INTERRUPl.
;******************************************************
o
c'
PAGE 3
TDL L80 CP/M DISK ASSEMBLER VERSION 2.21
SYSTEM BOOTSTRAP DRIVER - JADE DOUBLE D
BOOTSTRAP DRIVER
;******************************************************
; ASSEMBLER DIRECTIVES
*
;******************************************************
• 1:3080
. PABS
. PHEX
. XLINK
• Loe
0100
;USE :30:30 INSTRUCTION SUBSET •
;ASSEMBLE ABSOLUTE ADDRESS •
;GENERATE INTEL HEX FORMAT •
;SUPRESS LINKAGE OUTPUT •
;MODULE ADDRESS (ALTERABLE) •
0100H
;******************************************************
;'SET STACK AND CONTROLLER ADDRESS
*
;******************************************************
0100
31 0080
0103
DB 4::;::
(I 1 O~:i
E(~.OC
0107
() 1. o::.{
010A
07
F':::.E4
67
010B
:2EOO
010n
..::...::.
····'····1
BEGIN:
0040
LXI
IN
ANI
RL.C
ORI
MOV
MVI
SHLD
SP,BSTACK
ep
D.PORT
DS.ASW ct-
"
D.BASE>:3
H,A
L,O
D.ADDR
;SET STACK POINTER.
; INPUT STATUS POFn.
; MASK FOR AD DR SWS.
;POSITION BITS.
;OR IN BASE ADDR.
;HIGH BYTE VALUE.
; LOW BYTE VALUE.
; STORE THE ADDRESS
; **'****************************************************
; INJECT BOOT MODULE INTO CONTROLLER
*
;******************************************************
0110
0112
0114
0117
:.:::EOl
D:343
01 OOCO
EB
IN.JECT: MVI
OUT
LXI
XCHG
A,DC.MBO
D.PORT
B.IM.SZE
; REf~UEST DD MEM BANK O.
; ISSUE COMMAND.
; INJECTION SIZE.
;D.ADDR HL TO DE.
0118
011B
21
0200
CD
01~i9
LXI
CALL
H,IM.ADR
BLOCK
; INJECTION MODULE.
; BLOCK MOVE.
;********************~*********************************
; RESET AND ~:::rART THE DIS.::: PROCESSOR
*
;******************************************************
011E
0120
0122
D:'::4:'::
012::::
.~ .;.,
r~'
MVI
OUT
XTHL
XTHL.
~:E:30
£:3
.
A,DC.BGN
D.PORT
;BEGIN DD PROCESSOR.
; ISSUE COMMAND.
; ALLOW DOUBLE D TIME
;TO START UP .
; ******iI·*iI·***************·lt*****************************
; WAIT FOR TASK COMPLETION
*
;******************************************************
0126
[184::;::
E602
012:;::
C2 0124
0124
c
WAn:
IN
ANI
.JNZ
D.PORT
DS.HLT
WAIT
; INPUT DD STATUS.
;TEST HALT* STATUS.
;WAIT TILL HAL.TED.
PAGE 4
TDL Z80 CP/M DISK ASSEMBLER VERSION 2.21
SYSTEM BOOTSTRAP DRIVER - JADE DOUBLE D
BOOTSTRAP DRIVER
o
;******************************************************
; SWITCH CONTROLLER MEMORY INTO SYSTEM BUS
*
;******************************************************
012B
3£01
012[1
D~;:4:3
MVI
OUT
A, DC. MRG!
D.PORT
;REQUEST MEM (BANK 0).
; ISSUE COMMAND.
;******************************************************
; CHECK FOR BOOTSTRAP MALFUNCTION
*
;******************************************************
() 1 :d;
~~{~
0040
u 1 :3~;2
11
< .: .
J • ..'
()~;:'l'7
..... t::.
0 1.
0 1 :3i::1
~;I._J
()
1- ":;"','1I
(1 1 :3:;::
.... 1
/I:~
,q,,/
(:2
LHLD
LXI
DAD
D
MeJV
A,M
..JNl
BAD.LD
'AN;::)
(I 1 .::,(:.
D.ADDR
D, BL. DC:!::;
A
;CONTROLLER ADDRESS.
;ERROR CODE OFFSET.
;SET HL POINTER.
;G£T ERROR CODE.
;TEST REGISTER.
;BAD LOAD.
;******************************************************
; PERFORM BLOCK TRANSFER FROM DISK MEMORY
*
; ***'***'****************'11'*******************************
013B
:~~'4
0040
01.:3£
U
():~:'7:::
0141
0142
014::::
0144
0145
0146
0147
01.48
0149
014A
014C
014£
01~j1
10::).'
!::.E
2:::;:
~i~.
~2:3
4£
:2:3
4~.
D!:;i
3EO:;:
[134:3
~2A
CD
0040
o1 ~:i9
LHLD
LXI
DAD
MCrV
INX
MOV
INX
MOV
INX
MOV
PUSH
MVI
r:::rUT
LHLD
C:{4LL
D.ADDR
D,BL.ADR
D
E,M
H
D,M
H
C,M
H
B,M
D
A, DC:. MB1
PORT
D.ADDR
BLOCK
[I.
; CONTROLLER ADDRESS.
;U::rAD ADDRESS PNTR.
;SET HL POINTER.
;LOW ORVER ADDR.
; INCREMENT HL.
;HIGH OFWER: ADDR.
; REG!UIRES BL.BSZ NEXT.
;LOW ORDER LENGTH.
; INCREMENT HL.
;HIGH ORDER LENGn-l.
;USE A!;:; .jUMP ADDR.
; !;:;WITCH TO MEM BANK 1.
; IS!;:;I,JE COMMAND.
; DOUBLE D MEM ADDRESS.
;MOVE BIOS MODULE.
,1'---"
\(j
;******************************************************
; TRANSFER CONTROL TO OPERATING SYSTEM
*
;*****************************************~************
01!54
:3E01
I"IV I
01~i6
[1:343
OUT
C'i'
RET
{.~, DC. MDO
D.PORT
;SWITCH TO BANK.O
!::;:::;UE COMMAND.
.;GOTO BIOS COLD ENTRY.
; I
o
TUL 18u cP/M UISK ASSEMBLER VERSION 2.21
PAGE 5
SYSTEM UOOrS1RAP DRIVER - JADE DOUBLE D
BOUI ::;:;rR(.iF' DH 1. VEF<
C'".'··.
·c
;******************************************************
; BLOCK MOVE SUBROUTINE (ZSO BLOCK MOVE REGISTERS)
*
;******************************************************
o 1 ~:;9
o 1 ~:.t\
71:::
(1
1 ~~,U
U l ~.'C
ED
U 1 ~:.:dJ
if
:2:.:::
BLOCK:
MOV
A,M
INX
XCHG
H
"'ICIV
M,A
INX
H
;GET
;INC
;GET
;PUT
;INC
;OET
; ONE
;GET
U.1. ~::..l:.
L13
U:I
() 1':;
Dex
B
HI
MOV
(JRA
C
•...INZ
BLOCK
~::.J:"
Ul(.U
U .l.~ . .1.
U 1. t../
I... ::::
u :l..::.~:;:;
1... .•/
XCI-IG
U:I. ~:)';:I
{~,
B
BYTE.
POINTER
DESTINATION.
BYTE.
POINTER
SOURCE.
LE)::S TO DO.
HI COUNT.
; (JET LO COUNT.
; FINIS!-I LOADING .
HET
;******************************************************
*
; ERROR HAS BEEN DETECTED
;******************************************************
01.66
0169
0.1.6C
21 0160
CD 0 l. ';,;0(:,
BAD.LD: LXI
C(')Ll..
Hl..T
H,ER.MSG
M::;;(1.
en
; ERfWR MESSAGE
; D I ::;:PL.AY IT.
;HALT OR GOTO MONITOR.
01.(.[1
;******************************************************
TDL l80 CP/M DISK ASSEMBLER VERSION 2.21
SYSTEM BOOTSTRAP DRIVER - JADE DOUBLE D
PAGE 6
o,
COMMUNICF7~TION
;********~******~**************************************
; CONSOLE LINKAGE DEFINITIONS
*
; ***************,*********~*****************************
0000
0004
0001
CNO.SP
CNO.SB
CNO.SI
CNO.DP
(JOOA
OOOD
LF
CR
0000
-------
--
STATUS PORT~
Sl'ATUS BIT.
STATUS INVERT.
DATA PORT.
OOOH
O(l4H
OOOH
(101H
; OUTPUT
; OUTPUT
; OUTPUT
; OUTPUT
OO?'H
OODH
;ASCII LINE FEED
;CARRAIGE RETURN
;******************************************************
*
; CONSOLE OUTPUT
;******************************************************
() 1 ::::c.
F5
01::::7
[lBOO
OU:;:9
££00
£604
OH::8
CN!;:;.OT: PUSH
•. WAI T= IN
XRI
ANI
018[1
CA 0187·
,.JZ
0190
Fl
E6.7F
[1301
C9
POP
ANI
OUT
RET
0.191
0193
019~5
PSW
CNO.SP
CNO.SI
CNO.SB
.WAIT
PSW
07FH
CNO.DP
.
; SAVE CHARACTER
; INPUT !3TATUS
;ADJU~T POLARITY
; MASK STATUS BIT
;TRY AGAIN
; RESTORE CHARACTER
; 7 BIT ASCII
; SEND CHARACTER
i"-"
'--"
;******************************************************
; D I SPUW
*
MESSAGE SUDROUT I NE
;******************************************************
0196
0197
()19:;::
019B
019C
01';'D
019F
01A2
01A:3
FJ:::'
,;.I
7E
CD 0186
7E
2:3'.
E680
CA 0197
F1
C9
MSG.OT: PUSH
.'. REPT: MOV
CALL
MOV
INX
ANI
JZ
POP
RET
P~::;W
A,M
CN!;.OT
A,M
H
080H
• • REPT
PSW
; SAVE CALLER FLAGS.
; LOAD CHARACTER.
; CONSOLE OUTPUT.
; SAME U~HRACTER.
; INCREMENT POINTER.
; TEST SIGN BIT.
; ANOTHER CHARACTER •
; RESTORE FLAGS.
; RETURN TO CALLER.
;******************************************************
0100
.END
BEGIN
.
PAGE 7
TDl 180 CP/M DISK ASSEMBLER VERSION 2.21
SYSTEM BOOTSTRAP DRIVER - JADE DOUBLE D
+++++ SYMBOL TABLE +++++
BAD.LV
BL.BSZ
CNO. !;::;B
CR
DC.MBt
[I::;;. HLT
E F~" 1''1:::; Ci
0166
037A
0004
000[1
000::;:
0002
01~.D
1 r\j.Jt:c:"r 0110
F;:E:\/. B
c
0001
BEGIN
SL. DC!::;
CNO.SI
DC. BON
DC. MRG~
D.ADDR
FALSE
LF
REV.C
0100
03T7
OOOQ
0080
0001
0040
0000
OOOA
0000
BLOCK
BSTACK
CNO.SP
DC.EXC
DC.MRT
D. BA!:;;E
IM.ADR
MAlO
TRUE
0159
0080
0000
0002
0000
E400
0200
0000
0001
BL.ADR
CNCI.DP
CNS.ClT
DC.MBO
[lS.ASW
[I. PORT
IM.SZE
MSG.OT
WAIT
0378
0001
0186
0001
OOOC
004:3
OOCO
0196
0124
BLM
Zf:O CP/M DISI< ASSEMBLER VERSI()N 2.21
C., TDL
I N....IEC'T I ON MODULE ... ...IADE DOUBLE
D SI< CONTROLLER
PAGE 1
D, 1
,it/
TITLE
P~,GE
;******************************************************
*
*
*
; ***********'**.*****************************************
*
PROPERTY OF:
.JADE COMPUTER PRODUCTS
*
4901 W. ROSECRANS BLVD.
*
HAWTHORNE, CALIFORNIA
*
90250,
U.S.A.
*
*
; ********~.*********************************************
*
VEFi:SION:
*
*
;******************************************************
THE BOOTSTRAP IN..JECTION MODULE IS ONE OF TWO *
MODULES 'n-lAT TOGETI-IER MAIIY!
;BRANCH VECTOR ADDR.
;******************************************************
; ACCEPT EACH BYTE AND StORE IN MEMORY
*
;***********************************************.******
0070
(1I)"l2
0074
00·75
0076
0077
0078
0079
(107A
DB80
[lB07
'~9
"77
23
IB
7A
B3
20F4
R.BYTE: IN
IN
XRA
MOV
INX
DCX
MCiV
ORA
.JRNZ
XP.DSH
WD.DTA
C
M,A
H
I)
A,D
E
R.BYTE
;WAIT FOR DATA.
; INPUT INV DATA.
; INVERT (1791-01).
; STORE DCM BYTE.
; INCREMENT POINTER.
; DECREMENT LENGTH.
; e·ET HIGH REG.
; THEN OR-IN LOW REG.
; READ ANOTHER BYTE.
;******************************~***********************
1'1'1
TDL zeo CP/M DISK ASSEMBLER VERSION 2.21
I N. ..IECT I ON MODULE - ....tADE DOUBLE D DISK CONTROLLER
BASE PAGE
PAGE
0
~
;******************************************************
*
; TEST READ STATUS. TERMINATE OPERATION. GO DCM
;******************************************************
007(:
007E
007F
OO~=:1.
00:::::3
00::::6
DB04
A9
£::69C
200A
CO 009C
C::3 040::::
R. TEST: IN
XRA
ANI
...IRNZ
CALL
...IMP
; INPUT READ STATUS.
; INVERT (1791-01).
; TEST FOR ERRORS.
; READ ERROR TRAP.
; TERMINATE READ.
; TRANSFER fo DeM.
WD.STS
C
DM.RER
ER.RDB
STATLIS
DCM.BG
; *******,***********************************************
; READ ERROR HAS .BEEN DETECTED
.
*
'
;******************************************************
00::;;:9
OO:='U':i
00:;::[1
OO:3F
0091
009:3
0096
009'7
0099
009B
:::;:E02
1806
:3E04
1802
:3£01
:;:2 0::::76
AF
D:::::OO
DB10
76
ER.RDA: MVI
,.JMPR
ER.RDB: !"IVI
'-'MPR
ER.HOM: MVI
ER. HL T: STA
XRA
OUT
IN
HLT
; LOAD READ ERROR CODE.
;GO TO ERROR HALT.
; LOAD READ ERROR CODE.
;GO TO ERROR HALT.
; HOME ERROR CODE.
; DISPLAY ERROR CODE.
; ZERO A REG.
; DESELECT DRIVE.
; MOTOR OFF!
; TERMINATE.
A.BE.RDA
ER.HLT
A.BE.RDB
ER.HLT
A. BE. HOM.
BL.ERC
A
BL.STS
XP.MTO
e,
;********.**********************************************
; GET UPDATED 1791-01 STATUS
009C
009£
009F
OOAI
OOA5
OOA7
00A8
:3EDO
A9
D804
E~'
..:'
1:IB04
A9
(:9
..
;******************************************************
STATUS: MVI
; TYPE 4 - STATLIS.
A.De.STS
XRA
OUT
DELAY
IN
XRA
RET
C
WD.CMD
; INVERT (1791-01).
; ISSUE COMMAND.
; ALLOW 1791 TIME~
;GET STATUS
; ·1 NVERT (1791-,01>.
; RETURN TO CALLER.
WD.STS
C
;******************************************************
; TIMER - WAIT FOR (BC
*
1.0) MILLISECONDS
*
;******************************************************
OOA9
OOAB
.oOAC
OOAE
OO{~F
(lOBO
(lOBl
(lOB::'::
8EF'1
3D
20FD
lB
7A
B'·"
.. ..:20F~,
C9
T II'1ER: MVI
MS. I NT: DCR
,.JRNZ
[lCX
MOV
ORA
,.JRNZ
RET
A.247
A
MS.INT
D
A.D
E
TIMER
; LOAD INT M"".::- VALUE.
;DEC FOR i MS.
; REPEAT FOR 1 M~=;.
;TEST FOR ANOTHEF( 1'18.
; CHECI< REG D.
;AND REOI::;;TER Eo
;£10 ANOTHER 1 M'......
='
;TIME PERIOD EXPIRED!
;******************************************************
.END
0
.·DL~;::O
CP/M DI:;::K 1~'1:;:;::;EMBLER VER::;;ION 2.21
INJECTION MODULE - JADE DOUBLE D DISK CONTROLLER
+++++ SYMBOL TABLE +++++
[; - "_ ;~.'H.~::~. (>
~ -". D:;::E
BE.RDB
BL. :3T:::;
0000
0004
0004
0000
BAI'·IK. 1. 0400
BEGIN
0000
BL.CTL. 0000
E{~:;. ~J~;(~ ()()() 1
DCf·1. :::::::; OOOD
DC.HDL 0018
DI"I. I=
-.-
1
2
; 'fR?iC:K 1.
; T~~ACK :2.
.-.-
12::;:
._..-
I)
;128 BYTES PER SECTOR.
;ID SECTOR NUMBER.
; REBOOT ADl)RES:::; .
_.-
_...-
_.. _..
!.
:l (~,
1.
; TF?AC:K
(I.
; HU·)C:K 'jl::.••
;******************************************************
.*
; SYSTEM TF
TPA LOAD (4DDI:~ •
F J R:::;T' :::;EC:TOR.
0
LP,:;:;T :;:;ECTOH.
TKO. U:;-TKO. FS+l ;; TR?iCK
U:·
'.::. ; TR(4CI<
TKO. ..··SEC. :;:;2*TI(0. F"".'
(J
_.-
:::;EC. :;:;Z*TKO. N'~:'....,
TKO. LP+TKO. SZ
__..
1
48
_._N
.
·,, TF?ACK
·; "rriACI<
TH~~CK
lOOOH
• n~F4CK
0
C
.,
::;;EC'rCrF 16!:i
016e
016A
016[1
016F
0172
0~36C
CD 0281
FE3~:
c,~
FUN. SO: LXI •
CALL
CALL
CPI
.JZ
C:PI
:
0141
01.44-
OlE::::
()25'7'
FE:~:6
026D
FE26
CA
'-1-'
'-
CPI
.-'z
CPI
.-'z
CPI
.JZ
cpr
.JZ
CPI
C:A 03FD
.JZ
FE:2'7
CPI
CA
03FE
.JZ
21 066.C
LXI
I) 1. '7~:i
:::::2 06'70
:=;T(~
017::;:
CD
(::3
01713
o:~::::1
C{..)LL.
0141
.Ji"iF'
H.MSG.FL
M:;:;G.OT
eNS. IN
"1 "
FUN. 1.
;FUNCTION LIST ADDRESS.
; ISSUE MESAC.1E.
;GET C~~SOLE CHARACTER.
FUN.2
;FMT SINGLE DENSITY.
11211
;FMT DOUBLE DENSITY.
If·.. ·...
.,:.
FUN. :.::
; Fi'1T :37.:tO.
"4"
FUN.4
;FMT SYSTEM TRACKS.
11£;::11
~,
FUN. '-'
;READ SYSTEM TRACKS.
r':'-UN. (;.
;WRITE SYSTEM TRACKS.
J::'
11/.:.11
II
~<
II
R::rr. I:.."
RST. '7
H.l"I:;:;G. !E:;E
LTf-<. SE
l"iSG. OT
FUN. DG
; DEBUGrDL TRP,P.
11.,'
; [fur TRAP.
;SELECT ERROR MESSAGE.
;STORE BAD SYMBOL.
; 1 ::;;::;;UE hE:;:;;:;:;AC'E.
;TRY SELECTION AGAIN.
;******************************************************
c
•
~
""I
PAGE 5
TDL lSO CP/M DISK ASSEMBLER VERSION 2.21
FORMAT - JADE DOUBLE D
FUNCTION CONTROLLERS
',',"
~I
;******************************************************
; FUNCTION 1 - FORMAT IN DOUBLE DENSITY
*
;******************************************************
017E
(lIBl
01::;:4
01 :::{/
01 ::::f4
01:~:D
01::::F
0192
o l';;'~1
Oi9::;::
019A
01.')[1
01(-'10
01.?,r:::
01A6
011=11:::
01AB
.'
.-:....;-
FUN. 1 :
'-''':'''
.... ' .J~_
·
:::!C:
01(.~F
=:::2 0404
C::3 019D
0182
01B!;:'
01 B::::
21 04A1.
CD 0:2(:1
(::~: 017E
OH'iC
('
04D2
0406
21 06::::B
CD O::::Af=l
DA 0141
:3EOO
:3~2 0404
CD 02E4·
[1(4 01lE
3EOI
"::"",:. o "HJ 4
CD 02EA
DA 017E
3A 0404
FE4C
C:A 01B2
:~:A
LDA
STA
LXI
CALL
·jC
MVI
STA
CALL·
.jC
MVI
STA
• REPT: CALL
..JC
LDA
CPI
.jZ
INR
STA
JMP
ID:
LXI
CALL
JMP
··
DD.FLG
F.FLAG
H,MSG.FD
SEL.DR
FUN.BG
A,TRI<.O
TRK.NO
FMT.SD
FUN • 1
A,TRK.l
TRI<. NO
FMT.DD
FUN. 1
TRK.NO
TRI<.71:..
.. 10
A
TRK.NO
•• REPT
H. IDS.DD
WRT. ID
FUN. 1
; LOAD DDENS FLAGS.
; STORE FORMAT FLAGS.
; FORMAT DRIVE MESSAGE.
; !:;;ELECT DRIVE LETTER.
; CARRY: RESELECT.
; TRACK o.
;SET TRACI< NUMBER.
; F()RMAT TRACK SDENS.
; ..JUMP ERROR DETECTED.
; TRACK 1 VALUE.
;SET TRACK NUMBER.
; FORMAT TRAC~< DDENS.
;.JUMP ERROR DETECTED ..
; LOAD TRACK NUMBER.
;WAS IT THE LAST TRK.
; AFTER LAST TRAC~<.
; INCREMENT TRACI< NO.
; STORE TRACK NUMBER.
; FORMAT NEXT TRACK.
;ID SECTOR: DDENS.
;WRITE ID !;:;ECTOR.
; ANOTHER DISK?
;******************************************************
~
FUNGTION 3 - FORMAT STANDARD 3740
*
;******************************************************
01BB
018D
01CO
Ole::::
::::EOO
0401:..
21 OI:..(::B
CD 03AA
Dt=i 0141
::::EOO
:;::2 0404CD 02E4
DA 01BEl
::::A 0404
FUN.3:
:=:2
01C6
01(:9
01CB
01CE
01Dl
01D4
01D'7
(llDo;;;
FE4C
CA 01BB
Ol[lC
01DD
OH:.O
::::C
.,,:..,,:.
'-' . :.. 0404
c==::: (llCE
·
MVI
STA
LXI
CALL
JC
MVI
STA
• REPT= CALL
.jC:
LDA
CPI
JZ
INR
STA
.jMP
A.O
F.FLAG
H,MSG.FD
SEL.DR
FUN.BG
A, TR.:~. 0
TRK.NO
FMT.SD
FUN.3
Tf:::K. NO
TRK.76
FUN. ::::
A
TRK.NO
• REPT
.
;3740 SDENS FLACiS.
; STORE FORMAT FLAGS.
; FORMAT DRIVE MESSAGE.
; SELECT DRIVE LETTER.
; CARRY: RESELECT.
; TRACK O.
; SET TRACK NUMBER.
; FORMAT TRACK SDENS.
;..JUMP ERROR DETECTED.
;LOAD TRACK NUMBER.
;WAS IT THE LAST TRK.
; AFTER LAST TRACK.
; INCREMENT TRACK NO.
; STORE TRACK NUMBER •
; FORMAT NEXT TRACK.
;******************************************************
c
TDL 180 CP/M DISK ASSEMBLER VERSION 2.21
FORI1,4'T -- .JADE DOUBLE D '
FUNCTION CONTROLLERS
;******************************************************
;
*
FUNCTION 2 ,- FCJRM{H IN !:HNGLE DEN::;;ITY
;******************************************************
01E3
01Et.
OlE')
(lIFe
01EF'
01F2
01F4
01F7
o 1F:;:"1
OlFD
CliFF
0202
020~j
020:;:;:
O:20A
0200
0210
0,21::::
0216
()::;~ 1 :::
021B
021,(:
021F
02~~:L:
...., ....,
,.:.,''1
04~:;2
•
FUN. 0'-,
.r:: -
=32 04,06
:.2 :l 06:;::B
C:D 03P,P,
1:rt4 0141
:3[:00
..:.•...:.
0404
CD 02£4
D{.\ 01E::::
••••1 ••:..
.Je
3£01
::;::2: 0404
CD 02E{':)
DA OlE::::
3E02
...., ....,
.':1 •.:: 0404
CD 02E4
DA OlE::::
::::r-i 0404
FE4C
CP, ():::2~::
. .kEPT:
.-'Z
INF<
!:n-A
::::-;:: 0404
():22~;
21 0421,
CD 02(:1
():;2~:::=:
C:~:
tv/V I
SH4
CP,U..,
.Je
!viVI
:3TA
C:ALL
.JC
LDA
CPI
:3(:
C::::: 020D
LDA
:::;TA
LXI
C:flLL
...Ie:
MVI
STA
CALL
. . HI:
01,E:~::
.-""If='
LXI
CALL
.J!"If'
:;::;[1. FLO
F. FLAG
H, M:::C, • FD
::::;EL. DR
FUN • BG
A, TRK. (I
TRI<. NO
FMT. :::;[1
....,
FUN • ..::.
f) , TRK. 1
n-=***********************
02C1
0:2C2
44
4D
0::::C:3
2E24
CD O:3F::;:
O:2C::i
WRT.
1[1:
MOV
MOV
MVI
CALL
B.H
C.L
L.BS.DMA
BIOS
;MOV HL TO BC.
;MOV HL TO BC.
;BI08 DMA VECTOR.
;SET TRANSFER ADDRESS.
;*******( SET TRACK TO ZERO >**************************
02(:::::
(lEO!)
02C:f."i
2E1E
C:D 03F::;:
0::2C:(:
MVI
MVI
CALL
TR.(. t)
L,BS.TRK
BIOS
C,
;TRACK 0 SET.
;BIOS TRACK VECTOR.
;SET TRACK NMBR.
;*******( SET SECTOR TO ID.SEC >***********************
02C:F
02D1
OE01
02D:3
CD 03F::::
2E21
MVI
MVI
CALL
C.ID.::;=EC
as. SEC
BIOS
L,
;ID SECTOR VALUE.
;BIOS SECTOR VECTOR.
;BIOS TRANSFER CALL.
;*******( PERFORM WRITE SECTOR >***********************
02D6
2E2A
O~:D::;:
C:[I ():3F"::::
MVI
CALL.
BIOS
02DB
B7
OR~~
A
02[1(:
C:::::
02[1D
21 O/':'FF
CD 0281
C9
RZ
LXI
C:ALL
RET
H,MSG.NC
MSG.OT
02EO
02E:;:
;BIOS WRITE VECTOR.
;BIOS TRANSFER CALL.
;S£T CONDITION CODES.
;RETURN USER GOOD.
;TRANSFER INCOMPLETE.
; ISSUE MESSAGE.
;**********************************************-*******
c
,I.'.,
.....
¥
TDL lSO CP/M DISK ASSEMBLER VERSION 2.21·
~ORMAT - JADE DOUB~E D
=ORMAT TRACK DRIVER LINKAGE
;**************~***************************************
*
; FORMAT TliACK DR I VER
;******************************************************
;*******( DENSITY ENTRIES >****************************
02£4
02[7
0:;::00
c:::: 02ED
02E{'~
21
21
OS~'OO
FMT.SD: .LXI
....IMP
FMT.DD: LXI
H, FT3740
ST.DMA
H, FT ....I4E:D
; LOAD IN..JECTION ADDR.
;GO SET DMA ADDR.
;LOAD IN..JECTION ADDR.
;*******( SET INJECTION MODULE ADDRESS >***************
::;;1 • DP1A:
MOV
MOV
02£:D
44
0:2££
02EF
4D
2E24
MVI
02F1
CD
CALL
O:;~:F8
B.H
C,L
L.BS.DMA
BIOS
;MOV HL TO BC.
;MOV HL TO BC.
;BIOS DMA VECTOR.
;SET TRANSFER ADDRESS.
;*******< SET TRACK >**********************************
02F4
02F7
O:2FA
3A 0404
4F
2E1E
CD 03FE:
LDA
MOV
MVI .
CALL
TRK.NO
C,A
L, BS. TRIo(
BIOS;
; LOAD TRACI< NMBR.
;PUT INTO·C REGISTER.
;BI0S TRACK VECTOR.
;S£T TRACK NMBR.
;*******< SET SECTOR TO FLAG >*************************
02FD
0:300
0301
0::::0:3
:3A 0406
4F
2E21
CD 03F8
LDA
MOV
MVI
CALL
F.FLAG
C,A
L, BS. SEC'
BIOS
;LOAD DCM FLAG.
;DCM FLAGS.
;BIOS SECTOR VECTOR.
;BIOS TRANSFER CALL.
;*******( PERFORM FORMAT TRACK >***********************
0:30t.
0:30:::
0:30B
2E-:3:3
1"1 VI
CD
CALL
ORA
RZ
LXI
CALL
RET
():3F'8
O:'::OC
B'7
CI""·
,c·
0:30[1
0::::10
0:31:3
21 06FF'
CD 0281
C9
L,BS.FMT
BIOS
A
H,MSG.NC
MSG.OT
; BIOS; WRITE VECTCJR.
;BIOS TRANSFER CALL.
;SET CONDITION CODE::;;.
; RETURN USER GOOD.
; TRANSFER r NCOI"lPLETE.
; ISSUE l'1ESSAGE.
;******************************************************
•
o
PAGE 11
TDL l80 CP/M DISK ASSEMBLER VERSION 2.21
CFORMAT - ,JADE DOUBLE D
··SYSTEM TRACKS TRANSFER SUBROUTINE
;******************************************************
; SYSTEM TRACKS TRANSFER FUNCTION - ENTRY POINT
*
;******************************************************
;*******( TRANSFER TRACK 0 >***************************
():314
0317
0:;::1:;::
0:31B
031D
O:31F
21 0407
.,
.0'-,,-,
.::. .
.oM'".',
.::...::.
():3FF
OEOO
2E1E
CD 03F8
TRNSFR: LXI
INX
SHLD
MVI
MVI
CALL
H.TKO.SL
H
SYS.WP
C.TRK.O
L.BS.TRK
BIOS
;ADDR OF SECTOR LIST.
;SKIP ID SECTOR.
;INIT WORK POINTER.
;CBS TRACK NUMBER.
;BIOS TRACK VECTOR.
;BIOS TRANSFER CALL.
;*******( SET SECTOR IN BIOS >*************************
()=:::2:2
()::::~~~i
0::::26
()::::2E:
2A 03FF
i.J.E
2E21
CD 03F8
•. TKOS: LHLD
MOV
MVI
CALL
SYS.WP
C.M
L.BS.SEC
BIOS
; LOAD SECTOR POINTER.
; SECTOR NMBR TO REG C.
;BIOS SETSEC VECTOR.
;BIOS TRANSFER CALL.
;*******( SET ADDRESS IN BIOS >************************
()32B
C'
t):32E
O~'::2F
0330
0:3:;::1
<)3=32
()~:~:4
c)3:35
()::::~:6
()33'7
033A
033B
(>-3::::(:
033E
2A O:;::FF
A7
7E
IF
~57
3EOO
1F
5F
21 OF80
19
44-
4D
2E24
CD ()~:F8
LHLD
ANA
MOV
RAR
MOV
MVI
RAR
MOV
LXI·
DAD
MOV
MOV
MVI
CALL
S;YS. WF'
A
A.M
D.A
A.O
E.A
H.TKO.LC
D
B.H
C.L
L.BS.DMA
BIOS
;LOAD SECTER POINTER.
; CLEAR CARRY BIT.
;GET SECTOR NUMBER.
"
; SECTOR NMBR I "'.
;HIGH LOAD OFFSET.
; ZERO A REGISTER.
; CARRY TO BIT 7.
;LOW LOAD OFFSET.
;TRK 0 LOAD CONSTANT.
;HL = SEC LOAD ADDR.
;HL TO BC HIGH ORDER.
;HL TO BC LOW ORDER.
;BIOS ADDR VECTOR.
;BIOS TRANSFER CALL.
;*******( SECTOR TRANSFER OPERATION >******************
0:::;:44
0:345
:3A 0401
6F
C:D 03F8
()::::Lf·:::
B7
0::::49
C"-'
...::,
O:~:41
03A:;::
LDA
I"IOV
CALL
ORA
.JNZ
RW.OPV
L.A
BI08
A
•• BLOW
;LOAD OPERATION VECTOR.
;TRANSFER TO REG L.
;BI08 TRANSFER CALL.
;SET CONDITION CODES.
;SOMETHING WRONG!
;*******(INCREMENT NEXT SECTOR >***********************
C
.
":'/
034C
0:::::4F
0:350
():3~i2
0355
0356
()::::51~
2A O:3FF
7E
FE16
CA 0::':!'5C
2::::
22 O:::;:FF
_•..,:s 0322
c'-'
LHLD
MOV
CPI
SYS.WP
A.M
016H
,..Il
• • TR.O
INX
SHLD
,..IMP
H
SYS.WP
•• TI<08
;LOAD SECTOR POINTER.
;LOAD SECTOR NUMBER.
;CHECK LAST STAGGERED.
;IF DONE. DO TRK 1 .
; INCREMENT POINTER.
;STORE IT AWAY.
;NEXT TRK 0 SECTOR.
.TDL Z80 CP/M DISK ASSEMBLER VERSION 2.21
FORMA~ - JADE DOUBLE D
SYSTEM TRACKS TRANSFER SUBROUTINE
;**~****(
035C
~21
1DOO
O:~:~5F
~22
O:3FF
():~:6:2
3E01
"::"') 040:5
OE01
0364
0367
·. TRKI
:
'_'.l..
():31~:":::"
~£iE
():~:"~,E{
C:D 03F::::
PAGE
TRANSFER TRACK 1
LX I
SHLD
MVI
::;;TA
MVI
MVI
CALL
.
H, TK1 LP
~=;Y:::; • WF'
A, TKl F:::;
SEC. NO
e, IRI<. 1
L, B:::;. TRK
BI(JS
.
1t) .
)~**************************
;TRK 1 ADDR IN TPA.
;INIT WORK POINTER.
;FIRST SECTOR NUMBER.
;SET CURRENT SECTOR.
; SET TF*********
03AA
03AD
O:3E:O
()::::E~::::
0386
0:3B::;:
0402
040:2
CD 02::;:1
C:D 02::::F
FEOD
CA 030E
~2::;:~
····Ir..
..::.1 ....
:;;;EL. DR: ::;HLD
. .REPT: LHLD
CALL
CALL
CPI
.JZ
M~a3. ~;V
MSG.SV
MSG.OT
CN::;. IN
CR
.EXIT
·
;SAVE MESSAGE ADDRESS.
; LOAD MESSAGE ADDRESS.
; ISSUE MESSAGE.
; GET DRIVE LETTER.
; CHECK FOR RESELECT.
, IF CR GOTO EXIT AREA •
.
;*******( SEE IF DRIVE LETTER GOOD >*******************
03BB
03BE
O::::C: 1
03C3
03C:6
():~:C:E;
("
03C:B
072D
0670
[1,::,41
D?"i 03D~;
FE04
DA 0::':£0
D620
STA
STA
SUI
.JC
CPI
.JC
SUI
.JC
SUI
dC:
";:"")
._".~
.-', "',
'':'''::.
0:::;: D!:i
0:3CD
D{~
0:3[10
0:302
D6.04
DA 0:3EO
DR.LTR
LTR.SE
.' A'"
.• ILLG
04H
•• NMBR
"A"'-"'A'"
•• ILLG
04H
•• NMBR
;DRIVE LETTER.
;ILLG DRV LTTR.
;GET NUMBER •
; ILLEGAL, REPEAT.
;DRIVE A THRU D?
;1300[1 NUMBER.
; CHEC~< LOWER CASE.
; ILLEGAL, REPEAT •
; LOWER A THRU [1'-;:0
; LEGAL. DRIVE.
;*******( EXIT TO RESELECT FUNCTION >******************
03D5
03D8
03DB
21 066C
CD ()~2:31
c::·
. 03AD
. . ILL.G=
~.
LXI
CALL
.JMF'
H,MSG.SE
MSG.OT
.REPT
·
., "'SELECT
ERROR"
ISSUE MESSAGE.
; REPEAT SELECTION •
;
;*******( EXIT TO RESELECT FUNCTION >******************
03[1£
:::::"1
O:3DF
; SET CAFmy •
; RETURN.
.. EXIT: STC:
RET
;*******( VALID DRIVE NUMBER >*************************
03£0
O:~:El
0:3£3
0:3£5
()::::E:;::
0:3EB
0:3E£
03Fl
Ci
O:3F3
O:3F6
03F7
4F
lE01
2E1B
CD O:::;:F8
21 0716
CD 0281
CD ()2:3F-FEOD
(::2 03AD
(47
r'o:)
-'
"
. . NMBR=
MOV
MVI
MVI
CALL.
LXI
C:ALL.
C:ALL
CPI
.JNZ
ANA
RET
C, A
E, LOG. VC
L, B!::;. DSI<
BIOS
H, 1"1:;:;13 • XX
MSC'.OT
CNS. IN
CR
. REPT
A
·
;DRIVE NMBR TO C.
;LOG ON VECTOR.
;BIOS SELCT DISK.
;BIOS TRANSFER CALL..
;~TYPE CR WHEN READY~
. ; ::;;END MESSAGE.
;GET CONSOLE C~AR.
;CHECK IF CR.
;IF NOT, TRY AGAIN.
; C::LEAR C:ARRY.
;RETURN CALLEH.
;******************************************************
...
TDL zao CP/M DISK ASSEMBLER VERSION 2.21
FORMAf - JADE DOUBLE 0
SMALL ROUTINES AND DATA AREAS
;*********************~********************************
*
; BIOS TRANSFER ROUTINE
;******************************************************
0:3F:3
O~:FB
:3A 0002
67
0:3FC
E9
BIOS:
LOA
MOV
PCHL
;G£T HIGH ADDRESS.
;S£T IT IN H REG.
; ..JUMP TO BIOS.
as.PAG
H.A
;******************************************************
*
; SOFTWARE TRAPS
;******************************************************
O::::FD
O:;;:FE
F'l
FF
RST.6:
R:::·r. 7:
RST
RST
; EX I T FORMAT.
;EXlr FORMAT.
6
7
;******************************************************
*
; WORKING VARIABLES
;******************************************************
O~:FF
0000
0401
0402
00
0000
0404
0405
0406
00
00
00
S;YS. WP: • WORD
. RW.OF'V: • BYTE
MSG.SV: • WORD
0
• BYTE
SEC. NO: • BYTE
F.FLAG: • BYTE
0
.
TRK.NO:
0
0
0
0
; ADDRESS POINTER.
; READ OR WRITE VECTOR.
; MESSAGE !:;AVE ;.""1DDRESS.
C
; TRACK NUMBER HOLD.
; SECTOR NUMBER HOLD.
; FORMAT FLAG (DCM) .
;**************~***************************************
; 3740 SECTOR TRANSLATION
*
;******************************************************
0407
040[1
041:3
0419
041F
010700131905 TKO.SL: • BYTE
OBj.11703090F
• BYTE
• BYTE
1502080E141A
060C1218040A
.BYTE
1016
• BYTE
01H.07H,ODH, 13H, 19H,05H
OBH,11H,17H,03H,09H,OFH
15H.02H.08H.OEH,14H,lAH
06H,OCH.12H,18H,04H,OAH
10H,16H
;******************************************************
o
PAGE 15
TDL Z80 CP/M DISK ASSEMBLER VERSION 2.21
FORMAT - JADE DOUBLE D
I DENT I TY SECTOR:::;
;******************************************************
; JADE SINGLE DENSITY - IDENTITY SECTOR
*
;******************************************************
; ******* < JADE IDENTIFICATION >************************
0421
4A61646~i2044
1m:;. SD: . ASCI I
"JADE DD SINGLE DENSITY FORMAT "
;*******( DISK PARAMETER BLOCK - CP/M 2.2 >************
044l
0441
044:::;:
0444
044~i
0446
044:;::
044A
044B
044C
044E
OOlA
0::::
07
00
I)OF2
I)O:::W
CO
00
0010
0002
('
.LOC
• WORD
.BYTE
.BYTE
. BYTE
. WORD
. WORD
· BYTE
. BYTE
• WORD
· weiRD
IDS.SD+20H
2t.
.-",
.,:.
'7
I)
242
(:.~:
11000000B
0
16
2
;LOCATE CP/M BLOCK.
;SECTORS PER TRACK .
;BLOCK SHIFT FACTOR .
;BLOCK MASK.
;NULL MASK.
; DISK S I ZE - 1.
;DIRECTORY MAXIMUM .
;ALLoe o.
;ALLOC 1 •
; CHECK :::; I ZE.
;TRACK OFFSET.
;*******( DCM DISK PARAMETERS >************************
~,"
04~il
0451
0452
04Al
01..,
02
. LOC
. BYTE
• BYTE
'. '
(l0000010B
;LOCATE DCM BLOCK .
;SECTOR STAGGER (TRNS).
; DI81************************
04A1
4A6164(:.5:2044 IDS. Dl): • ASCI I
" ..JADE DD DOUBLE DENSITY FORMAT
II
;*******C DISK PARAMETER BLOCK - CP/M 2.:2 >************
04C1
()4C: 1
04C3
04C4
00::'::0
0.4C:6
04
OF
01
OOEO
04C::::
04CA
:3 c)
04C~)
OO:;:W
04CC
04CE
00
0010
000:2
04D1
04D1
04[12
06
06
04(:H
0521
.LOC
.BYTE
DD.FL.G: .BYTE
.LOC
IDS. DD+::;::OH
00000110B
;LOCATE DCM BLOCK.
;SECTOR STAGGER (IRNS).
; 0 I :=;~*********************************
.IFIDN
IN
MVI
XRA
OUT
.EXIT]
[TYPEl[INDEX.MARKl. C
XP.DSH
; WAIT FOR DATA REQ.
;INDEX MARK.
A.OFCH
C
;INVERT (1791-01).
WD.DTA
;WRITE DATA PORT.
;TERMINATE MACRO
;*******( DATA ADDRESS MARK >**************************
.IFIDN
IN
MVI
XRA
OUT
.EXIT]
CTYPE]CDATA.MARKJ. C
;WAIT FOR DATA REQ.
XP.DSH
; DATA ADDR MARK.
A.OFBH
C
;INVERT (1791~01).
WD.DTA
;WRITE DATA PORT.
;TERMINATE MACRO
;*******( CRC >****************************************
.IFIDN
IN
MVI
XRA
OUT
.EXIT]
CTYPE][CRCJ. C
XP.DSH
A.OF7H
C
WD.DTA
;WAIT FOR DATA REQ.
;GENERATE CRC.
;INVERT (1791-01>.
;WRITE DATA PORT.
;TERMINATE MACRO
;*******( EXPLICIT BYTE VALUE )************************
.IFIDN
IN
MVI
XF;:A
OUT
.. EX IT]
[TYPEHBYTEJ. [
XP.DSH
;WAIT FOR DATA REGI.
A,VALU
;EXPLICIT VALUE.
;INVERT (1791-01).
C
WD.DTA
;WRITE DATA PORT.
;*******( TRACK NUMBER >*******************************
.IFIDN
IN
ETYPEJCTRAcK.NOJ. C
XP.DSH
;WAIT FOR REQUEST.
"
PAGE 22
TDL ZSO CP/M DISK ASSEMBLER VERSION 2.21
FORMAT - JADE DOUBLE D
I N.JECT I ON MODULE - MACRO DEF I NIT IONS
IN
OUT
.;EXITJ
.
. .1
;GET TRACK NMBR.
;WRITE DATA PORT.
WD.'tRK
WD.DTA
;*******< SECTOR NUMBER )******************************
~i·
.IFIDN
IN
MOV
XRA
OUT
INX
.EXIT
[TVPEJ [SECTOR. NOJ. C
XP.DSH
;WAIT FOR REQUEST.
A.M
;SET SECTOR NUMBR.
C
;INVERT (1791-01).
WD.DTA
;WRITE DATA PORT.
H
; INC SEC-NMBR PNTR.
;TERMINATE MACRO]
;*******( SIDE NUMBER >********************************
.IFIDN
IN
MVI
XRA
OUT
.EXIT
CTVPEJCSIDE.NOJ.
XP.DSH
A.O
C
WD.DTA
;*******( SECTOR SIZE CODE
.IFIDN
SEC.CD
• IFIDN
.IFIDN
.IFIDN
.IFIDN
.IFE .
• ERROR
IN
MVI
XRA
OUT
• EXIT
[
;WAIT FOR REQUEST.
; SET SIDE NUMBER.
;INVERT (1791-01).
;WRITE DATA PORT.
;TERMINATE MACROJ
)***************************~
CTVPE]CSECTOR.SIZEJ. C
;DECLARE BLANK •
CVALUJCI28J.
[SEC.CD = OOOHJ
CVALUJC256J.
[SEC.CD = 001HJ
CVALUJC512J.
[SEC.CD = 002HJ
eVALLlJ'[ 1024J.
[SEC. CD = 003HJ
(SEC. CD-OFFH) • [
~rNVALID SECTOR SIZE~J
XP. [ISH
; WAIT FOR DATAREQ.
A.SEC.CD
;LOAD SIZE CODE.
C
;INVERT (1791-01).
WD. DTA
; WRITE DATA PORT •
; TERMINATE MACROJ
= OFFH
;*******< ILLEGAL EXPANSION )**************************
• ERROR
~ILLEGAL
EXPANSION~J
;******************************************************
o
..
c
0::::00
0::::07
464F!:524D4154
0808
21 17B5
080D
0(:,28
0::::1.::::
0'-:::.06
013:;::0
() :::::2 {4
0'-:;;. 1.?~
():::::3~5
06U.::.
0:::::40
0:347
DB::::O
DEl::::O
O:;::LI·D
DB:::: 0
Of:~:i4
013:30
O::::~5B
rm::::o
O::::.:::.::~
Df:3:30
0:::::6')
060£3
0::::74
0606
O:::/F
I.)B::::O
06:30
DB::::!)
0:3:36
0::::91
0618
1D
0:::::1~7
O:=:B~:i
O::;::BFO::::C:9
C:
PAGE 2:'::
TDL L80 CP/M DISK ASSEMBLER VERSION 2.21
FORMAT - JADE DOUBLE D
INJECTION MODULE FT3740
21
0000
FORMAT FT::::740
DENSITY SINGLE
SECTOR:::: SS:~:7 40, 2(:,
BG3740:IBLOCK
'L_ BLOCK
WRITE
\ BLOCK
RP::::7 40 :.1 BLOCK
WRITE
WRITE
WRITE
WRITE
WRITE
WRITE
BLOCK
'.f BLOCK
WRITE
1 BLOCK
WRITE
'6 BLOCK
REPEAT
ENDING
010203040506 8:33740: .BYTE
.8YTE
1~5161.71::::19U~
.BYTE
OBOCODOEOF10
v
40,ONES
1.:.., ZEROS
INDEX. MARK
21.:.., ONES
(:., ZERO::::
ID.MARK
TRACK. NO
SIDE.NO
SECTOR. NO
SECTOR.SIZE,128
eRC
11 , CINE::;
(:., ZEROS
DATA. MARK
128,OE5H
eRC
27, ONE::::
RP3740
ONE:3
1.,
2,
::=:,
4,
5,
6,
7,
::::,
.~J,
1e)
11 , 12, 13, 14, 15, 1(:., 1 7, 18, 19 , 20
..
PAGE :24
TDL l80 CP/M DISK ASSEMBLER VERSION 2.21
FORMAT - JADE DOUBLE D
INJECTION MODULE FTJ48D
0900
0907
090:;::
44
21 17AE
090[1
0918
0650
060(:
0':)2:3
060:3
092E
DB::::O
O'::;'3B
0';'/42
0';/49
09~:iO
0962
09/'::'D
464F~i24D4154
DB::::O
[lB::::O
1)[,i:30
DD:;::O
DB:30
O{~, 16
0,::,0(:
0603
DB::::O
FORMAT FT ...I48D
DENSITY DOUBLE
SECTORS S8J48D,48
B(;...J48[1: \ BLOCK
RP ...I48[1: 'l-BLOCK
~ BLOCK
WRITE
WRITE
WRITE
WRITE
WRITE
WRITE
-.x BLOO:::
;:; BUJCK
\r. BLOCK
WRITE
BLOCK
WRrI'E
'Ie BL.OCK
REPEAT
091F
0680
0991
DBSO
0616
0';'9C
10
09AO
21 0000
09AE
0105090D1115 SS...J48D: .BYTE
191[12125292[1
.BYTE
02060AOE 121 /:,
.BYTE
:l A1 E22262A2E
.BYTE
03010BOF 1 :::: 17
.BYTE
1 B1F2::::272B2F
.BYTE
04080CI01418
.BYTE
1C2024282C::::O
.BYTE
o 9:;::: A
0984
O'::iBI!4
09CO
09[:6
09(:[:
09D2
0'::;'[1:;::
()
'\ ENDING
80, 04EH
~~fB
,~, 2 ~ Z~ROS "-. \
'.:., uF5H
, ,
I D. MAR.<
,.~ E;': \
TRACK. NO
L
::;;1 [IE. NO
SECTOR. NO
8ECTOR.8IZE,128
eRe
22,04EH
12, ZERCIS
::::,OF5H
DATA. MARI<
12::::,OE5H
CRe
22,04EH
RP.J48D
ONES
1, 5, 9,1:3,17,21
".'."1,
i.('
,If
2 , 6, 10, 1 4, 18, 22
26,30,34,38,42,46
:3, 'l, 11 , 15, 19, 23
4, ::::, 1:2, 1e., 20.24
.END
o
I
C
...
TDL Z::::c) CP/M DIS.::: ASSEMBLER VERSION 2.21
FORMAT - .JADE DOUBLE D
+++++ SYMB()L TABLE +++++
BDOS
BIC)!::;
B8.PAG
BS.WRS
CNS.WR
DR.LTR
OOO!:i
(l::::F::::
0002
002A
0002
0'72D
F,..3740 0800
FUN.3 01BB
FUN.BO 0141
HXW. err 02{~!'.:i
01:3::::
INIT
M:;:;G. SG O~:i::;:: 1
M::;:G.OT 02:;::l.
M~=;C;. R~=;
1'1::;:;13. W!;:; 0,::'[13
(lOFF
ONE::::
I'1SG. XX
REBOOT
RST.7
SEC.NO
:3S.J48D
TKO.LC
TKO.SL
TK1.LS
TFU:::.2
WD.DTA
ZEROS
R:::;T.6
:::;EC. C:D
S:::;::::740
TKO.FS
TKO.NS
TK1.L.P
TRI<. :L
TRNSFR
XP. D:;::H
(~
BEGIN
BS.DMA
B!;:;. RDS
eNS. IN
CNTL.C
FMT.DD
FT.J48D
FUN.4
F.FLAG
IDS.DD
LF
MSG.FD
03FD
0000
():=:B~i
0001
00lA
IDOO
0001
031.4
00:;::0
0100
0024
0027
028F
000:;::
02EA
0900
0228
0406
04Al
OOOA
068B
06B7
(>'716
0000
0:3FE
0405
09AE
OF80
0407
0030
0002
000"7
0000
PAGE 25
BG3740
BS.DSK
BS.SEC
CNS.OT
CR
FMT.EA
FUN. 1
FUN.5
HXB.OT
IDS.SD
LOG.VC
MSG.FL
MSG.SE
NMBR
RP::::740
RW.OPV
SEC.SZ
ST.DMA
TKO.LP
TKO. :::;Z
TF'A
TRI<. '76
WD.TRK
080[1
001B
0021
029C
OOOD
1700
01-'E
0259
02AA
0421
0001
056C
0~.6C
0016
0835
0401
00:;::0
02ED
1000
ODOO
0100
004C
0005
BG....I480
BS.FMT
BS.TRK
CNS.RD
DD.FLG
FMT.S[I
FUN.2
FUN.6
HXN.OT
ID.SEC
LTR.SE
MSG.NC
MSG.SV
OFFSET
RP ....I48[I
SD.FLG
SEL.DR
SYS.WP
TKO.LS
TK1.FS
TRK.O
TRK.NO
WRT. ID
0900
003:3
001E
0001
04[12
02E4
01E3
026[1
02B3
0001
0670
06FF
0402
OEOO
0918
0452
O:;:AA
03FF
001A
0001
0000
0404
02Cl
···'(:B:
()
B)-DDT
DDT VERS 1.4
--oF: 1 00, 1000, 00
_. I F()RI'1AT • HE X
The following is the hex code generated
····R
NEXT
O'~JDE
by the FORMAT INJECTION MODULES.
PC
0000
~D800,8FF
/
()8(H) 4<~. 4F-- 52 4[1 41 54 21- 5~: /21- B5 17 1 E 1 A OCI 28 riB FCrRMAT ~ S ! ••••• ( •
0810 :::::0 ::::E
OS20 07 10
0::::::::0 (-)9 D:3
0840 DB S~
0850 00 A9
0860 03 07
0870 0:3 07
0880 E~ 3£
0890 F7 DB
08AO 07 10
0880 07 23
08CO OC 00
0800 00 00
08£0 00 00
08FO DD 00
····[190<), 9FF
0900 46 4F
0910 80 3E
0920 07 10
0930 3£ FE
0940 D:::: 07
0950 DB 80
0960 10 F7
0970 80 3E
0980 80 DB
0990 07 06
09AO 21 00
0980 09 00
09CO lA IE
09DO 2B 2F
09EO 0000
09FO 00 00
FF A9
F7 DB
07 10
3E FE
D3 07
DB SO
10 F7
FB A9
80 3E
F7 10
C3 AA
OE OF
00'00
00 00
00 00
D3
SO
F7
A9
DB
3E
06
03
F7
C2
17
10
00
00
00
07 10
BE FC
Oe: 06
D3 07
80 7E
F7 A9
06 DB
07 06
A9 D3
35 17
0102
11 12
00 00
00 00
00 00
Ff
A9
DB
DB
A9
D3
SO
SO
07
21
03
13
00
00
00
06
D3
SO
80
D3
07
3E
DB
06
00
04
14
00
00
00
DB :=:0 :3E 00 A9
06 lA DB SO 3E
00 (':1':) D:::: 07 10
05 D3 07 DB SO
072~ DB 80 3E 00
06 OB DB SO 3£ FF
00 A9 03 07 10 F7
80 3E E5 A9 03 07
18 DB SO 3E FF A9
00 DB SO 3E FF A9
05 06 07 08 09 OA
15 16 17 IS 19 lA
00 00 00 00 00 00
00 00 00 00 00 00
00 00 00 00· 00 00
D::::
FF
F7
3£
A9
A9
DB
10
03
03
OB
00
00
00
00
52
4E
F7
A9
DB
3E
06
F5
80
16
00
11
22
04
00
00
41
03
03
07
7£
A9
DB
D3
£5
80
80
54
07
DB
DB
44
F7
3E
DB
07
06
00
F7
07
A9
A9
25
07
18
00
00
21
06
F5
05
23
16
A9
DB
16
03
D3
29
OB
lC
00
00
AE
OC
A9
03
DB
DB
D3
80
F7
07
07
2D
OF
20
00
00
DB
03
SO
A9
07
07
DB
06
D3
17
05
16
27
00
00
00
40
A9
06
03
::;:=<)
F7
OC
A9
3E
DB
DB
15
26
08
00
00
j9
2A
OC
00
00
21
10
SO
SO
PI9 £I::::
D3
80
07
A9
3E
3E
ID
2E
10
00
00
07
3E
10
D3
4E
FF
21
03
14
00
00
06
07
3E
DB
17
OB
03
07
80
SO
07
3E
DB
10
23
02
13
24
00
00
IE
80
07
DB
:3£
3E
10
FB
80
F7
C3
06
17
28
00
00
30
3E
10
SO
00
4E
F7
A9
3E
10
A3
OA
IB
2C
00
00
06
00
F7
3E
A9
A9
06
03
F7
C2
17
OE
IF
30
00
00
50
A9
DB
00
D:3
D3
03
07
A9
18
01
12
23
00
00
00
• >•••••••.•• ).•••
••••• >..•..•.• >.
••••••••• >••••.•
•• >.•.......•.• >
•••.•• A • • • # .• >..
•••• >•..•..•. >..
••.••.•• >••••..•
.> ........ >•.•.•
•.• >•••••••• >•••
••••• 5. ! •••• >...
.# •••••••••••.••
••••••••••••••••
•••••.••••••••••
•••••••••.••••••
••••••••••••••••
FORMAT!D! .•• O.P.
.>N ••••••.•• > •••
••••••• >•••...•.
>............ >..
••••.....••• # •• ::=- ••••
•• >........ >N .••
•••••• ~ •••••••••
.::=- ••••••••
>•••••
••• >........ >•••
• • • • a-:}N •••••••••
~
•••• )' •••• # •••••
•••••• !%)- ••••••
• • ug<* ••••••••• # ..,
+/ . . . . . . .
$,(,C) ••
()
12:43:41
CROMEMCO ZB0 Macro Assembler verSiOl'l 03.07
CONTRDLLER MODULE {DeM)
DISK
0002
LIST
NOCOND
13003
0Ql04
13005
0{:)13&
The Disk COfl'croller Module COfltairls the firmware fo;' the Jade
Double D Disk cOl'ltrQller lioar-d.
000.7
0008
000'3
0010
0011
0012
01!:13
13014
@0.15
0015
0017
13018
01019
0.020
0021
0022
The disk controller' module- (DCMi )"Iesices irlte'rnc;~ to the Sade Ih:nJo:e D
Disk CO'(Jt-r"oller- board a 'This ;,w"o~ram prCN i de:.'. a facility to re'aj/rir:'~e
diskette sector-s & forrflat diskette tr'aCK.5 \in sir191e & Double dem;:\'r,yl.
This module sets the Oiil"'illlletei's TOt' each drive Gurir,g the '\_JG-D~;"
operatioY!, The FORMAT propt'am (M'; ir; this modole) I'lrites ;,It, identification sedor- (010) ~-ihich pt-ovides the needed irifm'l~"rti.)rl, If this
ideritity sector'is riot preser~t (in tt12 diskett.e" it '.i,s;, a5;lJrnE;;~ ~to be a
star-Icard 8" IBM 3740 format. This pro~I'i!m cOfrtairl>:;. a I) ~)GrC'i t·
b)(lc(~
which shC
iSH HOS) eMD
0415
LD
0416
0076
0078
00711
13079
007£
£507
16130
SF
2183130
19
007F 6E
0080 2600
0082 E9
0417
0418
0419
0420
0421
0422
0423
0424
0425
0426
0427
0428
AND
LD
LD
LD
MASK.
ADD
HLlDE
LD
LD
L, {HU
JO
(HU
D!0
ElA
HLlCMDT
;L!MIT OPTIONS
;SET UP OFFSET
iSn TABLE PTR
;6£T ADDRESS
H, 0
iSOTO CUMMAND
COMMAND TABLE
042'3
(0083)
0083 Bl
0084 £5
0085 EA
-
0086
BB
00B7 42
108B 42
00BS 42
00BA 4B
(0007}
008B CD2B01
00BE C0
0430 eMDT:
0431
0432
0433
0434
Eoo
$
DB
LOON
READ
WRIT
FORM
ADDR
SPAR
SPAR
IDLE
DB
DB
DB
0435
DB
0436
DB
0437
DB
0438
DB
0439 MASK: Eoo
7
0440
0441
0442 ;---------------------------0443
0444
FORMAT TRACK COMMAND
0445
0446 ;---------------------------0447 FORM: CALL
SELECT
0448
RET
NZ
i COMMh"ND TABLE
jLO!H1N DRIVE
jREAD SECTOR
;WRITE SECTOR
;fORMAT TRACK
i READ ADDRESS
jSllARES
;BACKGiIDUND
jCOMMAND MASK (CHANGE IF
#
CMDS INCREASED)
0449
00BF 3A7303
0092 DD7703
0095 CDBC01
00'38 FD21AB00
009C 3EF0
(
0450
0451
0452
0453
0454
0455
0456
0457
A,iCBSEC)
m+DVFLS),H
SEEK
LD
IY!NMIWT
;SET RETURN AODR
LD
XOR
A, DCWRT
;OUTPUT WRITE TRACK
009E A9
009F D304
00Al E3
045B
OUT
WDCMD, A
0459
{sPl,HL
00A2 E3
0460
00A3 E3
0461
0462
EX
EX
EX
EX
0463
JI)
FMTPS
00A4 E3
00A5 C30B07
JGEr FORMAT FLAGS
jRESET DRIVE FLAGS
LD
LD
CALL
C
(SIl) , HL
(SP),HL
(SP},Hl
;WAIT FOR 1791
COM~AND
TO 1791
CROMEMCO Z80 Macro Assembler version 03.07
DISK. CONTROLLER MODULE (nC~)
(
12:43:41
MAIN FIRMWARE
0464
00AB E&E4
00AA 327703
00AD 227A03
00B0 C'3
0455 NMIWT~ AND
DMFER
iBn ANY ERRORS
046&
:"'D
iCBSTSi,H
0467
;DISPLAY 'TRAI~ BYTES
0468
LD
RET
0469
0470
0471
0472 .--------------------------------------------------------------------0473
0474 i DRIVE LOG-ON COMMAND READS THE mENTITY SECTOR FRDi~ THE
0475 I DISKETTE AND MAKES THE NEEDED ENTRYS INTO THE DRIVE TABLE.
0476 i THE SECTUR DATA IS ALSO LEFT IN THE SECTDR BUFFER FUR BIOS
00Bl [D2B01
00B4 Cill
00B5 AF
00B6 327203
00B9 3C
00BA 327303
(
00BD CDBe01
00C0 218003
00C3 1E01
00e5
CD7002
0477 • TO FINISH THE LOG-ON OPERATION.
0478
047'3 ;-------------------------------------------------------------------SELECT
0480 LeON: CALL.
RET
NZ
0481
0482
0483
XOR
LD
0484
04B5
04136
INC
LD
CALL
0487
048B
0489
0490
0491
0492
P.
(CBTRK) I H
;SET TRACK=0
tl
n
;SET SECTOR =1
{CBSECl1H
SEEK
XBUF
LD
LD
CALL
RDSEC
DEjJADEID
; READ In SECTOR
~W:B
00[;8 114403
0494
LD
00CB 218003
00CE 0608
0495
LD
0496
LD
B!mSZE
;5£T ID LENGTH
LD
CP
A, WE}
;IF ID NOT=JADE THEN 3740
JR
NZ,I37 40
INC
INC
DJNZ
Hi
C~~JI
,IF NIlT DONE THEN REPEAT
LD
LD
RET
A, \ IDFLG)
;SET SIDES &DENSITIES
IDLBL
iSH STRING PTR
; SET SECTOR BUFFER PTq TO COMPARE
'0497
OOD0 1A
00D1 BE
00D2 200B
0498
0499
0500
0501
00D4 23
~502
ti0D5 13
00D6 10FB
0503
CKJI~
0504
(!-Ill
;ELSE INC OTRS
DE
0505
00D8 3AB103
00D9 DD7703
00DE C9
0506
0507
0508
0509
0510
ASSUME 3740 FORMAT
0511
0512 13740:
(
OODF 31::00
ID0El 01)7703
I1'.0E4 C9
0513
u:;
AIIDFLD
10514
0515
LD
RET
(LhDVFLGl : A
051S
0517
iSIDE
,~
DENSITIES FUiGS=0
Page 0007
12:43:41
CROMEMCO Z80 Macr,) Assembler versiol'l 03.07
(
DISK CONTROLLER MODULE
MAIN FIRMWARE
Page 0008
(DeM}
0518 ;---------------------------0519
0520
00E5 3EFF
00E7 97
0@EB 1801
0521
0522
0523
READ SECTOR
CO~~AND
._--------------------------;
READ:
0524
0525
LD
(\
:-':f -1;
DR
jR
H
1
OPCDNT
f
lFLAG := lEAD
;~526
0527
0528 ;---------------------------0529
0530
0531
WRITE SECTOR
C~MAi\'D
0532 i -------------------------.--
@0EA AF
0533:
i\0EB 0B
0534 QPCDNT: EX
i~RIT:
XGR
A
;FLAG := WRIiE
~F1iAF'
;SAVE
SELEG~
;SELECT D;iIVE
i SEEK TR~\C}(
Q~
iN ALT REGS
0535
00EC CD2B01
0i3E:= [;SBC@l
00F2 e0
~536
CALL
0537
0538
CA~L
Z!SEEK
RET
NI
~
HL,XBUF
A! tSBSEC)
0539
~J/)F3
0~FE<
(
218003
3P7303
00)=3 .:r'
.Jr
NFA DD7E03
00FD E6c\[j
0\1JFT C(.l71102
054(11
0541
0542
0543
0544
0545
0545
LD
LD
E,P
iIX + DVFLG}
1i00\3000B
t-1 1
;IF SECTDR SIZE:::!: 12.& THEN SKIP
Z,RWSECP
r~547
@:02 CDE902
OGBUFR
~:~·.05
NZ
i\?"
1-o1\t'.'
::G10E, 08
'~::07
i"tZ·
:...r'(:
0550
0551
AF~.AFS
C·5'52
·\2
0553
0108 57
0554
e109 08
0555
iLl10!), 210~04
01Q;D 3A0005
0110 51=
0557
0558
0111 C37702
0559
~560
LD
EX
LD
D,A
:"\""''f
f"il~
Mr~ h,t-
i-tLlSBUFR
p.~.
{SSECT)
Er1~'
Sf]
RWSECT
;8fT JO OMvSICAL SECTDR BUFFER
BLOCKI~G
D}'S~~, CDI~-TROL~.E,R ~;ODULE
c
COCr:;
SUBROUTINES
0557 ; f********fHHiHh\'fHfii·HHHt "HHHH
0558
r114 EJ56
t.'l1u
C
0E0@
DB0\~
0570
0571
LD
IN
c~ ~1
@1 j~8
~11Q
t601
f~572
H"m
BSUSID
fH
of
H~BLSTS
0513
Ti
NZ~STCD
10574
DEC
C
13:;75: STOP:
LD
LX~DTDED
0576
XDR
';1
03.24 320005
0577
":.a.u
n
{BSECT)~A
~fl'i
0578
LD
(S\iDR~))- ~
e:l1L 200:1
011E i3D
01JF [}D2i500.3
r7l~,
'i
iJ!.~J..1",.~
"Y1
'l:'.J;;o...r
~F
320305
0i..r.l..r
')1' C9
;'ELSE SE'T UP INVERT ~~YS!{
~SE7 DR:VE TAre:: PTR
;BUJCKED BUFFER := E~pn
t\
H
057'3
0580
0SS1
0582
05B3
058~
; *****Hf.fH****H*-iHHH·"Hdf*H***H**Hit'+*H*1r**·:H****t·*~H H'*:HHi-HH,
THIS SUBROUTINE IS
FOR SELECTING THE
REQUESTED DRIVE
@586
STATE IS TESTED AND IF NEEDED, THEY ARE TUR\;::D
05B7
f
RE5PGNS~K£
058~,
0588
~.
CD~j~1~;h;D
BEFORE DRIVE
Q:~,
EXIT - IX:: NEW DRIVE TABLE
/0.: ERR
~:2D
1:520
0589
0590 ;************HHHH******H***'H***H******~******H****H**H****'~
0591 SELECT~ IN
A,BLSTS
lSEr BG?\RD LEVEL STATUS
05
AND 9
BSMOF2 ; IF MOTDR ON THEN CHECK DRIVE
012F
2Bw5
05~3
012:8 DB00
JR
z~ Cf~DV
IN
P.l
0594
ti131
DB4~
01.33 110100
@136
,"C
1.<1
0137 DB40
0139 3A0305
013C Fb~4
0131: D300
ISSUE
START
0595
0596
!D597
LjJ
XPMH
DEITMMTD
FIST
B
0598
0599 CKDV:
0600
IN
A,XllMTX
iEXTEND MOTOR TIME
;INSURt 179X INTRQ ENABLED FOR LPTER
;CMDS
,
ft
0601.
LD
P., (SVDRV)
0602
DR
0503
OUT
BenSE
BLCTL1A
~ELSE
~OTDR
0504
0140 3A7103
0605
LD
~143
DD9600
0606
SUB
HI (CBDRV)
HX+DVNBRl
0145
1"0
RET
I..
LD
CALL
E1DCHDU
014C 3A0305
0f:/07
060B
0609
0610
0611
0612
tD
014F E6FB
0613
AND
A, iSVDRVl
[NUT BeDSE]
0151 D30@
0614
0615
OUT
BLCTLIA
0153 3A7103
0&15
'1"1
L.,U
Al (CBDfM
wU
0147 1£10
0149 CD5702
(
;IF THIS HRIVE :: DLD DRIVE THEN
,
i ELSE UNUJAD HEAD
EXHEAD
iDESELECT CURRENT
Qt\
CROMEMCO 280 t~acro Assembler versiol'"1 03.07
DJ51{ CONTROLLER MODULE melll}
SUBROUTINES
0156
0:i58
015A
015C
015E
E603
D300
F604
D300
320305
0161 E603
0163 nD214C03
0167 110500
015H 3D
01bB FA7201
016£ DD19
0171li lBFB
0617
0&18
061'3
0520
0621
0622
0623
0624
0625
052&
0627 NEXT:
0628
0629
0630
0631
AND
OUT
BCDSN
OR
BeDSE
OUT
LD
BLeiLfA
AND
BCDSN
tD
LD
IX: DVTK
12:'43:41
BLCTLIH
(SVDRVI,A
DE! DVDES
DEC
;SELECT DRIVE TABLE rOR DRIVE
;DRIVE TABLE ARRAY SIZE
; IF DRIVE::: 0i THEN EXIT WITH POINTER
jp
\I'i,SLED
ADD
JR
NEXT
H,DE
SE~
;ELSE POINT TO NEXT ARRAY &REPEAT
0632
0172 CD6302
0i75 E5tle
0177 327703
017A C'3
0533 SLED:
0634
0635
0636
0637
0&38
0&39
CALL
AND
EXSTS
LD
{CBSTS},H
;SH FLAGS PER DRIVE READY
D~mNR
RET
0640 :HHHH**H**H***H*·!!:HHHH**HHH*****fHHH*"****HH********
0641
0642
HOMED SUBROUTINE STEPS THE DI5i~ DRIVE HEAD OUTWARD UN7IL
0643 l TRACK 0 FLAB IS TRUE OR 255 STEPS HAVE BEEN ISSUED
0544
EXIT - A= 0:
-1: TRK 0 NOT FDUND
0645
0646
j**HHHit**f*****H**H**HHHHH*H*****H**HHH***H**********
0647 HDMED:
CALL
EXSTS
JR
L;HOMEl
017B CD6302
0648
017E E&04
0649
0180 2B17
0650
0651
0182 2E0A
0184 3A0305
0187 F620
L:10
H,. (SVDRV)
01@ DB08
018D 115000
0552
LD
0653
LD
0654
DR
0655
OUT
0656
0557 RECALl: IN
0658
LD
13190 CF
0559
RST
&
DEC
L
0189
D300
~IF
NOT IRK 0 THEN NO
REC~~
iE-SE STEP !N BEYOND iRK ILl
;SELECT ! IN'
BCDAS
BLCTLIH
AlXPSTP
DE, TMSTPC
0660
0191 2D
0661
0192 2@F7
0662
0663
@664
LD
0665
OUT
0666 HOMEl:
0667
LD
0668
.!j! i gf,
3A0305
0197 D300
0199 2EFF
NZ,RECAU
Aj (SVDRV)
.~RESTORE DIRECTIDf~
BLCTLIA
L, 255D
;SFT MAX COUNT
~ IF
019B CDE.302
0669 STEP:
CALL
EXSTS
01'3£ E604
0670
AND
DMTK0
DN TRACK 0 THEN EXIT
(
Page 00t1
CROMEMCD Z80 Macr'o Assembler versiOTI 03.07
DI SK CONTROLLER MODULE (DCi'll
SUBROUTINES
01A0 200B
JR
0671
0b72
01A2 2D
2EH3
0673
0674·
0675
DEC
L
TO
l,ERQR
€ilA5 DB08
0676
0.677
IN
~Hl2
01A7 115000
01AA CF
iltAB lBEE
"n
'illAD 1150'00
CF
;ISSUE STEP PULSE
067B
LD
DE, TMSTPC
13679
RST
05B0
068i
JR
B
STEP
'0682
0lB~
; IF STEPS = 255 "}lEN ERRDR
DRIVE IS RESlORED
06B3
0584 EXIT:
0685
0686
RST
~1687
LD
01]31 3Eil0
01B3 DD77Ili!
0698
01,36 A7
0690
;sn DELAY
DE, TWlLS
;WAIT HBIT AFTER LAST STEP
CIhDVTRK) 1 P
;SET COI~PLE .tE FUi8
f SET TRAer: VALUE
06B9
RETURN F"L:AES
RET
0iB7 CSi
13693
THHCr~
f3 NOT FOUND
0694
f
01BS
""'.,....,..~
j:trr
0695
EHOR~
&IlEA A7
01BB
f'I'O'
I...
LD
H1 01=FH
AND
A
;SET FAIUKE FLAG
RET
0597
069B
0699
0700
0701
071~2
0703
T~~AC!{ SEEK SUBRDUTl:j\j:=
EXiT - DENSITY ,~~ ?RE-D:JXP
e7iJ;t
IF=
0707 SEEK:
CALL
EXSTS
0708
AND
DMHDL
01C1 2009
0709
....'':1
11\
NZ~HLDD
)'n
EIDCHDL
EXHEAD
01CB 115E01
01[B CF
S:T
0705 ;**************f.f.**************************f.f.***f.
01BC CD6302
01BF £620
01G3 lE13
01C5 CD5702
CDNTRn'~S
NZ= ERRCR
0710
0711
~ii
~7i2
CALL
0713
0714
:0715
LD
f IF HH\D ALREADY LQADED THE BYPASS
;ELSE LOAD HEAD
DE\TMHLD
RST
a
07tl:,
01CC 3A7203
G717 HLDlJ:
tn
t;...liJ
H, lCBTRIU
01CF DD%01
0718
0719
SUB
(IX+DVTR:{)
JR
NZ~DSET
0721
LD
R 0722
0723
jp
A! IIX+DVCTU
EXITS
0102 2006
«
; IF CURRENT TRAC\.(=REQUESTED TRACX
0720
!lI1D1t DD7E04
01D7 C34402
0724
;ELSE GET PRElJlDUS CT:'S & R::TlJ:iN
SET DIRECTION &STEP COUNT
THE~~
EXIT
(
CROMEMCO ZB0 Macro Assembler versioYl 03.07
DISK CONTROLLER MODULE (OeM)
SUBROUTINES
12:43:41
0725
01DA F5
01DB 110A00
010£ CF
0iDF Fl
01E0 380A
01£2
01E3
01E6
01E8
01EA
5F
300305
FG20
D300
180£1
01EC ED44
01EE FA5102
6F
3A13305
01F5 D300
01Fl
01F2
01F7 DB08
01FS 1151300
01FC CF
(
01FD 2D
01F£ 201=7
0200 115000
0203 CF
0204 1EC0
0206 3A7203
0209 FE01
020B 3830
020D 280A
0201= FE1A
0211 3810
0213 FE34
0215 3814
0217 lSlC
(
0726 DBEi:
0727
0728
0729
PUSH
fir
LD
DE! TMSAw
RST
8
0730
0731
~tOP
AF
C!SOUT
13732
0733 SIN:
0734
0735
13736
JR
LD
LD
OR
OUT
JR
;DELAY FOR STEP AFTER WRITE
iCARRY=STEP OUT
_,I:D
I
A, iSVDRVl
BCDAS
BLCTL,A
STEPS
13737
13738
0739 SOUT: NEG
0740
JP
M,HDME
0741
0742
LD
L,A
A, (SVDRVl
0743
LD
0744
OUT
BLCTL,A
0745
0746 STEPS: IN
A$XPSTP
13747
LD
DE,TMSTPC
0748
RST
8
13749
0750
DEC
l
0751
JR
NZ,STEPS
0752
0753
LD
DE,TMALS
0754
RST
B
0755
0756
TRACX SECTION DISTRIBUTE
0757
0758
LD
E, BeSDS + BCPCL
075'3
0760
LD
AI (CBTRlO
e761
CIl
1
0762
JR
C,CTLS
0763
0764
JR
Z,TRKI
0765
0766
Cll
26D
0767
JR
C,OUTS
0768
ep
0769
52D
0170
JR
C,MInS
0171
0172
JR
!NSD
0773
TRACK 1
0174
;COMPLEMENT OFFSET
jIS&JE STEP PULSE
j IF
STEPS-l NOT ill THEN STEP AGAIN
jELSE EXTEND LAST PULSE
lUSE SD, PRECOMP LOW AS DEFAULTS
;IF TRACK 0 THEN USE DEFAULTS
JELSE IF TRACK 1 THEN GOTC TRK!
jELSE IF { TRACK 26 THEN 6OTO OUTS
;ELSE IF ( TRACK 52 THEN GOTO fllIDS
0775
0219 DDCB034E
021D 281E
0176 TRK1:
0717
0778
BIT
JR
DFT1D, (IX + DVFLGl
Z,CTLS
;IF SD THEN USE DEFAULTS
Page 01312
(
CROMEMCO Z80 ~acro Assembler version 03.07
DISK CONTROLLER MODULE (oCM)
SUBROUTINES
021F iEOO
0179 TlDD:
0221 iSlA
0780
0781
0782
LD
JR
12:43~41
E, BeDDS + BePCL
CTLS
Page 0013
JUSE DD, LOW COMP
OUTSIDE TRACKS
0783
0223 DDCB0356
0227 2814
0229 18F4
DFDTD, (IX + DVFLG)
0784 OUTS: BIT
;IF SD THEN USE DEFAULTS
0785
JR
Z,CTLS
0786
0787
T10D
;ELSE USE S~~E AS TRACK 1
JR
0788
0789
MIDDLE TRACKS
0790
0791 MIDS:
0792
0793
BIT
JR
DFDTD, (IX + DVFLGl
L,CTLS
;IF SD THEN USE DEFAULTS
1E90
0794
0795
07%
lD
JR
E!BCDDS + OCPCI'!
CTLS
;L~E
0233 1808
022B DDCB0356
022F
280C
0231
0235 DDCB0356
0797
INSIDE TRACKS
0798
DFDTD, (IX
0799 INSD: BIT
f
DVFlS)
0239 2802
0800
0801
JR
L,CTLS
023B 1E50
13802
LD
E,BCDDS + BCPCH
0803
:0804
l/
;IF SD THEN USE DscAULiS
JSEi DD, HIGH PRECOMP
SET CONTROLS
023D 3A0305
0805
0B06
0240 83
0807
0241 DD7704
0808
lD
0809
0810 EXITS: OUT
0244 D300
DD, MEDIUM PRECOMP
eTLs:
LD
A, (SVDRIi}
OR
E
I·HHH·1Hh'f*H**f**·~·H**H*****H·**
READiWRITE SECTOR SUER
ENTRY- A'::·0: WR I TE~ l0:' REHD
j-li..::.:: XFER PTR
:~iS74
0875
"&£;77
;JB7B
0873
};E:'5 57
0~?5
(
;:'V"!T _
;..l\..1. ,
; ********HlIi****Hf******H*****HH****
AF~HFt
13:380
EX
~8.
E= SECTOR
NZ= ERROR
D1A
HF,AFl
iBB2
0983
@B8~}
08B5
10886
REHD/WRITE SECTOR SUBROUTINE
rNiTI~~TES
DISK
XFER~
SEVICES THE
CwDMEMCO ZS0 Macf"o Assembler verslo!'1 03.07
DISK CONTROLLER MODULE
f'
12:43:41
{DCM)
SUBROUTINES
09B7 ; CDNTROL..ER CHIP .DURING D!r:.~ XFER, & TERMINATES OPERATION
··""ED t-RRGR
-tn\l-I"'~
APE
(/JBM ; "'·noi
til CJ:\'Fe.l~iltlH
. ' DETECTION
~. I:: .'"
l~ 'MPf
ld ",-t:.
at! u:iJ &. it"HR'ES
.. 1
h
0BB3 ! EXECUTED IF DATA ERRORS ARE DETECTED,
08'30
EN~RY - D= 0: wRITE, i0: READ
l
"ill
iiL= XFER PTR
01392
E= PhYBICI-iL SECmR # H .. 26J
0894
:(,895
HL,
H~
£4=
~~.
~B%
i***HHHfH·tH************************H*************H************
.)1:,93
ilflS~CT;
~B39
0'3@0
XOR
LD
;~'301
LD
0902
0903
0904
XQR
~905
{ERRCTl,A
'C tiDSl be
t.A-Ll..
RWRTRY:
~SET
1791 SECTOR REGISTER
in
~.i.!
lY,RWNMI
; "BET NMI VECTOR FQR
~ETUR~t
0906
0907
tD
BIDC;~D8
;DEFAULT TO READ
0908
0909
0910
tD
A,D
;SELECT CJ1ERATWN
DR
Po
0911
JR
NI,OPD.i{
0'312
------------;-wR-.n-£-DP-·------~~[O~~
0914
fj,.B
i OUTPUT READ SECTOR COMMAND
I -11915 OPOK: ~B
0913
__
LD
B~D::WRS
091.&
XOR
1"-
. :;:9\ 7
0916
OUT
WrDlD, A
%929
0920
EX
EX
EX
{sP},HL
{SP} ~ HL
(SP),HL
EX
(SPilHL
~921
lJ
;WAIT FOR 17'31
0923
0924
0925
LD
A,D
OR
A
0926
JR
Z,WROP
0927
0928 RDREPT: IN
13929
0930
IN
W33i
0932
0933
0934
0935
0936
0937
XC!!
LD
INC
JR
fllXPDSH
;GENERAiE "HOLl},' UNTIL 179X READY
A,it/DDTA
; XFER DATA TO BUFFER
C
(HU:A
hiRDREPT
;PTH
+i
CHECK STATUS
0938 RWNMI: LD
0939
0940
;IF WRITE UP THEN SO DO IT
P'JSH
i IF NO ERRORS THEN RETURN
;SAVE 179X STATUS
Page 0q)15
C:~OMEMCD
«
Vel~S:, Ofl
IBVi ;r;ac'(") Assei11bI Er
DISK CONTROLLER
i~tlDJLE
03.07
mC[li)
stJBRDUm~ES
;2\Efi3 fA
GcA4 S7
~~;~·A·5
;~~j02
0941
0'342
L1)
AIr
OR
H
0343
.JR
NZ~RWMSK
LI~
B, DillWER
; IF I-:RIIE Of.! THEN
0'344
1~~~'H7
~bF.J
~l945
0945
f2i;~P9 ::1
e)2AA Ai[!
'll;:~'B 2;27703
:;.i2AE CB
R~r3EW;i
~DQ
;OF
054B
AND
II
~~9it9
LB
RET
Z
0947
; 17SX STATUS
(CBSTS1,H
0951
1~2PF
fi!:'
l,l-..,;,'
0952
PUSH
~:2Bf~
CDC0@2
0'353
CPLl
~82B3
n:
02134 2Be9
02BE,
,-l;1"'l
1..,:1
.'1.195·4
POP
13955
0956
Jf!
~957
REi
0958
0959
~~;~B7
DBBQJ
A9
0E:BB D3iJJ/'
02BD ::7
~2BE
0966
eJ2B9
Ii:
t1E~BA
~
'-~I
i8F7
;SAVE FLAG, SECTiJR
i IF RETRYS NOT EXHAUSTED THEN RETRY
W~DP!
iEPTW:
0%1
0962
0%3
0%4
0955
DE
CHKQT
DE
L1 RWRTRY
IN
P~XPDSp.
;riDLD FOR ;;trTA REa
LG
A~ (riLl
;OUTPUT DATq TO 17'91
WR
C
OUT
INC
JR
WDDTH~H
Y:"
HEPTw
0%7
096B
0969 l**************************************
0970
Q!371
CHEC~;
0972
FOR RETRYS SUBROUTINE
EXIT - H= 0: OK, /0: ERRQR
I
;************************************f.*
02C~5
;::58'£1
0375 CHKRT: AND
~2C~'
.r·(!;
097&
.. 'It:
~ET
[;MDNR
; F NOT READY THEN
EXI~
NZ
0977
~~2C3
3A7503
02Cf, E5B0
Q~2Ce,
(,-!jr
'~I:'
LD
AND
RET
097B
il979
~9B0
0
"'I
(CBI!!ODl
;I~
NO RETRYS CHECK THEN EXIT
CMNRT
NI
0981
~2C9
DB47~
3A040S
3C
02CF 320405
J;~CB
0~~~
lCLt
02112 FE05
!llED4 2€lili7
(
02D5 CD7B01
02D9 CCBC01
02DC
('0
02DO FE09
0982
!~$
09B3
0984
0985
09B6
0987
09S8
0989
0990
Po, XP~"1X
LD
A, (ERRCT)
INC
H
LD
(ERRCn,H
CP
RTYSK
.JR
NZ~CKLS
;ERROR COUNT +1
~ IF
NuT TRY SEEH
THEt~
CHECK LAST
CALL
0991
HDMED
r·r\.j ;.
wr'lh_:;'"
ZiSEE~
0992
0993
0994
~ET
tJZ
;HDME SELECTED DRIVE
DESIRED TRACK
jIF ERROR iHEN EXIT
CP
RTVLS
; IF LAST RETRY THEN RETURN WITH ERROR
CKLS~
CROMEMCO 180 Macro Assembler version 03.07
DISK CDNTRDLLE1 MODULE (DC['IH
(
12:43:41
SUBROUTINES
02DF 2805
0995
JR
Z,STNZ
LD
RST
B
09%
D2El liBOO4
02£4 CF
02E5 AF
02E6 C9
0997
0998
0999
1000
1~01
iELSE WAIT &RETURN WITH NO ERRORS
DE,TMPlD
XOR
RET
A
INC
A
1002 ;
02£7 3C
02E8 C9
1003
STNZ:
1004
1005
1006
1007
1008
1009
;StT NO RETRY FLAG iNZi
RET
;************************************************
DEBLOCKING BUFFER HANDLER
ENTRY- AF'= ZF: WRITE OPl NZ: READ Oil
EXIT - NZ= ERROR
HL, DE= ?
1010
1011
1012
1013
~014
02£9 CD0C33
02£C C0
(,
1015 i************************************************
i016 DOBUFR:
~017
BUFDK
;SET UP SECTOR BUFFER
CALL
WZ
1018
RET
1~19
1020
PUSH
Be
0'2EE q;18~0e
02Fl 1180~,3
02F4 210004
1021
1022
LD
LD
1023
1024
LD
BC,SECSH
DE,XBUF
HL,SBUFR
02F7 3A7303
1025
1026
LD
DEC
02EO
!""Or
I... ~
02FA 3D
.
i5ET UP XFER
;DEFAULT TO lO HALF
A, (CSSEC)
iCOMPUTE LOGICAL HALF
A
;0: LO, 1: HI
t~2?
911",
1028
i029
J~
0,A
ZlXOK.
02FF 218004
1030
1031
LD
HL,SBUFR + SECSIZ
0302 08
0303 200l
1032 XOl{:
1033
1'[,34
1035
EX
JR
AF,AP
EX
DE,HL
;ELSE REVERSE DIRECTiDN
AF,AF'
;RESTDRE FLAG
02FB eM?
3f.f'D 2803
0305
EB
;XFER HI HALF
jIF READ THEN OK
NZ,NOTWRT
11336
0306 08
1037 NOTWRT: EX
0307 EDBe
103B
1039
LDIR
0309 Cl
;i,30A AF
1040
1041
1042
1043
1044
1045
1046
1047
1048
pop
XOR
RET
@30B C9
(
BC
A
;RETURN OK
j**************************************
CHECK FOR BUFFER OK SUBR
EXIT - NZ= ERROR
Page 0017
CRO~IEMCC ZBQl 11!aC"r'o Assemhler versi.ofl 03.07
DISK CONTRDLLER MODULE
mc~n
SUBRGUTUJES
030C 3im0~,
030F 3D
0310 CB2F
Page 0018
i~l!g
HLl DEI A= ?
1050 ;**************************************
1051 BLlfOK:
A, (eBSED
1052
LD
iCG~PUTE
; 1~ ~N -) 0:t IIN-i
1053
nEC
A
SRA
1054
A
iN! = N / 2
~~!:12
3C
~313
5F
1057
~,314
3A0005
~3i7
BB
1058
1059
l\?i6\:,
106.1
1~55
;I?: .. W-I -}
INC
PHYSICAL SECTOR
1..,,]1
.1056
0318 200F
LD
LD
CD
;SAVE =QR LATER
E~ :'~
Al (BSECT)
E
NZ,NGTSAME
031A 3A0205
031D DDBHle,
0Z:20 ;?'0@7
1062
LD
t~t63
CP'
m + DVNBR)
10E·4
10E,5
JR
NZ,NOTSAME
Ql.s22
r:325
LD
A, (BTRACK)
DDBE~~.
1066
1067
03t~3
CB
3~'!Z( 05
A, (BDISK)
(IX {. DVTR~;j
RET
..,
;SHME~
i.
JUST RETURN
105'3
0329
(
LD
c:l~!00i;
~3;~C
nt::
1.,-
1072
flUSH
~i32D
CD7002
~330
IH
11373
1074
CALL
PDP
JR
0331, 2802
(1333 1£00
~1.335
2!0005
~-.
0338 Iyj
0339 23
033A DD7EQtl
~33D 77
1077
107B
1079 BRDOK:
lQl80
10B1
'Ji'
l...~'
~lQ;3F
DD7E00
:l!~85
i?,342
~~
II
1086
rr.·
1..1
10B7
10B8
1089
~_-'3
-,
,~.-
:SET P'TR
;SAVE PHYSICAL SECTDH ;;
HDSEC
DE
ZIBRDOl{
: IF ERROR THEN CLEAR BUFFER
BSECT
IKU,E
:uPDATE BUFFER PTRS
LD
U.l
'_D
HL
A~
;,083
:iZiB4
iZi'33E
~2:"::~lfi1
HL:SBUFR
DE
LD
INC
LD
LD
(IX + DVTRK)
(HL) ~
A
r:,i..
Aj \IX + DVNBR)
(HU,H
DISK CONTROLLER MODULE
(
DATA AREAS
1091
1092
j -----------------------------
1@93
1094
DISKETTE FORMAT LABEL
·1095
i0%
0344 4A51.6465
~
l
---------------_._---------;
1 Jade DD
1097 JADEID: DB
;DI5KETTE ID LABLE
20444-420
mSIE: EDU
$-JADEID
~LABEL
BU;:'BG+!i\
; ID SECTOR LABEL DFFSET
IDLBL+20H
:ID DISK DESCRIPTOR
:SECTDRS PER TRACto:. OFFSET
IDFLG: EQU
HlBLK+0
IDBLK+10H
DBLK+l1H
IDFLD; EQu
00~le0000B
(Q100B)
109B
(0:l1=10)
1099
1100 IDlBL: ;;:QU
1101
!. :.02 IDBLK: mu
InSPT: EQU
mElTS:
{Qf3B1 }
i ~,@5
- 1t06
EQU
LENGT1-1
BLGC~ Q~FSET
;SECTOR STAGGER OFFSET
;DISKETTE FLAGS OFFSET
t _ _ _ _ _ •_ _ _ _ _ _ _ _ _ _ _ _ _ • _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
~
TABLE DFFSETS
1:.
~
.!..
~ 3;
.;
..
--,-,-~-,--~~,--.---, -----~~,----------
':"'-.
; )~:.
~l
' _' _____
fi~_
•• ~' _ _ , . . . _ . _ _ _ _ • _ _ , _ , _ _ _ , _ _ _ _ _ _ _ _ _ • _ _ _ _ _ _
" ., !:,t";.
,~ i . .
.... -;--"~3 ,:,;,;;,
,;,~',:u~
,-,Ie
DE
017'
.;",~
1./;.. /
i",l,
~2:72~
Q;'Zi-
.' u:·:',
il.,.
..:. ~. !....
DB
",
~;'7-;"
1\,>,1' ' •.<
:~374
1'P7"~:::;
v-.-,'
(
<••'
..
ilt37 '.'
.,,1.ei;.
DB
lJ~~
0~
~7'!C~
~",,,,!
~:~~Q;~}
j.67
.:.lEB
jf;{Jit~
!?:37C
t,.:j:t
~"'",,~
..--,----
DB
(
t 1
~_\i:l
),J,': ..I
j,::8~
; 1S;:'
',:BJ
VEi:TDF: AT
D.Cr~
KE~JCA~ES
CQN~~-::'JL .'~Q
ADDRESS ~1003,;"!
::HE ENTIRE DC;~;
rns
\ACTUP~,L..V H~-~
01;·03H ~1Ht}~ EX~CDTED}t
it!; B~~\}~ : TC '8q:!mn
0066
0@AB
NDTSAME
NlJT?lR7
:JPCONT
OPOI<
0329
0306
00EB
02BB
i~007
0"='~r'"
~t...J:!.
0791 0770
0Hl4
063i
0206
0465 0454
0~'='7
·b... r
1070 1060 1064
1037 1033
0534 0525
09 _j <::... 0911
d:;;!
07B4 0"1l"'1
GUTS
RDREPT
RDSEC
READ
RECAli
~~?70
~lBB
0928 093l }
0855 0316 0492 1073 1201
0523 0432
0657 0662
REPiW
02B7
0%0 0966
RST38
0038
RSBBA
Qi030
0341
0329 0343
RST40
RST8
@0213
0008
e;;:~23
0297
00E5
HTYLS
00~9
lHVSK
RWMSK
0005
RWN~l
RWRT~V
02A9
021'-10
027F
0316
0282
0199 0994
019B 0987
0947 0943
0938 0905
0905 0955
12:4·3!41
PagE' 0025
CROMEMCO Z80 Macro Assembler version 0.3.07
DISK CONTROLLER MODULE (oCM}
Value Defn Referel"lces
Symbol
(
RWSECA
RWSECT
0274
0277
SBUFR
0400
0080.
5fCSIZ
SEE¥.
SEi.ECT
SIN
SLED
SLEEP
sour
SPAR
J?lEC
0042
~1525
019B
01F7
SVDRV
S',,lSTS
TiDD
;':CKE
TICKR
0898 0559 0.S66
1212 0556 1023 1030 10.71
0239 1021 1030
0707 0.452 0488 0537 0991
0591. 0.447 0480. 0536
0733
0633
0352
0739
0369
1225
0628
0306
0.731
0.436 0437
0304 0.342 1194
0669 0680.
0746 0.737 0751
02E7
10.0.3 0995
v11F
0503
037C
0575 0573
'':1':11
0.578 0601 0.612 0.621 0653 0664 0734 0743 080.6
i170 04~1
0779 1l7S7
0290 0.285
0287 0.295
taF
0013
001lJF
.i.'t...1..J.
TMALS
0135~
0186 0684 0753
TMDBR
0001
015E
0001
04B0
001'3
13183
0185 0714
13187 0596
T~!H.U)
TMMTO
niPLD
TMRFC
T!¥!RNC
(j
0040
STEP
S'T;lS
~
~~172
ST;iCX
STNZ
STOP
t
01BC
012B
01E2
0879 0546
0188 0997
0193 0283
0281
~lC
~194
TMSAW
000A
0189 0,121
":-Ms"rp
TMSTPC
'R!{:
0008
0050
10181
0182 0658 0618 0747
0219
TRUE
FF~~
TSTACK
VERSi\
I'IDCMD
~DDTA
003B
3133
0004
0007
rr
0.776 0764
0047
0340
;~~43
0079 0458 0837 0850 0917
OOB3 0833 0930 0964
WDIN"r
0066
0399
WDSEC
0006
0082 10903
Wf;S-;S
WDTRH,
WfC"r
~l\
0005
0080 0399 0855
0081 0815 0832
0533 0433
WROP
02E7
XBU;::
0380
X2UTE
XCK
~070
XPDS"l
P;hR
0080
0020
0088 0928 0960
0086 0341 0382
XPMTD
0010
0040
M8
0087 0595 0599 0982 1198
0084 0657 0676 0746
XPiltH
XPSTP
Mia;
0302
0959 0926
1176 0490 0540 1022
0413 0330
1032 1028
0085
12:43:41
Paye 0026
\/, ,rr ,"r;;.:"
J C- (Pc?
.t,' }
I
t( ..n~
o
'6 Lf
2S"?
lCo
522..
SECTS.
/e-
J)kl VE
P'f R
I=/() I ,>-,..,
oJ
, _ , ..
j, W
CHl-:. b (R.
..
(~EC /l:xr
/<,2
" .;:' •
r'
:/
. ' r,t:"
Cltr.
........-.~. ,~.-~'.'.'
...•. '."".
''-.,.,
..
-',"
~.
~'.....
"'.,.'"
eft? : I
OLl)
c
NEllJ
I (") C
aIe> 1.-."
~ ..
pl 'P! t-.D(~"'...
t,·
1:::"
'I .' \
l
'-....
t.,
7... & j-
j'-- /,
".J.! ...., ::::.,
j'
E _ 0
X :::- t:~ r L E )
C:
'~,.,,,,,.,, .''''.~-
r"'"
'J~, (A,)
I ) .,\
1";:
,'" /-" /', '
~Errj) SEC~
INTO(
XBUF
"'---~,-''''
'--~
CXJf'JE )
HA-l..-f-
15
bE I£RMU,.)SO
'
H 13-5
IJG-SCRI,PTt:9R_
F~OM
¢
D~
¢
)
.DB
-'I
)
k.
,£$-(1 ¢
PI-ft(.,.. 5 ,
B5 r=c Tc9{<. De
bp I Sf<
,
DIs!::
131
Bn~A-c.
"
II'J
\;,'
8U/":r6'R
{ ..
r
'8l0c'\C
)
";6 .::
,
,
TRPrt:..1r::.
j)R 11)5
U IV U 5 i=--:J)
.z±:
It:..
-.lSS-
-=
SECT&I:? ¢:.
W~lTE
>-----------------1
WR-trE $£C11
IN XBut=
--~
}
Xl5uF Tb
LO 12. gob
'NVJVE.
r------------.- -=--
IF\'''
f..-- -
-
-
-'--'
\ 0 - - - - - - - 1 - -'
. COIVIMrTND
~l/t
3 'E(o
BLOU<,
SEC.TdR.
SU~f'E.R.
1 r-F
.£c@j~(90
4 r-,=-
1. SG,
b
1-------=-...J
V'1\~s _•_ .•
'""l _ _ _ ,
~-
l
~I====::::::Il-....v
SEC.TO~
gVf:I:£ l~
r-e. __ _
I
OUTSfJ)E
eFt
XED
W(!}RL.D
CfYWlWlI.I/l/fcA-rleJlV.
It!Jf!.J3(U!Jfv!)
RE5£r
s
p::. TPSTk:,
XNL /'r.tJ})E ::. I
SEL~CT
17~-/. j)ftTIlr POLII~ln
~
~----~--------~--~
(!)C!Jf/;
.:rx = DR' 'IE
5P .::
EI.
o
0'
!
.
TM[£ pr~
rp5Tt:::.
CJo 3 :fj'
,,-, ,;.;
o
U'ESTFFl.
C.USf)-R. T"-'T
f?l;fJJ
'Nf'tSTt:. ltv T
RET!)JR.IV
-T----------·-·----------------\ /(H~VP-G)
(y.CUJr,;) ~{!)70
'1= I
Source Exif Data:
File Type : PDF
File Type Extension : pdf
MIME Type : application/pdf
PDF Version : 1.6
Linearized : No
Create Date : 2018:05:13 11:58:54-08:00
Modify Date : 2018:05:13 13:00:30-07:00
XMP Toolkit : Adobe XMP Core 4.2.1-c041 52.342996, 2008/05/07-21:37:19
Metadata Date : 2018:05:13 13:00:30-07:00
Producer : Adobe Acrobat 9.0 Paper Capture Plug-in
Format : application/pdf
Document ID : uuid:f0761433-d65f-864c-8b38-0a159ed9bdff
Instance ID : uuid:878dda82-ab28-2640-996e-d641cc510e3a
Page Layout : SinglePage
Page Mode : UseNone
Page Count : 151
EXIF Metadata provided by EXIF.tools