|
|
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: 4064 (0xfe0)
Types: TextFile
Notes: Mikados_K
Names: »REDBAK.K«
└─⟦33b8385fd⟧ Bits:30009009 PSAP1
└─⟦this⟧ »REDBAK.K«
;*************************************************************
;* PASCAL STANDARD ASSEMBLER PACKAGE. *
;* *
;* (C) 1980 DANSK DATA ELEKTRONIK APS. *
;*************************************************************
;
;*************************************************************
;* PROCEDURE NAME: REDBAK *
;*************************************************************
;
; CT 07-MAY-1980
;
;=============================================================
; DESCRIPTION:
; THIS PURCEDURE IS USED TO READ A SEQUENTIAL MIKADOS FILE
; BACKWARDS.
; PLEASE REFER TO THE PASCAL STANDARD ASSEMBLER PACKAGE MANUAL
; SECTION 8.2 FOR DETAILS.
;
;-------------------------------------------------------------
; STACK CONTENTS ON ENTRY: I I
; I---------------I
; I RETURN ADR. I
; I---------------I
; I -> CONTENTS I
; I---------------I
; I -> FILEID I
; I---------------I
; I I
;-------------------------------------------------------------
; STACK CONTENTS ON EXIT: EMPTY
;=============================================================
SKIP
SYMB
OFFSET:EQU 8C ;THIS IS THE OFFSET FROM FILEID TO THE
; DATA CONTROL BLOCK
REDBAK::
;
;'SHUFFLE' THE STACK SO THAT IT MEETS THE NEED OF THE READB
;SUBROUTINE
;
POP B ;BC=RETURN ADDRESS
POP D ;DE->CONTENTS
POP H ;HL->FILEID
PUSH B
PUSH D
INX D ;DE->CONTENTS(1)
PUSH D
LXI B,OFFSET;COMPUTE THE ADDRESS OF THE
DAD B ; DATA CONTROL BLOCK
PUSH H ;HL->DCB
;THE STACK NOW LOOKS LIKE THIS:
; I I
; I---------------I
; I -> DCB I
; I---------------I
; I ->CONTENTS(1) I
; I---------------I
; I ->CONTENTS(0) I
; I---------------I
; I RETURN ADR. I
; I---------------I
; I I
;
;CLEAR THE END-OF-FILE FLAG (BIT 2 OF THE DFLAG FIELD OF THE
;DCB). IT MAY OF COURSE NOT HAVE BEEN SET, BUT NEVER MIND
;THAT!
;
LXI B,DFLAG
DAD B ;HL->DCB.DFLAG
MOV A,M ;A:=DCB.DFLAG
ANI 0FB ;CLEAR BIT 2
MOV M,A
;
;READ THE RECORD!
;
CALL READB
;
;REG. A NOW CONTAINS A POSSIBLE ERROR CODE
;REG. B CONTAINS THE LENGTH OF THE RECORD, WHICH SHOULD BE
; STORED IN CONTENTS(0)
;
STA IORSLT ;SET IORESULT
POP D ;DE->CONTENTS(0)
MOV A,B ;A:=LENGTH OF RECORD
STAX D ;CONTENTS(0):=LENGTH OF RECORD
RET
END
0x000…040 Line {l1=0x3e, l2=»;*************************************************************«, l3=0x3e}
0x040…080 Line {l1=0x3e, l2=»;* PASCAL STANDARD ASSEMBLER PACKAGE. *«, l3=0x3e}
0x080…0c0 Line {l1=0x3e, l2=»;* *«, l3=0x3e}
0x0c0…100 Line {l1=0x3e, l2=»;* (C) 1980 DANSK DATA ELEKTRONIK APS. *«, l3=0x3e}
0x100…140 Line {l1=0x3e, l2=»;*************************************************************«, l3=0x3e}
0x140…143 Line {l1=0x01, l2=»;«, l3=0x01}
0x143…183 Line {l1=0x3e, l2=»;*************************************************************«, l3=0x3e}
0x183…1c3 Line {l1=0x3e, l2=»;* PROCEDURE NAME: REDBAK *«, l3=0x3e}
0x1c3…203 Line {l1=0x3e, l2=»;*************************************************************«, l3=0x3e}
0x203…206 Line {l1=0x01, l2=»;«, l3=0x01}
0x206…218 Line {l1=0x10, l2=»; CT 07-MAY-1980«, l3=0x10}
0x218…21b Line {l1=0x01, l2=»;«, l3=0x01}
0x21b…25b Line {l1=0x3e, l2=»;=============================================================«, l3=0x3e}
0x25b…26b Line {l1=0x0e, l2=»; DESCRIPTION:«, l3=0x0e}
0x26b…2a7 Line {l1=0x3a, l2=»; THIS PURCEDURE IS USED TO READ A SEQUENTIAL MIKADOS FILE«, l3=0x3a}
0x2a7…2b5 Line {l1=0x0c, l2=»; BACKWARDS.«, l3=0x0c}
0x2b5…2f5 Line {l1=0x3e, l2=»; PLEASE REFER TO THE PASCAL STANDARD ASSEMBLER PACKAGE MANUAL«, l3=0x3e}
0x2f5…311 Line {l1=0x1a, l2=»; SECTION 8.2 FOR DETAILS.«, l3=0x1a}
0x311…314 Line {l1=0x01, l2=»;«, l3=0x01}
0x314…354 Line {l1=0x3e, l2=»;-------------------------------------------------------------«, l3=0x3e}
0x354…386 Line {l1=0x30, l2=»; STACK CONTENTS ON ENTRY: I I«, l3=0x30}
0x386…3b8 Line {l1=0x30, l2=»; I---------------I«, l3=0x30}
0x3b8…3ea Line {l1=0x30, l2=»; I RETURN ADR. I«, l3=0x30}
0x3ea…41c Line {l1=0x30, l2=»; I---------------I«, l3=0x30}
0x41c…44e Line {l1=0x30, l2=»; I -> CONTENTS I«, l3=0x30}
0x44e…480 Line {l1=0x30, l2=»; I---------------I«, l3=0x30}
0x480…4b2 Line {l1=0x30, l2=»; I -> FILEID I«, l3=0x30}
0x4b2…4e4 Line {l1=0x30, l2=»; I---------------I«, l3=0x30}
0x4e4…516 Line {l1=0x30, l2=»; I I«, l3=0x30}
0x516…556 Line {l1=0x3e, l2=»;-------------------------------------------------------------«, l3=0x3e}
0x556…57c Line {l1=0x24, l2=»; STACK CONTENTS ON EXIT: EMPTY«, l3=0x24}
0x57c…5bc Line {l1=0x3e, l2=»;=============================================================«, l3=0x3e}
0x5bc…5bf Line {l1=0x01, l2=» «, l3=0x01}
0x5bf…5cc Line {l1=0x0b, l2=» SKIP«, l3=0x0b}
0x5cc…5d9 Line {l1=0x0b, l2=» SYMB«, l3=0x0b}
0x5d9…5e2 Line {l1=0x07, l2=» «, l3=0x07}
0x5e2…621 Line {l1=0x3d, l2=»OFFSET:EQU 8C ;THIS IS THE OFFSET FROM FILEID TO THE«, l3=0x3d}
0x621…654 Line {l1=0x31, l2=» ; DATA CONTROL BLOCK«, l3=0x31}
0x654…657 Line {l1=0x01, l2=» «, l3=0x01}
0x657…661 Line {l1=0x08, l2=»REDBAK::«, l3=0x08}
0x661…664 Line {l1=0x01, l2=» «, l3=0x01}
0x664…667 Line {l1=0x01, l2=»;«, l3=0x01}
0x667…6a4 Line {l1=0x3b, l2=»;'SHUFFLE' THE STACK SO THAT IT MEETS THE NEED OF THE READB«, l3=0x3b}
0x6a4…6b1 Line {l1=0x0b, l2=»;SUBROUTINE«, l3=0x0b}
0x6b1…6b4 Line {l1=0x01, l2=»;«, l3=0x01}
0x6b4…6df Line {l1=0x29, l2=» POP B ;BC=RETURN ADDRESS«, l3=0x29}
0x6df…705 Line {l1=0x24, l2=» POP D ;DE->CONTENTS«, l3=0x24}
0x705…729 Line {l1=0x22, l2=» POP H ;HL->FILEID«, l3=0x22}
0x729…73b Line {l1=0x10, l2=» PUSH B«, l3=0x10}
0x73b…74d Line {l1=0x10, l2=» PUSH D«, l3=0x10}
0x74d…776 Line {l1=0x27, l2=» INX D ;DE->CONTENTS(1)«, l3=0x27}
0x776…788 Line {l1=0x10, l2=» PUSH D«, l3=0x10}
0x788…7bc Line {l1=0x32, l2=» LXI B,OFFSET;COMPUTE THE ADDRESS OF THE«, l3=0x32}
0x7bc…7eb Line {l1=0x2d, l2=» DAD B ; DATA CONTROL BLOCK«, l3=0x2d}
0x7eb…80c Line {l1=0x1f, l2=» PUSH H ;HL->DCB«, l3=0x1f}
0x80c…844 Line {l1=0x36, l2=» ;THE STACK NOW LOOKS LIKE THIS:«, l3=0x36}
0x844…87e Line {l1=0x38, l2=» ; I I«, l3=0x38}
0x87e…8b8 Line {l1=0x38, l2=» ; I---------------I«, l3=0x38}
0x8b8…8f2 Line {l1=0x38, l2=» ; I -> DCB I«, l3=0x38}
0x8f2…92c Line {l1=0x38, l2=» ; I---------------I«, l3=0x38}
0x92c…966 Line {l1=0x38, l2=» ; I ->CONTENTS(1) I«, l3=0x38}
0x966…9a0 Line {l1=0x38, l2=» ; I---------------I«, l3=0x38}
0x9a0…9da Line {l1=0x38, l2=» ; I ->CONTENTS(0) I«, l3=0x38}
0x9da…a14 Line {l1=0x38, l2=» ; I---------------I«, l3=0x38}
0xa14…a4e Line {l1=0x38, l2=» ; I RETURN ADR. I«, l3=0x38}
0xa4e…a88 Line {l1=0x38, l2=» ; I---------------I«, l3=0x38}
0xa88…ac2 Line {l1=0x38, l2=» ; I I«, l3=0x38}
0xac2…ac5 Line {l1=0x01, l2=» «, l3=0x01}
0xac5…ac8 Line {l1=0x01, l2=»;«, l3=0x01}
0xac8…b06 Line {l1=0x3c, l2=»;CLEAR THE END-OF-FILE FLAG (BIT 2 OF THE DFLAG FIELD OF THE«, l3=0x3c}
0xb06…b41 Line {l1=0x39, l2=»;DCB). IT MAY OF COURSE NOT HAVE BEEN SET, BUT NEVER MIND«, l3=0x39}
0xb41…b49 Line {l1=0x06, l2=»;THAT!«, l3=0x06}
0xb49…b4c Line {l1=0x01, l2=»;«, l3=0x01}
0xb4c…b64 Line {l1=0x16, l2=» LXI B,DFLAG«, l3=0x16}
0xb64…b8b Line {l1=0x25, l2=» DAD B ;HL->DCB.DFLAG«, l3=0x25}
0xb8b…bb1 Line {l1=0x24, l2=» MOV A,M ;A:=DCB.DFLAG«, l3=0x24}
0xbb1…bd6 Line {l1=0x23, l2=» ANI 0FB ;CLEAR BIT 2«, l3=0x23}
0xbd6…bea Line {l1=0x12, l2=» MOV M,A«, l3=0x12}
0xbea…bf3 Line {l1=0x07, l2=» «, l3=0x07}
0xbf3…bf6 Line {l1=0x01, l2=»;«, l3=0x01}
0xbf6…c09 Line {l1=0x11, l2=»;READ THE RECORD!«, l3=0x11}
0xc09…c0c Line {l1=0x01, l2=»;«, l3=0x01}
0xc0c…c22 Line {l1=0x14, l2=» CALL READB«, l3=0x14}
0xc22…c25 Line {l1=0x01, l2=» «, l3=0x01}
0xc25…c28 Line {l1=0x01, l2=»;«, l3=0x01}
0xc28…c54 Line {l1=0x2a, l2=»;REG. A NOW CONTAINS A POSSIBLE ERROR CODE«, l3=0x2a}
0xc54…c90 Line {l1=0x3a, l2=»;REG. B CONTAINS THE LENGTH OF THE RECORD, WHICH SHOULD BE«, l3=0x3a}
0xc90…caf Line {l1=0x1d, l2=»; STORED IN CONTENTS(0)«, l3=0x1d}
0xcaf…cb2 Line {l1=0x01, l2=»;«, l3=0x01}
0xcb2…cd8 Line {l1=0x24, l2=» STA IORSLT ;SET IORESULT«, l3=0x24}
0xcd8…cdb Line {l1=0x01, l2=» «, l3=0x01}
0xcdb…d04 Line {l1=0x27, l2=» POP D ;DE->CONTENTS(0)«, l3=0x27}
0xd04…d31 Line {l1=0x2b, l2=» MOV A,B ;A:=LENGTH OF RECORD«, l3=0x2b}
0xd31…d68 Line {l1=0x35, l2=» STAX D ;CONTENTS(0):=LENGTH OF RECORD«, l3=0x35}
0xd68…d6b Line {l1=0x01, l2=» «, l3=0x01}
0xd6b…d77 Line {l1=0x0a, l2=» RET«, l3=0x0a}
0xd77…d7a Line {l1=0x01, l2=» «, l3=0x01}
0xd7a…d86 Line {l1=0x0a, l2=» END«, l3=0x0a}
0xd86…da0 00 00 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 ┆ cccccccccccccccccccccccc┆
0xda0…dc0 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┆
[…0x11…]
>;*************************************************************>>;* PASCAL STANDARD ASSEMBLER PACKAGE. *>>;* *>>;* (C) 1980 DANSK DATA ELEKTRONIK APS. *>>;*************************************************************>▶01◀;▶01◀>;*************************************************************>>;* PROCEDURE NAME: REDBAK *>>;*************************************************************>▶01◀;▶01◀▶10◀; CT 07-MAY-1980▶10◀▶01◀;▶01◀>;=============================================================>▶0e◀; DESCRIPTION:▶0e◀:; THIS PURCEDURE IS USED TO READ A SEQUENTIAL MIKADOS FILE:\f
; BACKWARDS.\f
>; PLEASE REFER TO THE PASCAL STANDARD ASSEMBLER PACKAGE MANUAL>▶1a◀; SECTION 8.2 FOR DETAILS.▶1a◀▶01◀;▶01◀>;------------------------------------------------------------->0; STACK CONTENTS ON ENTRY: I I00; I---------------I00; I RETURN ADR. I00; I---------------I00; I -> CONTENTS I00; I---------------I00; I -> FILEID I00; I---------------I00; I I0>;------------------------------------------------------------->$; STACK CONTENTS ON EXIT: EMPTY$>;=============================================================>▶01◀ ▶01◀▶0b◀ SKIP▶0b◀▶0b◀ SYMB▶0b◀▶07◀ ▶07◀=OFFSET:EQU 8C ;THIS IS THE OFFSET FROM FILEID TO THE=1 ; DATA CONTROL BLOCK1▶01◀ ▶01◀▶08◀REDBAK::▶08◀▶01◀ ▶01◀▶01◀;▶01◀;;'SHUFFLE' THE STACK SO THAT IT MEETS THE NEED OF THE READB;▶0b◀;SUBROUTINE▶0b◀▶01◀;▶01◀) POP B ;BC=RETURN ADDRESS)$ POP D ;DE->CONTENTS$" POP H ;HL->FILEID"▶10◀ PUSH B▶10◀▶10◀ PUSH D▶10◀' INX D ;DE->CONTENTS(1)'▶10◀ PUSH D▶10◀2 LXI B,OFFSET;COMPUTE THE ADDRESS OF THE2- DAD B ; DATA CONTROL BLOCK-▶1f◀ PUSH H ;HL->DCB▶1f◀6 ;THE STACK NOW LOOKS LIKE THIS:68 ; I I88 ; I---------------I88 ; I -> DCB I88 ; I---------------I88 ; I ->CONTENTS(1) I88 ; I---------------I88 ; I ->CONTENTS(0) I88 ; I---------------I88 ; I RETURN ADR. I88 ; I---------------I88 ; I I8▶01◀ ▶01◀▶01◀;▶01◀<;CLEAR THE END-OF-FILE FLAG (BIT 2 OF THE DFLAG FIELD OF THE<9;DCB). IT MAY OF COURSE NOT HAVE BEEN SET, BUT NEVER MIND9▶06◀;THAT!▶06◀▶01◀;▶01◀▶16◀ LXI B,DFLAG▶16◀% DAD B ;HL->DCB.DFLAG%$ MOV A,M ;A:=DCB.DFLAG$# ANI 0FB ;CLEAR BIT 2#▶12◀ MOV M,A▶12◀▶07◀ ▶07◀▶01◀;▶01◀▶11◀;READ THE RECORD!▶11◀▶01◀;▶01◀▶14◀ CALL READB▶14◀▶01◀ ▶01◀▶01◀;▶01◀*;REG. A NOW CONTAINS A POSSIBLE ERROR CODE*:;REG. B CONTAINS THE LENGTH OF THE RECORD, WHICH SHOULD BE:▶1d◀; STORED IN CONTENTS(0)▶1d◀▶01◀;▶01◀$ STA IORSLT ;SET IORESULT$▶01◀ ▶01◀' POP D ;DE->CONTENTS(0)'+ MOV A,B ;A:=LENGTH OF RECORD+5 STAX D ;CONTENTS(0):=LENGTH OF RECORD5▶01◀ ▶01◀
RET
▶01◀ ▶01◀
END
▶00◀▶00◀cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc