|
|
DataMuseum.dkPresents historical artifacts from the history of: MIKADOS |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about MIKADOS Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - download
Length: 7648 (0x1de0)
Types: TextFile
Notes: Mikados_K
Names: »RECEIV.K«
└─⟦33b8385fd⟧ Bits:30009009 PSAP1
└─⟦this⟧ »RECEIV.K«
;*************************************************************
;* PASCAL STANDARD ASSEMBLER PACKAGE. *
;* *
;* (C) 1980 DANSK DATA ELEKTRONIK APS. *
;*************************************************************
;
;*************************************************************
;* PROCEDURE NAME: RECEIV *
;*************************************************************
;
; CT 07-MAY-1980
;
;=============================================================
; DESCRIPTION:
; THIS PROCEDURE RECEIVES A MESSAGE FROM THE MAIN SEMAPHORE OF
; THE CALLING ANOTHER PROCESS.
; PLEASE REFER TO THE PASCAL STANDARD ASSEMBLER PACKAGE MANUAL
; SECTION 4.2 FOR DETAILS.
;
;-------------------------------------------------------------
; STACK CONTENTS ON ENTRY: I I
; I---------------I
; I RETURN ADR. I
; I---------------I
; I -> LENGTH I
; I---------------I
; I -> CONTENTS I
; I---------------I
; I -> SENDER I
; I---------------I
; I I
;-------------------------------------------------------------
; STACK CONTENTS ON EXIT: EMPTY
;-------------------------------------------------------------
; THE MESSAGE IS EXCHANGED IN A MESSAGE BUFFER.
; BYTES 0-1 OF THE MESSAGE BUFFER CONTAIN THE ADDRESS OF
; THE PCB OF THE SENDING PROCESS.
; BYTE 3 OF THE MESSAGE BUFFER CONTAINS THE LENGTH OF THE
; MESSAGE.
; IF LENGTH <= 10 BYTES 4-13 OF THE MESSAGE BUFFER
; CONTAINS THE MESSAGE.
; IF LENGTH > 10 BYTES 4-5 OF THE MESSAGE BUFFER POINT
; TO A DATA AREA THAT CONTAINS THE MES-
; SAGE. THE LENGTH OF THE DATA AREA IS
; STORED IN BYTES 6-7 OF THE MESSAGE
; BUFFER.
;=============================================================
SKIP
RECEIV::
;
;GET THE PARAMETERS
;
POP B ;BC:=RETURN ADDRESS
POP H ;HL->LENGTH
SHLD LENPTR
POP H ;HL->CONTENTS
SHLD CONPTR
POP H ;HL->SENDER
SHLD SNDPTR
PUSH B ;RESTORE RETURN ADDRESS
;
;RECEIVE THE MESSAGE BUFFER FROM THE MAIN SEMAPHORE
;
CALL VENTS
;
;SAVE THE ADDRESS OF THE MESSAGE BUFFER
;
PUSH H
;
;GET ADDRESS OF PCB OF SENDING PROCESS FROM BYTES 0-1 OF
;MESSAGE BUFFER
;
LHLD SNDPTR ;HL->SENDER PARAMETER
LDAX D ;SENDER PARAMETER
MOV M,A ; ->
INX H ; PCB OF
INX D ; THE
LDAX D ; SENDING
MOV M,A ; PROCESS
;
;GET LENGTH OF MESSAGE FROM BYTE 3 OF MESSAGE BUFFER
;
INX D
INX D ;DE->LENGTH FIELD
LHLD LENPTR ;HL->LENGTH PARAMETER
LDAX D ;LENGTH PARAMETER
MOV M,A ; :=
INX H ; LENGTH
MVI M,0 ; OF MESSAGE
STA LENGTH ;SAVE THE LENGTH FOR LATER USE
;
;PREPARE TO GET THE MESSAGE
;
INX D ;DE->BYTE 4 OF MESSAGE. IF LENGTH > 10
; THIS BYTE (TOGETHER WITH BYTE 5)
; CONTAINS THE ADDRESS OF THE MESSAGE.
; IF LENGTH <= 10 THIS BYTE IS THE
; FIRST BYTE OF THE MESSAGE.
PUSH D ;SAVE THE ADDRESS OF BYTE 4
;
;DECIDE IF LENGTH <= 10 OR LENGTH > 10
;
CPI #11 ;LENGTH<11?
JC SHORT ;YES, THE MESSAGE IS IN THE MES. BUFFER
;
;GET ADDRESS OF MESSAGE
;
XCHG ;HL->ADDRESS OF MESSAGE
MOV E,M ;DE
INX H ; ->
MOV D,M ; MESSAGE
POP H ;HL->BYTE 4 OF MESSAGE BUFFER
PUSH D ; AND REPLACE IT BY THE ADDRESS OF THE
; MESSAGE
;
;GET THE LENGTH OF THE DATA AREA ALLOCATED FOR THE MESSAGE
;
INX H
INX H ;HL->LENGTH OF DATA AREA
MOV A,M ;ALLLEN
STA ALLEN ; :=
INX H ; LENGTH OF
MOV A,M ; ALLOCATED
STA ALLEN+1 ; DATA AREA
;
;EVERYTHING IS NOW READ FOR THE TRANSFER OF THE MESSAGE TO THE
;CONTENTS PARAMETER.
;IF THE MESSAGE LENGTH <= 10 THE TOPMOST ELEMENT ON THE STACK
; CONTAINS THE ADDRESS OF BYTE 4 OF THE MESSAGE BUFFER.
;IF THE MESSAGE LENGTH > 10 THE TOPMOST ELEMENT ON THE STACK
; CONTAINS THE ADDRESS OF THE ALLOCATED DATA AREA CON-
; TAINING THE MESSAGE.
;IN EITHER CASE THE TOPMOST ELEMENT ON THE STACK CONTAINS THE
; ADDRESS OF THE LOCATION WHERE THE MESSAGE IS STORED.
;
SHORT: LHLD CONPTR ;HL->CONTENTS
POP D ;DE->LOCATION OF MESSAGE
PUSH D ;PUT ADDRESS OF MESSAGE BACK ON STACK
LDA LENGTH ;A:=LENGTH OF MESSAGE
MOV B,A ;B:=LENGTH OF MESSAGE
CALL MOVE ;MOVE MESSAGE TO CONTENTS PARAMETER
;
;SHOULD AN AREA BE DEALLOCATED? THEN DO IT!
;
POP D ;DE->LOCATION OF MESSAGE. IF THE
; MESSAGE LENGTH > 10 THIS AREA SHOULD
; BE DEALLOCATED.
LDA LENGTH ;A:=MESSAGE LENGTH
CPI 11 ;LENGTH<11?
JC SHORT1 ;YES, WE SHOULD NOT DEALLOCATE
LHLD ALLEN ;HL:=LENGTH OF THE ARE TO BE DALLOCATED
CALL DELOC ;DEALLOCATE
;
;SEND THE MESSAGE BUFFER BACK TO THE POOL SEMAPHORE
;
SHORT1:POP H ;HL->MESSAGE BUFFER
LXI B,POOL
CALL SEND ;SEND IT BACK
RET
SKIP
;***** LOCAL DATA *****
LENPTR:DS 2 ;ADDRESS OF LENGTH PARAMETER
CONPTR:DS 2 ;ADDRESS OF CONTENTS PARAMETER
SNDPTR:DS 2 ;ADDRESS OF SENDER PARAMETER
LENGTH:DS 2 ;LENGTH OF MESSAGE
ALLEN: DS 2 ;LENGTH OF DATA AREA ALLOCATED FOR
; MESSAGE
END
0x0000…0040 Line {l1=0x3e, l2=»;*************************************************************«, l3=0x3e}
0x0040…0080 Line {l1=0x3e, l2=»;* PASCAL STANDARD ASSEMBLER PACKAGE. *«, l3=0x3e}
0x0080…00c0 Line {l1=0x3e, l2=»;* *«, l3=0x3e}
0x00c0…0100 Line {l1=0x3e, l2=»;* (C) 1980 DANSK DATA ELEKTRONIK APS. *«, l3=0x3e}
0x0100…0140 Line {l1=0x3e, l2=»;*************************************************************«, l3=0x3e}
0x0140…0143 Line {l1=0x01, l2=»;«, l3=0x01}
0x0143…0183 Line {l1=0x3e, l2=»;*************************************************************«, l3=0x3e}
0x0183…01c3 Line {l1=0x3e, l2=»;* PROCEDURE NAME: RECEIV *«, l3=0x3e}
0x01c3…0203 Line {l1=0x3e, l2=»;*************************************************************«, l3=0x3e}
0x0203…0206 Line {l1=0x01, l2=»;«, l3=0x01}
0x0206…0218 Line {l1=0x10, l2=»; CT 07-MAY-1980«, l3=0x10}
0x0218…021b Line {l1=0x01, l2=»;«, l3=0x01}
0x021b…025b Line {l1=0x3e, l2=»;=============================================================«, l3=0x3e}
0x025b…026b Line {l1=0x0e, l2=»; DESCRIPTION:«, l3=0x0e}
0x026b…02ab Line {l1=0x3e, l2=»; THIS PROCEDURE RECEIVES A MESSAGE FROM THE MAIN SEMAPHORE OF«, l3=0x3e}
0x02ab…02cb Line {l1=0x1e, l2=»; THE CALLING ANOTHER PROCESS.«, l3=0x1e}
0x02cb…030b Line {l1=0x3e, l2=»; PLEASE REFER TO THE PASCAL STANDARD ASSEMBLER PACKAGE MANUAL«, l3=0x3e}
0x030b…0327 Line {l1=0x1a, l2=»; SECTION 4.2 FOR DETAILS.«, l3=0x1a}
0x0327…032a Line {l1=0x01, l2=»;«, l3=0x01}
0x032a…036a Line {l1=0x3e, l2=»;-------------------------------------------------------------«, l3=0x3e}
0x036a…039c Line {l1=0x30, l2=»; STACK CONTENTS ON ENTRY: I I«, l3=0x30}
0x039c…03ce Line {l1=0x30, l2=»; I---------------I«, l3=0x30}
0x03ce…0400 Line {l1=0x30, l2=»; I RETURN ADR. I«, l3=0x30}
0x0400…0432 Line {l1=0x30, l2=»; I---------------I«, l3=0x30}
0x0432…0464 Line {l1=0x30, l2=»; I -> LENGTH I«, l3=0x30}
0x0464…0496 Line {l1=0x30, l2=»; I---------------I«, l3=0x30}
0x0496…04c8 Line {l1=0x30, l2=»; I -> CONTENTS I«, l3=0x30}
0x04c8…04fa Line {l1=0x30, l2=»; I---------------I«, l3=0x30}
0x04fa…052c Line {l1=0x30, l2=»; I -> SENDER I«, l3=0x30}
0x052c…055e Line {l1=0x30, l2=»; I---------------I«, l3=0x30}
0x055e…0590 Line {l1=0x30, l2=»; I I«, l3=0x30}
0x0590…05d0 Line {l1=0x3e, l2=»;-------------------------------------------------------------«, l3=0x3e}
0x05d0…05f6 Line {l1=0x24, l2=»; STACK CONTENTS ON EXIT: EMPTY«, l3=0x24}
0x05f6…0636 Line {l1=0x3e, l2=»;-------------------------------------------------------------«, l3=0x3e}
0x0636…0667 Line {l1=0x2f, l2=»; THE MESSAGE IS EXCHANGED IN A MESSAGE BUFFER.«, l3=0x2f}
0x0667…06a1 Line {l1=0x38, l2=»; BYTES 0-1 OF THE MESSAGE BUFFER CONTAIN THE ADDRESS OF«, l3=0x38}
0x06a1…06c4 Line {l1=0x21, l2=»; THE PCB OF THE SENDING PROCESS.«, l3=0x21}
0x06c4…06ff Line {l1=0x39, l2=»; BYTE 3 OF THE MESSAGE BUFFER CONTAINS THE LENGTH OF THE«, l3=0x39}
0x06ff…070b Line {l1=0x0a, l2=»; MESSAGE.«, l3=0x0a}
0x070b…073f Line {l1=0x32, l2=»; IF LENGTH <= 10 BYTES 4-13 OF THE MESSAGE BUFFER«, l3=0x32}
0x073f…0768 Line {l1=0x27, l2=»; CONTAINS THE MESSAGE.«, l3=0x27}
0x0768…07a1 Line {l1=0x37, l2=»; IF LENGTH > 10 BYTES 4-5 OF THE MESSAGE BUFFER POINT«, l3=0x37}
0x07a1…07da Line {l1=0x37, l2=»; TO A DATA AREA THAT CONTAINS THE MES-«, l3=0x37}
0x07da…0812 Line {l1=0x36, l2=»; SAGE. THE LENGTH OF THE DATA AREA IS«, l3=0x36}
0x0812…0848 Line {l1=0x34, l2=»; STORED IN BYTES 6-7 OF THE MESSAGE«, l3=0x34}
0x0848…0863 Line {l1=0x19, l2=»; BUFFER.«, l3=0x19}
0x0863…08a3 Line {l1=0x3e, l2=»;=============================================================«, l3=0x3e}
0x08a3…08ac Line {l1=0x07, l2=» «, l3=0x07}
0x08ac…08b9 Line {l1=0x0b, l2=» SKIP«, l3=0x0b}
0x08b9…08c3 Line {l1=0x08, l2=»RECEIV::«, l3=0x08}
0x08c3…08c6 Line {l1=0x01, l2=» «, l3=0x01}
0x08c6…08c9 Line {l1=0x01, l2=»;«, l3=0x01}
0x08c9…08de Line {l1=0x13, l2=»;GET THE PARAMETERS«, l3=0x13}
0x08de…08e1 Line {l1=0x01, l2=»;«, l3=0x01}
0x08e1…090d Line {l1=0x2a, l2=» POP B ;BC:=RETURN ADDRESS«, l3=0x2a}
0x090d…0931 Line {l1=0x22, l2=» POP H ;HL->LENGTH«, l3=0x22}
0x0931…0948 Line {l1=0x15, l2=» SHLD LENPTR«, l3=0x15}
0x0948…096e Line {l1=0x24, l2=» POP H ;HL->CONTENTS«, l3=0x24}
0x096e…0985 Line {l1=0x15, l2=» SHLD CONPTR«, l3=0x15}
0x0985…09a9 Line {l1=0x22, l2=» POP H ;HL->SENDER«, l3=0x22}
0x09a9…09c0 Line {l1=0x15, l2=» SHLD SNDPTR«, l3=0x15}
0x09c0…09f0 Line {l1=0x2e, l2=» PUSH B ;RESTORE RETURN ADDRESS«, l3=0x2e}
0x09f0…09f3 Line {l1=0x01, l2=» «, l3=0x01}
0x09f3…09f6 Line {l1=0x01, l2=»;«, l3=0x01}
0x09f6…0a2b Line {l1=0x33, l2=»;RECEIVE THE MESSAGE BUFFER FROM THE MAIN SEMAPHORE«, l3=0x33}
0x0a2b…0a2e Line {l1=0x01, l2=»;«, l3=0x01}
0x0a2e…0a44 Line {l1=0x14, l2=» CALL VENTS«, l3=0x14}
0x0a44…0a47 Line {l1=0x01, l2=» «, l3=0x01}
0x0a47…0a4a Line {l1=0x01, l2=»;«, l3=0x01}
0x0a4a…0a73 Line {l1=0x27, l2=»;SAVE THE ADDRESS OF THE MESSAGE BUFFER«, l3=0x27}
0x0a73…0a76 Line {l1=0x01, l2=»;«, l3=0x01}
0x0a76…0a88 Line {l1=0x10, l2=» PUSH H«, l3=0x10}
0x0a88…0a8b Line {l1=0x01, l2=» «, l3=0x01}
0x0a8b…0a8e Line {l1=0x01, l2=»;«, l3=0x01}
0x0a8e…0ac8 Line {l1=0x38, l2=»;GET ADDRESS OF PCB OF SENDING PROCESS FROM BYTES 0-1 OF«, l3=0x38}
0x0ac8…0ad9 Line {l1=0x0f, l2=»;MESSAGE BUFFER«, l3=0x0f}
0x0ad9…0adc Line {l1=0x01, l2=»;«, l3=0x01}
0x0adc…0b0a Line {l1=0x2c, l2=» LHLD SNDPTR ;HL->SENDER PARAMETER«, l3=0x2c}
0x0b0a…0b34 Line {l1=0x28, l2=» LDAX D ;SENDER PARAMETER«, l3=0x28}
0x0b34…0b57 Line {l1=0x21, l2=» MOV M,A ; ->«, l3=0x21}
0x0b57…0b81 Line {l1=0x28, l2=» INX H ; PCB OF«, l3=0x28}
0x0b81…0bad Line {l1=0x2a, l2=» INX D ; THE«, l3=0x2a}
0x0bad…0be2 Line {l1=0x33, l2=» LDAX D ; SENDING«, l3=0x33}
0x0be2…0c1a Line {l1=0x36, l2=» MOV M,A ; PROCESS«, l3=0x36}
0x0c1a…0c1d Line {l1=0x01, l2=» «, l3=0x01}
0x0c1d…0c20 Line {l1=0x01, l2=»;«, l3=0x01}
0x0c20…0c56 Line {l1=0x34, l2=»;GET LENGTH OF MESSAGE FROM BYTE 3 OF MESSAGE BUFFER«, l3=0x34}
0x0c56…0c59 Line {l1=0x01, l2=»;«, l3=0x01}
0x0c59…0c6b Line {l1=0x10, l2=» INX D«, l3=0x10}
0x0c6b…0c95 Line {l1=0x28, l2=» INX D ;DE->LENGTH FIELD«, l3=0x28}
0x0c95…0cc3 Line {l1=0x2c, l2=» LHLD LENPTR ;HL->LENGTH PARAMETER«, l3=0x2c}
0x0cc3…0ced Line {l1=0x28, l2=» LDAX D ;LENGTH PARAMETER«, l3=0x28}
0x0ced…0d10 Line {l1=0x21, l2=» MOV M,A ; :=«, l3=0x21}
0x0d10…0d3a Line {l1=0x28, l2=» INX H ; LENGTH«, l3=0x28}
0x0d3a…0d6d Line {l1=0x31, l2=» MVI M,0 ; OF MESSAGE«, l3=0x31}
0x0d6d…0da4 Line {l1=0x35, l2=» STA LENGTH ;SAVE THE LENGTH FOR LATER USE«, l3=0x35}
0x0da4…0da7 Line {l1=0x01, l2=» «, l3=0x01}
0x0da7…0daa Line {l1=0x01, l2=»;«, l3=0x01}
0x0daa…0dc7 Line {l1=0x1b, l2=»;PREPARE TO GET THE MESSAGE«, l3=0x1b}
0x0dc7…0dca Line {l1=0x01, l2=»;«, l3=0x01}
0x0dca…0e09 Line {l1=0x3d, l2=» INX D ;DE->BYTE 4 OF MESSAGE. IF LENGTH > 10«, l3=0x3d}
0x0e09…0e45 Line {l1=0x3a, l2=» ; THIS BYTE (TOGETHER WITH BYTE 5)«, l3=0x3a}
0x0e45…0e85 Line {l1=0x3e, l2=» ; CONTAINS THE ADDRESS OF THE MESSAGE.«, l3=0x3e}
0x0e85…0ec1 Line {l1=0x3a, l2=» ; IF LENGTH <= 10 THIS BYTE IS THE«, l3=0x3a}
0x0ec1…0ef7 Line {l1=0x34, l2=» ; FIRST BYTE OF THE MESSAGE.«, l3=0x34}
0x0ef7…0f2b Line {l1=0x32, l2=» PUSH D ;SAVE THE ADDRESS OF BYTE 4«, l3=0x32}
0x0f2b…0f2e Line {l1=0x01, l2=» «, l3=0x01}
0x0f2e…0f31 Line {l1=0x01, l2=»;«, l3=0x01}
0x0f31…0f59 Line {l1=0x26, l2=»;DECIDE IF LENGTH <= 10 OR LENGTH > 10«, l3=0x26}
0x0f59…0f5c Line {l1=0x01, l2=»;«, l3=0x01}
0x0f5c…0f80 Line {l1=0x22, l2=» CPI #11 ;LENGTH<11?«, l3=0x22}
0x0f80…0fc0 Line {l1=0x3e, l2=» JC SHORT ;YES, THE MESSAGE IS IN THE MES. BUFFER«, l3=0x3e}
0x0fc0…0fc3 Line {l1=0x01, l2=» «, l3=0x01}
0x0fc3…0fc6 Line {l1=0x01, l2=»;«, l3=0x01}
0x0fc6…0fdf Line {l1=0x17, l2=»;GET ADDRESS OF MESSAGE«, l3=0x17}
0x0fdf…0fe2 Line {l1=0x01, l2=»;«, l3=0x01}
0x0fe2…1012 Line {l1=0x2e, l2=» XCHG ;HL->ADDRESS OF MESSAGE«, l3=0x2e}
0x1012…102e Line {l1=0x1a, l2=» MOV E,M ;DE«, l3=0x1a}
0x102e…104c Line {l1=0x1c, l2=» INX H ; ->«, l3=0x1c}
0x104c…1071 Line {l1=0x23, l2=» MOV D,M ; MESSAGE«, l3=0x23}
0x1071…10a7 Line {l1=0x34, l2=» POP H ;HL->BYTE 4 OF MESSAGE BUFFER«, l3=0x34}
0x10a7…10e6 Line {l1=0x3d, l2=» PUSH D ; AND REPLACE IT BY THE ADDRESS OF THE«, l3=0x3d}
0x10e6…1108 Line {l1=0x20, l2=» ; MESSAGE«, l3=0x20}
0x1108…110b Line {l1=0x01, l2=» «, l3=0x01}
0x110b…110e Line {l1=0x01, l2=»;«, l3=0x01}
0x110e…114a Line {l1=0x3a, l2=»;GET THE LENGTH OF THE DATA AREA ALLOCATED FOR THE MESSAGE«, l3=0x3a}
0x114a…114d Line {l1=0x01, l2=»;«, l3=0x01}
0x114d…115f Line {l1=0x10, l2=» INX H«, l3=0x10}
0x115f…1190 Line {l1=0x2f, l2=» INX H ;HL->LENGTH OF DATA AREA«, l3=0x2f}
0x1190…11b0 Line {l1=0x1e, l2=» MOV A,M ;ALLLEN«, l3=0x1e}
0x11b0…11d2 Line {l1=0x20, l2=» STA ALLEN ; :=«, l3=0x20}
0x11d2…11fd Line {l1=0x29, l2=» INX H ; LENGTH OF«, l3=0x29}
0x11fd…122b Line {l1=0x2c, l2=» MOV A,M ; ALLOCATED«, l3=0x2c}
0x122b…125b Line {l1=0x2e, l2=» STA ALLEN+1 ; DATA AREA«, l3=0x2e}
0x125b…125e Line {l1=0x01, l2=» «, l3=0x01}
0x125e…1261 Line {l1=0x01, l2=»;«, l3=0x01}
0x1261…12a1 Line {l1=0x3e, l2=»;EVERYTHING IS NOW READ FOR THE TRANSFER OF THE MESSAGE TO THE«, l3=0x3e}
0x12a1…12b7 Line {l1=0x14, l2=»;CONTENTS PARAMETER.«, l3=0x14}
0x12b7…12f6 Line {l1=0x3d, l2=»;IF THE MESSAGE LENGTH <= 10 THE TOPMOST ELEMENT ON THE STACK«, l3=0x3d}
0x12f6…1334 Line {l1=0x3c, l2=»; CONTAINS THE ADDRESS OF BYTE 4 OF THE MESSAGE BUFFER.«, l3=0x3c}
0x1334…1372 Line {l1=0x3c, l2=»;IF THE MESSAGE LENGTH > 10 THE TOPMOST ELEMENT ON THE STACK«, l3=0x3c}
0x1372…13af Line {l1=0x3b, l2=»; CONTAINS THE ADDRESS OF THE ALLOCATED DATA AREA CON-«, l3=0x3b}
0x13af…13cc Line {l1=0x1b, l2=»; TAINING THE MESSAGE.«, l3=0x1b}
0x13cc…140b Line {l1=0x3d, l2=»;IN EITHER CASE THE TOPMOST ELEMENT ON THE STACK CONTAINS THE«, l3=0x3d}
0x140b…1448 Line {l1=0x3b, l2=»; ADDRESS OF THE LOCATION WHERE THE MESSAGE IS STORED.«, l3=0x3b}
0x1448…144b Line {l1=0x01, l2=»;«, l3=0x01}
0x144b…1471 Line {l1=0x24, l2=»SHORT: LHLD CONPTR ;HL->CONTENTS«, l3=0x24}
0x1471…14a2 Line {l1=0x2f, l2=» POP D ;DE->LOCATION OF MESSAGE«, l3=0x2f}
0x14a2…14e0 Line {l1=0x3c, l2=» PUSH D ;PUT ADDRESS OF MESSAGE BACK ON STACK«, l3=0x3c}
0x14e0…150e Line {l1=0x2c, l2=» LDA LENGTH ;A:=LENGTH OF MESSAGE«, l3=0x2c}
0x150e…153c Line {l1=0x2c, l2=» MOV B,A ;B:=LENGTH OF MESSAGE«, l3=0x2c}
0x153c…1578 Line {l1=0x3a, l2=» CALL MOVE ;MOVE MESSAGE TO CONTENTS PARAMETER«, l3=0x3a}
0x1578…157b Line {l1=0x01, l2=» «, l3=0x01}
0x157b…157e Line {l1=0x01, l2=»;«, l3=0x01}
0x157e…15ab Line {l1=0x2b, l2=»;SHOULD AN AREA BE DEALLOCATED? THEN DO IT!«, l3=0x2b}
0x15ab…15ae Line {l1=0x01, l2=»;«, l3=0x01}
0x15ae…15e7 Line {l1=0x37, l2=» POP D ;DE->LOCATION OF MESSAGE. IF THE«, l3=0x37}
0x15e7…1626 Line {l1=0x3d, l2=» ; MESSAGE LENGTH > 10 THIS AREA SHOULD«, l3=0x3d}
0x1626…1650 Line {l1=0x28, l2=» ; BE DEALLOCATED.«, l3=0x28}
0x1650…167b Line {l1=0x29, l2=» LDA LENGTH ;A:=MESSAGE LENGTH«, l3=0x29}
0x167b…169f Line {l1=0x22, l2=» CPI 11 ;LENGTH<11?«, l3=0x22}
0x169f…16d6 Line {l1=0x35, l2=» JC SHORT1 ;YES, WE SHOULD NOT DEALLOCATE«, l3=0x35}
0x16d6…1716 Line {l1=0x3e, l2=» LHLD ALLEN ;HL:=LENGTH OF THE ARE TO BE DALLOCATED«, l3=0x3e}
0x1716…173a Line {l1=0x22, l2=» CALL DELOC ;DEALLOCATE«, l3=0x22}
0x173a…173d Line {l1=0x01, l2=» «, l3=0x01}
0x173d…1740 Line {l1=0x01, l2=»;«, l3=0x01}
0x1740…1775 Line {l1=0x33, l2=»;SEND THE MESSAGE BUFFER BACK TO THE POOL SEMAPHORE«, l3=0x33}
0x1775…1778 Line {l1=0x01, l2=»;«, l3=0x01}
0x1778…17a4 Line {l1=0x2a, l2=»SHORT1:POP H ;HL->MESSAGE BUFFER«, l3=0x2a}
0x17a4…17bb Line {l1=0x15, l2=» LXI B,POOL«, l3=0x15}
0x17bb…17e1 Line {l1=0x24, l2=» CALL SEND ;SEND IT BACK«, l3=0x24}
0x17e1…17e4 Line {l1=0x01, l2=» «, l3=0x01}
0x17e4…17f0 Line {l1=0x0a, l2=» RET«, l3=0x0a}
0x17f0…17f9 Line {l1=0x07, l2=» «, l3=0x07}
0x17f9…1806 Line {l1=0x0b, l2=» SKIP«, l3=0x0b}
0x1806…181f Line {l1=0x17, l2=»;***** LOCAL DATA *****«, l3=0x17}
0x181f…1822 Line {l1=0x01, l2=» «, l3=0x01}
0x1822…1857 Line {l1=0x33, l2=»LENPTR:DS 2 ;ADDRESS OF LENGTH PARAMETER«, l3=0x33}
0x1857…188e Line {l1=0x35, l2=»CONPTR:DS 2 ;ADDRESS OF CONTENTS PARAMETER«, l3=0x35}
0x188e…18c3 Line {l1=0x33, l2=»SNDPTR:DS 2 ;ADDRESS OF SENDER PARAMETER«, l3=0x33}
0x18c3…18ee Line {l1=0x29, l2=»LENGTH:DS 2 ;LENGTH OF MESSAGE«, l3=0x29}
0x18ee…1929 Line {l1=0x39, l2=»ALLEN: DS 2 ;LENGTH OF DATA AREA ALLOCATED FOR«, l3=0x39}
0x1929…1951 Line {l1=0x26, l2=» ; MESSAGE«, l3=0x26}
0x1951…195d Line {l1=0x0a, l2=» END«, l3=0x0a}
0x195d…1960 00 00 63 ┆ c┆
0x1960…1980 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 ┆cccccccccccccccccccccccccccccccc┆
[…0x23…]