PCShare_Listing PCShare Listing

PCShare_Listing PCShare_Listing

User Manual: PCShare_Listing

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

DownloadPCShare_Listing PCShare Listing
Open PDF In BrowserView PDF
.'

.1

The IBM Personal C,;:.mputet" MACRO Assembler 12-28-83

PAGE

'¥

1-1

•

;

PAGE 60,132
;

;***********************************************************************
;

Filename is PCSINIT.ASM

I

;***********************************************************************
This file contains code and data for Emulator primary initialization
described in Sections 9.2 and 9.3 of the Program Logic Description
for the OMNINET PC Share Disk Server Emulator, Version 2.0, dated 7
November 1983.
The code in this file is executed as an independent
program, not linked to the Emulator.

(

(

I'

Primary initialization obtains the location of the Corvus utilities
Jump table by a device driver input call to the device PCSMHOOK (as
; do all the Corvus utilities).
The offset of the ECT is in the first
word following the Jump table.
To assure that EI-INIT is matched
with the correct version of the Emulator, the EC.IDEN field of a
dummy ECT allocated within EI-INIT is compared with the same field
; in the driver.
Initialization is abandoned if the two fields are
l'"lot the same.
;

; At completion of its other processing EI-INIT calls the warm start
entry of the Jump table to initialize the transporter and start the
; operation of the Emulator.

;***********************************************************************
I

Version:

2.0

Last Update:
; Written by:
Updates:

(
(

fi

28 December

19~3

R.B. Talmadge, Computer Technology Ltd

NOl'"le

;

.;***********************************************************************
,
ENDIF

fi

.'

;

;***********************************************************************
(

;

Special Macros for this initialization program

;***********************************************************************
;

(

;----------------------------------------------------------------------Macro Name: SHOW String, Rply,crlf
;

•

Function: Displays the character string located at the offset
string in the data segment.
Requests reply wait for
Rply characters if Rply is present.
Requests no
CRLF sequence at end if crlf is present

;----------------------------------------------------------------------;

SHOW

MACRO
MOV
IFB
MOV

String, Rply,crlf
DX,OFFSET String
;;string location
(Rply>
CX,0
;;Set reply count

•
•

•

•

The IBM Personal Computer MACRO Assembler 12-28-83

ELSE
MOV
ENDIF
IFNB
MOV
ENDIF
CALL
ENDM

."
(
(

PAGE

1-2

•

CX,Rply
'~, ES
POP
ES
MOV
ES:r.OIJ.DOSdkO,BX
MOV
ES:[OIJ.DOSdkS,OX
XCHG
OX,BX
SIV
, SCallOS
PUSH
DS
MOV
OS,BX
MOV
AH,25H
MOV
AL,SCallDS
INT
21H
POP
OS

BX,OmECT.DORH
OX,ES:[BXJ.KY_INT
DmECT.OORI-IS,SCaIIEM
OS
BX,OmECT.OORHS
OS,BX
AH,25H
AL,SCaIIEM
211-1

I

; Nc.w set up the
sClftware call

t

f

C

•

•
f"

("
--

-~-

-"

-=

-

-

-~-

"._"-------------_.. --

-

-- ---- --

-- --

--

--

--

The IBM Personal Computer MACRO Assembler 12-28-83

PAGE

1.-18

f'

(

I'
f

'I

121892

1F

121893
121897

8B 1E 12112138 R
26: 8B 57 1216

1Z189B
089C
1218 A121
1Z18A2
1Z18A'+
1Z18A6
1218A8

1E
BB
8E
B4
BIZI
CD
1F

1Z18A9
1Z18AC
1Z18BIZI
089i:::
e!8B4

A121 IZI1Z12F R
BB 1E 12112138 R
AB CI2I
7 Lr 12
26: BB 57 IZIB

0BB8

1E
BB
8E
B4
BIZI
CD
1F

1Z18B9
IZIBBD
1Z18BF
1Z18Cl
1Z18C3
IZl8C5

1E 1Z11Z13A R
DB
25

1C
21

1E IZI1Z13A R
DB
25

21
21

+

POP

DS

+
+
+
+
+
+
+

MOV
MOV
SIV
PUSH
MOV
MOV
MOV
MOV
lNT
POP

BX,DmECT.DDRH
DX,ES:[BXJ.KY_DTM
DmECT.DDRHS,SCaIITK
DS
BX, DmECT. DDRHS
DS,BX
AH,25H
AL,SCaIITK
21H
DS

MOV
MOV
TEST
JZ
MOV
SIV
PUSH
MOV
MOV
MOV
MOV
INT
POP

AL, DrnECT. EC_ TBI
;Fetch run flags,dA--_
BX,Dr
.DDRH
;Refresh keys off~et
AL, TBirlt +STBrer,b-l-r-rc>c..-fMc.e:::Cont1
;If transporter is
DX,ES:[BXJ.KY_DOS
to run enabled,
set DOS i rl el'~cep

+
+
+
+
+
..!-

;Offset to Keys table
;Offset to timer intercept
;Set timer intercept vector

(

ofL

A-L') cl: [p:c). GC:_ Tp]:

f.

BX, DmECT. DDRHS
DS,BX
AH,25H
AL, i:::1H
21H
DS

•
(

;--------------------------------------------------------------------------Request Transporter Logical Device initialization
;--------------------------------------------------------------------------;
IZIBC6

Cc.rlt 1121: OR
PUSH
MOV
MOV

26: 08 '+5 2F
53

I

08CA
08CB
08CE

(

1Z18D1
1Z18D5

FF 1E 12112138 R
5E

1Z18D6
08D9
08DC

BA 121294 R
B9 12101210
E8 054E R

A1 1Z11Z13E R
A3 0038 R

•
•

CALL DWORD PTR DmECT.DDRH
POP
SI
SHOW
IrlDorle
DX,OFFSET lrlDone
MOV
MOV
CX,IZI
CALL
lSMsg

+
-I"

+

(

ES:CDlJ.EC_TBl,AL
BX
AX, DmECT. TckS
DmECT.DDRH,AX

;Flags t.:. Emu I at.:.t"
;Save offset .::.f keys table
;Fetch offset tc.
Jump table
;
;Call TLD stat"t (cc.ld ==
; Rett~ieve keys offset
; Pri rlt erld message

wat~fI1

c

•
)

;--------------------------------------------------------------------------Set transporter in motion by itself or through external driver
-----J;...-----------;----------------------------------------------------c:s: ~;l::.J
1Z18DF
08E4
08£6

F6 06 002F R CIZI
74 1215
FB

08E7
08£9

B4 4C
CD 21

(TEST

JZ
STI
LEAVE
MOV
INT

+
+

lI1,:.lc:::.-

mEC • EC_ TBl, $TB1¥t'IH+$TBrerlb
I
11
;80 drive if no interrupts
;Assure interrupts on
arid exit
AH,4CH
21H

;

0BEB

26: 8B 5C 02

Cc.rlt 11 : MOV

BX,ES:CSlJ.KY_EXT

f

•

;Set up call

c

••

(
The IBM Personal Computer MACRO Assembler 12-28-83

'.

:(

1Z18EF

89 1E 12112138 R

PAGE

1-19

MOV

DmECT.DDRH,BX

;

to Driver

SHOW
MOV
MOV
CALL
OR
CMP
JNE
LEAVE
MOV
INT

GoDrv,1
DX, OFFSET Gc.Drv
CX,l
ISMsg
CL,20H
CL, ' q'
Cont12

;Request start or stop

;

ShowL:

1218F3
1Z18F3
08F6
1Z18F9
1Z18FC
08FF
12191212

BA
89
E8
80
80
75

12191214
12191216

B4 4C
CD 21

+

1Z12BE R
12112101
054E R
C9 20
F9 71
1214

+
+

....
+

;Stop is either a capital
; or lower case 'q'

c

;Exit on stop
AH,4CH
21H

;

12191218
091218
1Z191Z1B
1Z191Z1E
0911

q l,IZI915

121917
121919
1Z191B
1Z191D

BA
B9
E8
FF

1Z12EE R
1211210121
1Z154E R
1E 12112138 R

BIZI
B4
CD
75
EB

FF
1216
21
F4
D4

Cont12: SHOW
NxDRV
DX,OFFSET NxDRV
MOV
+
MOV
CX,0
+
CALL
ISMsg
+
DCaIEM: CALL DWORD PTR DmECT.DDRH
MOV
MOV
INT

'l>L@, 0FFH

AH,6
21H
~~ DCalEM
ShowL
JMP

;Issue stop message

(
;Call the Emulator
;Test for character
;
input at keyboard
;Call Emulator if not
;If so, go ask again

;

1Z191F

EI IN IT ENDP

1Z191F

PCS

;

ENDS

;

121121121121
121121121121

STACK
02121121

(

SEGMENT PARA STACK 'STACK'
DB
512 DUP(IZIFFH)

FF
J

t'

021210

STACK

ENDS

;

END BegiYI

•.

'

•

.
'

"

t'

c,

••

(

.'

The IBM Personal Computer MACRO Assembler 12-28-83

PAGE

Symbols-l

•
(

N a

.:
c

,
•
I

Length

e

I'll

COMPARE. •
ENTER.
EX IT . . .
EYE. • • •
FILLIT
...
F I V"

•

•

•

•

•

•

GEN_START.
LEAVE. . •
LOG. . . .
MOVEB. .
MOVEONE. .
RESTORE. .
SCANB. . . . . .
..•.•.
SELEXIT . • . . . . • . • . • • •
SELREST. . . • • . . . . . • • •
SEL.SAVE. . • . •
SHOW"
SIVa •
START. . • . . • •
STATUS .
TIME •
TRACE. .

(

000F
000D
0005
0001
0011
0002
0001
0001
0005
000F
000E
0001
0012
0002
000D
0018
0004
0003
0019
0001
0001
0009

«
f

".
f

t
t

I

Structures and records:
N a

f"

e

fI1

f

t

•
c

•
•

DACB • . • • •
DA_EI.
DA_EC. . . • • • •
DA_CDSK.
DSA.
DTA. • •
VSA. .
VDT.
DDA.
ECT. . •
IDEN
EC_DAT .
EC_DRV •
EC_FLG .
TRCE • .
COLD. •
EC_ TRM •
MAX. • .
NEXT •

DrR.
NAM.
SERV

..

. • • • • • •
• .

• • •
• • • •
• .
. • • •
• • • • •
..

..

..

!If

•

h

11

• • •
• . • . •
•••••••••

Width
Shift

# fields
Width
Mask

02EB
0000
0001
0002
0003
0004
0007
0047
004B
004F
006B
0040
0000
0008
0009
000A
000B
000C
0000
000E
0010
0012
001A
0022

000F

•
•

Initial

••

.'
•

001A

•
C

•
•

c

(
--------

The IBM Personal Computer MACRO Assembler 12-28-83

f
(

«
c
,f

EC_ATRU. .
EC_ATRS. .
EC_ATRL. .
EC_ TBI .
TLTMCK • •
TLTMRS .
KEEPOUT . • •
INTOFR • • •
DOSOKO
DOSDKS .
DDRH •
OORHS. . .
TCKO •
TCKS . . . • .
EEFCB. .
EFCB1 . . . . • . . •
SY 1"

••

M

•

..

..

..

EFCB2.
BY2. • .
EFCB3. .
USR ...
EFCB4 .
EE_LOG . • . .
ERR_ TAB.
EFCB • • • • ..
FF '"
RSV
d

If.

a

..

u

n

..

..

..

•

.

• . • .

"

..

II

,.

..

•

~

If

..

..

If

..

A

..

• •

ATR. . • • •
DRV.
NAME •
EXT. • •
CB ..

.,

n

"

•

..

•

..

..

.............

..

..

..

RS •

I

L.FS
HFS

h

n

a

..

II

II

..

..

..

..

..

..

..

"

..

..

EF _OAT " • .
RSV1 . . . • .
CUR.
••.
LRN.

(
(

(

•

•

•

•

•

•

HRN. •
IORB . •
IO_FLG
• • " . • • • • •
IO_CLS .
. • • •
NUM..
•••.•.•
DSPL • • • . . • • .
DSPM ..

ADR.

..

II

....

..

..

..

..

..

..

..

...

..

..

..

..

......

..

FCB..
•••.
• • •
KEYS • •
• .•
.••
KY_EC.
• • • . • • • • •
KY_EXT
.••••••
KY_INT
.••••.
KY _DTM • •
• • •
KY_OOS • .
• ••.•••
LRB.

••

••

•

•

002C
0020
002E
002F
0030
0031
0032
0033
0034
0036
0038
003A
003C
003E
00BC
0000
0010
002C
003C
0058
0068
0084
0094
00B0
002C
0000
0001
0006
0007
0008
0010
0013
0015
0017
0019
001B
0010
0027
0028
002A
0012
0000
0001
0004
0006
0008
000A
000E
000A
0000
0002
0004
0006
0008
0002

PAGE

Symbc.ls-i:::

•
t

•
(

001C

f

000F

I

000A
(

0005

0002

•
•

,.

e··
The IBM

Per~sc'1'la

1 Ceompl_lt el"' MACRO

Assemblel"~

12-28-83

PAGE

Symbc.ls-3

f'

f
C

CDE. ·
LR - LEN

· · ··

· · ·

··.

C

· · · ·· · · ·· ·· · ·· ·· · ·· ·
··
·
· ·

PCS.
STACK.

:1-

'.
I

•
(

(

•
•
•
f

Size

0.1 i g1'l

cc.mbi1'le class

1Z191F
1212121121

PARA
PARA

NONE
STACK

C
' STACK'

(

Symb.:.ls:
N a m e

(

•
•
•

(

Segme1'lts a1'ld gr.::.ups:
N a m e

«

121121121121
1211211211

•

· ··
·· ·
·
·
·
·
·
·
·
·· ·
·
· · ·· · ·
· ·
·
··
· ·· · · ·
·
··· · ·
·
·
·
·
·
· ·
· ··
· · ·
· ··
·
·
·
·
·
·
·· · ·
·
· · ·
· ··
·
·
· · ·
··
·
·
·
·· ·
· · ··

BEEPER
BEGIN.
BLANK$
CHKG1.
CHKRPY
CHKXIT
CHKYND
CHKYON
CHKYPN ·
CI$.
CMXIT.
COLG1.
COLG2.
COLOG.
CaNT
CONT1.
CaNT 1121
CONTll
CaNTle:
CONT2.
CONT3.
CDNT4.
CONT5.
CONT6.
CONT7.
CONTS.
CONT8A
CONT9.
CR$.
CRLF$.
CRLF2$
DCALEM
DEBUG$
DM$.
DMECT.
DR$.
DTA BGN.
EI$.
EI ..- INIT.
EMNME.
EMVERS

·

·
·

·

·
·· ·· ·· ·
·
·
·
·
··
·
· ···
· ·
····
· · · ·
· ·
· · · ·
· · · ·
·
· ·
· · · ·
·
····
· ··
····
····

·

· · · ·
· · ·
· · · ·
·
·
· ·
·
· ·
· ·
· ·
· · ··
· ·
·
····
· · ·· ·
· ···
· · · ·
····
·· · · ·
·
·
·
·

··

·
·
·
·
·

·
·
·
·
·
··

·
·
·
·
·
·
·
·
·

·
·
·
·
·
·
·

·
·
·
·
·
·

·

· ·

··
···
· ·· ·
· · · · ·
·····
· ··
· · · · ·
·· ·· ·· ·· ··
···
· · ·· ·
· · ···
· ··
· · ·· ·
· · · ··
· · ·
· ··· ·
·
· · · ·· ··
·
· ··
· · ·· ·
· · ·
· ·· · ·
· · · · ·
· ··
· · ·· ·

·····
·····
···
· ··

Type

Value

Attr

L
L
L
L
N
L
L
N
L

121313
1Z15AE
12112144
121588
1Z156C
121578
1Z15A1
121579
1Z159F
121121121121
1Z16AD
121762
1Z176C
121731
1Z15DF
121625
1Z18C6
1Z18EB
12191218
12169121
1Z16BB
06EE
077A
1Z17BA
1Z17D1
07ED
082A
0841
012145
012142
01214121
121911
121121121121
0121121121
121121121121
00121121
0121121121
1211211211
05AE
0517
1Z151F

PCS
PCS
PCS
PCS
PCS
PCS
PCS
PCS
PCS

BYTE
NEAR
BYTE
NEAR
PROC
NEAR
NEAR
PROC
NEAR

N'-Imbet~

L
L
L
L
L
L
L
l.

L
L
L
l.

NEAR
NEAR
NEAR
NEAR
NEAH
NEAR
NEAH
NEAR
NEAR
NEAR
NEAR
NEAR
NEAH
NEAR
NEAR
NEAR

L
L
L
L
L NEAI~
L NEAR
L BYTE
L WORD
L WORD
L NEAR
Nl.lmbet~
Numbet~

L

1211214121

NUl'l1bet~

E BYTE
Number
N PROC
L BYTE
L WORD

,(

f
Le1'lgth =IZIIZ1IZ1D
Le1'lgth =12112135

PCS
PCS
PCS
PCS
PCS
PCS
PCS
PCS
PCS
PCS
PCS
PCS
PCS
PCS
PCS
PCS
PCS
PCS
PCS
PCS
PCS
PCS

I

t

•

•
•
t

(

f

•
•

PCS
PCS
PCS
PCS
PCS

;.

Length =121371

•
•

(

•

(
The IBM

Pel'~soY"la

1 Cc.mputer MACRO Assembler 12-28-83

PAGE

Symbc.ls-4

C

f

•
C

t

t
(

f'

f

•
•
t,

c:
:(

«

· · · ·
· ··
·
· ··
· · ··
· ·
· · ·
·
···
·· ·· ··
··
· ··
·
···
·
··
· ·· · ·
··
··
·
···

EYE$
GOORV.
HITHR.
INCLOG
INOIR.
INOIR1
INOONE
INOSA.
INOSAl
1NOTA. ·
INEXT.
INFCB.
INLOGM
1S$.
ISCLS.
ISMSG.
ISMSGl
ISMSG2
ISOPN.
LC$.
NA$.
NOCOM$
NODIR.
NOOTE.
NOFILE
NOFLE.
NOLOGF ·
NOPCS.
NOSRD.
NOVER.
NXDRV.
PI$.
SHOWL.
SM$.
TBINTA$.
TBINTI
TBRENB
TBRTCK

· ·· ·
· ·
· · ·
·
·
·
···
·
·

TL$.

(

.'
(
(

•
•

· · ·
···
· · ·
·
· · ·
···
· · ·
···
· · ·
· ··
· ··
· ··
·
·
· · ·
···
· · ·
· ··
· · ·
· ··
· · ·
· ··
· · ·
· · ·
· · ·
· · ·
· ··
···

·

TRACE$
WHERR1
WHTCON
WHTDSK
WHTRCE
$$DIR.
$$EXT.
$$LOG.
$$NAM.
$$NAME
$$NEXT
$$SERV
$$SY1.
$$SYi:::.
$$USR.
$1982.

·

··
·
·
·
·
··
·
·
·

·
·
·
·
·

·
··

·

·

· · ·
·
· · · ·
· · ·
· ·
· ·
· ·
· · · ·
· ·· ·
·· ·· ·· ··
· · ··
···
·
····
· · ·

· · ··
· ··
· · ·
· ·· ·
· ··
· ··
· ··
···
· · ·
·
· ··
·
· · ·
···
·· ·· ·
·
·· ·· ··
···
··
·
· ··
· · ·
· · ·
···
· · ·
···
· · ·
·
· ··
·· ·· ··
· · ·
·
· · ·
· · ·
· ··
·· · ··
·
· · ·
· · ·
· · ·
· · ·
·· ·· ·
·
·· · ·
··
· ··
···
· · ·

· ·
· ·
·
· ·
· ·
· ·
· ·
· ·
· ·
· ·
·
·· ··
··
·· ··
··

· ·

·· ··
·
·
·
·
·

·

·
·
·

·
··
· ·

··
··
·· · ·
··
· ·
· · · ·
· · ··
· ·
·

·
·
·
·
·
·
·
·
·

·
··
·
·
·

·
··
·
·
··
·
·
··

· ·

· ·
··
··

L
L
L
L
L
L
L
L
L
L
L
L

BYTE
BYTE
BYTE
BYTE
BYTE
BYTE
BYTE
BYTE
BYTE
BYTE
002C
WORD

Numbet~

N PROC
N PROC
L NEAR
L NEAR
N PROC
Number
Number
Number
L BYTE
L BYTE
L NEAR
L BYTE
L BYTE
L BYTE
L BYTE
L BYTE
L BYTE
Number
L NEAR
Nl..lmber
Number
L BYTE
L BYTE
L BYTE
Numbet~

· ·

···
·· ·
·
· ··
·
·

· ·

Numbet~

···
·· ·· ·
· · ·
···

··
·
·

Number
L BYTE
L BYTE
L BYTE
L BYTE
Numbet~

NI.lm bet"
Nl..trnber
Numbet~

Number
Nl..lmber
Number
Numbet~

Number
Number
Numbet"

0000
02BE
0046
012B
040B
040E
0294
03C8
03CB
0417
0521
1Z139C
121497
121000
121546
054E
055F
1Z156B
052D
012100
121000
12100121
1Z10CA
016A
1Z16A4
01Z1E9
1Z110F
1Z11Z17F
014E
012196
1Z12EE
1211211210
1Z18F3
1211210121
12112101
1Z119F
1ZI10D
121218
12100121
1211211211
0256
1Z136C
1Z133F
121319
12101218
12112103
012103
1211211218
012108
12112104
1Z100A
012103
121003
001213
07BE

PCS
PCS
PCS
PCS
PCS
PCS
PCS
PCS
PCS
PCS
PCS
PCS
PCS
PCS
PCS
PCS
PCS

C

«
LeY"lgth =0008
LeY"lgth =0040
Length =12112180

t
C.

LeY"lgth =1211211218
Lerlgth =01Z11E

·f

.

•

LeY"lgth =121019

f

PCS
PCS
PCS
PCS
PCS
PCS
PCS
PCS
PCS

(

«
t

PCS
PCS
PCS
PCS

f

C

PCS
PCS
PCS
PCS

•
«
.(

•
•

«

,(
- - ---

-

-- - -

--

--

-

---------

-------

The IBM

Pet~sCtrla 1

Cc.mputet~

MACRO

Assemblet~

12-28-83

f'

I

$ARCHIVE
$ATRNRM.
$BEEP.
..
$CALLDS.
$CALLEM.
$CALLTK.
$CALLTM.
$CONS.
$DISKERR
$ERRSY1.
$ERRSY2.
$FAILURE
$FAL.SE
$FRMDTE.
$FRMSRV.
$HIDDEN.
$LOGOPEN
$IYlAXMSG.
$MND00
$MND01
$MND02
$MND03
$MND04
$MND05
$IYlNT00
$MNT01
$MNT010.

·

·

··
·

••

•
(
(

,I
:(

•
(
(
(

•
f

f

I

•
C

•
f

· ·
·
·

·

·

··

$MNT0c~

·
··
·
··
· ·
·
·
·
·
· ·

$MNT03
$MNT04
$MNT05
$IYINT06
$MNT07
$MNT08
$IYlNT09
$NOCONS.
$NODERR.
$ONE
$P82EML.
$P82ENB.
$P82EOI.
$P82EPT.
$P820P0.
$P8i:::OP1.
$P82RIS.
$POSKEY.
$RDONLY.
$RDWRITE
$SUBDIR.
$SUCCESS
$SY10PEN
$SYc:OPEN
$SYSTEM.
$TBINTI.
$TBRENB.

·

·
· ·
·
·
. · ··

·
·
·
·
·
·

·
·
·
·
·
·

·
·
·
·
·
·
·
·
·
·
·
·
·
· ···
·
· · · ·
· ·· ·
·
·
·
·
·
·
·
·
·
·
· · · ·
· · ·
·
· · ·
· ··
··
···
· ·· ·
· ··
· · ·
·
· · ·
· ·· ·
· ··
·

··

· · · ·

·····
·

· · · ·
·
··
· · ··
· ·· ·· · ·
·
· · ·· ·
"

· · ·
·· ·· · ·· ·· ··
· · ·
· ·
·
· · ·
·······
· · ·
··
·· ·· ·· ·· · · ·
·
· ··
· · · · · · ·
·· · · · ·· · ··
·
·
·.. · · · · · ·
· · · ·
· · · · ·
· · · · ··
· ·· · · · ·
· · · · ·· ·
· · · · · · ·
· · · ·· ·
······
· · · ·· · ·
·· ·· · · · ·· ·
· ·
· ·· · · ·· ··
· ·
····
· · · ·
· ·· · ···
· · · ··
······
·······
· · ·· · · ·
····
· ·· · · · ·
· ·· ···
· · · ·
· ·· · ·· · ·
· ·
·· ·
· ·· · ·· ·
····
·· · · ·· · ·
··
··· ··
······
··· ·
··
· ··
·
·
·······

Numbet~

Number
Numbel
Number
Number
Number"
Number
Alias
Number
NI.lmber
A

Number~

Number
Number
Number
Number
Nllmber
Number
Number
Numbet~
Nt.trl1bet~

Number
Number
Number
NUfl1bet~

Number
Numbet~

Number
Number
Numbet~

Number
Nl.lmbet~

N1.lmber
Nl.lmbet"
NI.lmber"
Numbet"
Alias
Nt.lmber
Number
Nt.lmber
Numbel'~

Number
Number
Number"
Number
Number
Number
Numbet~

Numbel'''
Numbet"
Number
Number"
Nltmbet"
Nurober
Number
Number

0020
0000
0007
0066
000A
001C
0067
$TRUE
0001
0001
0002
00FF
0001
0044
0012
0002
0008
0066
0001
0009
000A
000B
000C
0011
0002
0003
0010
0004
0005
0006
0007
0008
000D
000E
000F
$FALSE
0000
0001
0004
00FA
0020
0005
0020
0021
000B
0014
0001
00FE
0010
0000
0001
0002
0004
0080
0040

PAGE

Syrnb.:. 1 s-5

•
C

C

I'

I'
f
"

(

t'

I

•
I

C
(

C
(

•

.'

(

(
The IBM Personal Computer MACRO Assembler 12-28-83

c
t

•,

$TBRTD<.
$TICKMX.
$TRCCON.
$TRCDSK.
$TRUE. •
$USROPEN
$VERREC.
$VOLLAB.
$ZERO. •
??0000 •
Warrli ng

Numbet~

•
•
•
•
•
•
•
•
•

•
•
•
•
•

•
•
•
•
•

• • •
•
• •
.
• • • • • • •

Nl..lrnber
NI..trI,bel'~
Number
Numbet~

Number
NI.lmber
Number
Number
L NEAR

PAGE

0020
0020
000c~

0001
0000
0004
0020
0008
0000
0658

Syrnbols-6

,
•
(

c
PCS

Sevet~e

Erl'~ot~S

Et~rors

o

0

c·
t

f

•
•
f

•

«

(

c

•
•

c'

•

(

•

The IBM Personal Computer MACRO Assembler 01-15-84

PAGE

l-:L

;

(

PAGE 60, 132
;

;***********************************************************************
;

Filename is PCSCH:L.ASM

I

;***********************************************************************

•

This file contains the code for Emulator initialization described in I
Section 2.8 of the Program Logic Description for the OMNINET PCShare
Disk Server Emulator~ Version 2.0, dated 7 November 1983.
The file
also contains the code to interface to PC DOS as an installed device
driver, and code to provide entry points to the Corvus utilities.

The requirements for device driver code and data are described in
Chapter 14 of the IBM PC DOS 2.0 manual.
The Emulator as a device
driver is named PCSMHOOK and the procedure is DR-DEV-DRVR.
EI-INIT
(Chapter 9) obtains the location of the Corvus utilities Jump table
by a device driver input call (as do the Corvus utilities), and the
offset of the ECT from the first word following the Jump table.
At
the completion of its other processing EI-INIT calls the warm start
entry of the Jump table to initialize the transporter and start the
operation of the Emulator.

c

f

Allocated data in the file includes the Device Driver header and the
Emulator Communication Table, so the derived obJect file must be the
; first one seen by the linker.

;***********************************************************************
;

;***********************************************************************

(

ENDIF

;***********************************************************************
;

;***********************************************************************

I
+
+
+

t

•

+-

::: 0001

+
+ TRACE$
+
+
+-

+

I

+-

+
+-

+
+-

t

•

c

::::: 121001

+ DEBUG$
+
+
C+

(DR)
GEN ... START
.LALL
ENDIF
ENDIF
ENDIF
, (DEBUG)
1

ENDIF
ENDIF
INCLUDE PCSTRUC.CRV

••

•

••

f
The IBM Personal Computer MACRO Assembler 01-15-84

c-

C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+

«

(

(

PAGE

1-2

r

;*************************************************~.*********************
Filename is PCSTRUC.CRV
I
;

(

This file contains all structure definitions for the implementation
of the Corvus OMNINET PCShare Disk Server Emulator.
It is included
in each of the assembly files when the START macro is invoked.
The
selectors specified with that macro invocation cause the associated
structure definitions to be included in the assembly.
Any set of
; definitions can be included with an appropriate set of selectors.

(

;***********************************************************************
I

c·

;***********************************************************************

«

; Vers i '::;'Y'I :
2.0
;
Last Update:
14 January 1984
;

•

I
I

.-

;***********************************************************************
IF DR$
;----------------------------------------------------------------------Operating System Structures
;----------------------------------------------------------------------;

I

;------------------------------------------------------------------------

C

Structure Name: Device Driver Header
Reference: IBM PC DOS 2.0 Manual, page 14-5

I:

;

«

0000
0004
0006
0008
000A

FF FF FF FF
8000
0000
0000
50 43 53 40 48 4F
4F 4B

0012

DDH
Ndev
Attr
StrtY'1
OvrtY'1
Ovnme

STRUC
DD
DW
OW
OW
DB

DDH

ENDS

.'
.'

-1
8000H
0
0
' PCSMHOOK'

(

«

f

•
f

•

= 0080
.- 0001

0000
0001
0002
0003
0005

14
00
00
0000
08

[

00

J

C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+

(

Associated return status flag values
;
$RGlerr
$RGldurl

EGlU
EGlU

80H
1

;
;

The structure itself

RGlH
RGllen
RGlucde
RQopY'1
RQstat

STRUC
DB
DB
DB
OW
DB

20
0
0
0
8 OUP(0)

;Indicates an error
; Indicates completion of request

(

•
•

;Length of the RQ header plus data
;Unit code (N/A for char device)
;The command to be executed
;Return status placed here
;OOS uses this

I)

.'

(C
-<

~'.~'~.~~

c

t

•
f

The IBM Personal Computer MACRO Assembler 01-15-84

000D
000E
0012
0014

00
00 00 00 00
0000

r

•

=

0014

0000
0002
0004
0006
0008

I

f
f

•
«
C

•
(

1-3

f

•
•

PAGE

=

0000
= 0001
= 0000
0001
= 0060
0001

-

=
=
=
=

=

0021
0020
000B
0020
0001
0005
00FA

0000
0000
0000
0000

C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
c+
C+
C+
C+
C'+
C+
C+
C+
C·+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+

RQdta
DB
o
;Data always starts with byte
RQrtn
followed by buffer address
o
DD
RQct
followed by data count
DW
o
RQH
ENDS
;
ENDIF
;
IF (DRS OR EIS)
;----------------------------------------------------------------------Structure Name:
Emulator Access Table
Reference: Program Logic description, Sections 9.2 and 9.3
;-----------------------------------------------------------------------

I
(

(

(

Associated constant values
;

SPosKey EQU

20

;Offset to locate the keys

KEYS
KY - EC
KY - EXT
KY INT
KY - DTM
KEYS

0
0
0
0

;Place
;Place
;Place
;Place

,.

-

STRUC
DW
DW
DW
DW
ENDS

for
for
for
for

offset
offset
offset
Offset

to
to
to
to

f

ECT
external driver
interrupt driver
tiMer intercept

;

ENDIF
;----------------------------------------------------------------------Emulator Resident Data Structures
;----------------------------------------------------------------------Universal value definitions

(
(

;

EQU
STrue
SFalse EQU
EQU
SZero
EQU
SOne
SSKnum EQU
SVir Drv1 EQU

0
1
0
1
96
1

;Usually indicates OK or normal
;Usually indicates NG or unusual
;What is there to say
about these?
;
;Number of internal stack entries
;Value for Virtual Drive 1

~-----------------------------------------------------------------------

(

8259A PIC usage values
Reference: Intel 8086 User's Manual
;----------------------------------------------------------------------;

SP820p1 EQU
SP820p0 EQU

21H
20H

;Port for OCW1 commands
;Port for OCW2, OCW3 commands

0BH
20H

;Read Interrupt Service register
;Simple end of interrupt
;Timer interrupt level bit
;Transporter and timer levels
;Enable xporter and timer

(

;

SP82Ris
SP82Eoi
$P82TML
SP82EML
$P82enb

EQU
EQU
EQU
EQU
EQU

1

4+$P82TML
0FFH-$P82EML

;-----------------------------------------------------------------------

•

c

The IBM Personal Computer MACRO Assembler 01-15-84

C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+

=

0080
::::: 0040
= 0000
== 000A

= 0080
1Z1040
= 0020
== 00DF
= 0010
- 0004
-- 0002

::

•
t

:::::
:::::

-

=

f

C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+

- 0001

-

I

C-t··

000A
001B
001C
0021
00;:~3

0034
= 0066
:= 0067
::::: 0001
:::::

-

f

00CD
== 0001

0008
0008
.- 0004
=: 000A

-

0000

•

1. -,-4

(

Structure Name:
Emulator Communication Table
Reference: Program Logic description, Section 1.4
;-----------------------------------------------------------------------

;

•

Associated values and flags
;

EQU
$Corls
$CorlsPT EQU
$Att~Nrm EQU
$TickMX EQU

80H
40H
0
10

;Write messages to console
;Prompt for console at initialization
;Standard attributes of Emulator files
;Default timer tick refresh count

801-1
40H
20H

;Transporter interrupts installed
;Transporter to run enabled
;Transporter to run off timer tick
;Mask to clear timer tick on
;Prompt for interrupts at init
;Trace output tp hard disk
;Trace output to console
;Trace output to disk

;

$TBi rlt I
$TBrerlb
$TBt"tck
$TB)'"lotk
$TBinit
$TRChrd
$TRCcorl
$TRCdsk

EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU

0FFH-$TB1~t

ck

10H
4
'::;0
t.._

1

•
f

.,

Interl""upt vector number"s
;

$CaIIEM
$CaIICB
$CaIITK
$CallDS
$CalICA
$CallKR
$CallDI
$CallTM
$CallTP

EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU

0AH
lBH
lCH
21.H
23H
34H
661-1
67H
1

;Emulator interrupt
;Control_break has occurred
;Timer interrupt appendage
;D09 function call
;Control_break appendage
;Gets location In-DOS flag
; DOS i rlt eJ'''ce pt
;Timer appendage recall
;Tt"ap intel""rupt

0CDH
1

;Interrupt instruction code
;Position of trap flag in AH

;

$INT$
EQU
$TrapFL EQU

t

Field lerlgths

C·... ;

.-

•

PAGE

50 43 53 48 41 52
45 32
43

0008
000'3
01Z10A
000B
001ZIC
000D
000E

40
01
01
01
0064

~~i~

~~0~3 53 48 41 52

0-~

~

C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+

$$Dir
$$Nam
$$Next
$$Set"v

EQU
EQU
EQU
EQU

8
8
4
10

ECT
Ide)'"1

STRUC
DB

' PCSHARE2'

;Identifier of the version

EC_Dat

DB
DB
DB
DB
DB
DB
DW
DW

' C'
3
$Cc.nsPT
$False
$False
$False
100
0
' PCSHARE

;Drive for Emulator files (character)
;Same drive numeric
INEW FIELD!
;Flag for log output to console
;Trace active switch
INEW FIELDI
;Cold start completed
(NEW FIELDI
;Emulator terminated
INEW FIELDI
;Maximum number records in log file
;RRN for next log record
;Name of directory for Emulator files

EC_Dt~v

EC._Flg
Trce
Cold
EC_Trm
Max
Next
Dil'''

DB

(

,

••
f

•

(
The IBM Personal Computer MACRO Assembler 01-15-84

001A

(

0022

45 20
50 43
45 20
0A

0:::-7
;..)~,

48 41

[

20
J

f
I

002C
002D
002E
002F
0030
0031
el032
012133
012134
012136
0038
003A
003C
003E
0040

:::: 121066

I

012101
0002
:::: 0003
:::: 0004
:::: 012105
12101216
:::: 0007
0008
:::: 0009
:::: 000A
_. 000£1
- 000C
:::: 01210D
:::: 01210E
:::: 000F
:::: 0010
:::: 0011
0012
0013
0014
::::

::::

c

(

•

-

-

00
00
00
C0
0A
0A
01
1211
000121
012100
0000
1210121121
001210
0121121121

co-::.

;..)0;;"

C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+

PAGE

Nam

DB

'PCSHARE '

Set"v

DB

$$Serv DUP('

EC _At t~U DB
EC_Atr~S DB
EC_AtrL DB
EC_TBI DB
TLt mcl-<. DB
TLtmrs DB
KEEPout DB
INTdfl'~
DB
DOSd 1-<.0 DW
DOSdl-<.S DW
DDRH
DW
DDRHS
DW
TckO
DW
Tcl-<.S
DW
ECT
ENDS

1-5

;Filename for Emulator files
')

$AtrNl'~rn
$Atl'~Nt~m

$Atl'~Nl'~m

$TB i l"lt I +$TBt~el"lb
$TickMX
$TickMX
$False
$False

o

121

o
o

o
o

•

;Emulator name as a disk server

;Attributes of User area file
IN FI
;Attributes of System area files
IE I I
;Attributes of Log file
IW EI
1....1
;Transporter int flags
DI
;Current timer tick count
;Value to reset timer tick count
81
;DOS has been entered flag
;Deferred interrupt flag
;Holds location of DOS
; Critical section (In-DOS) Flag
;Holds location of request header when
;
Device Driver called
INEW FIELDI
;Holds location of timer tick int when
no transporter ints
INEW FIELDI

;----------------------------------------------------------------------Structure Name:
Log Request Block
Reference: Program Logic Description, Section 4.27
;-----------------------------------------------------------------------

(
(

:f

••

Associated values
;

$MAXMSG EQU

102

Log message

;Maximum message length
l"lumbet~s

;

$MND00
$MNT00
$MNT01
$MNT02
$MNT03
$MNT04
$MNT05
$MNT06
$MND01
$MND02
$MND03
$MND04
$MNT07
$MNT08
$MNT09
$MNT010
$MND05
$MNT011
$MND06
$MNT012

EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU

1

i=

;Initialization message

3
4
5
6
7
8
9
10
11

«
{

•

Ii.:::
13

14
15
16
17

«

1.8

19
20

(

;ORB missil"lg
;Bad pipes tables

,
•
t

The IBM Personal Computer MACRO Assembler 01-15-84

0000
0001
0002

-

0100
- 7FFF
= 0010
- 000A
= 01FE
= 00CF
= 0211

«

•
t

-

00B0
0080
= 0080
= 00B0
= 00A0

I

•
•
•

•
(

C+
C+
C+
C+
C+
C+

LRB
Cde
LR_Len
LRB
;
ENDIF

C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+

STRUC
DB
DB
ENDS

o
o

;Module ID code
;Length of the message string

IF (DR$ OR TL$ OR LC$)
;----------------------------------------------------------------------Transporter Usage Parameters
;----------------------------------------------------------------------;

$InitTA
$MaxDly
$MaxRty
$MaxWte
$ProID
$SndNAD
$MaxTBD

0000
0001
0002
0003
= 0010
= 00FF
=
=
=
=

0001
- 00FF

= 000A

C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+

EQU
EQU
EQU
EQU
EQU
EQU
EQU

100H
7FFFH
10H
10
01FEH
0CFH
529

;Initial transporter CCB address
;Max loop count for operation complete
;Maximum number operation retries
;Maximum wait time in seconds
;protocol identifier
;Invalid command for NAD reply
;Longest data transfer (w/o disk stat)

c
c

•

;----------------------------------------------------------------------Transporter Socket Usage Conventions
;----------------------------------------------------------------------;

$SokTD
$SokTM
$SokRM
$SokRC
$SokRL

EQU
EQU
EQU
EQU
EQU

0B0H
80H
80H
0B0H
0A0H

;To
;To
;To
;To
;To

transmit data
transmit an NLM
receive an NLM
receive initial command sequence
receive remainder of long command

;----------------------------------------------------------------------Structure Name:
Name Lookup Message
Reference: Program Logic Description, Section 2.2.3
;-----------------------------------------------------------------------

f

I

Associated message type codes (most significant byte)

C-+

=

•
•

00
00

~;

t

f

1-6

(

f

I

PAGE

;
$NLHi
$NLAny
$NLWho
$NLWhr
$NLIdn
$NLBye

EQU
EQU
EQU
EQU
EQU
EQU

o
1

2
3

10H
0FFH

;Hello
;Any disk server (old protocol)
;Who are you?
;Where are you?
;Identification
;Goodbye

c

Associated device types of interest to Emulator
;
$NLDsk
$NLDny

EQU
EQU

1

0FFH

;Disk Server
;AII Devices

(

Associated Name Length
;
$NameLN EQU

10

;Needed because STRUC is weak

The structure itself (arithmetic reverses byte order
for transporter memory storage)

•

•
(

(

•
(

•

•
,
•
•

•

The IBM Personal Computer MACRO Assembler 01-15-84

0000
0002
0004
0006
0008

FE01
0000
0000
0100
57 48 41 52
50 4~
45 20 20 20
~

0012

0000
0002
0004

•
C

STRUC
OW
OW
OW
OW
DB

NLM

ENDS

(
$ProID/256 + 256*($ProID AND 0FFH)
$NLhi
;Message Type
o
;Station Number of sender
256*$NLDsk
;Device Type
'PCSHARE
;Device or user name

c

;-----------------------------------------------------------------------

0000
0002
0003

0000
0001
0002
0003
0004

0000
0001
0002
0003
0004
0006
0008

RRRCV
Lofcm
ELofRp
RRRCV

0000
0000

0000
00

00
01
00
00

•
•
•

;

NLM
Pid
Mgt
Src
Dev
NL - Name

•«

;

•
t

1-7

(

f

«

C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+

PAGE

01
00
00
00
0000
0000
0000

C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
COT
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+

STRUC
OW
DW
ENDS

(

0
0

Structure Name: Send Reply control area
Reference: Corvus OMNINET Programmer' Guide
;----------------------------------------------------------------------;
RRSND
STRUC
ALofRp OW
;Actual length of reply (incl status)
o
Dstat
DB
o
;Disk status
RRSND
ENDS
;----------------------------------------------------------------------Structure Name:
Transporter Status Table Header
Reference: Program Logic description, Section 2.3
;-----------------------------------------------------------------------

f

t

(

•

;

TSTH
Int
TT_CI
NE
TT_NAD
TSTH

STRUC
DB
DB
DB
DB
ENDS

0
$False
0
0

;Interrupt depth indicator
;Command Interpreter invocation flag
;Number of entries in TST
;Network address of Emulator

;----------------------------------------------------------------------Structure Name:
Transporter Status Table Entry
Reference: Program Logic Description, Section 2.3
;----------------------------------------------------------------------;

TSTE
PN
TT ST
SK
TT OP
CCB
RR
c+ Dtl

-

STRUC
DB
DB
DB

DB
DW
DW
OW

$False
0
0
0
0
0
0

;ORB pending flag
;Status code from result record
;Socket to be used
; Transporter commmand
INEW USAGE I
; Transporter address of the CCB
; Transporter address of result record
; Transporter address clf data area

(

t

•
«

•
(

•

The IBM Personal Computer MACRO Assembler 01-15-84

(

000A
1l100C
000E
illiZI 10
0012
illiZI 14

c

IZt000
0000
0000
0000
0000

(

•
«

•
(

_.
:::::

0000
0001
00FF

-"

0080

_.

0000
01Z101
0002
111004
0006
III 0 IZI 8

00
00
0000
0000
0000

•
•
•

0000
0001
0002
0005
0006

00
00
0000
00
III 0
0000

0008
000A
000B

0000
00
00

01Z101.~

C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+

Dsz
Ist~
Ist~s

TT_Orb
TT_Ol"~bs

PAGE

1--8

;Length of data
;Offset address
;
Reserved for
;Offset address
Reserved for

DW
DW
DW
DW
DW
ENDS

area in bytes
of int service routine
segment address
of pending ORB
segment address

TSTE
;
ENDIF
;
ENDIF
;
IF (DRS OR TLS)
;----------------------------------------------------------------------Structure Name:
Command Request Queue Header
Reference: Program Logic Description, Section 2.5
;----------------------------------------------------------------------Associated queue status indicator values
;

SRQmt
SRQemt
SRQful

EQU
EQU
EQU

0
1
0FFH

; Quel_\e is empty
;Queue has eFltl"~ies but is Flot full
;Queue is full

EQU

80H

;Disk stat us

;

SRGldse

et~r~Ol"~

flag bit

CRQH
STRUC
Qst
SRQmt
DB
;Queue status indicator
Dsc
DB
o
;Current disk status code
Erld
o
;Offset address following CRQ
DW
Top
DW
o
;Offset address of head entry
Bc.t
;Offset address of tail entry
DW
o
CRQH
ENDS
;
END!F
;
ENDIF
;
IF (DRS OR TLS OR LCS)
;----------------------------------------------------------------------Transporter structures and associated values
;
Reference: Corvus OMNINET Programmer's Guide
;----------------------------------------------------------------------Transporter Command Control Block
;
CCBLK
STRUC
CC - Cmnd DB
DB
DW
RRA
Sc:.ck
DB
DB
CC ._. Data DW
DW
DatI
Cc.rll1'"1
DB
DB
DHclst

0
0
0
0
0
0
0
0
0

;Cc.mmand
;fill f.:::.r high addl"~ess byte
;addl""ess Result Recot~d
; sc.cket t.:. use
;fil1 fCIl"~ high addt~ess byte
;Data addr~ess
;Data length
; Corlt t~f.:' 1 leY'lgth
;DestinatiQn hf.)st (i f wl'~ite)

(

•
•
•

(

(

••

•
(

(

•
c

•
c

The IBM Personal Computer MACRO Assembler 01-15-84

000C

0000
12101211
0002
12101214

:::: 02 Lt9
'- 024B
:::: 0248
0248
'- 024A
:::: 024B
=:

•

:::: 0249
:::: 024C
:::: 024D
-

0i=:4E

- 024F

0080
:::: 002121
::: 001121
=:

f

:::: IZIIZ1IZt 8

f

c

•
•

:::: 0040
::: 00F0
:::: 012110
._- 121 0 2121
:::: 0001
- 0002

:::: 000121
0- 007F
:::: 0080
-- 0081
:::: 0082
:::: 0083
:::: 0084
:::: 0085
:::: 0086

FF
1210
0000

C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C-IC+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+

CCBLK

1--9

PAGE

ENDS
Transporter Result Record structure

;
RRKD
RC,::ode
SH,:,st
Rcv 1 erl
RRKD
;
;
$RdRAM
$RdRAMI
$RdStat
:;
$Wt"Ct 1'''H
$WrCt l""L
$Wt"RAM
;
$Wt"St be
;
$DiINT
$C1INT
$ErIINT
$StINT
;

STRUC
DB
DB
DW
ENDS

; Ret twn Code
;Source Host (if read, 0 write)
;Length data received (if read)

0FFH

o
o

(

Transporter port definitions

(

;::~48H

;To read without incrementing counter
;To read and increment counter
; To:, t'ead st at us

EGlU
EQU
EQU

248H
24AH
24BH

;To set high byte of counter
;To set low byte of counter
;To write data and increment counter

,

EQU

249H

;To strobe command address

EQU
EQU
EQU
EQU

;::~4CH

;To
;To
;To
;To

EQU
EQU
EQU

249H
24BH

24DH
i:::4EH
24FH

disable (disarm) interrupts
clear interrupt latch
enable (arm) interrupts
read interrupt status

,

.

(

Transporter Status Flags
;
$TRedy
$TRerlb
$TRprld
$TRlat
;

EQU
EQU
EGlU
EQU

;Transporter ready
;Transporter interrupts enabled
;Transporter interrupt pending
;Interrupt latch

80H
20H
10H
8

Transporter command codes
;
$Send
$Setup
$ErldRcv
$InitT
$WhoAmI
$Echo:,
;$PP
;

EQU
EQU
EQU
EQU
EQU
EQU
EGlU

; Serld message
;Setup to receive message
;End receive if no message
:;Initialize transporter
;Finds transporters NAD
;Test presence of specified
;Peek/Poke not used

40H
0F0H
10H
20H
011-1
02H
081-1

(

Transporter result codes
;
$Tt"OK
$TrST
$Tl""NG
$TrDL
$TrNS
$TrCL
$Tl""'IS
$TrNR
$TrIT

EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU

001-1
7FH
80H
811-1
821-1
83H
84H
85H
86H

;Command completed successfully
;Successful transmit retry maximum
;Transmit failure, retry count exceeded
;Data too long for receive buffer
.;Receiver's socket not set up
;Control length mismatch
:; Inval id s,:::,cket
;receive socket in use
;invalid transporter address

•

(
The IBM Personal Computer MACRO Assembler 01-15-84

= 00C0
.- 00FE

=

0040

= 00FF

= 0121FF

'- 0000
= 00FF

f
0000

00

012101.
001212

01
02

[

00
]

0004
0006
1211211218
000A
01Z10C
000E
012110
00:l.i2

•
•

•

0000
0000
0000
121000
0000
0000
0000

C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C·...·
C+
C+
C+
C+
C+
C+
C+
C+
C+

$Tl"~EA

$TrSS

0C0H
0FEH

1.-1.0

;Echo command acknowledged
;Receive socket setup successful

..
c

Transporter usage values
;
$NAD.:.k EQU
64
;First invalid NAD value
$AIINAD EQU
0FFH
;NAD for broadcast
$Tl""'SU
EQU
;Initialization value for result code
0FFH
;
ENDIF
;
ENDIF
;
ENDIF
;
IF (DM$ or DR$ or EI$)
;--------------------------------------------------------------------------Structure Name:
Input/Output Request Block
Reference: Program Logic Description, section 4.6
;--------------------------------------------------------------------------Associated completion codes
$SUCCESS EQU
$FAILURE EQU
;
IORB
IO_FLG
;
IO_Cls

NUM

C+ DSPM
C+ ADR
C ...··

C+ FCB
C+
C+ IORB
C+
C+ ENDIF
C+
C+ ENDIF
C+ ;
C+ ENDIF
C+ 1::::NDIF

•

I

o
0FFH

«

The structure itself

c·. . DSPL

C+

EQU
EQU

PAGE

STRUC
DB
0
DB
DB

$False
i::: DUP (0)

DW
DW
DW
OW
OW
DW
DW
ENDS

0
0

0
0
0
0
0

;FLAGS:
00-0PERATION SUCCESSFUL
FF-OPERATION NOT SUCCESSFUL
;Close file indicator
; RESERVED

;NUMBER OF 128 BYTE RECORDS
;RRN OF FIRST 128 BYTE RECORD LSB
;RRN OF FIRST 128 BYTE RECORD MSB
;ADDRESS OF BUFFER (OFFSET)
;ADDRESS OF BUFFER (BASE)
;ADORESS OF FCB (OFFSET)
;ADDRESS OF FCB (BASE)

.

•
•

•

(

•

PAGE

The IBM Personal Computer MRCRO Assembler 01-15-84

1-11

•

C+ ENDIF
C+
;

;***********************************************************************

(

;

Segment Usage Definition

;***********************************************************************
;

(

PCS

•
(

GROUP PC_CODE,PC_DRTA,PC_INIT
ASSUME CS:PCS,DS:PC_DATA,ES:PC_DATA

c

;***********************************************************************

(

;***********************************************************************

;

;

External Symbol Definitions

EXTRN
EXTRN
EXTRN
EXTRN
EXTRN
EXTRN
EXTRN
EXTRN
EXTRN
EXTRN

f

EXTI~N

I:

EXTRN
EXTRN
EXTRN
EXTRN
EXTRN
EXTRN
EXTRN
EXTRN
EXTRN

TT:BYTE
TTbgrl: BYTE
TTerld: BYTE
TrmNAD:BYTE
RcvICS:BYTE
RcvNLM:BYTE
Var"OP: BYTE
IDmsg:BYTE
MND001:WORD
IO:BYTE
TL_BYT_OUT:NEAR
TL_WRD_OUT:NEAR
TL_DTA_OUT:NEAR
TL_DO_CMND:NEAR
TL_SET_RECV:NEAR
TL_SEND_NLM:NEAR
DM_ERR_LOG:NEAR
TL_INT_DRVR:NEAR
TL __ INT _TEST: NEAR
TL_INT_DTME:NEAR

I

TST header"
;Initial non-local TST entry
;End of TST entries
;TST entry to send NAD
;TST entry for ICS receive
;TST entry for NLM receive
;TST entry for variable ops
;NL message image
;Initialization message insert
:; I rlt e)'''rla I I ORB
;Send byte to transporter
;Send word to transporter
;Send data to transporter
;Execute transporter command
;Set up to receive message
;Send an NL message
;Log routine
;Main interrupt driver
;Entry to hardware int driver
;Timer tick interrupt driver

(

lj

(

(

:;

;************************************************************************
(

;

0000

PC_CODE

0000

PC_START LABEL NEAR

SEGMENT

(

PUBLIC 'CODE'

;

t'

;For starting address

:;

;***********************************************************************

:;
;

(

Allocated Data:

Note that for this file only there is
data allocated in the code segment

I

(

'
"

;***********************************************************************

•

;----------------------------------------------------------------------Device Driver Header
0000
0004
012106
0008
01Z10A

FF FF FF FF
8000
0043 R
0050 R
50 43 53 4D 48 4F
4F 4'8

PCSH

DDH

;Offsets are to

device strategy

.'•

•

The IBM Personal Computer MACRO Assembler 1211-15-84

PAGE

1-12

(
and interrupt routines

c

•
(

1-

;----------------------------------------------------------------------Corvus Utilities Transfer Table
:::: 12112112
IZIIZ112 E9 1Z10E9
121015 0000
01Z117 E9 00E9
001A 0000
11101 C E9 00E6
001F 0000
0121;::: 1 E9 00E8
00 i.::: 4 0000
= 0026

R
R
R

R

;
UTIL_HOOK EQU THIS BYTE
JMP NEAR PTR UTIL INIT
UTIL_CS DW
0
JMP NEAR PTR UTIL_INIT
DW
0
JMP NEAR PTR UTIL_IO
DW
0
JMP NEAR PTR UTIL_DMMY
DW
0
UTIL_HEND EQU THIS BYTE

.-

iCold Start Entry
;
place for segment
;Warm Start entry
place for segment
;
;Entry to call I/O Services
;
place for segment
;Entry to dummy return
;
place for segment

(
(

f

;----------------------------------------------------------------------Structure with offsets to Key Emulator locations
NOTE:

c-

0026
0028
01Z12A
00i:::C

0000 R
000121
12112100
12100121

;
DDkeys

KEYS

f

This must immediately follow the UTIL_HOOK table
(OFFSET PCS:EC>

;Filled in from table values or

.,(

•

by driver initialization

f

•

;----------------------------------------------------------------------Device driver funct ior. dispatchir.g table

«

;

-

1Z11Z12E
002E 0094
003121 0086
01Z13i::: 0086
0034 0086
0036 00A7
121038 00BA
01Z13A 12112186
003C 00DE
01Z13E 00DE
= 0040

DDtl'~t

R
R
R
R
R
R
R
R
R
DDt t"'t e

EQU
DW
OW
DW
DW
DW
DW
DW
DW
DW
EQU

THIS WORD
DDinit
DDxit
DDxit
DDxit
DDUtil
DOUtib
DDxit
ODUfx
DOUfx
THIS WORD

(

;Device dt~ i vet~ i r.i t ia Ii zat i,:;.r,
;Media Check is r.ull
;Build BPB is null
; IOCTL r.ot suppot~ted
; Ir.put gets utility pClirlter
;ND Ir,put gets orle byte of ptr
; Input status is nClt busy
;Any 1:;'l..ltput resets the
ND Irlput byte pointer
;
;All others are null, so we
cut off the table here

•
(

C
f

;----------------------------------------------------------------------Data required for device driver functions

•

01214121
121042
0043

000121
01

;
DDUctr DW
DDIdl.trI DB
;
PC_CODE ENDS
;

0
$False

(

;Byte position next returned
;Driver initialization flag

C
t)

;***********************************************************************
;

Allocated data (Data Segment)

.,

I

;***********************************************************************

(

(
---.-.~-

..

(

•
c

•
•

The IBM Personal Computer MACRO Assembler 01-15-84

PC DATA SEGMENT PUBLIC 'DATA'
;
Dt a_Bgyol EQU
THIS BYTE

::::: 0000

1 -13
0

(
;Start of Data segment area

;-----------------------------------------------------------------------

(

Emulator Communication Table

0000
0008
000'3
1Z100A
000B
01Z1IZIC
000D
01Z10E
0010
ilM1.i:::
01Z1H~

I

PAGE

002i:::

5 III 43 53 48 41 52
"2-='
45 wL.
43
0.. ....?J
40
01
01
01
0064
0000
50 43 53 48 41 52
45 E:0
;:JC.
50 43 ...J~ 48 41 a:;:.-,
4:5 e0
0A (
e0

;
EC

ECT

<>

;STRUC values may be modified

(

000

(

(

C:'~

]

•

00i:::C
00eD
IZt0eE
0IZlf::F
0030
IlIIZl3 :l
01Z13i:::
01~~~33

(

«

•

121034
1ZtIZ136
0038
iZIIZl3A
003C
0031=.

.'

f

;----------------------------------------------------------------------Prototype cce for transporter initialization
0040
0121411Z1042
004L~

012145
0046
01Z148
00't(.:~

c

00
00
01Z1
C0
0A
0A
01010000
0000
0000
0000
0000
0000

IZIIZ14B

00
00
0000
00
00
0000
0000
00
00

;
Set1..lpT

CCBLK

;
004C

PCo_DATjC~

ENDS

<>

;Filled in by TL-INIT-TLD

•

.
'

c

f
The IBM Personal Computer MACRO Assembler 01-15-84

PAGE

1-14

f

f

(

;

;***********************************************************************

;

Device Driver and Corvus Utility Routines

I

;***********************************************************************
;

c

PC CODE

0043

SEGMENT

PUBLIC 'CODE'

;

;***********************************************************************
;Module name:

c

;Version:

Device Driver Routines

2.0

;

....
~

I
I
I
I

;Last Update: 23 December 1983
;

The Device Driver routines implement the installed device
driver functions required by PC DOS 2.0.

;Function:

c
(

(

•
f

DR-STR is the entry point to the device strategy routine
whiose only function is to save the location of the
request header.

•

DR-INT is the entry point to the device interrupt routine.
The INIT function carries out the Emulator cold start
procedure.
The two INPUT device functions return a
long pointer to the Corvus utility Jump table (which is
the UTILHOOK function).
All other device functions are
null operations.

(

f

;Procedure:

See individual routines

I

;Called by:

DOS using device driver protocol

•
•
•

;Routines called:

;

;Input:

EI-INIT

=

ES: (BX)

Location request header (PC-DEV-STR only)

;

;Output:

Modified request header (PC-DEV-INT only)

;

;Error procedures:

;Written by: R.B. Talmadge, Computer Technology Ltd

•
•
•
t
(

;

;Updates:

c

None

;***********************************************************************
DR_DEV DRVR

0043

(

1

None

;

«

•
•
•

f

PROC

FAR

;

DR_STR

0043
0043
0044
0047
004A
004E

56
BE 0038 R
2E: 89 lC
2E: 8C 44 02
5E

LABEL
PUSH
MOV
MOV
MOV
POP

NEAR
SI
;Get offset for
8I,OFFSET PCS:EC.DDRH ;address storage
CS:CSIJ,BX
;Save full 8088 address
of request header
C8:ESI+2J,ES
and return to caller
81

•
•

•
(

{

(
The IBM Personal Computer MACRO Assembler 01-15-84

(,

004F

PAGE

1-15

c

RET

CB
;

DR - INT

0050

LABEL

NEAR

;

(

:f

0050
0051
0052
1Z1053
0054
017.155
0056
017.157
0058
0059
0058
01215E
121060

;;;s,,_

1=.'.::,

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

Dta_Bgn
;Save registers and set environment
AX
BX
CX
DX
SI
DI
8P
DS
ES
AX,CS
BX,OFFSET PCS:Dta_Bgn
BX,1
BX,1
BX,1
BX,1
AX,BX
DS,AX
ES,AX
BP,SP

0064
012166
0068
006A
006C

56
57
55
1E
06
8C
BB
D1
D1
D1
D1
03
8E
8E
8B

006E
0072
0074

C5 1E 0038 R
32 E4
8A 47 02

LDS
XOR
MOV

BX,DWORD PTR EC.DDRH
AH,AH
AL, [BX J • RQc'pn

0077
0079
007C
007E
121081
0083

D0 C0
3D 0012
7D 08
BE 002E R
03 F0
2E: FF 14

ROL
CMP
JGE
MOV
ADD
CALL

AL,1
;Transfer table offset
AX,OFFSET DDtrte - OFFSET DDtrt
DDxit
;Exit if out of range
SI,OFFSET DDtrt
;Position to transfer
SI,AX
table entry and call
WORD PTR CS:[SIJ
function routine

00E.2

«

50
53
51

ENTER
PUSH
PUSH
PUSH
PUSH
PUSH
PUSH
PUSH
PUSH
PUSH
MOV
MOV
SHR
SHR
SHR
SHR
ADD
MOV
MOV
MOV

C8
0000 R
EB
EB
EB
EB
C3
D8
C0
EC

;

t
(

•
•
•

80 4F 03 01

008A
008B
008C
008D
008E
008F
0090
017.191
0092
0093

07
1F
5D
5F
5E
5A
59
5B
58
CB

OR
EXIT
POP
POP
POP
POP
POP
POP
POP
POP
POP
RET

DDxit:
+
+
+
+
+
+
+
+
+
+

c

f

f

;Get address of request header
and fetch operation code

Reentry point here for all device driver function routines.
The completion bit is set in the request header status field,
interrupts are turned back on, and the routine exits • .
0086

(

BYTE PTR [BXJ.RQstat,$RQdun
;Go back to caller
NOINT
ES
DS
BP
DI
SI
DX
CX
BX
AX

(

(:

(

;

0094

DR_DEV DRVR
;

-

ENDP

•

(

c

The IBM Personal Computer MACRO Assembler 01-15-84

PAGE

1-16

(
0094

(
Enter here for device driver initialization.
The EI - ONE
one-time initialization routine is called if it has not
previously been called.
The transporter is not initialized
by this routine.
It will be initialized by a call to either
of the UTIL_HOOK start entries (cold or warm).

(

c

;

(

0094
009A
009C

2E: 80 3E 0042 R 01
74 01
C3

DDinit: CMP
JE
RET

•

009D
00A0
00A6

E8 0000 R
2E: C6 06 0042 R 00

DDinil: CALL NEAR PTR EI ONE
MOV
CS:DDIdun,STrue
RET

C3

(

•

;Go do first time work
;Assure no return here
;Return from whence we came

-

;

00A7

1E

00A8
00AB
00AE
00B0

C5 7F 0E
BE 0012 R
89 ~~
8C 4D 02

00B3
00B4
00B9

IF
C7 4'7 12 0004
C3

DDUtil: PUSH

~~

DS

;Save segment

LDS
MOV
MOV
MOV

DI, [BXJ.RQrtn
SI,OFFSET UTIL_HOOK
[DIJ,SI
2[DIJ,CS

;Buffer address
;Offset of Jump table
;Store offset, then
segment address

POP
MOV
RET

DS
[BXJ.RQct,4

;Restore segment
;Set return count
and exit

Enter here for Non-destructive input function.
The caller
is returned one byte of the address of the utility transfer
table.
After four entries the progression starts over.

1

t

;If this is not the
first entry, do not
take any action

Enter here for the Input function.
The caller is sent
the full 8088 segmented address of the utility transfer
table as the first four bytes of the input buffer

t

I

CS:DDldun,SFalse
DDinil

;

(

«

;

00BA
00BF
00C2
00C5
00C7

2E: BB 0E 0040 R
B8 0012 R
F6 Cl 02
74 02
8C C8

DDUtib: MOV
MOV
TEST
JZ
MOV

00C9
00CC
00CE
00D0

F6
74
8A
88

DDUtic: TEST
JZ
MOV
DDUtid: MOV

0003
0004
0008
00DD

41
81 E1 0003
2E: 89 0E 0040 R

CX,CS:DDUctr
AX,OFFSET UTIL HOOK
CL,2
DDUtic
AX,CS

;Fetch current position
;Get offset or
Segment address

CL,1
DDUtid
AL,AH
[BXJ.RQdta,AL

;Position byte
to low order

;

•
c
I

•
•
(

(

C1 01
02
C4
47 0D

INC
ANO
MOV
RET

C3

CX
CX,3
CS:DDUctr,CX

(
(
(

t
f
f
f

(
(

•
(

;Store byte in request hdr
;increment to next
;
position modulo 3
;Store new value
and exit

(

Enter here for any output function.
The Non-destructive input
position indicator (field DDUctr) is set to zero.
00DE

2E: C7 06 0040 R 0000

DDUfx:

MOV

CS:DDUctr,0

;Fix up

•
{

-

t

•

•,
•

~..

The IBM Personal Computer MACRO Assembler 01-15-84

PAGE

1-17

r
00E5

C3

RET

and exit

(

;

DR_DEV_FNS

00E6

ENDP

;***********************************************************************
;Module name:

Corvus Utility Routines

I
I

:;

;Version:

2.0

(
(

;

«

;Last Update: 7 December 1983
;Function:

•

The Corvus Utility routines are called by those Corvus
Corvus routines that require access to the Local Command
110 services.

f

UTIL_IO executes the proper interrupt to call the Local
Command service, and exits on return

f

UTIL INIT call TLD initialization to do a warm start

f

c

UTIL_DMMY does nothing
;

t

; Procedure:

See Program Logic Description, Section 8.1

;

I

;Called by:

Corvus utilities

•

;Routines called:

TL-INIT-TLD

;

;Input:

Registers data as required by Local Command 110

{

;

;Output:

Register data set by Local Command 110

;

;Error procedures:

•

None

;

;Written by: R.B.

Talmadge, Computer Technology Ltd

f

;

;Updates:

None

;

;***********************************************************************

f

;

00E6

DR DEV_UTIL
;

f

00E6

•
•
•
•

00E6

(

UTIL - 10
CD 0A

UTIL DMMY

-

CB

UTIL INIT
IE
06

FAR

NEAR
$CaIIEM

LABEL

+
+

(
;Call the Emulator

NEAR

RET

00E9
00E9
00EA

LABEL
INT

00E8
00E8

PROC

-

;Exit
LABEL

ENTER
PUSH
PUSH

NEAR
Dta_Bgn"Noregs
OS
ES

;Set environment

•
•

{

c

The IBM Personal Computer MACRO Assembler 01-15-84

00EB
IZl0ED
ellZlF0
IZt0F2
00F4
00F5
00F8
00FA
01Z1FC

8C
BB
D1
D1
D1
D1
03
8E
8E

00FE

E8 013C R

.(

0101
0103
tZI105
0108
010D
010F
0I1i:::

0A
75
B8
80
7E
B8
A3

'.

011::)
0115
0118
011B

50
B0 IZiI
E8 IZl000 E
58

IZlltC
0111)
IlII1E

07
1F
CB

•
c

f

C8
0000 R
EB
EB
EB
EB
C3
D8
C0

C0
0(~

4B4F
3E 000:3 E 40
03
474E
IZl000 E

MOV
MOV
SHR
SHR
SHR
SHR
ADD
MOV
MOV

+
+
+
+
+
+
+
+
+

;
INIxt:

+

+
+

1Z111F

1-18

AX,CS
BX,OFFSET PCS:Dta_Bgn
BX,1
BX, 1
BX,1
BX, 1
AX,BX
DS,AX
ES,AX

CALL NEAR PTR TL_INIT_TLD

OR
JNZ
MOV
CMP
JNG
INIxt0: MOV
INIxt1: MOV
LOG
+
PUSH
+
MOV
+
CALL
+
POP

I

PAGE

EXIT
POP
POP
RE1UTIL INT_TEST

(

;Initialize the TLD

AL,AL
;Indicate NG if transporter
INIxt0
;
not enabled with clear latch
AX,'KO'
;Test value of transporter NAD
TT.TT_NAD,$NADok
INIxt1
AX, , GN'
MND00l,AX
;Set message accordingly
$MND00
and output the message
AX
AL,$MND00
DfYl_ERR_LO(3
AX
NOINT
ES
DS
LABEL

(

••

;Return to caller

NEAR

;----------------------------------------------------------------------Enter here to call the TL_INT_DRVR at its primary interrupt

•

(

entry point TL_INT_TEST.
The call will invoke the main loop
of the interupt driver so that the Emulator can be run as a
subroutine rather than as an interrupt driven device routine.

•
'(

;-----------------------------------------------------------------------

•
•
•
I
(

011F
0121Z1
12112:1.
0:L23
0125
0:L28
0:L2A
0:L2C
012E
ill 130

IE
06
8C
BB
D1
D1
D1

C8
121000 R
EB
EB
EB
D:I. EB
03 C3

0:1.3c~

8E D8
8E C0

0134
121135
1Z1138

FA
E8 0000 E
FB

+

+
+
+
+
+
+
+
+
+
+

ENTER
PUSH
PUSH
MOV
MOV
SHR
SHR
SHR
SHR
ADD

MOV
MOV
CLI
CALL
STI

Dta __ BgYI, ,Nc'"r"egs
DS
ES
AX,CS
BX,OFFSET PCS:Dta_Bgn
BX, 1
BX,1
BX, l.
BX, :I.
AX,BX
DS,AX
ES,AX

TL_INT_TEST

; Set env i rOYlmeYlt

(

f

;Disable interrupts
;Call the interrupt driver
;Assure interrupts enabled

c·•.'·

(

«

PAGE

The IBM Personal Computer MACRO Assembler 01-15-84

c
(

0139
013A
013B

•

013C

07

IF
CB

EXIT
POP
POP
RET

+
+
+

NOINT
ES
DS

1-19

f

;Return to caller

(

;

DR DEV - UTIL

ENDP

;

;***************************************************** ***.~**************

f

;Module name:

•
•

;Version:

TLD initialization (TL-INIT-TLD)

I

c

2.0

;

f

;Last Update: 15 January 1984
;Function:

The TLD initialization routine is one of the routines
which comprise Emulator initialization.
Its task is to
set up transporter memory and the TST, initialize the
transporter, start transporter interrupts, and start
reception of commands and Name Lookup messages.

•
·1·

l

;

•
t

;Procedure:

Program Logic Description, Section 2.8

;Called by:

EI-INIT

•

;

;Routines called:

TL-DO-CMND

;

;Input:

(

None

;

;Output:

CAL) = Successful completion indicator

;

t

;Error procedures:

None

;

;Written by: R.B. Talmadge, Computer Technology Ltd

1

;

;Updates:

(

,

None

;***********************************************************************
;

013C
013C

•

TL_INIT_TLD
FA

PROC

NEAR

CLI

(
;Disable 8088 interrupts

The first step is to disable transporter interrupts
if interrupts are installed on the board
013D
0142
0144
0147

F6 06 002F R 80
74 04
BA 024C
EE

•

TEST
JZ
MOV
OUT

EC. EC_TBI, $TBintI
ITLgo
;If transporter interrupts
DX,$DiINT
installed, disable
DX,AL
interrupts

Next, the CCB and RR images and all constant data are
inserted into transporter memory
;

0148

SF 0000 E

ITLgo:

MOV

DI,OFFSET TTbgn

;Starting offset of TST entries

(

•

•
(

The IBM Personal Computer MACRO Assembler 01-15-84

PAGE

1-20

f
;

•

•
I

MOV
MOV
MOV
MOV
MOV
MOV
XCHG
MOV

SI,OFFSET SetupT
AL, [DI J. TT._OP
[S I J. CC_Cr.' ..... d, AL
AL, [Dn. SK
(S I J • Se.ck., AL
AX, (DI J. Dsz
AL,AH
[S I J. Dat 1, AX

;Starting offset CCB image
; Opel'~at ie...... code
;
te. CCB image
; Socket .......\mbel'~
;
te. CCB image
;Now data length in reverse
byte order (as are all two
byte quantities for xporter)

8B 45 06
86 C4
89 44 02
8B 5D 08
86 FB
89 5C 06

MOV
XCHG
MOV
MOV
XCHG
MOV

AX, [Dn. RR
AL,AH
(Sl]. RRA, AX
BX, (Dn. Dt 1
BH,BL
(SIJ.CC_Data,BX

;Next the
resu It rece.rd
;
address
; The ..... the
Data address

0171
0173
0175
0177
017A

86
86
2B
83
88

XCHG
XCHG
SUB
SUB
MOV

BH,BL
AH,AL
BX,AX
BX,TYPE RRKD
(SI]. Cc'nl ..... , BL

;Compute user control
al'~ea le ..... gth
;Store into CCB image

017D
018121
121183

B9 000C
88 5D 04
E8 0000 E

MOV
MOV
CALL

CX,TYPE CCBLK
BX, [DIJ.CCB
TL_DTA (JUT

;Set size of CCB
;Fetch address of CCB
;Insert CCB image into xporter

0186
018'3
018C

8B 5D 06
8A ':~D 01
E8 0000 E

MOV
M(JV
CALL

BX,(DILRR
CL, EDIJ.TT_ST
TL BYT _.OUT

;Initialize result code
to be equal to value
....'c'w i..... TST ent ry

018F
0192
0196

83 C7 14
81 FF 0000 E
72 83

ADD
CMP

DI,TYPE TSTE
D I, OFFSET TTe ..... d
ITLlp

;Position to next TST
entry and go back
to process if not done

014B
121 14·E
0151
0153
,z1156
0159
015C
015E

BE
8A
88
8A
88
8B
86
89

0161
1Z1164
0166
0169
IZt16C
016E

0040 R
45 03
04
45 02
'+4 04
45 0A
C4
44 08

FB
E0
DB
EB 04
5C 0A

ITLlp:

JB

•
c

•
(

:1

•
(

Initialize data area for reply to NAD requests

'.

· ,

(

0198
01'3C
019F
12I1A1
01A4
01A7
01AA
01AC

8B
83
8D
B9
EB
8D
B1
E8

36 0006 E
C6 04
1C
0001
0000 E
5C 0i::~
CF
01211210 E

MOV
ADD
LEA
MOV
CALL
LEA
MOV
CALL

SI, Tl'~mNAD. RR
SI,TYPE RRKD
BX, (SIJ.ALofRP
CX,1
TL_WRD_OUT
BX, [Sn. Dstat
CL, $S ....,dNAD
TL_BYT_OUT

;Compute location of User
;
Control area for TrmNAD
;Position to reply
le ....";}th a ..... d se ..... d
;
to transporter
;Position to disk status
and send invalid command
;
to transporter

•
(

Initialize the transporter and save Emulator NAD

•
•

01AF
01B3
01B7
01BA
01 BD

88
8B
EB
Ai:::
A2

IE 0006 E
0E 0004 E
12100121 E
012103 E
001215 E

MOV
MOV
CALL
MOV
M(JV

BX,VarOP.RR
;Fetch transporter addresses
CX,VarOP.CCB
for variable operation CCB
TL_DO_CMND
and go initialize transporter
TT.TT_NAD,AL
;Save NAD in TST header
BYTE PTR IDmsg.Src+1,AL
;and NL message image

Enable transporter interrupts if installed and if board

•

.'•
(

The IBM Personal Computer MACRO Assembler 01-15-84

PAGE

1-21

c
is t c' rurl el'"labled

«

•

01C0
I2I1C3
01C5
01C7
01C9

A0
A8
74
A8
74

IZl02F R
BI2I
18
40
14

01CB
01CD
01CF
01Dl
01D4
01D5
III 1 D8
01.D9
01DC
01DD

E4
24
E6
BA
EE
BA
EE
BA
EC
24

i.::: 1
FA
21
024E

MOV
TEST

JZ
TEST

JZ
IN
AND
OUT
MOV
OUT
MOV
OUT
MOV
IN
AND

024D
024F
28

I

Stat. . t
01DF
01E0
01E3
01E5

50
BE 0000 E
B0 01
E8 0000 E

01E8
01EB
01ED

BE 0000 E
B0 01
E8 0000 E

;
ITLp0:

AL,EC.EC_TBI
AL, $TBi rlt I
ITLp0
AL, $TBt~el'"lb
ITLp0

;Fetch t

AL,$P82op1
AL, $P82el'"lb
$P82.:)p 1, AL
DX, $El'"IINT
DX,AL
DX,$CIINT
DX,AL
DX,$StINT
AL,DX

;Fetch 8259A i l'"lte\'~\''''upt
al'"ld el'"lable the level
fc.r the trarlspot~tet"
;
;Fetch port l'"lumber
arid sel'"ld the el'"lable
;
; Assut"'e the i Y'lt ert~upt
latch is cleat"
;
;Now fetch status
of t rarlsport et'"

; DC'l'"I' t

\'~al'"lspot~t et~

t~

erlable if l'"IC.t

Ul'"1 type
irlstalled

c,r if nc.t t c. rUY'1 enabled

«
(
(
(

AL,$TRenb+$T~lat

"''''ecept iorl .:)f messages

PUSH
MOV
MOV
CALL

AX
SI,OFFSET RcvICS
AL,$False
TL SET RECV

;Save tl''''arlsporte ...'' status
;Set offset TST eY'ltt... y rcs l''''eceive
set for rio ORB,
;
t"equest start of recept i.:)\",

MOV
MOV
CALL

SI,OFFSET RcvNLM
AL,$False
TL SET RECV

;Set offset TST eYltry NLM t"'ecei ve
set fot... YIO ORB,
;
l''''equest sta ...... t e.f ...~ece pt i ':)YI

-

-

(

Send out a 'Hello' Name Lookup message, then reset the
NL message image to send Identification messages

I

•

•
t',

•
•
••

•
C'

01F0
01F3
01F6
01F9
01FA

BE 0022 R
BF 0008 E
B9 000A
FC
F3/ A4

MOV
SI,OFFSET EC.Serv
DI,OFFSET IDmsg.NL_Name
MOV
CX, $$Sel'~v
MOV
CLD
REP MOVSB

01FC
01.FE
0~::01

B1 FF
BE 0000 E
EB 0000 E

MOV
MOV
CALL

CL,$AIINAD
SI,OFFSET IDmsg
TL_SEND_NLM

0i204
0i207

B8 0010
A3 0002 E

MOV
MOV

AX, $NLldYI
IDmsg.Mgt,AX

020A
020F
0210

C6 06 000C R 00
58
C3

MOV BYTE PTR EC.Cold,$True
;Indicate cold start over
;Fetch transporter status
POP
AX
RET
;And that's all there is to do

121211
0211

;Fetch Emulator name
ft~':lm ECT t c.
the NL message image

;Use broadcast NAD
;
and NL message image
;Send 'Hello' and start
NL message reception

(

;Reset for Iden message

;
TL_INIT_TLD ENDP
;
PC_CODE ENDS
;

;***********************************************************************

••
••

•e.

The IBM Personal Computer MACRO Assembler 01-15-84

;
;
;

.-

•
(

I

PAGE

1-22

This is the entry point for the first time initialization
procedure.
This code is contained in the special segment
PC_INIT, which is deleted by PC DOS after return from driver
initialization.

;***********************************************************************
;

0000

PC_INIT

SEGMENT

MEMORY 'LAST'

••

;

0000

EI_ONE

PROC

NEAR

Set code segment value into UTIL_HOOK Jump table
and offsets into DDkeys table for EI-INIT
0000
0003
0006
0009
000C
000E

BE 0015 R
BF 0026 R
2E: 8C 0C
83 C6 05
3B F7
7C F6

0010
0017

2E:
2E:
2E:
2E:

0fZlIE

0025

C7
C7
C7
C7

06
06
06
06

MOV
MOV
EI - ins: MOV
ADD
CMP
JL

.,

0026 R 0000 R
0028 R 011F R
002A R 0000 E
002C R 0000 E

t

SI,OFFSET UTIL_CS
;First locat iOYI
DI,OFFSET UTIL_HEND
; EYld location
CS: (SI), CS
; IYlsert segmeYlt vall..,e
SI, «TYPE UTIL_CS) + OFFSET UTIL_CS - OFFSET UTIL_HOOK)
SI,DI
EI ins
;Back if nc.t done

.-

-

MOV
MOV
MOV
MOV

CS:DDkeys.KY_EC,OFFSET PCS:EC
CS:DDkeys. KY_EXT, OFFSET UTIL - INT_TEST
CS:DDkeys. KY_INT, OFFSET TL - INT_DRVR
CS:DDkeys. KY_DTM, OFFSET TL INT_DTME

-

;

;ECT
;Call HW drvr
; IYlt Drvr
;Timer iYlt

Move end location into request header for return
information to DOS

:1
rl

002C
0031

C7 47 0E 0000 R
8C 4F 10

MOV
MOV

0034

C3

RET

WORD PTR (BX).RQrtn,OFFSET PCS:EI_ONE
WORD PTR 2CBX).RQrtn,CS
;Return from whence we came

0035

«

•
•
:1

•

0035
;

;***********************************************************************
;

End of the Assembly housekeeping goes here

I

;***********************************************************************

.,

PUBLIC
PUBLIC
END

EC
Dta_BgYI

(

;Emulator Communication table
;Start of Emulator Data area

•
c·

(

(

(

•

The IBM Personal Computer MACRO Assembler 01-15-84

•

•
I

SYralbols-1

c
I

N a ral e
COIYJPARE.
DISABLE. "
ENABLE" •
ENTER. .
EX IT • •
EYE. • •
FILLIT
F IV. • • " •
GEN_START. • • •
LOG. • • . • • •
MOVEB. . .
MOVEONE. .
RESTORE. • • • • • • • • • • " •
SCANB. •
SELEXIT • • • • •
SELREST. • • • • . • . • • •
SELSAVE. . "
SIVa •
START • •
STATUS.
TENTER.
TEX IT. •
TIME • •
TRACE. •
"

f

PAGE

•

•

•

•

•

. ..

"

•

u

. . .

000F
0003
0003
0013
0007
0001
0011
0002
0002
0005
000F
000E
0001
0012
0002
000D
0018
0003
001A
0001
0003
0002
0001
0009

f

I

Structures and records:

:1

(

N a m e

CCBLK. • •
CC_CMND.
RRA. • •
SOCI-{ • •
CC_DATA.
DATL • •
CONLN.
DHOST.
CRQH • • •
QST. • •
DSC. • •
END. • •
TOP.
BOT.
DDH.

•
(

" •

NDEV •
ATTR •
STRTN.
DVRTN.
DVNME.
ECT. • •
IDEN •

.

•
•
• • •
•

•
•
•
•
•

• •
•
. • . . • • •
• • • • •

. . . .

•

•

• • • •
• • • • • •
• • • •
•
•
•
•

"

.....

Width
Shift

*"

000C
0000
0002
0004
0006
0008
000A
000B
0008
0000
0001
0002
0004
0006
0012
0000
0004
0006
0008
000A
0040
0000

0009

fields
Width
Mask

IYlitial

0005

0005

001A

«

The IBM Personal Computer MACRO Assembler 01-15-84

PAGE

Symbols-2

t
EC DRV • • • •
EC:FLG
TRCE • • .
COL.D •
EC_TRM
MAX. •
NEXT •
DIR. .
NAM. •
SERV •
EC

.,

D:PCSCHI

.L.ST Canceled by operator

0008
000'3
000A
000B
000C
000D
000E
0010
0012
001A
0022

t

C

«

'.
f

t
I

I

I
I

t

t

«

(

(
(

t'
f

f
(

•
•

•
•
•

.'

The IBM Personal Computer MACRO Assembler 01-15-84

PAGE

1-1

(

«

;

PAGE 60,132
;

;***********************************************************************
;

Filename is PCSCH2A.ASM

I

;***********************************************************************

•

This file is the first of two which contain the code for all of the
routines described in Sections 2.1 through 2.7 of the Program Logic
Description, OMNINET PCShare Disk Server Emulator, Version 2.0, dated
7 November 1983.
The file also contains allocation statements for
; data structures managed by the Transporter Logical Device.

I
I
I
I
I

«
(

;***********************************************************************
ENDIF
;

•

;***********************************************************************
+
+

'I.

+

...

-- 0001

«
t

+
+ TRACE$
+
+
...
+
...
...
...
+

...

1

•
•,

:::: 0001

+ DEBUG$
+
+

C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+

GEN_START
(TL>
.LALL
ENDIF
ENDIF
ENDIF
(TRACE}, (TRACE}
IFIDN
::::
1
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
IFIDN

::::
1
ENDIF
ENDIF
INCLUDE PCSTRUC.CRV

;TLD

stt~uctures

•
f

;***********************************************************************

;

f

Filename is PCSTRUC.CRV

(

I

;***********************************************************************

This file contains all structure definitions for the implementation
of the Corvus OMNINET PCShare Disk Server Emulator.
It is included
; in each of the assembly files when the START macro is invoked.
The
; selectors specified with that macro invocation cause the associated
structure definitions to be included in the assembly.
Any set of
; definitions can be included with an appropriate set of selectors.

I
I
I

;***********************************************************************
;
; Vers i ':)1"1:

(

I

I

2.0

; Last Update:
:;

14 January 1984

-***********************************************************************

ENDIF

•
(

c

•

(
The IBM Personal Computer MACRO Assembler 01-15-84

f
== 0000

t.

==
==
==
==

==

0001
0000
0001
006121
0001

•
I
,(

f

I:'

== 0021
== 0020

==
==
==
==
=

000B
0020
0001
0005
01Z1FA

f

,t
(

f
.(
(

C

•
C'
(

== 0080
== 0040
== 0000
== 000A

=
==
=
==
=
==
=
=

0080
0040
0020
01Z1DF
001121
0004
0002
01211211

== 000A
== 001B
== 001C

C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+

PAGE

1-2

ENDIF

'0

;----------------------------------------------------------------------Emulator Resident Data Structures
;-----------------------------------------------------------------------

f:

Universal value definitions
;

EQU
$True
$False EQU
$Zero
EQU
EQU
$One
$SKl"lum EQU
$Vir Drv1 EQU

-

0
1
0
1
96
1

;Usually indicates OK or l"lormal
;Usually indicates NG C·t~ Ul"luslJal
;What is there to say
abc.ut these?
;
;Number of internal stack. el"ltries
;Value fc.r Virtual Drive 1

;----------------------------------------------------------------------8259A PIC usage values

(

f

Reference: Intel 8086 User's Manual

;----------------------------------------------------------------------;
$P820p1 EQU
$P820p0 EQU

21H
20H

;Port for OCW1 commands
;Port for OCW2, OCW3 commands

$P82Ris
$P82Eoi
$P82TML
$P82EML
$P82el"lb

0BH
20H

;Read Interrupt Service register
;Simple end of interrupt
;Timer interrupt level bit
;Transporter and timer levels
;Enable xporter and timer

EQU
EQU
EQU
EQU
EQU

1

4+$P82TML
0FFH-$P82EML

;

(

;-----------------------------------------------------------------------Structure Name: Emulator Communication Table
;
Reference: Program Logic description, Section 1.4
;----------------------------------------------------------------------;
;
Associated values and flags
;
EQU
$CC'l"IS
80H
;Write messages to console
$ConsPT EQU
;Prompt for console at initialization
40H
$AtrNrm EQU
0
;Standard attributes of Emulator files
$TickMX EQU
10
;Default timer tick refresh count
;
$TBintI EQU
80H
;Transporter interrupts installed
$TBrel"lb EQU
40H
;Transporter to run enabled
$TBrtck. EQU
20H
;Transporter to run off timer tick
$TBnotk. EQU
IZIFFH-$TBrtck
;Mask to clear timer tick on
$TBinit EQU
10H
;Prompt for interrupts at init
$TRChrd EQU
4
;Trace output tp hard disk
$TRCcon EQU
2
;Trace output to console
$TRCdsk EQU
1
;Trace output to disk
;
;
$CaIIEM
$CaIICB
$CaIITK

,
(

(

Interrupt vector numbers
EQU
EQU
EQU

0AH
1BH
1CH

;Emulator interrupt
;Control_break has occurred
;Timer interrupt appendage

••

(

(

•
•

c.

•

The IBM Personal Computer MACRO Assembler 1211-15-84

(

=
==
==
==
==
==

121121;::1
12112123
12112134
12112166
12112167
1211211211

=

1Z1I21CD
== 1211211211

::: 1211211218
== 01211218
== 1211211214
== 121 121 121 A

12112100

•

12101218
12101219
000A
000B
121 0121 C
1210 121 D
1Z100E
001121
012112
01211 A

•
I

«

•
t

•

•
f

1-3

PAGE

012122

50 43 53 48 41 52
45 32
43
03
40
01
1211
01
006i~

121000
5121 43 53 48 41 52
45 i:::0
50 43 53 48 41 52
45 20
0A (
20
J

01212C
002D
01212E
01212F
003121
121031
12103;:::
0033

12112134
0036
12112138
1Z11Z13A
003C
01213E
12112140

00
00
00
C0
121 A
121 A
1211
1211
1210121121
0121121121
121121121121
1211210121
0000
121121121121

C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+

$CallDS
$CallCA
$CallKR
$CalIDI
$CallTM
$CallTP

EQU
EQU
EQU
EQU
EQU
EQU

21H
23H
34H
66H
67H
1

;DOS funct iO)'"1 call
; Co::or,t ro 1_ 1:H'~eak appendagc.,?
;Gets lClcat iO)'"1 I)'"I-DDS fli:\g
;DOS i )'"It et~cept
; Timet~ appendage t~ec:all
; Tt~ap i )'"ltet~loo'upt

EQU
EQU

0CDH

; I )'"It et~\"~upt ir,st\"~uct io)'", code
; PI:IS i t i 0)'"1 l::rf t\"~ap flag i yo, AH

;

$INT$
$Tt~apFL

1

Field le)'",gths
;
$$Di t~
$$Nam
$$Next
$$Serv

EQU
EQU
EQU
EQU

;
ECT
Iden

STRUC
DB

;,-

8

8
4

1121

, PCSHARE2'

;Identifier of the version

, C'
3

EC_Flg
Trce
Cold
EC_Tnn
Max
Next
Dir

DB
DB
DB
DB
DB
DB
DW
DW
DB

$C';::')'"lsPT
$False
$False
$False
11210
'PCSHARE '

;Drive for Emulator files (character)
;Same drive numeric
INEW FIELDI
;Flag for log output to console
;Trace active switch
INEW FIELDl
;Cold start completed
INEW FIELDI
;Emulator terminated
lNEW FIELDI
;Maximum number records in log file
;RRN for next log record
;Name of directory for Emulator files

Nam

DB

'PCSHARE '

;Filename for Emulator files

Se\"~v

DB

$$Serv DUP('

EC_Dat
EC_Dt~v

EC_AtrU DB
EC_Att~S DB
EC_Att~L DB
EC_TBI DB
TLtmck DB
TL.tmrs DB
KEEPc.ut DB
INTdfr DB
DOSdkO DW
DOSdkS DW
DW
DDRH
DDRHS
DW
TckO
DW
DW
TckS
ECT
ENDS

121

')

;Emulator name as a disk server

IN FI
;Attributes of User area file
IE I I
;Attributes of System area files
IW EI
;Attributes of Log file
$AtrNrm
LI
I
;Transporter
int
flags
$TBir,t I+$TBrer,b
01
;Current timer tick count
$TickMX
SI
;Value to reset timer tick count
$TickoMX
;DOS
has
been
entered
flag
$False
;Deferred interrupt flag
$False
;Holds
location of DOS
121
;
Critical
section (In-DOS) Flag
o
;Holds
location
of request header when
121
;
Device
Driver
called
INEW FIELDI
121
;Holds
location
of
timer
tick
int when
o
no
transporter
ints
INEW
FIELDI
o

I.

f

t.

$AtrNt~m

$AtrN\"~fIl

;----------------------------------------------------------------------Structure Name: Log Request Block

•
•

(-

The IBM Personal Computer MACRO Assembler 01-15-84

PAGE

1-4

I

t

= 0066

(
= 0001
:::: 0002
:::: 0003
:::: 0004
= 0005
:::: 0006
:::: 0007
0008
= 0009
= 000A
= 000B
:::: 000C
:::: 000D
._. 000E
:::: 000F
--_. 0010
0011
.- 0012
:::: 0013
0014

.-

•

-

I

0000
012101
0002

.(

•
00FF
... 0000
= 0001
- 0002
:::: 0003
:::: 0004
= 0005
:::: 0006
= 0007
::::

I

(

00
00

C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C·IC+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+

Reference: Program Logic Description, Section 4.27
;----------------------------------------------------------------------;
Associated values
;
;Maximum message length
$MAXMSG EQU
102
;
Log message numbers
;
;Initialization message
1.
$MND00 EQU
....0::.
$MNT00 EQU
$MNT01 EQU
3
$MNT02 EQU
4
$MNT03 EQU
5
E,
$MNT04 EQU
7
$MNT05 EQU
$MNT06 EQU
8
'3
$MND01 EQU
$MND0;::~
EQU
10
11
$MND03 EQU
12
$MND04 EQU
$MNT07 EQU
13
14
$MNT08 EQU
$MNT09 EQU
15
16
$MNT010 EQU
$MND05 EQU
17
$MNT011 EQU
18
;ORB missing
$MND06 EQU
19
;Bad pipes tables
20
$MNT012 EQU
;
STRUC
LRB
;Module ID code
o
Cde
DB
;Length of the message string
o
LR_Lerl DB
LRB
ENDS
;
IF CTL$ OR CIS OR DM$ OR LC$)
;----------------------------------------------------------------------Structure Name:
Operation Request Block
Reference: Program Logic Description, Section 2.2.1
;----------------------------------------------------------------------Associated completion codes

(

(

.(

•

;

$OPi rip
$OPcrle
$OPi rll
$OPtrb
$OPtto:)
$OPtdf
$OPtng
$OPttf
SOPtcl

EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU

0FFH
0
1
2
3
4
c'

;;;:J

6
7

The st l"~uct t.n"e itself
;

;Operation in progress
;Completed without error
;Completed, incorrect length
;Terminated, invalid ORB
;Terminated, receive time-out
;Terminated, invalid data format
;Terminated, transmission failure
;Terminated, transporter failure
;Terminated, control length mismatch

«

•
•

•

•
(
t

The IBM Personal Computer MACRO Assembler 01-15-84

0000
0001
0002
0004
0006
0008

«
t

•

1-5

(

•
f

PAGE

FF
00
0000
0000
0000

C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+

ORB
STRUC
;Completion Code
$OPinp
CC
DB
;Operational parameter
OP
o
DB
Sze
DW
o
;Number of bytes of data
RB_Data DW
o
;Offset of data
RB_Datas DW
o
;Reserved for segment address
ORB
ENDS
;
ENDIF
;
IF (DR$ OR TL$ OR LC$)
;----------------------------------------------------------------------Transporter Usage Parameters
;

=

0100
7FFF
=
= 0010
= 000A
= 01FE
- 00CF
= 0211

$InitTA
$MaxDly
$MaxRty
$MaxWte
$ProID
$SndNAD
$MaxTBD

EQU
EQU
EQU
EQU
EQU
EQU
EQU

100H
7FFFH
10H
10
01FEH
0CFH
529

t-

c
(
(

(

f

r

•

t

t
;

f

(

= 00B0
= 0080
= 0080
= 00B0
= 00A0

$SokTD
$SokTM
$SokRM
$SokRC
$SokRL

EQU
EQU
EQU
EQU
EQU

0B0H
80H
80H
0B0H
0A0H

;To
;To
;To
;To
;To

transmit data
transmit an NLM
receive an NLM
receive initial command sequence
receive remainder clf l~g command

I

f
(

t

t

•

=
=
=
=

«

-

•
•

•
(

0000
0001
0002
0003
= 0010
00FF

= 0001
00FF

=

= 000A

C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+

Associated message type codes (most significant byte)
;
$NLHi
$NLAny
$NLWho
$NLWhr
$NLldn
$NLBye
;
;
$NLDsk
$NLDny

EQU
EQU
EQU
EQU
EQU
EQU

o
1

2
10H
0FFH

;Hello
;Any disk server Cold protocol)
;Who are you?
;Where are you?
;Identification
;Goodbye

(
(
(

Associated device types of interest to Emulator
EQU
EQU

1

0FFH

Associated Name Length
;
$NameLN EQU
10

;Disk Server
;AII Devices

;Needed because STRUC is weak

•
(

(

•

(
The IBM Personal Computer MACRO Assembler 01-15-84

f

•
{

0000
0002
0004
0006
0008

FE01
0000
0000
0100
50 448 41 52
~
45 20 20 20
~7
~~

0012

f

•
f

0000
0002
0004

0000
0000

f

(

0000
0002
0003

0000
00

I

•
t

0000
0001
0002
0003
0004

00
01
00
00

(

c
t

•
(

0000
0001
0002
0003

01
00
00
00

C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+

;

PAGE

1-6

The structure itself (arithmetic reverses byte order
for transporter memory storage)

(

;

NLM
Pid
Mgt
Src
Dev
NL_Name

STRUC
DW
DW
DW
DW
DB

NLM

ENDS

$ProID/256 + 256*($ProID AND 0FFH)
$NLhi
;Message Type
o
;Station Number of sender
256*$NLDsk
;Device Type
'PCSHARE
;Device or user name

;----------------------------------------------------------------------Structure Name:
Receive ICS control area
;
Reference: Corvus OMNINET Programmer' Guide
;-----------------------------------------------------------------------

f

{

;

RRRCV
Lofcm
ELofRp
RRRCV

STRUC
DW
DW
ENDS

0
0

;length of the command being sent
;Expected reply length (w/o status)

f

;----------------------------------------------------------------------Structure Name:
Send Reply control area
Reference: Corvus OMNINET Programmer' Guide
;----------------------------------------------------------------------RRSND
ALofRp
Dstat
RRSND

STRUC
DW
DB
ENDS

(
o
o

;Actual length of reply (incl status)
;Disk status

;----------------------------------------------------------------------Structure Name:
Transporter Status Table Header
Reference: Program Logic description, Section 2.3
;----------------------------------------------------------------------;

TSTH
Int
TT_CI
NE
TT_NAD
TSTH

STRUC
DB
DB
DB
DB
ENDS

f

0
$False
0
0

;Interrupt depth indicator
;Command Interpreter invocation flag
;Number of entries in TST
;Network address of Emulator

;----------------------------------------------------------------------Structure Name:
Transporter Status Table Entry
;
C·~
Reference: Program Logic Description, Section 2.3
C+ ;----------------------------------------------------------------------C+ ;
C+ TSTE
STRUC
;ORB pending flag
$False
C+ PN
DB
C+ TT_ST
DB
0
;Status code from result record
C+ SK
DB
0
;Socket to be used
C+ TT_OP
DB
0
;Transporter commmand
(NEW USAGE I

•
r

c
(

(

c

•

(

•,
,

The IBM Personal Computer MACRO Assembler 01-15-84

0004
0006
0008
000A
000C
000E
0010
0012
0014

0000
0000
0000
0000
0000
0000
0000
0000

t
t
(

f

•

=
=

= 00FF
- 0000

t
f

=

f

0000
0001
0002
0004
0006
0008
000A
000C
000E
0010
0012
0014

t

«

•
(

«

•
•

•
(

= 0080
0040
0020
= 0010

=

=

00
00
0000
0000
0000
0000
0000
0000
0000
0000
FFFF

C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+

PAGE

1-7

;Transporter address of the CCB
0
CCB
DW
; Transporter address clf result record
RR
0
DW
; Transporter address of data area
Dtl
DW
0
Dsz
;Length clf data area in bytes
DW
0
Isr
DW
0
;Offset address of int service routine
Isrs
DW
0
Reserved for segment address
;
TT_Orb DW
0
;Offset address of pending ORB
TT_Orbs DW
Reserved for segment address
0
TSTE
ENDS
;
ENDIF
;
IF (TLS or LCS>
;----------------------------------------------------------------------Structure Name:
Transporter Status Table Local Command entry
Reference: Program Logic Description, Section 8.3
;----------------------------------------------------------------------Associated driver communication flag values
;
$LCnop
$LCopn
$LCabt
$LCaok

EQU
EQU
EQU
EQU

$False
$True
0FFH
0

;No operation indication
;Operation in progress indication
;'Operation aborted' end indication
;'AII ok' end indication

c
(

(

(

t

r
t

Asociated data values
;
$LCmaxL
;
TSTLE
LE_CC
LE - OP
LE - Len
Trm
Trms
Rcv
Rcvs
LE Isr
LE - Isrs
LE BP

-

-

TSTLE

EQU

$MaxTBD

;Longest data transfer allowed

STRUC
DB
DB
DW
DW
OW
OW
DW
DW
DW
DW
DW
ENDS

0
0
0
0
0
0
0
0
0
0
0FFFFH

;RB.CC or RQ.USE field
;RB.OP field when serving as ORB
;Length in bytes of remaining data
;Offset from which to fetch data
;
Segment address of data
;Offset to send reply
;
Segment address for reply
;Offset of interrupt service routine
;
Resderved for segment address ISR
;Stack segment offset of inout registers
; Reserved

;----------------------------------------------------------------------Structure Name:
Command Request Queue Entry
Reference: Program Logic Specification, Section 2.5
;----------------------------------------------------------------------;
;

Associated usage values

$RQUseE
$RQUseR
SRQUseL
$RQUseI

EQU
EQU
EQU
EQU

80H
40H
20H
10H

;Entry in queue
;Request received for command data
;Local command
;Internally generated command

(

(
(
(

•

c

(
The IBM Personal Computer MACRO Assembler 01-15-84

PAGE

1-8

c
=

0004

t

•
c
(

0000
0001
0002
0004

00
00
0000
04 C
00
]

0008

f

I
I

I.

= 0000
:;:
0001
::: 00FF
= 0080

I

0000
00QH
0002
0'2104
0006
0008

00
00
0000
0000
0000

•
c

•

•
(

::: 0003
:::: 0000
0000
0001
0002

1.0
00
02 C

C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+

$RQCsze EQU

4

;Number of command bytes enqueued

The structure itself
;
CRQE
Use
NAD
Len
Cmrld

STRUC
DB
DB
OW
DB

o
o
o
$RQCsze Dup(0)

;Usage flags
;Network Address of requestor
;Length in bytes of expected reply
;First four command bytes

f
CRQE

ENDS

ENDIF
;
IF (DR$ OR TL$)
;----------------------------------------------------------------------Structure Name:
Command Request Queue Header
Reference: Program Logic Description, Section 2.5
;-----------------------------------------------------------------------

t

Associated queue status indicator values
;

$RQrnt
$RQerlt
$RQful

EQU
EQU
EQU

0

I

0FFH

;Queue is empty
;Queue has entries but is not full
;Queue is full

EQU

80H

;Disk status error flag bit

(

STRUC
DB
DB
OW
OW
OW
ENDS

$RQmt
0
0
0
0

;Queue status indicator
;Current disk status code
;Offset address following CRQ
;Offset address of head entry
;Offset address of tail entry

1

;

$RQdse
;

CRQH
Qst
Dsc
Er.d
Tc.p
Bot
CRQH
;

ENDIF
;

IF TL$
;----------------------------------------------------------------------Structure Name:
Name Lookup Message Table
Reference: Program Logic Description, Section 2.7
;-----------------------------------------------------------------------

•
•

Associated command modifiers
;

$MTAdd
$MTDel

EQU
EQU

3
0

;AddActive command
;DeleteActive command

STRUC
DB
DB
DB

$RQUseI
0
2 DUP(0FFH)

;Specifies internal command
;NAD of sender
INEW FIELDI
;Unused part of parameter block

;

NLlvtT
MT_Use
MT_NAD

•

•

The IBM Personal Computer MACRO Assembler 01-15-84

J

0004
0005
0006

34

00
0A

[

20
]

•
•

0010
0011
0012

00
00
04

J

,t'
"

•

0000
0001
0002
0004
0005
0006
0008
01Z10A
000B
000C

00
00
0000
00
00
0000
0000
00
00

'.

•
•

•
••
(

[

20
0016

I

1-9

(
FF

'.

PAGE

0000
0001
0002
0004

_.

0249
:::: 024B
= 0248
=:

-

0248
024A

FF
00
0000

C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+

Opc
DB
MT_Mod DB
MT_Name DB

34H

MT_Src
MT_Dev
Rsvd

121
121

DB
DB
DB

121

10 DUP ('

4 DUP ('

')

')

;Internal is always hex 34
;Will be set to command modifier
;Device or user name

;Station number of sender
;Device type of sender
;Four byte user area

'.

•

•
(
(

NLMT
ENDS
;
ENDIF
;
IF (DR$ OR TL$ OR LC$)
;----------------------------------------------------------------------Transporter structures and associated values
Reference: Corvus OMNINET Programmer's Guide
;----------------------------------------------------------------------Transporter Command Control Block

I

f

;

CCBLK
STRUC
CC Cmrld DB
DB
RRA
DW
Sock
DB
DB
CC - Data DW
Dati
DW
Corllrl
DB
DHost
DB
CCBLK
ENDS

121

0
121
121
121

0
0
0
121

; Commarld
;fill fc.t" high address byte
;address Result Recc'l'''d
;sc.cket tc. use
; fi 11 for high addt"ess byte
;Data add1'''ess
; Dat,':!\ length
; Cc.rlt 1'''0 1 lerlgth
; Dest i rlat i c.rl host 

NLM

1-13

c·

•

;Blank fields set by TL-INIT-TLD

(

•
I

•

;----------------------------------------------------------------------Temporary storage

;

023E
0i:::3F
0240
0242

TmpICS

0el

CRQE

{}

;Form is a CRQ entry

•

00
0000
04 (
00
]

«
I

ICS data

;----------------------------------------------------------------------0246
;

;***********************************************************************
;

Transporter Logical Device Routines

I

;***********************************************************************
;

0000

PC_CODE SEGMENT PUBLIC 'CODE'
;

;***********************************************************************
(

I

;Module name:

Interrupt Service Driver (TL-INT-DRVR)

;Last Update: 15 January 1984

I

I

;

; FUYlct iOYI:

•
t"
;

;Procedure:

The Interrupt Service Driver determines the cause of any
transporter interrupt and calls the appropriate routine to
set~vice it.
If the iYlter~rupt is due to s'::lftw':\l"~e, the
Local Command Interface interrupt routine LC-RCV-CMND is
called.
If the interrupt is due to hardware, the hardware
interrupt depth counter (field TT.INT of the TST header)
is incremented.
If the value is then 1, a new interrupt
processing sequence is started.
If the value is greater
than 1, reentrance has occured; immediate exit is then
made as the interrupt will be serviced by the interrupt
sequence already in progress.

(

Program Logic Description, Section 2.4

;

•

.'

;Called by:

8088 Interrupt A

;Routines called:

Interrupt service routines,
TL-BYT-IN, CI-MAIN

•
(

c

(
The IBM Personal Computer MACRO Assembler 01-15-84

PAGE

1-14

I

,

;Input:
None
;
;Output:
Register data output to interrupt service routines is

«

(

(AL) - Completion code from result record
(SI) = Offset of the TST entry

•

The service routines need not preserve any registers except
the segment registers and the stack pointer

f

;Error procedures:

None

,
,

;

;Written by: R.B. Talmadge,

(

;Updates:

(

Computer Technology Ltd

1: Timer tick interrupt feature,
30 November 1983

entry TL_INT_DTME,

c
added

2: Separate primary test loop for external control of
Emulator operation, entry TL_INT_TEST, implemented
7 December 1983

(
f

•

3: Change timer tick option to normal non-assembly, done
22 December 1983

•

t

4: DOS intercept driver added 28 December 1983

(

5: DOS intercept driver modified to issue control_break,
done 11 January 1984

1

•
I

t

«
«
(

t

•
•

(

6: DOS intercept and Control_break mechanism replaced by
DOS critical section test using In-DOS flag, done 14
January 1984

;

(

;***********************************************************************

;
TL - INT DRVR

0000

-

50

0000
0001
0002
0003
0004

51
52
BB 0000 E

0007
0009
000B
000C
000E
0010
0012

B0
E6
90
E4
A8
75
E9

53

0B
20
20
05
03
009F R

+
+
+
+
+

PROC

1-

NEAR

TENTER
PUSH
PUSH
PUSH
PUSH
MOV

EC
;Set temporary environment
AX
BX
CX
DX
BX,OFFSET PCS:EC

MOV
OUT
NOP
IN
TEST
JNZ

AL,SP82Ris
SP82op0,AL

J~

AL,SP820p0
AL,SP82EML
HwDRVR
SwDRVR

;Send 8259A command to
read the interrupt service
register for source test

c
{

;Test for hardware
interrupt
;
;Go to software if not

;----------------------------------------------------------------------For a hardware interrupt, the transporter and 8259A are reset
and a test is made for reentrance.
If so, immediate exit is
taken.
If not, a test is made for interrupt in DOS, when DOS

•
•
f

The IBM Personal Computer MACRO Assembler 01-15-84

PAGE

1-15

entered from outside the Emulator.
If that has happened and
DOS is in a critical section, a deferred interrupt is set up.

«

•

:I
1

For interrupt outside DOS, the TL-INT-TEST routine is called.
That routine will not return until the interrupt sequence has
been completed, so TL_INT_DRVR Just exits after the return.

;-----------------------------------------------------------------------

0015
001A
01211C
I2I1211F

2E: F6 47 2F 40
74 04
BA 12124D
EE

0020
012123
0026
01212A

BB 121000 E
2E: FE 07
2E: 80 3F 01
74 09

01212C
002C
01212E

B0 20
E6 2121

012130
012131
0032
IZIIZt33
012134

5A
59
5B
58
CF

+
+
+
+
+

:;
HwDRVR: TEST
JZ
MOV
OUT
;
DRirlc:
MOV
INC
CMP
JE
:;
DRt x it
LABEL
MOV
OUT
TEXIT
POP
POP
POP
POP
IRET

CS:[BXJ.EC _ TBI,
DRir,c
DX,$CIINT
DX,AL

$TBt~er.b

;If running with
transporter interupts
pick up latch port and
Clear interrupt latch

BX,OFFSET PCS:TT
CS: [BX]. Ir,t
CS: [BX]. Ir,t, 1
DRtsds

;Position to TST header
;lncrement interrupt depth
;If we have not reentered
go to process interrupt

NEAR
AL., $P82ec. i
$P82c.p0, AL

; 1 f we have,
t~eset

(

(

«
f

8c~59A

arid exit
DX
CX
BX
AX

l
f,

Test for interrupt within DOS; if not, call primary
interrupt test routine and exit on return

:;

•
\1

•
•

•
(

012135
012138
01213B
01213C
01213D
003E
012141
0043

2E: FE 0F
BB 01211210 E
1E
0E
iF
C5 5F 34
8B 1217
iF

012144
0046
121048
01214~~

0B
75
B0
E6

0121'+1:
012140
121 121 4E
01Z14F
0050
tZllZt51

56
57
55
1.E
06
8C C8

121053
0056
0058

BB 0000 E
01 EB
01 EB

DRtsds: DEC
MOV
PUSH
PUSH
POP
LDS
MOV
POP

C0
40

OR
JNZ
MOV
OUT

c:0
i:::0

+
+
4-I-I-

--I-

+
-I-

+

ENTER
PUSH
PUSH
PUSH
PUSH
PUSH
MOV
MOV
SHR
SHR

CS:CBX].lnt
BX,OFFSET PCS:EC
OS
CS
OS
BX,DWORD PTR[BX].DOSdkO
AX, [BX]
OS

;AdJust cc.ur,t for call or exit
; Rec.::over ECT lc.cat ic.n
;Set tCI this
segmel'-,t arid
fetch locat iorl
.:.f lrl-DOS flag
:;
;Fetch flag i tsel f

AX,AX
AL., $P8E:eo i
$P820p0,AL

:;If in DOS ct~tical sect ic.r.,
go set deferred :i_ ntet~t~upt
;If riot ct~itical, t~eset
8259A and pt~ocess

Dta _8grl

:;Set env i

INTbt~k

t~orlment

51

01
BP
DS
ES
AX,CS
BX,OFFSET PCS: Dta_8gr!
BX, 1

ex,l

.-

•
(

•
•

«
The IBM Personal Computer MACRO Assembler 01-15-84

c
12I05A
01215C
005E
012160
12106;:::
0064

D1
D1
03
8E
8E
8B

00E,6
006B
ell2l6D

F6 06 002F E 40
74 05
80 26 00.:::F E DF

oIZI 7 i:::

E8 00C2 R

12107:"5

80
75
50
£10
56
BE
E8
5E
58
EB

007~~

I
f

•

007C
007D
007F
012180
0083
Q.IIZt86
IZl087
'~088

01Zt88
12li:::46
lZli::: /t6
!Zli::: l l·7
0;:::48

EB
EB
C3
D8
C0
EC

+
+
+
..1-

+
-I-

SHR
SHR
ADD
MOV
MOV
MOV

BX, 1
BX, 1
AX,BX
DS,AX
ES,AX
BP,SP

TEST
JZ
AND

EC.EC _ TBI, $TBt~erlb
DRctst
EC.EC _TBI,0FFH-$TBrtck

;If

TL _. INT - TEST

;Go process i Y'lt el'~t~upt

;

3E~

000B E 00

0F
00
0246 R
001210 E
01 90

IZl0
j .0;;,.
.::.

lt5

3A 54 4C 2D 49

IZI;:::5('~

1Zt12l8B
012188

I

1-16

PAGE

DRctst: CALL
+
+
+
+
+
+
+
+
+
+
+
+
.+.
+
+
+
+
-I-

00/3('~~

e1lZl':33
00'34

07
lF
5D
5F
5E
5A
59
58
58
CF

t~ U rm i rq;;J with
t rarlsp,:.rt el'~ i Y'lts
cleat~ t i rnet~

E:TL-INT-DRVR-HDWE
TRACE
CMP BYTE PTR EC. Tt~ce, STrue
JNE
770000
AX
PUSH
AL,0
MOV
PUSH
SI
SI,OFFSET 7?0001
MOV
EM - TRACE
CALL
POP
SI
AX
POP
JMP NEAR PTR 770000
PC CODE ENDS
PC - DATA SEGMENT PUBLIC ' DATA'
OFFSET ??00IZt2)
<, OFFSET 7?0003
77001Z11. L.I~B

'.

-

?70002
PC - DATA
PC - CODE
770000

+ INTxit
+
+
+
+
+
+
+
+
+
+

(

"E:TL-INT-DRVR-HDWE"
DB
ENDS
SEGMENT PUBLIC ' CODE'
NEA~(
LABEL
U:~BEL

POP
POP
POP
POP
POP
POP
POP
POP
POP
IRET

,INTxit
NEAR
ES
DS
BP

;Exit OY'I

l'~et

Ul"'Y'1

01

SI
DX
CX
BX
AX

(

If interrupt within DOS, exit if this has occurred previously
before the deferred interrupt has been processed, otherwise
force reentry by turning on timer tick entry control
;

•
•

012195
00'38
01219D

BE 001210 E
2E: 80 4F 2F 20
EB 8D

•

--

EXIT
008B
lZIIZl8B
IZl08C
01Zl8D
008E
008F
00'30
iZ10'31.

t

INTbdl.: MOV
OR
~TMP

BX,OFFSET PCS:EC
CS:[BXJ.EC_TBI,STBrtck
DRTxit

;Recover ECT offset
:j TurY'1 ':Jl r , t i fI1et~
and gc. tc. ex it

;-----------------------------------------------------------------------

•

«

•

PAGE

The IBM Personal Computer MACRO Assembler 01-15-84

(

1-17

For a software interrupt, call the Local Command Interface
drivel"'"

;-----------------------------------------------------------------------

f

«

;

009F

E8 0000 E

SwDRVR: CALL

;Call LC service routine

On return, test for operation in progress and call the
primary interrupt test at CI_MAIN entry test if so

•
(

••

00A2
00A7
00A9
00AA
00AC
00AD
00B0
00£13
00B'+
00B5
00B8

80
75
50
B0
56
BE
E8
5E
58
EB

3E 000B E 00

0F
00
025A R
0000 E
01 90

-

0i:::5e:~

it

I

TRACE' E:TL-INT-DRVR-STWE
CMP BYTE PTR EC.Trce,$True
JNE
??0004
PUSH
AX
MOV
AL,0
....
PUSH
SI
MOV
+
SI,OFFSET ??0005
....
EM - TRACE
CALL
POP
SI
+
POP
AX
+
JMP NEAR PTR ??0004
+
+ PC CODE ENDS
+ PC DATA SEGMENT PUBLIC ' DATA'
"<, OFFSET ??0007 - OFFSET ??0006>
+ ??012105 LRB
+
+
+
+

12I25A
025B
025C
026E
00£18
00B8

00
12
45 3A 54 '+C 2D 49

0088
00B9
0121BB
00BD
00C0

FA
3C
75
E8
EB

+
+
+
+
+

??0006
PC - DATA
PC CODE
??001214

--

DB
"E:TL-INT-DRVR-STWE"
ENDS
SEGMENT PUBLIC ' CODE'
LABEL
NEAR
CLI
CMP
JNE
CALL
JMP

00
CE
00F4 R
C9

AL, $LCopYI
INTxit
DRVtci
INTxit

;Disable i nter"l""'upts
;If operat iOYI not star"ced
gCI tCI exit, clthe . . . wise
call p . . . imary r"(.)ut i Yle
;
;GI:) tCI exit

t

f"

,I
,(

.'
(

;---------------------------------------------------------------------Primary interrupt test routine begins here.
This routine is

;

•

«

;

;------------------------~---------------------------- ------------------

;

TL_INT_TEST

00C2

;

•.
'

"

(

called by TL_INT_DRVR for a transporter hardw~re interrupt,
by TL_INT_DTME if timer ticks are being used to drive the
Emulator, by the UTIL_INT_TEST device driver routine if the
Emulator is being invoked by an external routine, and by the
TL-INT-WAIT routine if an ORB wait occurs when the Emulator
is being driven externally.
LABEL

NEAR

Interrupt event loop tests result records associated with TST
entries for change of status, and calls the interrupt service
routine if a change has occurred.

;

00Ci.:::

FE 06 0000 E

DRVgcl:

00C6
00C7

FB
BE 0000 E

DRVlpe: STI
MOV

;

INC

1"T.Int

;Update depth count

; Reenable interrupts
SI,OFFSET TTbgn ;Fetch offset iYlt ial eYltry

(

The IBM Personal Computer MACRO Assembler 01-15-84

PAGE

1-18

I

•
c

•
c

oIZtC (.:1
00CO
01ZtD0
0003

;
88 5C 06
E 8 0 IZtIZlIZt E

ORVis:

3A 44 IZil
74 IZl8

00D5
01Zt06
01Z1D':3
IZl0DC

FF 54 0C
5E

00DD
00E0
IZIIZlE'+

83 C6 14
81 FE 0000 E
7C E4

MOV
CALL
CMP
J'E

BX, [Sn. RR
TL_BYT_IN
AL, [SUD 1"1'_,51'
ORVlt::m

51
MOV
[SIJ.TT_ST,AL
CALL WORD PTR [SIJ. Isr
POP
SI

56

PUSH

88 4'+ IZt 1.

;Fetch result record location
,
and get current status
; If n:, change,
go to test for next

(

;Save posit iorl
;Record new status
;Call interrupt service routine
;Recover position

;

DRVlpn: ADD
CMP
,JL

SI, TYPE TSTE
;Increment to next entry
SI, OFFSET TTend
DRVls
;Do next if not end

a complete pass thl'~c'ugh the 1':::II:'p, it is l'~estarted
if the interrupt depth does not go to zero.
If it does
go to zero the Command Interpreter is called unless the
interrupt sequence started within it; in that case, the
driver Just exits to await return from CIa
Aftet~

•

IZIIZlE6
00E7
01Z1EB
00ED
01ZtF2

FA
FE
75
80
7,(+

oIZt F,(+

0E IZt000 E

CLI
DEC

D9

~TNZ

3E 012101 E IZl0
1F

CMP
JE

0107

80 3E 01Zt0D E IZl0
74 :1,8
80 3E 0004 R 00
7L~ 11
C6 06 0001 E 00
FB

DRVtci: CMP
JE
CMP
JE
DRVcci: MOV
STI

0108

EEl 0000 E

00F':3
00FB

0:1,00
0:t0i2

I

TT. Il"lt
DRVlpe
TT. TT _C I, $1'1"ue
DRVxit

;Disable interrupts
;Decrement depth count and
;
restart loop if not zero
;Exit if we al'~e
in the Command interpreter

;

EC. EC_TRM, $Tl'~ue
DRVxit
RQ.Qst,$RQmt
DRVxit
TT. rr_CI, $Tt~ue

CALL NEAR PTR CI_MAIN

;Exit if Emulator
;
operation terminated
;No need to call CI if
;
the CRQ is empty
;Turn on CI entry flag and
reenable interrupts
;Call the Command Interpreter

On return from CI-MAIN it is necessary to test the CRQ for
command which may have been inserted between the end of
CI-MAIN processing and the return to this location
a

0108

010C
0Ul

FA
C6 06 0001 E 01
EB E1

CLI
MOV
JMP

1"1'. TT_CI, $False
DRVtci

;Disable interrupts
;Clear CI entry flag
;Go test for exit

;

DRVxit

01.13
0:l13

C3

LABEL
RET

NEAR
;Just a simple intra-seg return

;---------------------------------------------------------------------When the transporter is to be run off the timer tick, this

•
•

f

entry is invoked by each timer tick.
The ticks are counted
The primary interupt
down until the delay period expires.
loop is called when it does, and the delay period restarts

;----------------------------------------------------------------------

(
(

c-

(
The IBM Personal Computer MACRO Assembler 01-15-84

PAGE

1-19

(

t

0114

(

0114
0115
0116

PUSH
PUSH
MOV

50
53
BB 0000 E

AX
BX
BX,OFFSET PCS:EC

;Save working
;
registers
;Fetch ECT offset

Exit if timer tick not being used or if period not expired

(

0119
011E
0120
0124

2E: F6 47 2F 20
74 06
2E: FE 4F 30
74 05

TEST
JZ
DEC
JZ

f
f
f

;Test tick effective
and go out if not
;
; Decrement timer tick
;Go to driver if count down

If not time to call the Emulator, restore registers,
the saved timer tick routine, then exit on return
0126
0127
0128
012A

5B
58
CD 67
CF

TLTxit: POP
POP
INT
IRET

BX
AX
SCallTM

call

;Reset to entry
;
conditions
;Call other timer rtn
and then exit

If tick period has expired, reset the tick count, restore
registers, and go to the main interrupt driver.
Note that
in this case the saved timer tick exit routine is not called

t
(

CS:[BXJ.EC _TBI,STBrtck
TLTxit
CS:[BXJ.TLtmck
TLTgo

(

(
(

•

;

•

0128
012F
0133
0134
0135

f

0138

SA 47 31
2E: 8S 47 30
5B
58
E9 0000 R
2E:

TLTgo:

MOV
MOV
POP
POP
JMP

AL,CS:[BXJ.TLtmrs
CS:[BX].TLtmck,AL
BX
AX
TL INT_DRVR

;Reset timer tick
;
count value
;Reset to entry
condtions
;Go process the interrupt

•
f

;

f

;***********************************************************************
;Module name:
Wait For Operation Complete (TL-INT-WAIT)
I
;Version:

t

2.0

;

;Last Update: 29 December 1983

t

;

;Function:

f

Wait For Operation Complete is called by any routine which
cannot proceed until an operation started from an ORB has
been completed.
If the Emulator is being driven by either
its own or timer interrupts, the routine assure interrupts
are enabled and waits for the interupt routine to set the
ORB completion flag.
If interrupts are not being used,
TL-INT-WAIT calls TL-INT-TEST to drive the interrupt test
loop externally.

;Procedure:

New routine; see comments in code

I

;Cal1ed by:

TL-RTN-RSLT, TL-FETCH-LC

•

IRoutines called:

TL-INT-TEST

(

(

•
•

•

•

PAGE

The IBM Personal Computer MACRO Assembler 01-15-84

1-2~0

I

f

;Input:

«

;

=

DS: (SI)

Location of ORB

;Output: ORB completion code field modified
;Error procedures:

c

None

;

;Written by: R.B. Talmadge, Computer Technology Ltd
;

; Updat es:

Norll:

;

;***********************************************************************

c

;

TL_INT_WAIT

0138

PROC

NEAR

If the transporter is being run by either interrupt type
interrupt enable is assured and the wait is simply for a
change of ORB completion status

•

0138
12113D
~~ll3F

0140
0:1.4i:::
0143
121146
121:1.49
01.L~A

0148
014E

80
75
50
B0
56
BE
E8
5E
58
EB

3E 000B E 00
IZ1F
0121
0i~6E

R

o121 121 IZt

E

01 9121

1

f

•

1210
IZ1D
53 3A 54 4C i::!D '+9

0i:~~7D

1Zl14E
121155
121156
121159

•
•

-

014E
0:1.4E
0:1.~33

.

-

0i:~6E

1Zl26E
0i::!6F
0270

S:TL.-INT-WAIT
TRACE
CMP BYTE PTR EC. Tt~ce, $Tt~ue
..r??0008
.TNE
+
AX
PUSH
+
MOV
AL,0
+
PUSH
SI
+
SI,OFFSET ??01Zl09
MOV
+
EM - TRACE
CALL.
+
SI
POP
+
AX
POP
+
JMP NEAR PTR ??01Zl1Zl8
+ PC CODE ENDS
+ PC - DATA SEGMENT PUBL.IC ' DATA'
+ ??121009 LRB
<, OFFSET ??1Zl00B - OFFSET ??1Zl0IZlA}
+
"S:TL-INT-WAIT"
+ ??1Z100A DB
+ PC - DATA ENDS
+ PC CODE SEGMENT PUBLIC ' CODE'
+ ??01Zl08 LABEL
NEAR
+

TEST
JZ

F6 06 121 1212 F E 60
74 1D

STr
WAITcc: CMP
JE

FB
8121 3C FF
74 FB

EC. EC_TBI, $TBrenb+$TBrtck
WAITrli
[SI J. CC, $OPi rip
WAITcc

;If ric, i nte1"~l"~upts
go to dri vet~

; Assul"~e i rlt et~t~t~ u pt s enabled
;Wait arour.d l..mt i I the
Opet~at iorl c.:.de charlges

c

;

WA I T>
+ ??0021

+
+
+
+
+
+
+
+

+
+ ??0022 DB
+ PC_DATA ENDS
+

(

••

"X"

PC_CODE SEGMENT PUBLIC 'CODE'
LABEL
NEAR

+ ?10020

(

RET

C3
;

NQok:

025E

57

026F

9C
FA
80 3E 0004 R 00
75 13

0~~70

0271
0276

+
+

PUSH
STATUS
PUSHF
CLI
CMP
JNE

DI

;Save working register
;Disable interrupts

RQ. Qst, $RQmt
NQst

;Normal processing
if the queue is not empty

If the queue is empty, set to use first entry and
go to fetch the data

I

0278
027B
027F
0283
0288

BF
89
89
C6
EB

MOV
MOV
MOV
MOV
JMP

000C R
3E 0008 R
3E 000A R
06 0004 R 01
20 90

DI, OFFSET RQbgr.
RQ.Top,DI
;Set header pointers
RQ.Bot,Dl
RQ.Qst,$RQent
;Set status indicator
NQmclv

Reenter here if queue neither empty or full

••

«

;

028B
0E;8F
0i:::92
0f.:96
oi::: 98

8B
83
3B
7C
BF

3E 000A R
C7 08
3E 0006 R
03
000C R

NQst:

029B

89
3B
75
C6

3E 000A R
3E 0008 R
05
06 0004 R FF

NQst 1:

MOV

;Fetch offset tail entry
DI, RQ. Belt
;Position to next
DI,TYPE CRQE
;Reset position if
DI,RQ.End
we Wl'~ap arouY'.d
NQst:l.
DI,OFFSET RQbgn

MOV
CMP
JNE
MOV

RQ.Bot,DI
DI,RQ.Top
NQrtlelv
RQ.Qst,$RQful

MOV
ADD
CMP
,JL

;
0i::~9F

0i:::A5

;Reset bottortl pointer
;Set indicator if
queue nelw fu 11

;

'.

•

•
••

Reenter here to fetch data and set up new entry
02AA
IZl2AA
0i:::AB
02AC
tZ'2AD

9D
56
57
51

+

RESTORE
POPF
SI
PUSH
PUSH
Dr
PUSH
CX

;Restore interrupt status
;Save original locations

•
(

c
«

•

;Set up

(

The IBM Personal Computer MACRO Assembler 01-15-84

0i2B5
0i2B5
0i.:::B9

B9 0008
F3/ A4
59
5F
5E
81Z! 0D 80
A0 0004 R

02BC

5F

0i2BD
0i.:::C2
02C4
0i:::C5
02C7
02C8
02CB
0i2CE
02CF
0200

80
75
50
B0
55
BE
E8
5E
58
EB

0i~AE

c
(

02B1
0i2K3
02BL~

PAGE

1-27

;
fetch count
CX,TYPE CRQE
MOV
;Move
the data
REP MOVSS
POP
CX
POP
DI
;Restore registers
POP
SI
EDIJ. Use, $RQUseE ;Indicate entry queued
OR
AL,RQ.Qst
MOV
;Set t~eturn data

(

t.

;

I\IQxit:

t

f

3E

000B E 01Z!

0F
00
02C3 R
0000 E
01 90

0203

f
I

02C3
02C3
0i.=:!C'+
IZl2C5
0i::::00
02D3

00
0B
45 3A 54 4C ;:::D 4E

DI

;Restore working register

E:TL-NQ-CRQ
TRACE
CMP BYTE PTR EC.Trce,$True
+
JNE
770024
+
PUSH
AX
MOV
+
AL,0
+
PUSH
SI
+
MOV
SI,OFFSET ??0025
+
CALL
EM - TRACE
+
POP
SI
+
POP
AX
+
JMP NEAR PTR 7?0024
+ PC_CODE ENDS
+ PC_DATA SEGMENT PUBLIC 'DATA'
+ 7?0025
LRB
<,OFFSET ??0027 - OFFSET ?70025)
+

+
+ ??0025

I

I

••

"E:TL-NQ-CRQ"

DB

+ PC_DATA ENDS

+ PC_CODE SEGMENT PUBLIC 'CODE'
+ ??0024 LABEL
NEAR

0i.::~D3

0i.=:!03

POP

C3

RET

;Return to caller

f

0;::~04

i

;

;***********************************************************************
;Module name: Set Disk Status (TL-SET-ERR)
I

(

I

•

;Versiorl: 2.0
:;
;Last Update: 14 November 1983
;

;Function:

'.
; Procedure:

Program Logic Description, Section 2.5

I

See function description

•
•

;

;Called by:
;

•

•

;Routines called:

None

;

;Input:
:;
; Out put:

f

The Set Disk Status routine (TL-SET-ERR) is called by
any routine which wants to set the current disk status.
Field RQ.DSC of the CRQ header is set to the value of the
byte supplied as input.

(AL) = Byte to be inserted
Norle

•
(

•

;Error procedures:

c

;Written by: R.B.

•
,
•
,

; lJpdat es:

f

•
t
t

1-28

f

•

(

PAGE

The IBM Personal Computer MACRO Assembler 01-15-84

None
Talmadge, Computer Technology Ltd

N.:.ne

;***********************************************************************
;

TL_SET_ERR

0i.:::D4
02D4
02D9
02DB
oi::: DC
02DE
1Z12DF
02Ec~

02E5
02E6
02E7
02EA
02D0
02D0
0201
02D2
02E0
02EA
02E(-=!

80 3E 000B E 00
75 0F
50
B0 00
56
BE 02D0 R
E8 0000 E
5E
58
EB 01 90
00
0E
53 i:::B 45 3A 54 4C

PROC

NEAR

TRACE
S+E:TL-SET-ERR
CMP BYTE PTR EC.Trce,$True
....
JNE
??0028
+
PUSH
AX
+
MOV
AL,0
+
PUSH
SI
+
MOV
SI,OFFSET ??0029
....
CALL
EM_TRACE
+
POP
SI
....
POP
AX
+
JMP NEAR PTR 770028
.... PC CODE ENDS
+ PC DATA SEGMENT PUBLIC 'DATA'
+ 77002':3 LRB
OFFSET ?7002A}
<,OFFSET ??002B
+
.... 77002A DB
"S+E:TL-SET-ERR"
+ PC - DATA ENDS
+ PC - CODE SEGMENT PUBLIC 'CODE'
+ 7?0028 LABEL
NEAR
+

.(

-

I.

;

02EA
02ED

A'-'
c. 0005 R
C3

MOV
RET

RQ. Dsc, AL

; Set rlew va I ue
;Return to caller

02EE
;

I

;****************************************************************~.******

;Module name:

Identify Requestor (TL-GET-NAD)

i.:::. 0

; Vet~sb::on:

I

«

;

;Last Update: 14 November 1983
;

; FI.IYlct iO:'YI:

«

The Identify Requestor routine is called by any Emulator
routine which wants to know the NAD of the requestor of
the current command.
The value is extracted from field
RQ.NAD of the CRQ entry for the current command

;

; Procedure:

Program Logic Description, Section 2.6.3

;

;Called by:

See function description

;

;Routines called:
;

; IYlput:

NOYle

None

•

•
f

PAGE

The IBM Personal Computer MACRO Assembler 01-15-84

;

(AL)

;Output:

•

1-29

= NAD.

The value $FF (any or all machines) is
returned if there is no current entry in the CRQ

;

;Error procedures:
;

•
•
f
(

I'
I
I
I

f
I

I

•
f

•

•
•

•
C

None

;Written by: R.B. Talmadge, Computer Technology Ltd
;

; Updates:

N':'Y"le

;

;***********************************************************************
;

TL_GET_NAD

02EE
02EE
02F3
02F5
tZli.:::F6
02F8
02F9
02FC
02FF
031Z10
0301
0304
02E0
02E0
0;~El

80
75
50
B0
56
BE
E8
5E
58
EB

3E 000B E 00
IZiF
00
02E0 R
0000 E
01 90

00
0C
53

0304
0306
030B

B0 FF
80 3E 0004 R 00
75 17

030D
0312
0314
0315
0317
0318
031B
0:31E
031F
0320
0323
0;:::EE
02EE

80 3E 000B E 01Z1
75 0F
50
B0 00

IZl2F0
02FC

S:TL-GET-NAD
TRACE
CMP
BYTE
PTR EC.Trce,$True
+
JNE
??002C
+
PUSH
AX
+
MOV
AL,0
+
PUSH
SI
+
MOV
SI,OFFSET ??002D
+
CALL
EM_TRACE
+
POP
SI
+
....
POP
AX
....
JMP NEAR PTR ??002C
+ PC_CODE ENDS
.... PC_DATA SEGMENT PUBLIC 'DATA'
<,OFFSET ??002F - OFFSET ??002E)
+ ??01Z12D LRB

~3A

•

•
I

+ ??002E

56

BE 02EE R
E8 001Z10 E
5E
58
EB QH 90

DB

liS: TL -'GET -NAD "

+ PC_DATA ENDS
+ PC_CODE SEGMENT PUBLIC 'CODE'
+ ??002C

00
0C
58

NEAR

+

54 4C 2D '+7

02E2
oi.::: EE
0304
0304

0i~EF

PROC

LABEL

NEAR

MOV
CMP
JNE

AL.} $AIINAD
RQ. I~st, $RQmt
NADg.:.

;Assume CRQ is empty
;Go test top entry
if it

is riot

X:TL-GET-NAD
TRACE
CMP BYTE PTR EC.Trce,$True
JNE
??0030
+
PUSH
AX
MOV
AL,0
+
....
PUSH
SI
MOV
SI,OFFSET ??0031
+
CALL
EM_TRACE
+
+
POP
SI
POP
AX
+
JMP NEAR PTR 7?0030
+
+ PC_CODE ENDS
+ PC_DATA SEGMENT PUBLIC 'DATA'
+ ??0031
LRB
<,OFFSET 1?0033 - OFFSET ??0032)

(

+
+

c

+
3(:)

54 4·C 2D 47

+

?1012132

DB

+ PC_DATA ENDS

"X:TL-GET-NAD"

•

•

•

The IBM Personal Computer MACRO Assembler 01-15-84

PAGE

032:3

+ PC_CODE SEGMENT PUBLIC 'CODE'

0323

+ 110030

0323

LABEL

1-31Z1

(

NEAR

RET

C3
;

0324
0325
e132~9

032C
032E

5-.::,
8B
F6
74
8A

NADgo:
1E 0008 R
07 80
03
47 01

PUSH
MOV
TEST
JZ
MOV

BX
;Save working t"eg i st et~
BX,RQ.Top
;Fetch offset telp eY'ltt~y
[BXJ.Use,$RQUseE
NADxt
;Exit if not queued
AL, (BXJ.NAD
;Fetch NAD if queued

POP

BX

;

0331

5B

NADxt:

f
0332

0337
0339

1

f

•
:(

033A
033C
033D

121340
0343
0344
0345
0348
0i:::FC
02FC
0i:::FD
02FE
030A
121348
0348
0348

80
75
50
B0
56
BE
E8
5E
58
EB

3E 000B E 0121

0F
00
02FC R
0000 E
01 90

00
0C
45 3A 54 4C 2D 47

+

LABEL

;Return to caller

;

0349

TL_GET NAD

(

f

'I
f

NEAR

RET

C3

«

'.

"E: TL -1::1E1" -NAD II

+ PC_CODE SEGMENT PUBLIC 'CODE'
+ 110034

(

;Restore working register

TRACE
E:TL-GET-NAD
CMP BYTE PTR EC. Trce, $True
+
JNE
110034
+
PUSH
AX
+
+
Iv\OV
AL,0
PUSH
SI
+
MOV
SI,OFFSET 110035
+
EM_TRACE
+
CALL
POP
SI
+
AX
POP
+
JMP NEAR PTR 110034
+
+ PC_CODE ENDS
+ PC_DATA SEGMENT PUBLIC 'DATA'
+ 110035
LRB
<,OFFSET 110037 - OFFSET 110036)
+ 110036
DB
+ PC_DATA ENDS

,

I

ENDP

;

;***************************************************** ******************
;Module name:
Receive Initial Command Sequence (TL-RCV-ICS)
I
; Vers i OY'I :

2. 0

;

{

;Last Update: 14 January 1984
;

;Function:

•

The Receive Initial Command Sequence routine is the
interrupt service routine called whenever there is an
interrupt for socket B0 receive (TST entry RcvICS).
If
the interrupt is completion of a setup receive, no action
is required.
If a message has been received, TL-NQ-CRQ
is called to enter the command in the CRQ.
If the return
indicates the CRQ is not full, TL-SET-RECV is called to
restart command reception.

;

;Procedure:

Program Logic Description, Section 2.6

f
t.

•
•

•

=

;

;Output:
;Error procedures:
;
;Written by: R.B.
;
; Updat es:
NC'Y'le
;

I

••

-

3E 000B E 00

0349
034E
0350
0:351
121353
121354
0357
12135A
035B
035C
035F
03121A
030A
121::: 121 B
121 3 I2IC
0318
035F
12I:35F

80
75
50
B0
56
BE
E8
5E
58
EB

•

035F
121361
0363
0365

3C
74
3C
75

0121
2B
FE
17

•

0367
0:36C
036E
036F
121371
121372
0375
121:378

80
75
50
BI2I
56
BE
E8
5E

3E 1211210B E 121121
0F

•

An error message is logged if the completion code
from the transporter shows setup not sucessful
Talmadge,

Computer Technology Ltd

•
(

f

;***********************************************************************
;
TL RCV - lCS

0349

(

c'

;Called by:
TL-INT-DRVR
;
;Routines called:
TL-NQ-CRQ, TL-SET-RECV, DM-ERR-LOG,
TL-BYT-IN, TL-WRD-IN, TL-DTA-IN
;
(SI)
Offset TST entry
; Input:
(AL) - Result code from transporter

•

•

1-:,H

PAGE

The IBM Personal Computer MACRO Assembler 01-15-84

0F
00
030A R
12112100 E
01 90

00
IZIC
53 3A

5L~

4C 2D ;:,),::,

00
0318 R
012100 E

~.-.

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

NEAR

S:TL-RCV-ICS
TRACE
CMP BYTE PTR EC. Trce, $True
??0038
JNE
AX
PUSH
AL,12I
MOV
SI
PUSH
SI,OFFSET ??12I039
MOV
EM - TRACE
CALL
SI
POP
AX
POP
JMP NEAR PTR ??012138
PC CODE ENDS
PC - DATA SEGMENT PUBLIC ' DATA'
OFFSET ??003A)
<, OFFSET ??I2I1213B
??12I1213';3 LRB

I

(

-

-

??12I03A
PC - DATA
PC CODE
??12I12138

-

"S:TL-RCV-ICS"
DB
ENDS
SEGMENT PUBLIC ' CODE'
LABEL
NEAR
CMP
JE
CMP
JNE

+
+
+
+
+
+
+
+

PROC

AL, $Tt~OK
RCVl'I1sg
AL, $Tt~SS
RCVert~

(

«
;Go to process if
a message has at~t"i ved
;
;Just exit if this
i ,-.::> a setup complet loY',

X:TL-RCV-ICS
TRACE
CMP BYTE PTR EC. Trce, $T\'~ue
??12I03C
JNE
AX
PUSH
AL,0
MOV
SI
PUSH
SI,OFFSET 7?003D
MOV
EM - TRACE
CALL
POP
81

(

•
•

•
f
(

The IBM Personal Computer MACRO Assembler 01-15-84

PAGE

1 -32
0

I
0379
037A
037D
0318
0318
031':3
0:31 A
0326
037D
037D
037D

58
EB 01 90
00
0C
58 3A 54 4C

i.:::n

52

+
+
+
+
+
+
+
+
+
+

POP
AX
JMP NEAR PTR ??003C
PC - CODE ENDS
PC DATA SE!3MENT PUBLIC ' DATA'
7?003D L.RB
<, OFFSET ??1Z103F

-

??tZl03E
PC - DATA
PC - CODE
??003C

C3

-

(

OFFSET ??003E)

DB
"X:TL-RCV-ICS"
ENDS
SEGMENT PUBLIC ' CODE'
NEAR
LABEL

c

RET
;

If the previous setup failed, decrement the retry count
and retry the setup.
If the count goes to zero, log an
error message and exit; command reception will then cease.

;

037E
0381
0:383

•
I

FE 4C 10
74 03
EB 47 90

RCVet~r

: DEC
JZ
JMP

f

BYTE PTR [Sl]. TT - Ot"'b
RCVstp
; I SSI.le message if failtn"'e
RCVxit
else gc. t c. rett"'y

;

0386
0386
0387
0389
038C
038D

50
B0 0A
E8 001210 E
58
C.,.
..J

+
+
+
+

RCVstp: LOG
PUSH
MOV
CALL
POP
RET

$MND02
AX
AL, $MND0;:::
DM - ERR LOG
AX

; Lc.g the message

-

; Ret Uf'rl to the Dt"'iver

o

,

Reenter here if a message has been received to
fetch data from transporter memory and store in CRQ

••

•

038E
0391
0394
0397

8B
8D
E8
A2

7C 06
5D 01
0000 E
023F R

RCVmsg: MOV
LEA
CALL
MOV

DI,[SIJ.RR
[DIJ.Shost
TL_BYT_IN
TfllpICS. NAD, AL

;Fetch location result record
;Position to Host data
;Fetch the NAO
; and store in temp area

0:39A
039D
03A0
03A3
03A6
03A8
03AB

83
8D
E8
30
7E
B8
A3

C7 0'+
5D 02
121000 E
0211
03
0211
0240 R

ADD
LEA
CALL
CMP
JLE
MOV
RCVmsh: MOV

DI,TVPE RRKD
BX, [OIJ.ELofRP
TL_WRO_IN
AX,$MaxTBD
RCVrnsh
AX,$MaxTBO
TwpICS. Lerl, AX

;Position to control area
;Fetch the length
; of the expected reply
;Assure value not
ncd; larget"' tharl
; we can transmit
;Store in temp area

03AE
03B1
03B4
03B7
03BA

BF
80
B9
8B
E8

023E R
70 04
0004
5C 08
0000 E

MOV
LEA
MOV
MOV
CALL

CX,$RQCsze
BX, [SIJ.Ot1
TL_OTA_IN

03BO
03BF
03C2

8B FE
BE 12123E R
E8 023R R

MOV
MOV
CALL

OI,SI
SI,OFFSET TmpICS
TL._NQ_CRQ

ax,

t

c

;

••

OI,OFFSET TrnpICS
D I, [D I J • Cnmd

;Fetch twp stg offset
;Point to command field
;Set count
;Transporter address data
;Fetch the command data
;Save offset to TST entry
;Replace by tmp stg offset
;Request enqueue of command

Restart reception of commands if CRQ is not full

•
•

•
t-

c
The IBM Personal Computer MACRO Assembler 01-15-84

AL,$RQful

CMP
JNE
RET

IZI,'3C5
03C7
03C'3

3C FF
75 01
C3

03CA
03CC
03CE

BB F7
B0 01
EB 0000 E

03Dl
03D6
03D8
03D'3
03DB
03DC
03DF
03E2

B0 3E 000B E 00

PAGE

RCVt~st

;Just exit if
the queue is full

;

•
•
(

:(

••

03E3

03E4
03E7
0326
0326
0327
0328

75
50
B0
56
BE
E8
5E
58
EB

03E7
03E7
03E7

0F
00
0326 R
0000 E
01 90

00
0A
54 4C

033c:

: MOV
RCVxit: MOV
CALL

i.~D

e=.;:.
'-11_-

SI,DI
AL,$False
TL - SET - RECV

RCVt~st

43 56

;If not, restore TST offset,
; set for no ORB,
;Request restart of reception

•

TL -- RCV- I CS
TRACE
CMP BYTE PTR EC.Trce,$True
JNE
770040
+
PUSH
RX
+
MOV
AL,0
+
PUSH
SI
+
MOV
SI,OFFSET 770041
+
CALL
EM_TRACE
+
POP
SI
+
POP
AX
+
JMP NEAR PTR 770040
+ PC_CODE ENDS
+ PC_DRTA SEGMENT PUBLIC 'DATA'
+ ??0041
LRB
<,OFFSET 710043 - OFFSET 7?0042)
+
+

I

+
"TL-RCV-ICS"
+ ??0042 DB
+ PC_DATA ENDS
+ PC_CODE SEGMENT PUBLIC 'CODE'
+ ??0040

LABEL

'j'

.\

NEAR
;Return to caller

RET

C3

-.11

;

03E8

TL_RCV_ICS

ENDP

;

;***********************************************************************
;Module name:
; Vet~s i orl :

Send Network Address (TL-SEND-NAD)

2. 0

(

;

•

;Last Update: 14 November 1983
;Function:

The Send Network Address routine is called by the Name
Lookup interrupt service driver when a request is received
for the NRD of a disk server.
TL-SEND-NAD sends back an
'invalid commmand' indication, as specified by the disk
server protocol.
No action is taken to assure that the
reply is received •

•
••

•
•

•

I

;

; Procedure:

Program Logic Description, Section 2.6.4

;

;Called By:

TL-RCV-NLM

;

.,;Routines
; Irlput :
;

called:
NI:;' rle

TL-SET-SEND, TL-WRD-OUT, TL-BYT-QUT

(

«

•

•
(

•

The IBM Personal Computer MACRO Assembler 01-15-84

PAGE

1-34

I

;

;Error procedures:

•

None

;Written by: R.B. Talmadge, Computer Technology Ltd
;

; Updates:

Nc.rle

c

;

;***********************************************************************
;

TL_SEND_NAD

03E8

.(

·f

1Z13E8
03ED
1Z13EF
0:3F0
03Fi.:::
03F3
03F6
03F';3
1Z13FA
03FB
1Z13FE
0332
0332

0333
0334
0341
1Z13FE
03FE

80
75
50
BIll
56
BE
E8
5E
58
EB

3E 000B E 00
0F
00
0332 R

0,z'1Zl0 E
01 90

00
0D
53 3A 54 4C 2D

I:"~

'-.1.:5

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

PROC

NEAR

TRACE
S: TL···SEND-·NAD
CMP BYTE PTR EC.Trce,$True
JNE
770044
PUSH
AX
MOV
AL,0
PUSH
SI
MOV
SI,OFFSET 770045
CALL
EM_TRACE
POP
SI
POP
AX
JMP NEAR PTR ?70044
PC CODE ENDS
PC DATA SEGMENT PUBLIC 'DATA'
<,OFFSET 770047 - OFFSET 7?0046)
'17121045 LRB

(

f

-

770046

DB

"S:TL-SEND-NAD"

(

+ PC_DATA ENDS

+ PC_CODE SEGMENT PUBLIC 'CODE'
+ 770044

LABEL

NEAR

Note: The data to be transmitted, which is constant,
was inserted into transporter memory by the
initialization routine TL-INIT-TLD (Section 2.8) I

(

(
,

••

•

.'

C

03FE
041212
0'+06
121409

8A
8B
8D
E8

040C
040F
0412

B8 0001
BE 0000 E
E8 0000 E

0415
041A
041C
041D
1Z141F
0420
0423

80
75
50
BIZI
56
BE
E8

0E 0i.:::13 R
IE 001214 E
5F 0B
0000 E

3E 01Z10B E 1210

0F
0121
0341 R
0000 E

+
+
+
+
+
+
+

MOV
MOV
LEA
CALL

CL,MT.NAD
BX, Tl'''mNAD. CCB
BX, [BX]. Dhc.st
TL_BYT_OUT

;Fetch requestor network address
;Compute transporter location
; to place the address
;Put irlto CeB

MOV
MOV
CALL

AX,$False
;Indicate there is no ORB
SI,OFFSET TrmNAD ;Fetch TST entry offset
TL_SET_SEND
and go do transmission

TRACE
E:TL-SEND-NAD
eMP BYTE PTR EC.Trce,$True
JNE
?70048
PUSH
AX
MOV
AL,0
PUSH
SI
MOV
SI,OFFSET 770049
CALL
EM_TRACE

(

•
•

t

«
Ci

c
t

The IBM Personal Computer MACRO Assembler 01-15-84

0426
0427
0428
042B
0341
0341
0342
0343

5E
58
EB 01 90
00
00
45 3A 54 4C 20 53

0350
042B
042B
042B

SI
POP
POP
AX
JMI=' NEAR PTR ??00L~8
ENOS
+ PC DATA SEGMENT PUBLIC ' DATA'
+ 770049 LRB
<, OFFSET 7700'+B

+
+
+
+ PC - CODE

-

•

t

•

OFFSET ?700 LI·A)

-

.... 770048

C3

LABEL

«
r

NEAR
; GCI back t,:, dri vet~

RET

The following routine is the TL-INT-NAD interrupt service routine,
which is an integral part of the TL-SEND-NAD routine.
It is called
by the interrupt service driver to handle the interrupts generated
by the TL-SEND-NAD transmissions.
;

042C
042C
0431
0433
0434
0436
0437
043A
0'+3D
043E
043F
0442
0350
0350
0351
0352
0360
0442
044i.:::
0442

••

-

+
+ 77004A
DB
"E:TL-SEND-NAD"
+ PC - DATA ENDS
+ PC CODE SEGMENT PUBLIC ' CODE'

(

1

1-,35

PAGE

TL INT_NAD
80
75
50
B0
56
BE
E8
5E
58
EB

3E 000B E 00
0F
00
0350 R
0000 E
01 90

00
0E
r:::'~

;;;J";:'

LABEL

f

NEAR

TRACE
S+E: TL·- I NT --NAD
CMP BYTE PTR EC.Trce,STrue
+
JNE
??004C
+
PUSH
AX
MOV
AL,0
+
PUSH
SI
+
+
MOV
SI,OFFSET ??004D
CALL
EM_TRACE
+
+
POP
SI
+
POP
AX
+
JMP NEAR PTR ??004C
+ PC_CODE ENDS
+ PC_DATA SEGMENT PUBLIC 'DATA'
+ 77004D
LRB
<,OFFSET ??004F - OFFSET ??004E)
+

I

(

+

2B 45 3A 54 4C

+ 77004E

DB

"S+E:TL-INT-NAD"

f

+ PC_DATA ENDS
+ PC_CODE SEGMENT PUBLIC 'CODE'

+ ??004C
C3

LABEL

NEAR

RET

I
;Do nothing (Well,

that was easy)

IZl443
;

;***********************************************************************
;Module name:
Name Lookup Message Processing Routines
I
I
;Vet~sion:

•
••

2.0

;

•

•
C'

;Last Update: 14 November 1983
; FI..\rlct iorl:

The Name Lookup Message Processing routines are called by
the Name Lookup Receive driver to carry out the response
required for the message.
There are five routines:

•

c

•
•

The IBM Personal Computer MACRO Assembler 01-15-84

PAGE

1-36

TL-RCV-HI responds to a Hello message by generating an
AddActive command
TL-RCV-BYE responds to a Goodby message by generating a
DeleteActive command
TL-RCV-WHO responds to a Who are you? message by sending
an Identification message in response
TL-RCV-WHERE responds to a Where are you? message by
an Identification message in response if the specified
name corresponds to the Emulator
TL-RCV-IDEN responds to an Identification message by
generating an AddActive command

;

(
;

(

; Procedure:

•
(

See Program Logic Description, Sections 2.7.1 - 2.7.5

(

TL-RCV-NLM

c

;

;Called by:
;

;Routines called:

TL-NQ-CRQ, TL-SEND-NLM

;

; Input:

(SI) = Offset of TST entry for socket 80 receive (RcvNLM)

;

; Output:

(MT. MOD)

= Operation start indicator

;

;Error procedures:

•

None

;

;Written by: R.B.
; Updates:

(

Talmadge, Computer Technology Ltd

,

NOY-Ie

;

;***********************************************************************
0443
;

0443

TL_RCV_HI

LABEL NEAR

(

0443

(

«

••

•

0443
0448
044A
044B
044D
044E
0451
0454
121455
0456
0459
0360
0360
0361
0~362

0373
0459

80
75
50
B0
56
BE
E8
5E
58
EB

3E 000B E 00

0F
00
0360 R
0000 E
01 90

00
11
53 2B 45 3A 54 4C

TRACE
S+E:TL-RCV-HI/DEN
CMP
BYTE
PTR EC. Tree, $True
+
+
JNE
110050
PUSH
AX
+
MOV
AL,0
+
+
PUSH
SI
+
MOV
SI,OFFSET ?10051
+
CALL
EM_TRACE
+
POP
SI
+
POP
AX
+
JMP NEAR PTR ?10050
+ PC_CODE ENDS
+ PC_DATA SEGMENT PUBLIC 'DATA'
+ ?10051 LRB
<,OFFSET ??0053 - OFFSET ?10052)
+
+ 1?0052 DB
"S+E:TL-RCV-HI/DEN"
+ PC_DATA ENDS
+ PC_CODE SEGMENT PUBLIC 'CODE'

(

•
•

(

{
PAGE

The IBM Personal Computer MACRO Assembler 01-15-84

(

045/;3

f

045E
0461
0464

0.1+53

•
(

t

+ ??012150
C6 06 0217 R 03
BE 0212 R
E8 023A R
C3

HIrlq:

0465
046A
046C
046D
046F
0470
0473
0476
0477
0478
047B

80
75
50
B0
56
BE
E8
5E
58
EB

3E

000B E 00

0F
00
0373 R

0000 E
01 90

0373

0373
0374
0375

00
0E
C<'~

;;;1.;5

2B 45 3A 54 4C

0383

047B
0.1+7B
0.1+7B
0480

LABEL

NEAR

MOV
MOV
CALL
RET

MT.MT_Mod,SMTadd
;Insert AddActive Command
SI,OFFSET MT
;Point to ORB in NLMT
TL_NQ_CRQ
;Insert command into CRQ
;Return to driver

TL RCV_BYE

0465

1-37

LABEL

(

NEAR

S+E:TL-RCV-BYE
TRACE
CMP BYTE PTR EC. Tl"~ce, STl"~ue
+
+
770054
JNE
+
AX
PUSH
+
AL,0
MOV
+
51
PUSH
+
SI,OFFSET ??0055
MOV
+
EM - TRACE
CALL
51
POP
+
+
AX
POP
+
JMP NEAR PTR 770054
+ PC - CODE ENDS
+ PC DATA SEGMENT PUBLIC ' DATA'
+ ??0055 LRB
<, OFFSET ??0057 - OFFSET '??0056)
+
+ ?70056 DB
"S+E:TL-RCV-BYE"
+ PC .- DATA ENDS
+ PC CODE SEGMENT PUBLIC ' CODE'
+ 770054
NEAR
LABEL
MOV
JMP

C6 06 0217 R 00
EB DC

MT.MT_Mod,SMTDel
;Insert DeleteActive command
HInq
;go put into CRQ

;

TL ReV_WHO

0482

•
f

0482
0487
0489
048A
048C
(l148D

0490
0493
0494
0495
0498

80
75
50
B0
56
BE
E8
5E
58
EB

3E

000B E 00

0F
00
0383 R
0000 E
01 90

0383

•
•

0383
0384
0385
039~3

0498
0498
0498

(

00
0E
53 2B 45 3A 54 4C

80 3E 0223 R 01

LABEL

t

NEAR

S+E:TL-RCV-WHO
TRACE
+
CMP BYTE PTR EC.Trce,STrue
+
JNE
770058
+
PUSH
AX
+
MOV
AL,0
+
PUSH
SI
+
MOV
SI,OFFSET ?70059
+
CALL
EM_TRACE
+
POP
SI
+
POP
AX
+
JMP NEAR PTR ??0058
+ PC_CODE ENDS
+ PC_DATA SEGMENT PUBLIC 'DATA'
+ 770059 LRB
<,OFFSET 11005B - OFFSET ??005A}

c

•
(

•
•

+

+
+
+
+

?7005A
PC - DATA
PC - CODE
?70058

DB
"S+E:TL-RCV-WHO"
ENDS
SEGMENT PUBLIC 'CODE'
LABEL
NEAR
CMP

MT.MT_Dev,SNLDsk

;If disk server wanted

•

•
•

«
••

The IBM Personal Computer MACRO Assembler 1211-15-84

049D
049F
0'+A4
04A6

74 1218
80 3E 0223 R FF
74 01
C3

04A7
04AB
04AE
04B1

8A 0E 0213 R
BE 022C R
E8 000121 E
C3

JE
CMP
JE
RET

WHOs1'"ld
MT. MT._Dev, $NLD1'"IY
WHOs1'"ld

;
se1'"ld back I D
;Do same if anybody
;
will do
;Othel'~wise exit

CL,MT.MT_NAD
SI,OFFSET IDmsg
TL_SEND_NLM

;Fetch NAD
;Point to Iden message
;Send the l'~eply
;Go back to driver

;

WHOs1'"ld: MOV
MOV
CALL.
RET
;

04B2

TL RCV_WHERE
8121
75
5121
BIZI
56
BE
E8
5E
58
EB

3E 001Z1B E 00

0F
00
0393 R
121121121121 E
01 90

0393

·f

1--38

c

1Z14B2
04B7
04B9
04BA
04BC
04BD
1Z14C0
04C3
04C4
04C5
04C8

:1

PAGE

0393
121394
121395
1Z13A5
1Z14C8
04C8

121121
1121
53 2B 45 3A 54 4C

04C8
1Z14CB
0'+CE
1Z14D1
04D2
0'+D4
04D6

BS! 1Z101Z1A
BF 12112122 E
BE 0218 R
FC
F3/ A6
74 AC
C3

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

LABEL

NEAR

TRACE
S+E:TL-RCV-WHERE
CMP BYTE PTR EC.Trce,$True
JNE
??005C
PUSH
AX
MOV
AL,IZI
PUSH
SI
MOV
SI,OFFSET ??1ZI1Z15D
CALL
EM_TRACE
POP
SI
POP
AX
JMP NEAR PTR ??1ZI1Z15C
PC - CODE ENDS
PC - DATA SEGMENT PUBLIC 'DATA'
??1ZI1Z15D LRB
<,OFFSET ??005F - OFFSET ??1ZI05E)
??1ZI1Z15E
PC_DATA
PC_CODE
??1ZI1Z15C

f

(

(

DB
"S+E:TL-RCV-WHERE"
ENDS
SEGMENT PUBLIC 'CODE'
LABEL
NEAR
MOV
MOV
MOV
CLD
REPE
JE
RET

CX,$NameLN
;Set count to length of name
DI,OFFSET EC.Serv
;Offset to Emulator name
SI,OFFSET MT.MT_Name
;Offset to name sought
CMPSB
TL RCV_WHO

I

;If the names are the
same, go test for Iden msg
;If not, return to driver

(

;

1Z14D7

t

TL_NLM_SRVC

ENDP

;

;***********************************************************************
;Module name:
; Versio1'"1 =

«

•

•

Receive Name Lookup Message (TL-RCV-NLM)

I
I

C::.IZI

;

;Last Update: 14 November 1983
;

; FUl'"lct i 01'"1:
;

The Receive Name Lookup Message routine is the interrupt
service routine called whenever there is an interrupt for
socket 80 receive (TST entry RcvNLM).
If the interrupt is
completion of a setup receive, no action action is taken.
If a message has been received, TL-RCV-NLM determines the

(

«
(

•

The IBM Personal Computer MACRO Assembler 01-15-84

PAGE

1-39

message type and invokes an appropriate messare processing
l"~I:.ut i nes.
;

;Procedure:

Program Logic Description, Section 2.7

;

;Called by:

(

TL-INT-DRVR

;

;Routines called:

(

TL-SET-RECV, DM-ERR-LOG, TL-BYT-IN,
TL-WRD-IN, TL-DTA-IN, LC-INT-SRVR,
Message Processing routines

c

;

(SI) = Offset TST entry
(AL) = Result code frOM transporter

; Irlput:

•

;

;Out put:

I

f

Norle

;Error procedures:

An error message is logged if the completion code
from the transporter shows setup not sucessful

f

;

••

;Written by: R.B.

I

; Updates:

Talmadge, Computer Technology Ltd

;

Nc.rle

;
;.~**********************************************************************

I

'.
'I

'.
;t

t

.'
:1

•
•
•
f

;

04D7
04D7
04DC
04DE
04DF
04El
04E2
04E5
04E8
04E9
1Z14EA
04ED
03A5
03A5
03A6
03A7
03B3
04ED
04ED
04ED
04F0
04F2

TL_RCV_NLM
80
75
50
B0
56
BE
E8
5E
58
EB

3E 000B E 00

0F
00
03A5 R
0000 E
01 90

00
0C
53 3A 54 4C

i.~D

52

PROC

NEAR

TRACE
S:TL-RCV-NLM
CMP BYTE PTR EC.Trce,$True
+
JNE
?10060
+
PUSH
AX
+
MOV
AL,0
+
PUSH
SI
+
+
MOV
SI,OFFSET 1?0061
CALL
EM._
TI~ACE
+
POP
SI
+
POP
AX
+
JMP NEAR PTR 1?0060
+
+ PC - CODE ENDS
+ PC - DATA SEGMENT PUBLIC 'DATA'
LRB
<,OFFSET ?10063 - OFFSET ??0062)
+ ? ?12I061
+
+
+
+
+

??0062
PC_DATA
PC_CODE
1?0060

80 3C 00
75 0 7
E9 121000 E

DB
"S:TL-RCV-NLM"
ENDS
SEGMENT PUBLIC 'CODE'
LABEL
NEAR
CMP
JNE
JMP

,oJ

3C
74
3C
75

00
2C
FE
17

NLMrnsg: CMP
JE
CMP
JNE

(SIJ. PN, $Tl'~ue
NLMmsg
LC_INT_SRVR

;If message being solicited
transfer to Local Command
interrupt service rtn

AL, $Tl'~OK
NLMmgl
AL, $T'r~SS

;Go to process if
; a message has arrived
;Just exit if this
is a setup completion

NLMerl"~

,
(

;

04F5
04F7
04F9
04FB

(

•
••

,
•

I

•
I

I

•

(
The IBM Personal Computer MACRO Assembler 01-15-84

04FD
121502
0504
051215
0507
12151218
050B
050E
050F
0510
0513
IZl3B3

80
75
50
B0
56
BE
E8
5E
58
EB

03B:3

00
0C
58 3A 54 4C 2D 5i2

03B4
03B5
03C1.
0513
051:3
0513

3E 001Z1B E 00

0F
00
03B3 R
0000 E
01 90

PAGE

1-40

TRACE
X:TL-RCV-NLM
CMP BYTE PTR EC. Tl'~ce, $TI'~I.\e
JNE
770064
+
-IPUSH
AX
MOV
AL,0
+
-IPUSH
SI
+
MOV
SI,OFFSET ?70065
EM -, TRACE
+
CALL
+
POP
SI
-IPOP
AX
+
JMP NEAR PTR 7?0064
+ PC - CODE ENDS
+ PC DATA SEGMENT PUBLIC ' DATA'
<, OFFSET ?70067 -, OFFSET 770066)
+ ??0065 LRB
+
+ 7?0066
"X:TL-RCV-NLM"
DB
+ PC - DATA ENDS
+ PC - CODE SEGMENT PUBLIC ' CODE'
LABEL
NEAR
+ 77006'+
-I-

•

-

RET

C3

If the previous setup failed, decrement the retry count
and retry the setup.
If the count goes to zero, log an
error message and exit; message reception will then cease.

I

(

;

0514
0517
0519
051C

FE 4C 10
74 04
E8 0000 E
C3

NLMel'~"'~

: DEC
JZ
CALL
RET

BYTE PTR [SIJ.TT - Ol'~b
NLMstp
; Issue message if failure
TL - SET RTRY
;If jrl.:.t, request l'~etry
aY'ld retl.ll'~Y'1 to callel'~

t

-

;

•
f

•
•
f

051D
051D
051E
0520
0523
12152'+

50
B0 0C
E8 121000 E
58
C3

+
+
+
+

NLMstp: LOG
PUSH
MOV
CALL
POP
RET

:(

;Log the message

•

-

; ReturY'1 t c. the

Dl'~i vel'~

Reenter here if a message has been received.
The
protocol ID is tested and the message discarded if
the ID does not match that of a Name Lookup message.
0525
0528
052A
052D
053121
0532

8B
8D
E8
3D
74
E9

5C 08
lF
0000 E
01FE
..::,
0""
05C3 R

;
NLMrngl: MOV
LEA
CALL
CMP
~TE

J'MP

BX, [SIJ.Dtl
BX, [BX]. Pid
TL WRD - IN
AX, $PI'~oID
NLMmg2
NLMrst

; TI'~aY'lspol'~tel'"' addl'~ess of data
; Pc.s i t i OY'I t c. protc.col ID
;Fetch the ID
;If Y'IOt Name LCII::ok,.tp
go l'~estal'~t l'"'ecept i OY'I

(

(

(
(

If Name Lookup message, the message data is placed into
the Name Lookup Table, and the appropriate processing
routine is invoked.

t

•

$MND04
AX
AL, $MND0'+
DM ERR - LOG
AX

;

0535

8B 7C 06

NLMmg2: MOV

DI,[SIJ.RR

;Transporter address res rkd

•
(

c

•
.:
(

0538
053B
053E

80 50 01
E8 0000 E
A2 0.7.:13 R

LEA
CALL
MOV

BX, [01 J. Shost
TL BYT IN
IvJT:-MT j\'iAo, AL

; Posi t iorl to serlde~~ NAD
;Fetch NAD arid
save i rl NLMT

0541
0544
0547
054A
0540
0550

7C 08
5D 04
0000 E
0222 R
50 06
0000 E

0553

8B
8D
E8
A2
80
E8
A'-'
0:::.

0223 R

MOV
LEA
CALL
MOV
LEA
CALL
MOV

o I, [S IJ • Dt 1
BX, [Ol]. St~C
TL - WRO - IN
MT.MT - St~C , AL
BX, [Or J. Oev
TL WRD .- IN
MT.MT _Oev,AL

; Tt~arlspc,y"·ter addt~ess of data
; Pc.s i t i c.rl to sc.l_n~ce
;Fetch SClut~ce arid
place int.:. NLMT
:;
; Posi t iorl tc. device type
;Feteh type arid
place irltc. NLMT

0556
055':3
055C
055F

80
BF
B9
E8

50 08
0218 R
00121A
0000 E

LEA
MOV
MOV
CALL

; Pos i t ic.rl t.:. Name
BX, [OIJ.NL_Name
DI,OFFSET MT.MT - Name
; Numbe~~ chat~acters
CX,$NameLN
;Fetch rlame to NLMT
TL OTA IN

121562
121565
0568

8B 7C 08
80 50 1Z12
E8 0000 E

IvJOV
LEA
CALL

o I, [S U • Ot 1
BX, [OU. Mgt
TL - WRO - IN

•
•
I

•

•
•

•
f

1-41

Pf~GE

The IBM Personal Computer MACRO Assembler 01-15-84

-

-

(

•
«
f

-

;C.:.mpute tt~arlspot~te . .~
addt~ess message type
:;
:;Bt~irlg i t
i rl

Because the message type codes are irregular and few in
number, dispatching is carried out by a series of tests
rather than by a transfer table.
C6 1216 0217 R FF

MOV

MT. MT _Mod,

0570
0573
0576

BF 03E8 R
80 FC 01
74 2B

MOV
CMP
JE

01, OFFSET TL -- SENO NAO
AH, $NLarIY
:;ArIY disl-t. Set~Vel~?
If sc., serld NAO
NLMeal

0578
057B
057E

BF 0443 R
80 FC 00
74 23

MOV
CMP
,JE

01, OFFSET TL RCV HI
; He 11 c, messiage?
AH,$NLHi
if so, add active
NLMcal

058121
0583
0586

BF 0465 R
80 FC FF
74 lB

MOV
CMP
JE

Dl,OFFSET TL RCV BYE
:; GCII:.dbye message?
AH,$NLBye
if so, delete active
NLMeal
:;

0588
058C
058F

8B 3E 0443 R
80 FC 10
74 12

MOV
eMP
JE

121591
0595
0598

8B 3E 0482 R
0:::.
80 FC 0'-'
74 09

MOV
CMP
JE

059A
059E
05A1

8B 3E 04Bc~ R
80 Fe 03
75 0e:

MOV
CIYJP
JNE

05A3

FF 07

:;
NLMcal: CALL

;Irlitialize

i orl code

056B

$Tt~SU

Opet~at

-

('

-

DI,~CV_ID~
AH,$dlrl
;Identification?
NLMcal

DI'~CV_~
AH,$NL ho
NLMeal

;

if sc.,

offt'~

(

offtu--

(

add active

-------

you?
;Whc.
if so, serld 10
at~e

DI'~VW~
Al·-j, $ ~ t~
WI"l et~e

......

NLMt~trl

at~e
you?
; I grlc.re message if lrlot

01

;Ca11 pr.:.cess i rig

:;

t~l::.ut

ofF:r~

«
(

i rle

Return here from all message processing routines

(

(

•

The IBM Personal Computer MACRO Assembler 01-15-84

f

•

•

0!5~1C

05Bl.
05B3
05B4
0586
0587
05BA
0580
058E
05BF
17.15C2
03C1
17.13C1
03 Ci.:::
03C3
121300
17.15C2
05 Ci.:::
1215C2

80 3E 0217 R FF
74 17
80
75
517.1
80
56
8E
E8
5E
58
E8

3E

NLMl"~trl

MT.MT __ MOD,

: CMP

000B E 017.1

0F
00
12I3C1 R
017.1017.1 E
17.11 90

00
1210
45 31 3A 54 4C 20

$Tl"~SU

NLMl"~st

~TE

l~IC.

+
+
+
+
+

??017.16A
PC DATA
PC - CODE
??17.I12168

"E 1 : TL.·- RCV-NLM "
DB
ENDS
SEGMENT PUBL.IC ' CODE'
NEAR
LABEL

l"~estart

1

•

05CB
0500
1215Dc~

1215D3
17.1505
0506
121509
05DC
17.1500
0~5DE

05E1
03DI7.I
17.1300

0::m1

03Dc~

c

(

3E

I7.II7.1I7.1B E 00

0F
00
17.1300 R
001210 E
01 90

0121
00
45 3i:'=': 3A 54 4C

••

(

l'''ecept iorl of messages
:;Set fe'l"" '('10 ORB,
assure TST po i l~lt el"~,
request l""estal'~t

E2: TL-RCV--NLM
TRACE
CMP
BYTE
PTR EC.Trce,$True
+
JNE
??006C
+
PUSH
AX
+
MOV
AL,0
+
PUSH
SI
+
-IMOV
SI,OFFSET ??12I06D
CALL
EM_TRACE
+
POP
SI
+
POP
AX
+
-IJMP NEAR PTR 1?12I06C
.... PC - CODE ENDS
-I- PC DATA SEGMENT PUBLIC 'DATA'
(,OFFSET ??12I17.16F - OFFSET ??17.I17.16E)
+ ?1006D LRB

,f

(

f

c:

-I-

f:~D

-I-

??017.16E

DB

"E2: TL--RCV-NL.M"

03DF
17.15E1

+ PC DATA ENDS
+ PC CODE SEGMENT PUBLIC 'CODE'

0~)El

-I-

'??006C

LABEL

NEAR
;Return to caller

RET

t

•

81Z1
75
50
B0
56
BE
E8
5E
58
EB

AL,$False
SI,OFFSET RcvNLM
TL .- SET - RECV

NLMrst: MOV
MOV
CALL

BI2I 17.11
BE 12117.117.10 E
E8 1211211210 E

c·

:; Ot hen>') i se Just exit

RET

C3
:;

05C3
12I5C5
1215C8

:; Restal"'t l"'ece pt i Ctl~1 if
cOnlmarld Cit'" message,

E 1 : TL·- RCV-·NLM
TRACE
CMP BYTE PTR EC. Tree, $Tl"~I.le
+
??0068
JNE
+
~~X
PUSH
+
AL,12I
MOV
+
PUSH
SI
+
SI,OFFSET ??012169
MOV
+
EM - TRACE
CALL.
+
SI
POP
+
AX
POP
+
JMP NEAR PTR ??0068
+
+ PC CODE ENDS
+ PC - DATA SEGMENT PUBLIC ' DATA'
<, OFFSET ??01216B .- OFFSET ??12I06A)
+ ??0069 L.RB

Reerltry p.::oi rlt to

(

1-42

c'
05A5
05AA

«

PAGE

;

1215 £ i:::

TL_RCV_NLM
;

ENDP

••

(
PAGE

The IBM Personal Computer MACRO Assembler 01-15-84

;***********************************************************************
;Module name:

Fetch Internal Command (TL-FETCH-IC)

;

;Version: 2.0
:;
;Last Update: 14 November 1983

I
I
I

,

c

; FU1"lct i orl:

•

The Fetch Internal Command routine is entered when the
TL-FETCH-LC routine encounters an internal commmand.
It
fetches the data from the NLMT to the location specified
by the input ORB.
Socket 80 reception is then restarted
if a Local Command receive is not pending.

;

f

;Procedure:

Program Logic

Description~

Section 2.7.7

(

«

;

:(

;Called By:

TL-FETCH-LC (via a long Jump)

;

;Routines called:

t

TL-SET-RECV

;

;Input:
OS: (SI) = Location of the ORB
:;
:;Output: Completion code returned in ORB

t

;Error procedures:

None

;Written by: R.B. Talmadge, Computer Technology Ltd
;

;***********************************************************************
05Ec~

05E;2
lZ!5E7
05E9
el~5Et:.1

IZl5EC
05ED
05F0
0~5F3

••
«

•

IZl5F '+
05F5
05FB
IZl3DF
IZl3DF
!Z':7£E0
IZl3E1
03EE
IZl5F8

80
75
50
B0
56
BE
E8
5E
!:i8
EB

'~E
,.;,
:'..

000B E 00

0F
00
03DF R
IZl000 E
01 90

00
0D
!.53

3A

5L~

'+C i2D '+6

TRACE
S: TL····FETCH- 1 C
CMP BYTE PTR EC.Trce,STrue
+
JNE
7?0070
+
PUSH
AX
MOV
AL,0
+
PUSH
SI
+
+
MOV
SI,OFFSET ?70071
+.
CALL
EM_TRACE
POP
SI
+
+
POP
AX
+
JMP NEAR PTR 710070
+ PC_CODE ENDS
+ PC_DATA SEGMENT PUBL.IC 'DATA'
+ 7701Z171
LRB
<,OFFSET 170073 - OFFSET 1(0072)
+

+
+ 770072

DB
"S:TL-FETCH-IC"
PC_DATA ENDS
+ PC_CODE SEGMENT PUBLIC 'CODE'
+ 770070
LABEL.
NEAR

0~5F8

56

IZl5F9

:'57

PUSH
PUSH

SI
DI

«
f

+

0~3FB

c

;Save working registers

{

•

•
c

(

The IBM Personal Computer MACRO Assembler 01-15-84

PAGE

«
IZl5F~~

51

PUSH

CX

IZI~3FB

C6
8B
8B
BE

04 1L10
4C 1212
7C 04
IZ121E: R
83 C6 08

MOV
MDV
MDV
MOV
ADD

[SI J. CC, $OPC1"le
;Set completion OK
CX, [SIJ. Sze
;Fetch count from ORB
DI, [SIJ. RB_Data
;Location to place data
;Source starts at NLMT plus
SI,OFFSET MT
SI,TYPE CRQE
offset of initial CRQE

FC

MOVSB

IZl5FE
of.::, 1
0604
O607

°

060A
060B

F31 A4

CLD
REP

0600
0610
0613

BE 0000 E
80 ;3C 1211
74 1A

MDV
CMP
JE

SI,OFFSET RcvNLM
[SIJ.PN,$False

POP
POP
POP

CX
DI
SI

ICl'~st

(

(

;Set direction and
move the data
;Fetch TST entry receive NLM
;80 restart reception
if no local command

'.

;

lZI615
0E,1t;
elt.; 17

59
5F
5E

0618

80

061.D

75 0F

0E. 1.[-7

50
B0 00
56
BE IZl3EE R
EB IZl000 F
5E
:58
EB 0:1. 90

ICxit:

•..

·'

;Restore registers

-

,

•
••
••

el(7;,~0

06i::~~::

06c:~3
IZl6i;:~6

O629
062A
06;:::B
062E
1Z13EE
03EE
IZI3EF
03F0
03FD
062E
121621;::
06c:E

~'3E

001Z1B E 00

01Z1
00
45 3A 5'+ 4C i:::0 '+6

E:TL-FETCH-IC
TRACE
CMP BYTE PTR EC.Trce,$True
JNE
??0074
PUSH
AX
MOV
AL,0
PUSH
SI
MOV
SI,OFFSET ??0075
EM_ TI~ACE
CALL
-I"
SI
POP
+
POP
AX
+
JMP NEAR PTR ??0074
"I- PC_CODE ENDS
+ PC_DATA SEGMENT PUBLIC 'DATA'
+ ?10075
LRB
<,OFFSET ?10077 - OFFSET 110076)
+
+
+
+
+
+
+

+
+ 110076
DB
+ PC_DATA ENDS

••

••

"E:TL-FETCH-IC"

+ PC_CODE SEGMENT PUBLIC 'CODE'
+ 110074 LABEL
NEAR

C3

RET

;Return to caller

Reenter here to restart socket 80 reception
;

IZI62F
~?J631

of.; 3'+

0636

••
"

•
:(

BIZI 01
E8 0000 E
EB OF

I Cl'~st :

JYIOV
CALL
~rMP

TL FETCH_IC
;

AL,$False
TL_SET_RECV
ICxit

; Set for 1"1':' ORB,
request restart,
.:;·tY'Id ex it

ENDP

;***********************************************************************
;

End of the Assembly housekeeping goes here

!

•

;***********************************************************************
;
PC_CODE ENDS

•

PAGE

The IBM Personal Computer MACRO Assembler 01-15-84

1-45

(

«
c

•
•
(

(

PUBLIC
PUBLIC
PUBLIC
PUBLIC
PUBLIC
PUBLIC
PUBLIC
PUBLIC
PUBLIC
PUBLIC
PUBLIC
PUBLIC
PUBLIC
PUBLIC
PUBLIC
PUBLIC

RQ
IDmsg
MT
EMstake
TL - INT DRVR
TL - INT DTME
TL_DQ CRQ
TL. - NQ_CRQ
TL._SET_ERR
TL_GET_NAD
TL - RCV ICS
TL - INT NAD
TL. - RCV NLM
TL - FETCH IC
TL INT - TEST
TL INT - WAIT

-

-

-

-

-

;Command request queue
;NL message image
;Name Lookup Message Table
;Initial stack location
;Interrupt Service Driver
;Interrupt driver off timer tick
;CRQ dequeue
; CRQ el'"lq,-tel..te
;Set disk error code
;Get NAC of requestor
;Receive ICS
;Int svc routine for send NRC
;Receive NL message
;Internal command fetch
;Primary interrupt test loop
;Wait for Operation complete

(

END

(

•

t

••
t

•

(

••

•
••
t,

••

f

t'

«

•

(
The IBM Personal Computer MACRO Assembler 01-15-84

PA(3E

Symbols-1

Length
COMPARE.

000F
001ZJ5

•

DISABLE.

c
I

EI\I(~BLE

•

000t~

ENTER"

•

EXIT •

..

12112113
12112107
1211211211
12112111
1211211212
1211211212
1211211215
00121F
121 121121 E
1211211211
12112112
1211211212
121 121 I2ID
121018
1211211213
01211 A
1211211211
01211213
1211211212
12112101
0009

EVE.

• ..

•

FILLIT •
FIV.

..

GEN .... !3T(.:iR·f.

•
f

•

L.OG. .. •
MOVEB. •
MOVEONE.

RESTORE.
SCANB. • • •
SELEX IT.

•

SELREST..
SEL.SAVE.

•
•

SIVa

..

•

•

START. •
STATUS •
TENTER

TEX IT.

•

TIME " •
TRACE. • • •

N a

CCBL.K..

e

fa1

• • •

CC_CMND.

RRA.
SOC~<

• • •
• • • • • •

CC_.. DATA.

•

•

•

•

DATL • • • • • ..
CONLN.

•

DHOST.
CRGlE •

USE.

•

NAD.
L.EN.
CMND •

•

•

..

•

•

•

R

ft

•

•

..

11

•

•

h

•

•

•

•

•

•

"

•

CRQH • •
G!S'Y
DSC.
END.
TOP.
II

BOT.-

•

(

I

f

Structures and records:

t

«
c

.(

ECT.

"

•

"

"

..
•
•

•
•
•

•
•

•
•

11

..

"

•

• • • • • • • • •

Im::N • • • •
Ee_.DAT •

•

..

u

•

u

•

u

•

•

..

Width
Shift

=1* fields
Width
Mask.

00121C
12101210
12112102
12101214
1211211216
1211211218
121 121 0A
00121B
12112108
12100121
12112101
1211211212
12101214
01210B
012100
001211
121002
001214
000E,
0040
121000
0008

01210'3

Irlitiial

(

•
1211211214

(
0005

«

«
The IBM Personal Computer MACRO Assembler 01-15-84

..

•

000A
001Z1B
000C
000D
000E
0010
012112
001A
0022
002C

..

COLD •

•
I.

.,

','1

EC_TRIYI
IVIAX. •

NEXT ..
DI R. •
NAM. •
SERV ..
ECjHRU • •
EC_ATRS. ..
EC_ATRL. •

•
•

TL TlvtCIO{ ..

..

•

•
•

•
•

TL TMRS • • •
KEEPOUT . . . .
INTDFR
DOSDKO ..
DoSDKS

DDRH •

•

..

•

DDRHS.

•

•

"

TCKS

LRB. • •
CDE. •
LR_LEN
NL.M. • •
PID. ..
IVIGT.

I

"

c

I

•

..

•

n

..

"

..

"

.

...........

II

•

•••

•

•

•

••

MT_MOD
MT_NAME.
MT_SRC
tV1T _DEV •
RSVD •
ORB.. .. •
(:C ..
01=' • •

n

..

It

..

•

..

..

RB_DATA.

•

•

RB._DATAS ..

RRKD • ..
RCDDE.
SHOST.

a

..

".........
.. .. • •

II

•
" •

•

•

•

•

•

•

•

c
t.

"

002E
002F
0030
0031
0032
0033
0034
0036
0038
003A
003C
003E
0002
0000
01Z101
0012
0000
0002
0004
0006
0008
0016
0000

f

0002

il

0005

000':3

0001.

•

ot='c.. .. . . ...

SZF':':..

•

..

..

SRC. •
DE\l
NL_NAME.
NLlVlT • •
fYlT _USE
MT _.NAD •
tI..

•

•

c

00i2D

•

TCKD •

•:,

Symbo I s-c:

IZl009

EC_DRV ..
EC FLG
TReE ..

PAGE

..

0004
0005
012106
001121
012111
121012
012108
012100
01211211
0002
012104
012106
01211214
012100
012101

I~CVLEN

12100c~

RRRCV. •
LoFC!v!.
ELoFRP

0004
0000
012102

(

0005

•
0003

12100i.::

•

The IBM Personal Computer MACRO Assembler 01-15-84

(

•
(

RliSND. .
(4UJFRP
DSTA1'.
TS1'E . •
PN • •
TT_ST.
SK ...
T1' _OP.
CCB. •
I~R •
.

0003
000121

•
.
•
• . . •
. • • .
.. .. • .

•

DSZ.
ISR.

" ..
•

•

•

•

TT _ORB •

t

TT_ORBS.
1'S1'H •
TNT.

;(

u

•

•

•

TT _C1. •
NE: .. • "
TT_NAD .
TSTLE. • .
LE_CC.
LE __ OP.
U::_L.EN •
TRM. • .
TRMS ..
I~CV.
.
ReVS
L.I:::_ ISR
U:::_ISRS.
u

..

•

•

•

• .
• .

..

•

..

u

•

n

f

Symbols-3

000 i.:::

Q.'002

DTL

I S liS •

PAGE

•

0014
0000
0001
0002
0003
0004
0006
0008
000A
000C
000E
0010
0012
0004
0000
0001
0002
0003
0014
0000
0001
0002
0004
0006
tZI008
000A
000C
000E
0010

000C

Size

aligy'.

(

4'

'(.'

f

0004

t
000B

I

f

Segments and groups:
1\1 a

til

e

combiY"le class

«

"

GI~OlJl:')

0636
03FD

PARA
PAR~~

PUBL.IC
PUBLIC

Type

Value

Att\"~

Numbel'~

0000
0000
0001
0000
0000
0210
01E9
01FC

'CODE'
'DATA'

Symbols:

(
(
(

1\1 a

CI$. • • •
CI_MAIN . •
DEBU[3$ ...
DM$. • • .
DM_ERR_LOG • .
DG!FRST • .. • ..
DQOK • •

DQOK1.
DQOK2.

DQS0 • •

m e

L NEAR

Number
Numbe\"~

•

L NEAR
L. NEAR
L NEAI~
L NEAR
1.... NEAR
LNEAR

0c~08

0:1. '3E

Exte\"~Y"lal

Exten'".al
PC CODE
PC CODE
PC CODE
PC CODE
PC CODE

-

•
•

The IBM Personal Computer MACRO Assembler 01-15-84

c

•

0[;1S00. •
DQST . •
D[;18Tl. .. •
DR$..
D\:, .:.Ie:.
45 i.7.:0
50 43 53 48 41 52
45 20
iliA [
20
~.-.

J

••

01l12C
002D
002E
002F
012130
0031
012132
0033

•

•

0034
121036
012138
003A
003C
003E
004121

00
00
00
C0
0A
0A
01,
01
000fl.1
0000
0000
0000
0000
0000

C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+
C+

$CallDS
$CallCA
$CallKR
$CallDI
$Ca 11 TIYI
$CallTP

EQU
EQU
EQU
EQU
EQU
EQU

$INT$

EQU
EQU

$T~~apFL

;DOS function call
;Control_break appendage
;Gets location In-DOS flag
; DOS i Ylt el'~cept
;Timer appendage recall
; Trap i rlterl'~I.lpt

E~1H
i.~3H

34H
55H
67H
1

;Interrupt instruction code
;Position of trap flag in AH

0CDH
1

c·
(

Field lengths
;

$$Sel'~v

EQU
EQU
EQU
EQU

;
ECT
Iden

STRUC
DB

$$Di~~

$$Nam
$$Next

8
8
4

(

10

(

, PCSHARE2'

;Identifier of the version

, C'

DW
DB

o

Dil'~

'PCSHARE '

;Drive for Emulator files oJ'::'

+
+ ??0002

DB
"S:TL-SET-RECV"
+ PC_DATA END8
+ PC_CODE SEGMENT PUBLIC 'CODE'
+ ?10000
LABEL
NEAR

01llCC

FC FE
20

MOV
CMP
JE
CMP
JNE

00CE
01ZID0
01ZlD:3
IZlIZID5

BIZI IZl1
81Z1 ~~C~ 00
74 0'".":.
80 00

SETxst: MOV
CMP
JE
MOV

~~0C4

01Z1C7
1z!0C':~

1-i:::1

SI,OFFSET 110001
IYJOV
EM_TRACE
CALL
POP
SI
+
POP
AX
+
JMP NEAR PTR 110000
+ PC_CODE ENDS
+ PC_DATA SEGMENT PUBLIC 'DATA'
+ 110001
LRB
<,OFFSET ??0003 - OFFSET ??0002)

BE IZlIZlA8 I~
EB 001211Z1 E
5E
58
E8 IZl1 ':30

BA
8121
74
80
75

01Z1C:i.

PAGE

64 01
FC FF
121~j

AH, [SI J. 1'1' _ST
AH, $Tl'~SU
SETxst
AH, $Tt~SS
TL SET_TOPN
AL,$False
[81]. PN, $Tru(?
SETxsu
AL, $Tn.le

;

(

(

;Pick up current result
;Go to exit if previous
set up rlc.t yet
carlcelled arid
no message received
;Assume condition invalid
;It's OK, however,
if no ORB in use

\'

;

8ETxsu

1Z!IZ107
0007
IZIIZ!DC
00DF'::
IZI IZI OF
IZlIZIE :I.
!ZIIZIEi:::
m0E5
01Zl£8
00E':1
eimEA
IZI0ED
tZIIZlB7
01Z187
00B8
0089
01Z1C6
00EO
00£D

81Z1
75
!50
BIZ!
55
BE
EB
5E

00ED

C3

:~E

NEAR

X: TL.-"SET-RECV
TF-IACE
CMP
BYTE
PTR EC.Trce,$True
+
,+
.TNE
??0004
PUSH
AX
+
MOV
AL.,0
+
SI
PUSH
+
SI,OFFSET ??0005
MOV
+
EM_TRACE
CALL
+
SI
POP
+
AX
POP
+
-I"
JMP NEAR PTR 1?,z1004
+ PC,_CODE ENDS
+ PC_DATA SEGMENT PUBLIC 'DATA'
<,OFFSET ?10007 - OFFSET 110006)
+ 1?0005
um

00121B E 0IZ!

IZiF
1210
IZIIZlB7 R

0000 E

58

EB iZl1 '30
00
0D
58

LABEL

+
3~~

5L~

'+C 20

1::'2

,J,,-,

c

"X:TL-8ET-RECV"
+ 110006 DB
+ PC_DATA ENDS
+ PC_CODE SEGMENT PUBLIC 'CODE'
+ 710004

LABEL
RET

NEAR
;Return to caller

;----------------------------------------------------------------------; This is both the reentry point for TL-SET-RECV when a setup is to be I
; carried out, and the transfer point which carries out the actual workl
; of the TL-SET-SEND routine.
I

;-----------------------------------------------------------------------

•
(

«
The IBM Personal Computer MACRO Assembler 01-14-84

PAGE

l.-22:

{

(
00EE
0121EE
00FIZl

88 IZl4
CE, 4L~ 10 llZ1

MOV
MOV

[SIJ. PN, AL
BYTE PTR [SIJ.TT_Orb,SMaxRty

012lF4
00F6
00F8
00FB

3C
75
89
8e

CMP
JNE
MOV
MOV

AL, STt~ue
TL_SET _.RTRY
[S1 J. TT _.. Orb, ex
[SIJ. TT_Ol'~bs, DS

12I1Z1

05
5C 10
5C 1;;::

,

; called to retry either a Set Receive or Set Send command.

;-----------------------------------------------------------------------

;
TL_SET_RTRY

I
I

tZlIZlFE
IZl0FF
lZI100

51

Ie

I
I
f
f
,t

f

'.
•
I

•
C

;Sj..c.ip ORB setup
;
if not present
;Save full address
; if it is present

;----------------------------------------------------------------------; This is both the reentry point for TL-SET-TOPN and the subroutine
iZtIZIFE

•

;Capture ORB indicator
; Assume Y'IC' ORB

C'

."~

LRBEL

NEAR

52

PUSH
PUSH
PUSH

BX
CX
OX

0101
0:1.0'+
0107
010B

8£1 5C 06
88 4C 04
C6 L~4 01 FF
E8 121043 R

MOV
MOV
MOV
CALL

BX, [S1]. RR
ex, [SIJ. CCB
[S1J.TT_ST,STrSU
TL,,_OIJ_CMNO

12110E
011.0
lZl:l12
0115
!ZII :1.7

BA
B0
BIZI
75
B0

MOV
MOV
CMP
JNE
MOV

AH,AL
AL, ST1'~ue
AH,STrSU
SNxit
AL,SFalse

;Save result code
;Assume command executed
; Reset . .~et I..WY'I
cc.de if Y'lot

011'3
IZillA
0118

5j!:.)
59
5B

POP
POP
POP

DX
CX
BX

;Restore registers
aY'ld ex it

011C
0121.

80
75
50
B0
56
BE
E8
5E
58
E8

~''::I

E0
0121
FC FF
0;::::
III 1

;Save registers used
by transporter routine
;Fetch transporter addresses
result record and CCB,
record passage in TST
;
;Execute the command

;

01E;3
e112L~

121126
IZl1 ;:::7
01i:::A
ell E:D
lZtl.;:::E

012F
1211 ~32
IZIIZlC6
00C6
00C7
00C8
00D9
0132
013i:::

SNxit:

TRACE
E/E+S:TL-SET-XXXX
+
CMP BYTE PTR EC.Trce,STrue
+
JNE
110008
+
PUSH
AX
+
MOV
AL,0
+
PUSH
S1
+
MOV
S1,OFFSET 110009
+
CALL
EM_TRACE
+
POP
S1
+
POP
AX
+
JMP NEAR PTR 1?0008
+ PC_CODE ENDS
+ PC_DATA SEGMENT PUBLIC 'DATA'
+ 1?0009 LRB
<,OFFSET 11000B - OFFSET 11000A)

3E 0008 E 00
0F
00
00C6 R
0000 F"
01 90

00

••
(

f

c

+

11

Lt5 i.:::F

f

L~5

;:~B

t:~

...J~

3A

+
+
+
+

1?000A
PC DATA
PC:CODE
110008

DB
"E/E+S:TL-SET-XXXX"
ENDS
SEGMENT PUBLIC 'CODE'
NEAR
LABEL

(

•

•
•
c.

The IBM Personal Computer MACRO Assembler 01-14-84

0132

C3

PAGE

1-23

•

RET
;

0133

TL_SET RECV

ENDP

;

;***********************************************************************
;Module name:
; Vet"'s i ':."In:

c

Send Message (TL-SET-SEND)

I

2. 0

;

;Last Update: 22 December 1983

(

;

; Flmct ion:

•
•

;

The Send Message routine is called by any TLD routine to
send a message of any kind to another machine.
The call
parameters are the offset of the TST entry and an ORB
location if a wait for completion is required.
If there
is an ORB its location is recorded in the TST entry; if
there is no ORB, a maximum size retry count is recorded
instead of the ORB location.

:{

The actual work of the routine is done by the TL-SET-TOPN
execution sequence of TL-SET-SEND.

(

;

; Pro:.ced ure:

Program Logic Description, Section 2.6.1

;

I

;Called by:

TL-DQ-CRQ, TL-INIT-TLD, TL-RCV-ICS,
TL-FETCH-LC, TL-RTN-RSLT, TL-SEND-NLM,
LC-RECV-SRVR

f

;

;Routines called:
;

;lnput:

=
=

(SI)
Offset TST entry
(AL) - $True if ORB present
(DS):(BX)
Location of the ORB

;

;Output:

«

TL-DO-CMND

(AL)

=

(AH)

=

$True if successful
$False if not successful
Return code from transporter

(

;

;Error procedures:

None

;

;Written by: R.B.

Talmadge, Computer Technology Ltd

;

;Updates:

•
c

•

None.

;

;***********************************************************************

f

•

;

0133
0133
0138
013A
013B
013D

TL_SET_SEND
80 3E 0008 E 00
75 0F
50
B0 00
56

+
+
+
+
+

PROC

NEAR

TRACE
S:TL-SET-SEND
CMP BYTE PTR EC. Trce, $True
JNE
??000C
PUSH
AX
MOV
AL,0
PUSH
SI

f\

c\

(
The IBM Personal Computer MACRO Assembler 01-14-84

(-

c(

,

013E
014:1.
01 Lt4
0:1.45
0146
0149
0009
012109
00DA
00DB
00E8
0149
0149
014'3

BE 00D9 R
E8 0000 E
5E
58
EB 01 '30
00
00
53 3A 54 4C 20 53

+
+
+
+
+
+
+
+
+
+
+

PAGE

1-24

•

SI,OFFSET ??000D
MOV
EM_TRACE
CALL
POP
SI
POP
AX
JMP NEAR PTR ??000C
PC_CODE ENDS
PC_DATA SEGMENT PUBLIC ' DATA'
??000D LRB
<, OFFSET ??000F - OFFSET ??000E)

??000E
PC_DATA
+ PC_CODE
+ ??000C

EB A3

DB
"S:TL-SET-SEND"
ENDS
SEGMENT PUBLIC 'CODE'
LABEL
NEAR
JMP

(

•

;That was easy

;

014B

TL_SET_SEND

f

ENDP

;

'.

«

;************************************************************************
;Module name:

Timeout Setup (TL-SET-TIME)

I

;

;VersioY"r:

2.0

t

;

;Last Update: 5 January 1984
;

; FI"\Y"rct i '::'Y"I:

(

I
f
;Procedure:

f

The Timeout Setup routine is called by any TLD routine to
set up a timing loop for receipt of a message.
The call
parameters are the offset of a TST entry already setup to
receive, the location of an ORB, and a network address.
The expiration time is calculated from the value in field
RB.OP of the ORB.
An Echo command timing loop is started
with interrupt service routine set to TL-INT-TIME, which
is part of TL-SET-TIME.
That routine ends the timing
loop if a message is received, or if time-out occurs.

t

(

Program Logic Description, Section 2.6.1

;

;Called by:

TL-FETCH-LC

;

;Routines called:
;

;Input:

(

(SI)
(AL)
(DS):(BX)

TL-DO-CMND, TL-BYT-OUT, DM-ERR-LOG

=

=
=

Offset TST entry
NAD of machine expected to send message
Location of the ORB

•

;

c

;Output:

•

;Error procedures:

None

I

;

An error message is logged if a timing loop is
already in progress when the routine is called

;

;Written by: R.B.

Talmadge, Computer Technology Ltd

;

;Updates:

•

Nc.ne

;

;***********************************************************************

c-

C'

•
(

f

•

I

TL SET_TIME

12114B
1Z114B
IZlt51Z1
121152
121153
121155
0:l56
121159
III :l5C
1Z115D
I~H5E

•

PAGE

The IBM Personal Computer MACRO Assembler 1211-14-84

81Z1
75
5121
BIZI
56
BE
E8
5E
58
EB

01Z1EB R
1210121121 E
1211 9121

0161
0164
0t66

81Z1 3C 00
74 1211
C3

0167
12I16C
016E
121171

80
75
C6
C6

•
•
(

-I-

121121

IZIIZI
0D
5-'
~
3A 5'+ 4C 2D

NEAR

S: TL-'SET-TIME
TRACE
CMP BYTE PTR EC.Trce,$True
-IJNE
??01211121
PUSH
AX
+
-IMOV
AL,12I
PUSH
SI
+
MOV
SI,OFFSET ??12I011
+
CALL
EM_TRACE
+
POP
SI
+
POP
AX
+
-IJMP NEAR PTR 1?012110
-I- PC_CODE ENDS
+ PC_DATA SEGMENT PUBLIC 'DATA'
LRB
<,OFFSET ??012113 - OFFSET ??012112)
+ ??0011

3E IZIIZIIZIB E I21IZ1
IZIF

121161
01Z1E8
01Z1E8
IZIIZIE9
IZIIZIEA
IZIIZIF7
121161
III H; :t

PROC

1-25

5':1
~,

+
+ ?10012

"S:TL-SET-TIME"
DB
PC_DATA ENDS
+ PC_CODE SEGMENT PUBLIC 'CODE'
NEAR
+ ??001121
LABEL
-I-

I

CMP
,JE
RET

[S I J • PN, $Tt"'ue
TMEst

;Just exit if the
message has already
beel"1 t"'ece i ved

CMP

VarOP. PN, $Tt"'ue
TMEok
[SIJ.PN,$False
[BX]. CC, $OPtte.

;If a timing loop is
already in progress
treat the request
as if it timed out

$MNDI2I3
AX
AL,$MNDI2I3

;Then log an error

I

;

••
I

017i.~

el175

0177
0:l7(~

12117B

TMEst:

3E 121094 R 00
I2IE
1214 01
1217 1213

5121
BIZI 0B
E8 00 IZI 121 E
58
C3

~TNE

MOV
MOV
LOG
PUSH
MOV
CALL
POP
RET

-I-

+
+
+

DM_EI~R_LOG

AX
and return to the caller

If the loop can be started, store the current time in field
TT.ORB of the VarOP TST entry, save ORB offset, turn on
timil"lg flag, and start off the first echo command

f

;

1Z117C
12117D
017E

t

0181
0182
0183
IZI184
0186
0:lB8
0l8A

TMEf.:;.k:

51
52
A2 121096 R
9C
FA
50
21
I2IC 1215
E6 21
58
EL~

+

+
+

....

-I-I-

+

PUSH
PUSH
MOV
DISABLE
PUSHF
CLI
PUSH
IN
OR
OUT
POP

CX
DX
VarOP.SK,AL

;Save working registers
;Save NAD
;Mask off transporter

AX
AL, $P82c'p1
AL,$P82EML
$P82c'p1, AL
AX

(

«

•
•

•

+

0188

9D

01.8C
018E
019121
0195
01.99
Illi9C
01.9F

B4
CD
C6
89
BE
89
89

01Ac~

':3C

+

0:lA3
01A4
0lA5
01.A7

+

IliIAB
!lIlAC

FA
50
E4 2:1
24 FA
E6 ;:::1
58
9D

01AD
01AE
01B1
01B4
1Z11 B7

53
8A
8B
8D
E8

01BA
01.BC
01BF
01C2
!l11C4

B1
88
8B
80
E8

01C7
0:1.CB
1Zt1CE
01,01
01D4
01D5
IlHD6

C6 44 01 FF
8B L~C 04
8B 5C 06
E8 0043 R
5B
5A
59

i:::C

21.
06 0094 R 00
36 009E R

••

I

•
(

(

ill:!. A':3

01D7
0:1.DC
01DE
0lDF
0lEl
!lllE2
01E5
iZIlE8
01.E9
01.EA
01.ED
00F7
00F7
00F8
00F9

80
75
50
B0
56
BE
E8
5E
58
EB

+
+

009 Lt R

4C 1121
54 12

(

I.

PAGE

The IBM Personal Computer MACRO Assembler 01-14-84

+
+
+
+
+
-I-

POPF
TIME
MOV
INT
MOV
MOV
MOV
MOV
MOV
ENABLE
PUSHF
CLI
PUSH
IN
AND
OUT
POP
POPF

1-26

;Get the current time
AH,

c~CH

PN, $Tt~ue
Dsz, SI
SI,OFFSET Val"~OP
[SI]. TT __ Orb, CX
[SI]. TT _Ol"~bs, DX
Val"~OP.

Val·~OP.

;Set timing loop flag
;Save TST entry offset
;Now point to VarOP TST
;Save the
;
cUl"~t~eY"lt time
;Restore transporter

t

AX
AL,$P820pl
AL,$P82enb
$P82c.p 1, AL
AX

4C 02
5C 04
5F 04
000B R

BX
CL,[SI].SK
BX, [SI]. CCB
BX, [BX]. Sc.ck
TL_BYT_OUT

02
4C 03
5C 04
IF
12100B R

MOV
MOV
MOV
LEA
CALL

;Now make sure there
CL, $Echc.
is an Echo command
[SIJ. TT _OP, CL
in the TST entry
BX, [SI]. CCB
and i Y"I the CCB
BX, [BX]. CC_CmY"ld
TL_BYT_OUT

MOV
MOV
MOV
CALL
POP
POP
POP

[SI].TT_ST,$TrSU
;Set TST status
CX, [SI].CCB
;60 do the first Echo
BX, [SI]' RR
TL_DO_ClvtND
;Restore registers
BX
DX
CX

00
00F7 R
0000 E
01 90

00
0D
45 3A 54 4C 2D 53

;Fetch NAD
;Calculate transporter
addt~ess aY"ld send
NAD t .:. memc.ry

E:TL-SET-TIME
TRACE
CMP
BYTE
PTR EC.Trce,$True
+
.TNE
770014
+
-IPUSH
AX
MOV
AL,0
+
PUSH
SI
+
MOV
SI,OFFSET 77001.5
+
CALL
EM_TRACE
+
POP
SI
+
POP
AX
+
3MP NEAR PTR 770014
+
+ PC_CODE ENDS
-I- PC_DATA SEGMENT PUBLIC 'DATA'
<,OFFSET 710017 - OFFSET 770016)
+ 770015
LRB
+
+ 770016

DB

I

21.H

PUSH
MOV
MOV
LEA
CALL

3E 000B E 00
0F

•

I
(

(

•
•

"E:TL-SET-TIME"

(

•

The IBM Personal Computer MACRO Assembler 01-14-84

IZi105
0:1.EO
01ED
01ED

PAGE

1--27

•

+ PC_DATA ENDS
+ PC_CODE SEGMENT PUBLIC 'CODE'
+ 770014
LABEL
NEAR

C3

RET

c:

;Return to caller

The following routine is the TL-INT-TIME interrupt service routine,
which is an integral part of the TL-SET-TIME routine.
This routine
checks if there is a timing loop, and if so checks for time expired.
If it has expired, the ORB completion flag is set accordingly~ and
the receive is cancelled.
If time remains, another Echo is issued.

:c;

f
(

I

•

•

I

,"

01EE
01EE
01F3
01F'5
0:lFt;
01F8
0:lF'3
01FC
~HFF

0200
eli:~0 :l
0204
0105
121105
0107
0108
0115
0204

TL INT_TIME
80
75
50
B0
55
BE
E8
5E
58
EB

31::': 000B E IZlIZI
0F
00
121105 R
0000 E
01 '30

00
00
...
;;J,:!i 3A 5'+ 4C 2D 4':3
~

\

•
:(

NEAR

TRACE
S:TL-INT-TIME
+
CMP BYTE PTR EC.Trce,STrue
+
JNE
7?0018
+
PUSH
AX
+
MOV
AL,0
+
PUSH
SI
+
MOV
SI,OFFSET ??001'3
+
CALL
EM_TRACE
+
POP
SI
+
POP
AX
+
JMP NEAR PTR ??0018
+ PC_CODE ENDS
+ PC_DATA SEGMENT PUBLIC 'DATA'
+ ??001'3
LRB
<,OFFSET 7?001B - OFFSET ??001A>

•
(

+

+ ??001A

DB

"S:TL-INT-TIME"

+ PC_DATA ENDS

I

+ PC_CODE SEGMENT PUBLIC 'CODE'
+ ??0018 LABEL
NEAR

0i:~04

I

LABEL

020'+
0207
0i20'3

80 3C 00
74 01
C3

CMP
JE
RET

LSI], PN, STrue
TIMlp

020A
0;::;0E
iZli210

80 7C 03 IZl2
74 01
C3

TIMlp:

eMP
JE
RET

[SIJ.TT_OP,SEcho
TIMlpp

0i211
0214
0217
0219

8B
8B
3C
74

TIMlpp: MOV
MOV
CMP
JE

;If flag is true,
;
go process timing loop
;Exit if no timing loop

;

;Continue if last
; command was Echo
; Ex it if YIC.t

;

(

t"

7C 0A
5D 10
C0
20

DI, [: S I J • Ds z
BX, [DIJ. TT_Ot~b
AL, STt~EA
TIMlp0

;Fetch Receive TST entry offset
;Fetch location ORB
;Echo not acknowledged
is the same as timeout

If timeout occurs, the timing loop is ended, an End Receive is
issued for the socket, and the ORB completion code is set
;

•

•
(

0,;::1 B
021E
0221

C5 04 01
C5 05 1211
C6 07 03

T I MClut: MOV
T I MCIt.lX : MOV
MOV

0;::::24

8A 4D 04

MOV

[:SIJ.PN,SFalse
[D I J • PN, SF a 1 f:5e
[BXJ.CC,SOPtto

;Turn off timing
;Turn off reception
;Set timeout into ORB

CL, [DIJ.Sock

;Fetch receive socket number

(

c

•

c

The IBM Personal Computer MACRO Assembler 01-14-84

1-28

;Calculate transporter
addt~ess aYld sel'"ld
socket to CCB

0i:::27
022A

8B 7C 04·
80 50 04
E8 IZt00B R

MOV
LEA
CALL

01, [SI J. CCB
BX, [01]. Soc 10{.
TL_BYT_OUT

02.3121

Bl
88
80
E8

MOV
MOV
LEA
CALL

;Now insert the End
CL, $El'"ldRcv
:;
Receive in the TST
[SI].TT_OP,CL
and into the CCB
BX, [D!]. CC._Cr(l1'Id
TL_BYT_OUT

1Z1~::2D

0c!32

t

PAGE

0~::35

0237

10
4C 03
lD
000B R

Reenter here to do either the End Receive or Echo command
and then return to the interrupt driver

t
;

0i.:::.3A
02.3E
0;;~41

0244
0i;~47

0;:::4B
02"t8
0249
024A
0i:~4B

024D
0i:::4F
0251
0~::52

I

"n~:55

0257
025A
12I25C
0i:::5E
0261
IZI i::: 63

C6
8B
8B
EB

TIMxit: MOV
MOV
MOV
CALL
RET

44 01 FF
4C 04
5C 06
0043 R

C -:~,

9C

FA
50
E4 21
0C 05
E6 21
58
9D
B4
CD
8B
3A
74
80
32

2C
21
44 llZl
E5
03
C1 3C
E4

+
+
+
+
+

+
+
+
+
+

3E: ED

2B C8

86 D6

0;:::70
027i:::

32 F6
i:::B D0

0i::74

B0
F6
03
3i:::

0276
IZli::::7 8

027A

•
(

[.m 44 1;:;:

0i:::67
0i:::6A
rZli!:::6C
026E

027C
0i::::7D

86 Ci+
32 E4

9C
FA

3C
E1
D0
E4

(

«

If the Echo was acknowledged, test for timeout
:;
;Mask off transporter
TIMlp0: DISABLE
PUSHF
CLI
PUSH
AX
AL., $P82.:.p 1
IN
AL.,$P82EML
OR
$P820p1,AL
OUT
AX
POP
POPF
;Get current time
TIME
AH,2CH
MOV
21H
INT
;If hours value of previous
AX, [SIlo rr_Orb
MOV
not equal to current
AH,CH
CMP
increment current minutes
TIMlpl
JE
;
field
by 1 hour
ADD
CL'60
;Isolate
minutes
fields
AH,AI-I
TIMlpl: XIJR
XOR
CH,CH
;CL has minutes difference
CX,AX
SUB
MOV
XCHG
XOR
XCHG
XOR
SUB

AX, r.SI].TT_Orbs
AL,AH
AH,AH
DL,DH
DH,DH
DX,AX

MOV
MUL

AL,60
CL
DX,AX
AH,AH

ADD

XOR

+
+

[SIJ.TT_ST,$TrSU
;Set TST status
CX, [SI].CCB
;Go do the command
BX,[SIJ.RR
TI..._DO_CMND

c

ENABLE
PUSHF
CLI

;Isolate seconds value
; of previous time
;Isolate seconds value
of cUl"~t~eYlt time
;Seconds difference in DX

I

:;Cc.rJ1pute total
d i ffet~el'"lce il'"l
;
secc.nds
;Restore transporter

c
f

•

The IBM Personal Computer MACRO Assembler 01-14-84

e-

027E
027F
0i:::81
0283
0285
0286
0287
028A

(

(

121i.~8C

50
E4
24
E6
58
9D
8A
3B
7D

12128E

EB AA

2l.
FA
21

+
+
+
+
+
+

47 01
D0
8D

PAGE

1-29

PUSH
IN
AND
OUT
POP
POPF
MOV
CMP
JGE

AL, CBXJ.OP
DX,AX
TIMol..lt

;Compare difference
; with period requested
;Timeout if not less

JMP

TIMxit

;Redo Echo if less

AX
AL,$P820pl
AL, $P82eYlb
$P820pl,AL
AX

('
(

;
;

(

0;:::90

TL SET_TIME

ENDP

;

;***********************************************************************
(

;Module name:

Return Command Result

I

;

;Last Update: 4 January 1983

t-

;F'.tYlction:

(TL-RTN-RSLT)

I

;

;Version:

2.0

;

The Return Command Result routine is called by the
Command Interpreter to return the result of a command
to the requesting machine.
TL-RTN-RSLT returns the data
from the location specified by the ORB, and also sends
the current value of the disk status in field RQ.DSC

(

;.'•f

;

; Pt~clced u re :

Program Logic Description, Section 2.6.2

;

;Called By:

CI-MAIN

;

TL-SET-SEND, TL-WRD-OUT, TL-BYT-OUT
TL-DTA-OUT, LC-RTN-RSLT

;Routines called:
;

;Input:

DS:(SI)

= Location

of the ORB

;

;Output:

Completion code returned in ORB

;

;Error procedures:

None

;

;Written by: R.B. Talmadge, Computer Technology Ltd

(

;

; Updat es:

(

N';)Yle

;

;***********************************************************************
;

TL_RTN_RSLT

0290

t:

I'

0290
0295
0297
121298
029A
12129B

80
75
50
B0
56
BE

3E 000B E 00
0F
00
0115 R

+
+
+
+
+
+

PROC

NEAR

TRACE
S:TL-RTN-RSLT
CMP BYTE PTR EC. Trce, $True
JNE
??001C
PUSH
AX
MOV
AL,0
PUSH
SI
MOV
SI,OFFSET ??001D

(

f

c

c)

f
PAGE

The IBM Personal Computer MACRO Assembler 1211-14-84

029E
1Z12Al
0i:::AE~

02A3
0i:::A6
121115
0115
121116
0117
121 1 i:::4
0i.:::A6
02A6

I

f

02A6
1Z12A'3
0i:::AD
IZIE~AE

E8 121000 E
5E
58
EB 1211 '30
0121
0D
c--.

.:J.5

3A 54 4C 2D 52

+
+
+
+
+
+
+
+
+
+
+

EM_TRACE
CALL
POP
SI
POP
AX
JMP NEAR PTR ??1ZI1Z11C
PC CODE ENDS
PC DATA SEGMENT PUBLIC 'DATA'
<,OFFSET ??1ZI1Z11F - OFFSET ??1ZI1Z11E}
??1ZI01D LRB

-

??1ZI1Z11E
PC - DATA
PC - CODE
+ ??1ZI1Z11C

02B4
IZli:::B6
02B8
0i:::BA
1Z12BB
1Z12BE

DB
"S:TL-RTN-RSLT"
ENDS
SEGMENT PUBLIC 'CODE'
LABEL
NEAR
MOV
MOV
PUSH
MOV

C6 1214 FF
C6 44 1211 1121
::,7
8B 3E 12112104 E
;

o i::: Bi.:::

1-3121

C'~

~':J

••
;Denote 'operation in progress'
;Operation retry count
:; Save t~eg i st et'
and find top item in CRQ

•

If the top item is not queued or is not the current
command, exit with an 'invalid ORB' indication
MOV
AND
eMP
JE
POP
MOV
RET

8A 1215
2L~ CIZI
3C CIlI
74 05
5F
C6 1214, lZIi:::

(SI J. CC, $OPi rip
(SIJ.OP,$MaxRty
DI
DI, RG!. Top

c

AL, [DIJ.Use
;Fetch Usage field and test flag bits
AL,$RQUseR+$RQUseE
AL,$RQUseR+$RQUseE
RSLok
;Go process if conditions ok
DI
;If not, restore register'
[SIJ.CC,$OPtrb
indicate termination,
aY'ld ex it

il

If the CRQ item is OK, test fClt' a local Cit"'" immediate c·::;.mmarld
arid pass the batorl to the app'r~op'r'iate rc.l.tt i rle if eithe'r~
:;

1Z12BF
02Ci.:::
lZIi:::C'+

F6 1215 ;:::121
74 03
E'3 0121121121 E

RSLcrl-!. :

TEST
JZ
.IMP

lZIi:::C7

FE, 1215 10
74 05
5F
C6 1214 00
C3

RSLY'llc: TEST
JZ
POP
MOV
RET

:;
0;::-::C(~

1ZIi.:::CC
0i:::CD
IZl2D121

)

0i:::01
02D2

•
•
f

RSLdo:

53

51

1Z1,~~03

52

1Z12D4
0i:::07
02DA
020C

8B
3B
7E
8B

02DF

89 4C 1212

'+D 02
4C 1212
03

4C 1212

(DIJ.Use,$RQUseL
;If local, trarlsfel'" to
RSLrilc
Local Commarld Serld l"I::tut i Irle
LC RTN RSLT

-

-

I

(DIJ.Use,$RQUseI
RSLdo
;If i rlt errla I , set
DI
operat i OY'I cClmplete, Y'IO
[S I J • CC, $OPcrle
aY'ld exit

I

If a the cClmmaY'ld is fl"clm arlClther machi Y'le, set up the CCB
arid uset~ contrcll a'r~ea for the message, move the data frclm
mer.1CIl'~y
tCI the t rarlsport er, aY'ld execute the seY'ld clpel"at ion

(

PUSH
PUSH
PUSH
MOV
CMP
JLE
MOV

~SLd01 : MOV

el"\'~clr,

BX
CX
DX
CX, [DIJ. Len
CX, [SI J. Sze
RSLdol
CX, (SI J. Sze

;Save WOl"k i Y'lg Registel"s

(S I J. Sze, CX

;Save data 1 eY'lgt h

;Reply length from CRQ
; Compare with leY'lgth i Y'I
ORB aY'ld tal-!,e the
smallel" of the values

•

The IBM Personal Computer MACRO Assembler 1211-14-84

INC
MOV
ADD
CALL

CX
BX, TnnRPY. RR
BX,TYPE RRKD
TL._WRD_OUT

;Add 1 for disk status
;Compute transporter
; address control area
;Insert reply length

8A 0E 012101 E
8D 5F 0;:::
E8 01210B R

MOV
LEA
CALL

CL.,RQ.Dsc
BX, (BX]. Dstat
TL_BYT_OUT

;Fetch disk status
;Transporter address status
;Insert disk status

12131215

8B "~C 02
8B IE 012174 R
56
8B 74· 04
E8 121085 R
5E

-MOV
MOV
PUSH
MOV
CALL
POP

; F et L II d ..d; a It'i.'n··t§.t.b a ru:L
CX, CST J. S:ze
;0;1 tl'~aY'lsp':lrtel'~ "i:\ddl'~ess data
BX,TrmRPY.Dtl
SI
;Memory address of data
SI, [SIL RB_Dat.:.~
;Insert data into transporter
TL._DTA_OUT
SI

0306
0309
030D
121310

SA
8B
8D
E8

MOV
MOV
L.EA
CALL

CL, [DI]. NAD
BX, Tl~I'I1RPY. CC8
BX, (BXJ. Dhost
TL_BYT_OUT

121313
0315
121318
121318

8B DE
B8 121121121121
BE 01216C R
E8 12113:3 R

MOV
MOV
MOV
CALL

BX,SI
;ORB offset to BX for TL-SET-SEND
AX,STrue
;Indicate there is an ORB
SI,OFFSET TrmRPY
;Fetch TST entry offset
TL SET_SEND
and go do transmission

1212E3
1ZI~::E7

1Z12EA
lZIi2ED

1Z12Fl
12I~::F4

lZIi2F7

1212FA
121 i::: FE
1212FF

•

•

4D 01
1E 1211217121 R
5F I2IB
01211Z1B R

B>x,
0)(

1

-rill(.

l1y.

t-c...-

(6)':1. D...+~

ex.) Cal.
'll. _

,; R'fc:t, T A (.(A...P ....~
~
"..11,,«Sf ~t t3 ,

dll.p..I~~

'-bt..

12 W(G:P..-a) uT

,
/

;Fetch network address
;Compute transporter location
;
to place the address
; Put i Y'lt 0::' CCB

Now restore registers and wait around until the completion flag
in the ORB changes, then exit.
The flag will be changed by the
TL-INT-RSLT routine (see below), which is the interrupt service
routine for socket BIZI send, TST entry TrmRPY.
12131E
12132121
1Z13E::I.
03f~c~
0~323

0324

•

(

;

I

I

1-31

41
8B IE 007i::: R
83 C3 0",·
E8 1Z11211A R

0~::E2

I

PAGE

0327
032A
032C~

121331.
0333

8B F3
5A
59
58
5F
E8 0121121121 E
8121
75
F6
74
E8

3C 07
0A
1216 1211211211 E 80
03

121393 R

MOV
POP
POP
POP
POP
CALL

SI,BX
DX
CX
BX
Dl
TL II'H_WAIT

CMP
JNE
TEST
JZ
CALL.

(SI]. CC, SOPtcl
RSLdx
RG\. Dsc, SRQdse
RSLdx
TL_FETCH_LC

LABEL

NEAR

;Restore all registers

t

;Call the wait routine
;Exit unless incorrect
; control length failure
;If so, and if the disk
status shows error,
send result via Fetch LC

f'

;

RSLdx

0336

c
f

121336
033B

033D
033E
034121
121341
0;3i~4

121347

(

80
75
5121
BIZI
56
BE
E8
5E

3E I2I1Z1I21B E 121121
0F
121121
0124 R
12112100 E

+
+
+
+
+
+
+
+

TRACE
E:TL-RTN-RSLT
CMP BYTE PTR EC. Tl'~ce, STt~l.le
??12I1212121
JNE
PUSH
AX
AL,I2I
MOV
SI
PUSH
SI,OFFSET ??0021
MOV
EIYI TRACE
CALL
SI
POP

-

•

•

c
t

PAGE

The IBM Personal Computer MACRO Assembler 01-14-84

0348
121349
034C
1Z!124
012'+
0125
0:1.26
0133
034C
034C

58

00
0D
45 3A 54 4C 2D 52

034C

C3

1-3i:::

POP
AX
JMP
NEAR
PTR 7?0020
+
..1- PC CODE ENDS
+ PC DAT(.:l SEGMENT PUBLIC 'DATA'
LRB
<,OFFSET 7?0023 - OFFSET 1?0022)
+ 770021
+

EB 01 90

f

-

+

c

+ 771Z1022
DB
"E:TL--HTN'-RSLT"
+ PC DATA ENDS
+ PC CODE SEGMENT PUBLIC 'CODE'

+

770020

LABEL

NEAR
therl ex it

F~ET

;----------------------------------------------------------------------; The following routine is the TL-INT-RSLT interrupt service routine,
; which is an integral part of the TL-RTN-RSLT routine (Section 2.6.2)

(

;-----------------------------------------------------------------------

;
TL_INT_RSLT

034D
034D
0""''''''::;'
;:Jt;:;;.
0354
'I..J

0355

0357
0358
035B
0:~5E

035F

1

0:~E,0

013'+
0135
!l1142
0363

«

80
75
50
B0
56
BE
E8
5E
58
EB

3E 000B E 00
0F
00
0133 R
01210121 E
01 90

0363
0133
0133

•

I

00
0D
o:::"~

;.;J':'

3(4 54 4C 2D 4'3

0363

0368
0369
036B
0:3E,E
036F

c-

:.

NEAR

TRACE
S:TL-INT-RSLT
CMP BYTE PTR EC. Trce, STrue
JNE
??0024
PUSH
AX
+
MOV
AL,0
+
PUSH
SI
+
MOV
SI,OFFSET 170025
+
CALL
EM_TRACE
+
POP
SI
+
POP
AX
+
JMP NEAR PTR 770024
+ PC_CODE ENDS
+ PC_DATA SEGMENT PUBLIC 'DATA'
+ ?70025
LRB
<,OFFSET 770027 - OFFSET ??0026)
+
+
+

(

+
+

7?0026

DB

"S:TL-INT-RSLT"

+ PC_DATA ENDS

+ PC_CODE SEGMENT PUBLIC 'CODE'
+ 7?0024
LABEL
NEAR

!l1363

0366

LABEL

f

81Z1 3C 00
74 08
50
BIZI 13
E8 0000 E
58
C-'
,:,

CMP
JE
LOG
PUSH
MOV
CALL
POP
RET

+
+
+
+

[SI J. PN, STl"~ue
RSLokk
$MND06
AX
AL,SMND06
DM .- ERR LOG
AX

•

; Thet~e sh.:.uld be art ORB
llLog arl

9'l'... ·r.... -:I .......

and

-

exit if

YIO

ORB

;

0371Z1
0373

(

•
(

!l1;375

0377
037A

8B
A8
75
C6
C3

5C 10
81Z!
04
07 00

RSLokk: MOV
TEST
JNZ
MOV
RET

ex, (SI].

rr_Ot~b

AL., $Tl"~Nl71
RSLrlg
[BX:J.CC,$OPcne

;Fetch ORB locat

i01"1

ft~c'fI1

;Set comp 1 et i C'Y', code arid
eHit if 5t..tcces!sful
cc.m pI et i C'YI

TST errtry

•

(

(

•

The IBM Personal Computer MACRO Assembler 01-14-84

«

037B
037D
037F
0382

c
(

(

3C 83
75 04
C6 07 07
C3

RSLYlg:

CMP
JNE
IVIOV
RET

PAGE

AL,$TrCL
RSLYlgl
CBX].CC,$OPtcl

1-33

•

; If receive socl
+
+ 11003E DB
"E: TL-SEND--NLM"
+ PC_DATA ENDS
+ PC_CODE SEGMENT PUBLIC 'CODE'
+ 1?003C
LABEL
NEAR

t

+

•
I

RET

;----------------------------------------------------------------------The following routine is the TL-INT-NLM interrupt service routine,
which is an integral part of the TL-SEND-NLM routine.
This routine
retries the transmission if there is a failure, until either there
is success or the retry count is exeeded.
It also restarts Name
Lookup message reception when the transmission sequence is done.

c

;----------------------------------------------------------------------t-

(

•

The IBM Personal Computer MACRO Assembler 01-14-84

PAGE

1-41

IZI56 I="
0561="
0574
IZI~576

(

0577
057'3
057A
057D
058121
121581
0!582
0585
019A
019A
0:l9B
01.9C
01A8
121585
tZI585
tZI585
0588

'(

058~=!

81Z1
75
5121
B0
56
BE
E8
5E
58
EB

S : TL _. I NT -·NLIYI
TRACE
CMP BYTE PTR EC.Trce,STrue
+
JNE
17121040
+
+
AX
PUSH
-IMOV
AL,0
-IPUSH
SI
MOV
SI,OFFSET 77121041
+
CALL
EIYI_ TRACE
+
-IPOP
SI
+
POP
AX
+
JMP NEAR PTR ??0040
+ PC_CODE ENDS
+ PC_DATA SEGMENT PUBLIC 'DATA'
+ 77012141 LRB
<,OFFSET 77121043 - OFFSET 770042)

3E 000B E 00
0F
00
1Z119A R
1211210121 E
1211 90

00
0C
53 3A 54 4C 2D

+
4~.,

17012142
PC_DATA
+ PC_CODE
+ 710040
-I-

-I-

80 3C 00
..:,
7!5 0-'
E9 121000 E

058D
1Z158F

A8 80
74 1219

0591
1215':34
0!596
121599

FE 4C 10

;
NSlgo:

74 04
E8 1Z10FE R
C3

DB
"S:TL-INT-NLM"
ENDS
SEGMENT PUBLIC 'CODE'
LABEL
NEAR
CIVIP
JNE
3MP

[SI]. PN, $Tt~ue
NSIgo
LC_INT_NLM

;If there is an ORB
pass the baton to the
Local Command int rtn

TEST

AL,STrNG

JZ

NSlt~s

;If the entry is for sucessful
transmission, restart reception

DEC
JZ
CALL
RET

BYTE PTR [SIJ.TT_Orb
NSh~s

TL._SET _.RTHY

(

;Decrement the retry count
;Restart reception if zero
;If not, do a retry
;Return to driver

'f

Reenter here if successful or retry count exceeded

•
«

;

059(4
1Z15':3C
tZI591="
1Z15Ac~

05A3

B0 01
BE 001218 R
E8 1Z10AB f~
C'·'
..:,

NSIt~s:

MOV
MOV
CALL
RET

TL SEND NLM
;

AL,SFalse
SI,OFFSET RcvNLM
TL SET_RECV

; Set fOt~ rio ORB,
assure TST pointer,
req !.lest rest a t"t ,
and exit

«

ENDP

;***********************************************************************
;

;

05A3

•

c

!

;***********************************************************************

t'
(

End of the Assembly housekeeping goes here

PC_CODE ENDS
PUBLIC
PUBLIC
PUBLIC
PUBL I C
PUBLIC
PUBL I C

TT
TTbgrl
TTend
I~cv I CS
RcvNLM
Tt"mNLM

; T8T heade . .~
;Start of regular T8T entries
;End of regular entries
;T8T entry for IC8 receive
;T8T entry for NLM receive
;T8T entry for NLM transmit

«

•

.'

f
The IBM Personal Computer MACRO Assembler 01-14-84

PAGE

1-42

f

•
c

«
f

PUBLIC
PUBLIC
PUBLIC
PUBLIC
PUBLIC
PUBLIC
PUBLIC
PUBLIC
PUBLIC
PUBLIC
PUBLIC
PUBLIC
PUBLIC
PUBLIC
PUBLIC
PUBLIC

TrmNAD
VarOP
TL_BYT_IN
TL_WRD_IN
TL_DTA_IN
TL_BYT_OUT
TL_WRD_OUT
TL_DTA_OUT
TL_DD_CMND
TL_SET_RECV
TL_SET_SEND
TL_SET_RTRY
TL_RTN_RSLT
TL_FETCH_LC
TL_SEND_NLM
TL_SET_TIME

;TST entry for sending NAD
;TST entry for variable opns
;Fetch byte from transporter
;Fetch word from transporter
;Fetch string from transporter
;Put byte into transporter
;Put word into transporter
;Put data into transporter
;Execute transporter command
;Setup message receive
;Do message transmission
;Do a command retry
;Return command result
;Fetch long command
;Send Name Lookup message
;Timeout setup

«
(

r

•
«

END

I

t

t

I

f

•

•

•
t

{

•
(

(

(

c

•
(

f

(

•

•

The IBM Personal Computer MACRO Assembler 01-14-84

PAGE

Symbols-I

t
N a

I

•
•
"

I

•
:(

e

fI1

COMPARE. . • • • • • • • • •
DISABLE. • • •
•••
ENABLE •
ENTER. •
EX IT • • •
"

EYE.

•

"

Q

A

~

..

u

u

•

c

000F
0003
0003
0012
000E,
012101
001l.
0002

•

•

FILLIT
FIV. • •
GEN_START.
LOG.. • • •
MOVEB. • • • • • • • • • • •
MOVEONE. • • • • • • • •
RESTORE. •
SCANB. •
SELEX IT.
SELliEST.
SELSAVE.
SIVa • •
START.
STATUS •
TENTER
TEX IT.
TIME • •
TRACE. •

•

o IZI o i.:::
0005
000F
000E
000l
0012
121002
000D
0018
0003
001A
0001
001213
0002
012101.
0009

f

Structures and records:
N a m e

CCBLK. • • •
CC_CMND.
RRA. • •
SOCK • •
• • • • • •
CC_DATR. • • • • • • • •
D(~Tl_

•
c

•

Q

CONLN.
DI--lOST.
CRQE • •
USE. •
NAD. •
LEN ....
CMND •
CRQI···I • •
(~ST •
DSC. •

1:11

A

•

..

"

..

..

Q

II

..

..

II

II

II

a

•

A

•

..

a

• •
•
• •
• ••

••••

"

n

III

U

""

AN"

..

'"

Q

II

..

..

BOT.

• • •

ECL

•

•

..

•

END_
T(JJ:f
N

_

~

•

U

•

III

U.

iii

it

at

N

..

..

Width
Shift

#

I

000C
0000
0002
0004
012106
0008
000A
000B
0008
000121
001211
012102
001214
0008
01210121
12101211
001212
0004
001216
12104121
1211210121
001218

01211219

t

fields
Width
IVlask.

(

I
12101214

121005

00l.A

•

The IBM Personal Computer MACRO Assembler 01-14-84

••
c

.

"
•
I

EC FLG • .
TReE • • •
COLD •
EC_TRM • •
MAX. • • •
!\IEXT • • •
DI R. •
!\lAM. • •
SERV •
EC_ATRU. •
EC_ATRS.
EC_ATRL. •
EC._ TBI •
TL TMC~{ • •
TL TMRS • •
KEEPOUT • .
INTDFR
DOSDKD
DOSDKS
DDRH •
DDRHS.
TCKD • • •
TCKS •
Lf •

01

NEAI~

Number

l..C_FETCi·-l LC.
U::_ I NT_NLM •
L.C_.. RCV __ CMND.

:(

IlA

•

L NEAI~
L NEAR
L NEAR

L NEAR
L NEAR
L NEAR

0075

0079
04':3B

04Bl
04B6

L

NE~",li

047:".5

NEAR

047B

SUGOK. •

L
L

NEAI~

0451

8UGHTY "

L NEAR

04·65

NEAR

SUGTI~M

• • • •

NlJll1bel'~
NlJfI1bel'~

046C
0001
0000

•

L NEAR
L NEAR

0248

L NEAR

0E~6:1

L

•

TBINT(~$.

TENV$. •
T I IYILP..

•

T I tr1L.PtZI •

TII'r'ILP:l

..

•

•

•

0.:::~0A

PAGE

Symb.:.ls-4

fExt el'"

1"1 a

1

Ext et"Y'la 1

PC_CODE
PC_CODE
PC_CODE
PC_CODE
PC_CODE

(

c,

c,
External
Ext el'~Y'la J.

c

Extet~Y'lal

Ext (o'.?n'·la].
Extel'~l"Ial

PC_CODE
PC_CODE
PC_CODE

I

PC_DATA
PC_DATA Global
PC_DATA !3lobal
Extet~l"Ia

PC - CODE
PC_CODE
PC_CODE
PC_CODE
PC_CODE
PC._CODE
PC_CODE
PC_CODE
PC_CODE
PC __ CODE
PC_CODE
PC_CODE
PC._CODE
PC __ CODE
PC_CODE
PC_CODE
PC_CODE
PC._CODE
PC_CODE
PC._CODE
PC_CODE
PC,._CODE
PC __ CODE
PC_CODE
PC_CODE

I
1

('

I,'

I

I

•
(

f-

The IBM Personal Computer MACRO Assembler 1211-14-84

TIIVIL.PP "
TIMOUT .
TJMOUX .
TllvlXIT
TL$.
TL._BYT_IN • •
TL. __ 8YT _OUT •
TL_DO_CMND
."......
TL_DTA_IN. • • •
••••••
TL._DTA_DUT
......... .
TL_FETCH_IC. • • • • • "
TL_FETCH_LC. • • • • " • • •
TL._INT_LCR •
TL __ INT._LCT ..
TL __ I NT _N~~D •
•

"OI

..

,~

...

.UP

n.IIMa

II.un

...

n

f

•
•

TL_INT._RSL T ..
TL._INT_TIME • •
TL._ I I\no_lNA IT.. •
TL_OUTA. • • • • •
TL.._I~CV _ I CS ....
TL_RCV_NLM .. .. • ..
TL_RTN_RSLT..
TL._SET _. eTR ..
TL_ SET . ,)~ECV.
TL_SET_RTRY.
TL._SET._.SEND.
TI.__ BET _.TIME.
TL_SET_TOPN.
TL._WRD_IN. •
TL_WRD_OUT
TMEOK.. •
TMEST. •
TRACE$ •
TRt:JOK.
TRGFHY
TI~GTIVIE

n

..

•
.. • • •
•
•
• .. •
• • • •

p a '. . . .

TFmTf'lIF ..

TRIV!GD.
THMN~m

•
..

TF~MNLM
'rHMr~py

" ..

TT " "
TTBGN.

(

•

•
. " . . ..
.. • •
•••••••

TTEND.
..
$$DIR. "
$$N('=lf'1!. •
$$NEXT •
$$SE:RV ..
$ALLNAD..

"

$~:')TRNRI't1.

•

v(':~ROP..

$C{:,~LLC~~.
$C~1LLCB.

" " " " ..
• .. .. •
..

L
L
L
L

NEAR
NEAR
NEAR
NEAR

121211
121218

NUfl1bet~

NEAR
NEAR
NEAR

01211211
IZJI2I2C
1211211218
1211214:3
12112198
12112185
121121121121
121393
12143::;
IZI LtC4
121121121121
IZl56F
12134D
01EE
0121121121

N
N
N
N
N
L
N
L
L
L
L
L
L
L
L

PROC
PROC
PROC
PRoe

NEAI~

1211212L~

L..

01210121
1211211210
029121
121514
121000
I2II21AB
121121 FE

N

NEAR
NEAR
PROC
PROC
PROC
PROC
NEAR
PROC
PROC
NEAR
PROC

N

I:':O~~OC

12I12111~

L

N
N
N
N
L
N

N
L

PI~OC

NEAR
PROC
NEAR
NEAR
NEAR
NEAr~

L NEAR
L NE~~R

".U"_"

I2Ic~ 1 E

0i::~3A

12I14·B

0121EE
0039

017C
121167
NlJmber~
01211211
L NEAR IZl4EIZI
L NEAR
121 4· FIZI
L NEAR
1214F7
L NEAR 0502
L 12112114 008121
L 0014 12112158
12112144
L 121014
L 12112114 006C
L Dwmm 1211211214
E BYTE 012108
r" BYTE 121 rllA 8
L 121014 121094
NlJmbet~
001218
Number 12101218
Numbet~
001214
NIJrt1bel"~
121 121 121 A
Nl.\ff1bet~
0121FF
Number 121121121121
Number 12112123
Nml1bet~
01211B

PAGE

Symbols-5

PC_.CODE
PC . _CODE
PC_CODE
PC._CODE
PC_CODE
PC_CODE
PC_CODE
PC_CODE
PC_CODE

{

Global
Global
Global
Global
Global

Length
Length
Length
Length
Length

=I2II21I21D
=12I00F
=121042
=012113
=12112113

(

Extet~l"laJ.

PC_CODE Global
PC_CODE
PC_CODE

Length =121181

PC_CODE
PC_CODE
PC_.CODE

Extet~l"laJ.

PC_CODE
PC_CODE
PC_CODE
PC_CODE
PC_CODE
PC_CODE
PC_CODE
PC_CODE
PC_CODE
PC __ CODE
PC_CODE
PC_CODE
PC_CODE
PC._CODE
PC._CODE
PC __ CODE
PC_DATA
PC_DATA
!=')C_DATA
PC_DAHi
PC_DF-iTA
PC_DATA
PC_DATA
PC_DATA

Global Length
Global Length
Length =12101218
Global Length
Glclbal
Global LeY',gth
Global Lel"lgth
Global
G l.:.ba I

=12111213
=008F
=12112188
=012118
:::::121145

Lel"lgt h :::: 00 121 t:)
LeI"!!;! t h =12101 c:

(
:(

Globf.lll
Glc.b,al
Global
Global
Global
Global

•
(

t

•
•

•
t.

«

•

,
•

The

IBM Personal

Computer MACRO Assembler 01-14-84

•
•
(

Symbols'-6

(
SCALLDI . . .
SCALL.DS. ..
$CALLEM. •
$C~1LLK'~.
•
'tlCALL.TI'{. "
$CAL.LTIYl. "
SCAL.l..TP.. •
SCLINT • ..
't;CONS. • ..
SCONSPT • •
$CTLGO .. •
~pCTL IS •
•
SCTLRP "
$DIINT
SDTAGO •
$D1'AIS •
$DTALC "
$DTAND •
SDTANL • ..
SDTARP "
SECHO. •
SENDRCV.
'$;EI\IINT •
SFALSE::: "
SINITT •
$INITTA ..
SINT$. "
SLCABT "
SLC~=lOI-{ ..
"

Ntlfllber~

•
•

Numbet"

•
•

Nl.lfl1bel~
Numbet~
NUl'llbet~
Numbet~

Numbet~

..

Numbet~

Numbet~
Numbet~

•

Numbet~

•

Nt.lmbet~

Number
NI.lrilbel'~
Numbet~
NI.lfl1bel~

•

.....
.. • • •

Al ias
Numbet'
Numbet~

•

Al iias
NUn1bet~

Numbel'"
Ntlmbe'r~
Nl.\mbel'~
Nl.Il'llbet~
Numbel~
NI.\rnbel'~

NUl'l1ber~
••

_

..

"",n"

..

,,11

•
"

•
..

•
"

"
..

•
..
•
..
"

.. •
••
• •
• ..

SLCM~=lXL.

•

PAGE

'iiLCNDP ..
SLCOPN •
SIYlAXDLV.
SMAXMSG.
SMAXRTV.
SMAXTBD"
SMAXWTE.
$MND00 •
$IYlNDIZl1 •
$IVINDI2IE: •
$!vIND03 •
$MNDIZI4 "
~;IYlNDIZI5 •
$\vINDIZI6 ..
$!''lNTIZlI(~ •
$MNTI2I1. •
S~'lNTIZl :llll.
$MNTIZI1,l.
SIYlNTIZI1 i:;:.
$MNT0;;:: •
$!YINT0:3 "
$MNTIZI4

..
•
..
..
..

•
..

..
..

..
•

"
•

Numbet'
Al ias
Al ias
Alias
Number"
Numbet"
NUfl1bet~

Numbet"
•
•

..
•

•

•

•

Numbet~

Nl.ll'llber
Number

"

Numbet~

..

Number
Number
Number

•

Nl.lmbel'~

Nt\mbel'~

•

•

Numbet~

•

NUl'l1bet~

N 1.lm bel'''

•

•

Nl.lt'I1bet~

•

Nl.lmbel'~

Number"
NUl'l1bel~
Numbel'~

$MNT!Z16 "

"

•

•

~H'i\NT07

•

•

•

»

•

•

I\lumber
Number"

0066
0021
000A
0034
001C
0067
0001
0i:::4D
008121
0040
0000
IZIIZl04
01Z103
024C
121002
0004
$MAXTBD
1211Z100
12101 E:
$MAXTBD
0002
001121
12I24E
0001
121020
121100
00CD
00FF
0000
SMAXTBD
$FAL.SE
STRUE
7FFF
012166
0010
0211
1Z100A
0001
0009
000A
000B
000C
001.1
0013
0002
0003
0010
0012
0014
0004
121005
12101216
121007
012108
01210D

(

c
t
I

f

(

'.

\

I

•

•
•

•

The IBM Personal Computer MACRO Rssembler 01-14-84

SIVlNT08 •

Numbel'~

•

Numbel'>'

$tr1NTll~'3

jf;\v! T

n f.m .. • .

$\YITDEL.

..

•

..

Numbet~

•

Numbel'~

•

Numbet~

SN~mm\

(

f

•

!t'NAIVlEL.N..
~;Nl...nNY ..
$!\IL.BYE
<,f;NLDNY
S f\,' LD!31-\

•

NI.lmbet~
Numbel'~

Nurtlbel'~

Number

$NLHI ....

Numbet~

SNLIDN

Number

$!\lU.JHO ..
SNLWHR ..
1;ONE u •
S[)PCNE •
~;OP I NL ..
SOPINP u
SOPTCL •
SOPTDF •
'$;(]PTNG
$OPTRB ..
S(JPTTr·-: "
SOPTTCJ ..
SP82EML.
$P8;:::ENB..
SPBi:=.:ECl I ..
SP82CJP0.
SPBi20P:l. ..

Nurt1bet~

SP82RIS.

'.

Numbel"~

..

NlJmber~

Number
Nurt1bel"~
u

•

•

•

•

•

•

••

••
•

..

NlJmber~

..

Number

.

Numbet~
Numbet~

•

•

Numbel'~

•

NUfl1bet~

•
•
•
•
•

Numbel'~
Numbel'~

Number
Numbel"~
Numbel'~

Numbel'~

• • • • •

Numbel'~

•
•
•

•
•
•

Number
•

•

•

•

•

•

•

NUl'l1bet~

•

Numbel'"
Nurl1bet"
Number

SRQD8E •
SRQENT •
SHQFUL •
$~~QIVIT ..

•

$1~QU8E:::E.

•
..
•
•
•

$RGH.JSER.
!f;SEND. •

..

........

• • • • • • ..

~HWU8E:L

•

..

SRQCSZE.

$RGlU8E I.

•

Number~

SPBi.:::n'IL • •
SPROID .. •
SRDRAM .. •
SRDRAIVI L
•
SRDSTAT. •

$SKNUM •
S8NDNAD.
$Sm\RC ..

•

•

Numbel'~

•

u

•

..

..

•

•

•

• •

Numbel'~
Numbel"~
Nl.lfIlbel'~
NurI1be!'~

Numbe!'"
NI.lmbel'~

Number
Number
Numbe\'~

Number

SSETUP • •

•

u

..
•

•

NlJmbe\'~
Numbel'~

NWl1ber

$SOKRL ..

Numbel'~

SSO!-\r~M

NUfl1bel'~

$SOKTD
$SOH,TM
$8T1NT
$TACCB

•
•
..
•
"

Numbel'~

1\1I.lfIl be r
NI.lmbel'~

Numbe,,"

01210E
01210F
0003
0000
12104121
000A
0001
00FF
00FF
121001
121000
0010
0002
0003
0001
121 01Z1 0
0001
0121FF
0007
0004
0005
0002
012106
0003
0005
00FA
0020
00i20
0021
000B
001211
01FE
0249
0248
02'+8
0004
0080
0001
00FF
0000
0080
0010
121020
0040
0040
00F0
0060
00CF
00B0
00A0
012180
00BI2I
0080
024F
05C6

PAGE

8yrnbols-7

(
(

f
(

f

(

•
•

•

The IBM Personal Computer MACRO Assembler 01-14-84

c:

c

STRDTL. • •
STARR. • • • •
•••
STBINIT • • • • • • • • • • • • •
STBINTI. • • • • •
• ••
STBNOTK. • • • • • • • • • • • •
STBRENB.
••••••••••
'-*nBI~TCK.
•••
•••
STICKMX. • •
••••••••
STRAPFL. • • • • • • • • • • • •
STRCCON.
••••••••••
STRCDSK.
STRCHRD. ..
$TRCL.n •
STRDL. •
STREA. •
STREDY •
$TRENB ..
"

..

u

..

Q

•

snus ....

I
I
I
I

STRIT..
$TRNG.
S·fRNR.
STI=-!NS.
~;TROK.

«

•
•
c

Numbet~
NUfl1bet~

Numbel'~
Numbet~

Number
Numbet~
Numbet~
Numbel'~
Numbet~

Number
NUfl1bet~
NUfl1bet~

Numbew
Numbet~

•
•
•
•

NUfl1bet~

Number
Numbel'~

•
•
•
•
•
•
•
•
"

Numbel'~
Nl,.\mbet~
Numbel'~

•
•
•

•
•
•

•
•

•

•

00FF
0000
01Z11Z11
0001
121248
o i::: 4 A
024B
024'3
0000
00Cl
00A8
00AA
00B7
01Z1ED
00B7
00B'3
00C6
0132
00CE,
00C8
00D9
0149
00D9
00DB
00E8
121161
00E8
IZl0EA
00F7

NUI'''lbel'~
Numbel'~
Numbel'~

•

Numbel'~
Numbel'~

NUfl1bet~

L.

E
L

•

L
L
E

L
L
L

..

•

E

•
•
•
•

L
L

L
•

p

•

•

•

•

•

"

"

n

E

L

»

n

??0013 •

Numbet~
Nl..lmbel'~

•

"

u

"

"

•

u

•

05D6
05D;:::
IZl010
008121
12I0DF
0040
0020
000A
0001
000i=:
12101211
0004
0083
0081
0tZIC0
0080
0020
0084
0086
0080
0085
0082
000121
0010
00FE
007F

NUfllbel'~

L
L

?'?000F •
?'?0011Zl
??0IZIj,:t

Numbet~

Nurnbel'~

"?0IZJ0121 •

•
•

Numbet~
Numbet~

Nl.lrtlbel'~

STRPND
STRSS.
STRST. •
STRSU. • •
STRUE. • •
SVIR_DRVla
SWHClf!'-)M I •
SWf~CTRH.
•
'$WRCTRL. •
$WRRAIVI •
SWRSTBE. •
'PIERO. • •
??etlZl01
??001Z12
? 70003
7 ~) 001Z1i!.
??0005
771ZttZI06
? '? 121007
??01Z11Z18
? '?IZIIZI0'3
';1 ? 1Zl01Z1~~
? ? IZIIZltZlB
??IZl0IZ1C
? ?0lZl0D
? ?IZlIZIIZlE

Numbet~

L
L.
E

NEAR
WORD
BYTE
BYTE
NEAR
WORD
BYTE
BYTE
NEAR
WORD
BYTE
BYTE
NEAR
WORD
BYTE
BYTE
NEAR
WORD
BYTE
BYTE

PAGE

Symbols-8

••

••

.(

(
PC._CODE
PC_DATA
PC_DAHi
PC_DATA
PC_CODE
PC_DATA
PC_DATA
PC_DATA
PC_CODE
PC __ DATA
PC_DATA
PC_DATA
PC_CODE
PC_.. DATA
PC_DATA
PC_DATA
PC._CODE
PC_DATA
PC._DATA
PC._DATA

•
f

•

(

(
The IBM Personal Computer MACRO Assembler 01-14-84

•

,
•
«

?70014 .
??12HZI15 .
7 ':)012116 .
?70017 "
';>':10018 "
? ? IZt01 9 . • " . .
7?001A • . . • • .
??IZl01B .
??001C "
7? 1211211 D
? 701211E .
??01ZtlF.
? 701212121 ..
??IZt0E~1 .
II

??1ZI02c:

II

II

II

??0023 ..

77012124
??0025

If

..

II

?70025 •
?70027 • " • • .
? ?0IZtE~B •

I

??00i.:::'3
??002A
??01Zl2B
??0IZti.::C
?7002D
??00E:E
??002F
?? 01213121

.

?'?003i.~

..

•
•
•
•
• • • • .
. • "
D

II

??0033 • .
?701Zt34 •
??0035 .

•
(

«
(

770035
?70037
??0038
??0039
??003A
??01Z13B
??0IZt3C
7?003D
77003E
7?003F
7?004121
7?0041
??0042
??0043

• .
.
»

•
•
•
•
• •
•
•
•

Wat~rli l~lg

Severe

E'r~t~C:lrs

El'~l'~Ot~S

III

•

.
•

•

U

"

L NEAR
L WORD
L BYTE
F BYTE
L NEAR
L WORD
L BYTE
E BYTE
L NEAR
L WORD
L BYTE
F BYTE
L NEAR
L WORD
L BYTE
E BYTE
L NEAR
L WORD
L BYTE
E BYTE
L NEAR
L WORD
L BYTE
E BYTE
L NEAR
L WORD
L BYTE
E BYTE
L NEAR
L WORD
L BYTE
E BYTE
L NEAR
L WORD
L BYTE
E BYTE
L NEAR
L WORD
L BYTE
E BYTE
L NEAR
L WORD
L BYTE
E BYTE
L NEAR
L WORD
L.. BYTE
E BYTE

01ED
00F7
00F':~

0105
0204·
0106
01121B
0115
02A6
0115
0117
0124
03'+C
0124
01i:::6
121133

0363
0135
0142
03A9
01.42
0144·
QH51
0434
0151.
01.53
0160
0'+4B
0150
0162
016E
04DA
016E
0170
017C
052A
017C
IZl17E
01BB
056E
01BB
01BD

019A
0~;B5

019A
019C
01AB

PAGE

PC._CODE
PC_DATA
PC_Df-HA
PC_DATA
PC_.CODE
PC_DATA
PC_DATA
PC_mHA
PC_CODE
PC_DATA
PC_DATA

Symbols-9

c·

PC_D~nA

PC_CODE
PC_DATA
PC_DATA
PC .._DATA
PC_CODE
PC_DATA
PC_DATA
PC_DATA
PC_CODE
PC_DATA
PC_.DATA
PC_DATA
PC_CODE
PC_DATA
PC_DATA
PC_.. DATA
PC_CODE
PC_DATA
PC_DATA
PC_DATA
PC_CODE
PC_DATA
PC_. DATA
PC_DATA
PC_CODE
PC_DATA
PC_DAH·)
PC_DATA
PC_CODE
PC_DATA
PC_DATA
PC_DATA
PC_CODE
PC._DATA
PC_DATA
PC_DATA

t

(

.(

(

f

••

•



Source Exif Data:
File Type                       : PDF
File Type Extension             : pdf
MIME Type                       : application/pdf
PDF Version                     : 1.3
Linearized                      : No
XMP Toolkit                     : Adobe XMP Core 4.2.1-c041 52.342996, 2008/05/07-21:37:19
Create Date                     : 2017:11:16 15:56:54-08:00
Modify Date                     : 2017:11:16 16:18:49-08:00
Metadata Date                   : 2017:11:16 16:18:49-08:00
Producer                        : Adobe Acrobat 9.0 Paper Capture Plug-in
Format                          : application/pdf
Document ID                     : uuid:7da320a8-4851-eb47-b9ea-644fff167d65
Instance ID                     : uuid:0196b389-5745-4446-8313-8d02a48d3efc
Page Layout                     : SinglePage
Page Mode                       : UseNone
Page Count                      : 156
EXIF Metadata provided by EXIF.tools

Navigation menu