Double D_Firmware_1983 D Firmware 1983

User Manual: Pdf Double-D_Firmware_1983

Open the PDF directly: View PDF PDF.
Page Count: 151

DownloadDouble-D_Firmware_1983 Double-D Firmware 1983
Open PDF In BrowserView 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: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:..

-----------------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

Navigation menu