DataMuseum.dk

Presents historical artifacts from the history of:

MIKADOS

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about MIKADOS

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦be370ec31⟧ TextFile

    Length: 5088 (0x13e0)
    Types: TextFile
    Notes: Mikados_K
    Names: »NEXT.K«

Derivation

└─⟦38ff28550⟧ Bits:30004682 Pascal Standard Assembler til MIKADOS
    └─⟦this⟧ »NEXT.K« 

Mikados K File

;PASCAL DIRECT INPUT INTERFACE ROUTINES - RM-800317
;                                         CT-800514
;
;
;*********************************************************************
; AVAIL - TEST IF NEXT CHARACTER AVAILABLE
;
; FUNCTION AVAIL: BOOLEAN;
;*********************************************************************
;
AVAIL::LHLD    SPIL
       MOV     A,M
       MVI     C,0
       ANA     A
       JZ      AVAI1
       INR     C
AVAI1: POP     H       ;RETURN ADDRESS TO PASCAL
       POP     D
       POP     D
       POP     D
       POP     D
       PUSH    B       ;LOGICAL VALUE
       PCHL
;
;
;*********************************************************************
; NEXT - WAIT FOR AND GET NEXT CHARACTER
;
; FUNCTION NEXT: CHAR;
;*********************************************************************
;
NEXT:: LHLD    SPIL    ;ADDRESS OF DIRECT INPUT SEMAPHORE
       MOV     B,H
       MOV     C,L
       CALL    WAIT
;
       LHLD    BPIL
       MOV     E,M
       MVI     D,0
       INX     H
       MOV     A,M
       INR     A
       JNZ     NEXT1
;
       INX     H
       MOV     A,M
       INX     H
       MOV     H,M
       MOV     L,A
NEXT1: SHLD    BPIL
;
       POP     H       ;RETURN ADDRESS TO PASCAL INTERPRETER
       POP     B
       POP     B
       POP     B
       POP     B
       PUSH    D       ;FUNCTION VALUE
       PCHL
;
;
;*********************************************************************
; SETUP - INITIALIZE DIRECT INPUT
;
; PROCEDURE SETUP( VAR BUFFER: PACKED ARRAY( 1..LENGTH ) OF CHAR;
;                  LENGTH: INTEGER );
;*********************************************************************
;
SETUP::POP     B       ;RETURN ADDRESS TO INTERPRETER
       POP     D       ;BUFFER LENGTH
       POP     H       ;BUFFER POINTER
       PUSH    B       ;RETURN ADDRESS TO INTERPRETER
       PUSH    H       ;BUFFER POINTER
       SHLD    BPIL
;
       MOV     B,H
       MOV     C,L
       DCR     E       ;LAST 3 CHARACTERS OF BUFFER USED FOR OVERHEAD
       DCR     E
       DCR     E
G1:    MVI     M,0     ;ZERO REMAINDER OF BUFFER
       INX     H
       DCR     E
       JNZ     G1
;
       MVI     M,0FF   ;SET UP BUFFER STOP CHARACTER
       INX     H
       MOV     M,C     ; AND POINTER TO START OF BUFFER
       INX     H
       MOV     M,B
;
       LXI     H,6     ;GET AREA FOR SEMAPHORE
       CALL    ALLOC
       MOV     A,D     ;SEE IF WE GOT ANYTHING AT ALL
       ORA     E
       JZ      GERR
;
       XCHG
       PUSH    H       ;POINTER TO START OF SEMAPHORE AREA
       SHLD    SPIL
       MOV     A,E     ;NUMBER OF CHARACTERS ALLOCATED
       STA     SLEN
       MVI     E,6     ;LENGTH OF SEMAPHORE
G2:    MVI     M,0     ;ZERO SEMAPHORE AREA
       INX     H
       DCR     E
       JNZ     G2
;
       CALL    FÅINI   ;GET A MESSAGE BUFFER
       MVI     M,9     ;DEFINE DIRECT INPUT OPCODE
       INX     H
       INX     H
       POP     B       ;POINTER TO SEMAPHORE
       MOV     M,C
       INX     H
       MOV     M,B
;
       LXI     B,4
       DAD     B
       POP     B       ;BUFFER POINTER
       MOV     M,C
       INX     H
       MOV     M,B
;
       LHLD    CSEMA
       MOV     B,H
       MOV     C,L
       XCHG
       CALL    SEND    ;DEFINE DIRECT INPUT
;
       RET
;
;
GERR:  POP     H       ;CLEAR STACK
       MVI     A,-#10
       STA     IORSLT  ;SET IORESULT
       RET
;
;
;*********************************************************************
; FINIS - CANCEL DIRECT INPUT CONDITION
;
; PROCEDURE FINIS;
;*********************************************************************
;
FINIS::CALL    FÅINI   ;GET A MESSAGE BUFFER
       PUSH    D
       MVI     M,7     ;DEFINE BREAK SEMAPHORE
       INX     H
       INX     H
       LXI     B,OPMES ;OPERATOR COMMUNICATION MAIN SEMAPHORE
       MOV     M,C
       INX     H
       MOV     M,B
       LXI     B,4
       DAD     B
       LXI     D,TMPIL ;PUT POINTER TO TERMINAL AREA INTO MESSAGE
       MVI     B,2
       CALL    MOVE
       LHLD    CSEMA
       MOV     B,H
       MOV     C,L
       POP     H
       CALL    SEND    ;DEFINE BREAK SEMAPHORE (CANCEL DIRECT INPUT)
;
       LHLD    SPIL    ;DEALLOCATE SEMAPHORE AREA
       XCHG
       LDA     SLEN
       MOV     L,A
       MVI     H,0
       CALL    DELOC
;
       RET
;
;
;
BPIL:  DS      2       ;ADDRESS WHERE NEXT CHARACTER WILL BE PLACED
SPIL:  DS      2
SLEN:  DS      1
;
;
       END

Mikados K File

0x0000…0035 Line {l1=0x33, l2=»;PASCAL DIRECT INPUT INTERFACE ROUTINES - RM-800317«, l3=0x33}
0x0035…006a Line {l1=0x33, l2=»;                                         CT-800514«, l3=0x33}
0x006a…006d Line {l1=0x01, l2=»;«, l3=0x01}
            […0x1…]
0x0070…00b8 Line {l1=0x46, l2=»;*********************************************************************«, l3=0x46}
0x00b8…00e4 Line {l1=0x2a, l2=»; AVAIL - TEST IF NEXT CHARACTER AVAILABLE«, l3=0x2a}
0x00e4…00e7 Line {l1=0x01, l2=»;«, l3=0x01}
0x00e7…0103 Line {l1=0x1a, l2=»; FUNCTION AVAIL: BOOLEAN;«, l3=0x1a}
0x0103…014b Line {l1=0x46, l2=»;*********************************************************************«, l3=0x46}
0x014b…014e Line {l1=0x01, l2=»;«, l3=0x01}
0x014e…0163 Line {l1=0x13, l2=»AVAIL::LHLD    SPIL«, l3=0x13}
0x0163…0177 Line {l1=0x12, l2=»       MOV     A,M«, l3=0x12}
0x0177…018b Line {l1=0x12, l2=»       MVI     C,0«, l3=0x12}
0x018b…019d Line {l1=0x10, l2=»       ANA     A«, l3=0x10}
0x019d…01b3 Line {l1=0x14, l2=»       JZ      AVAI1«, l3=0x14}
0x01b3…01c5 Line {l1=0x10, l2=»       INR     C«, l3=0x10}
0x01c5…01f7 Line {l1=0x30, l2=»AVAI1: POP     H       ;RETURN ADDRESS TO PASCAL«, l3=0x30}
0x01f7…0209 Line {l1=0x10, l2=»       POP     D«, l3=0x10}
            […0x3…]
0x023f…0266 Line {l1=0x25, l2=»       PUSH    B       ;LOGICAL VALUE«, l3=0x25}
0x0266…0273 Line {l1=0x0b, l2=»       PCHL«, l3=0x0b}
0x0273…0276 Line {l1=0x01, l2=»;«, l3=0x01}
            […0x1…]
0x0279…02c1 Line {l1=0x46, l2=»;*********************************************************************«, l3=0x46}
0x02c1…02eb Line {l1=0x28, l2=»; NEXT - WAIT FOR AND GET NEXT CHARACTER«, l3=0x28}
0x02eb…02ee Line {l1=0x01, l2=»;«, l3=0x01}
0x02ee…0306 Line {l1=0x16, l2=»; FUNCTION NEXT: CHAR;«, l3=0x16}
0x0306…034e Line {l1=0x46, l2=»;*********************************************************************«, l3=0x46}
0x034e…0351 Line {l1=0x01, l2=»;«, l3=0x01}
0x0351…038c Line {l1=0x39, l2=»NEXT:: LHLD    SPIL    ;ADDRESS OF DIRECT INPUT SEMAPHORE«, l3=0x39}
0x038c…03a0 Line {l1=0x12, l2=»       MOV     B,H«, l3=0x12}
0x03a0…03b4 Line {l1=0x12, l2=»       MOV     C,L«, l3=0x12}
0x03b4…03c9 Line {l1=0x13, l2=»       CALL    WAIT«, l3=0x13}
0x03c9…03cc Line {l1=0x01, l2=»;«, l3=0x01}
0x03cc…03e1 Line {l1=0x13, l2=»       LHLD    BPIL«, l3=0x13}
0x03e1…03f5 Line {l1=0x12, l2=»       MOV     E,M«, l3=0x12}
0x03f5…0409 Line {l1=0x12, l2=»       MVI     D,0«, l3=0x12}
0x0409…041b Line {l1=0x10, l2=»       INX     H«, l3=0x10}
0x041b…042f Line {l1=0x12, l2=»       MOV     A,M«, l3=0x12}
0x042f…0441 Line {l1=0x10, l2=»       INR     A«, l3=0x10}
0x0441…0457 Line {l1=0x14, l2=»       JNZ     NEXT1«, l3=0x14}
0x0457…045a Line {l1=0x01, l2=»;«, l3=0x01}
0x045a…046c Line {l1=0x10, l2=»       INX     H«, l3=0x10}
0x046c…0480 Line {l1=0x12, l2=»       MOV     A,M«, l3=0x12}
0x0480…0492 Line {l1=0x10, l2=»       INX     H«, l3=0x10}
0x0492…04a6 Line {l1=0x12, l2=»       MOV     H,M«, l3=0x12}
0x04a6…04ba Line {l1=0x12, l2=»       MOV     L,A«, l3=0x12}
0x04ba…04cf Line {l1=0x13, l2=»NEXT1: SHLD    BPIL«, l3=0x13}
0x04cf…04d2 Line {l1=0x01, l2=»;«, l3=0x01}
0x04d2…0510 Line {l1=0x3c, l2=»       POP     H       ;RETURN ADDRESS TO PASCAL INTERPRETER«, l3=0x3c}
0x0510…0522 Line {l1=0x10, l2=»       POP     B«, l3=0x10}
            […0x3…]
0x0558…0580 Line {l1=0x26, l2=»       PUSH    D       ;FUNCTION VALUE«, l3=0x26}
0x0580…058d Line {l1=0x0b, l2=»       PCHL«, l3=0x0b}
0x058d…0590 Line {l1=0x01, l2=»;«, l3=0x01}
            […0x1…]
0x0593…05db Line {l1=0x46, l2=»;*********************************************************************«, l3=0x46}
0x05db…05fe Line {l1=0x21, l2=»; SETUP - INITIALIZE DIRECT INPUT«, l3=0x21}
0x05fe…0601 Line {l1=0x01, l2=»;«, l3=0x01}
0x0601…0644 Line {l1=0x41, l2=»; PROCEDURE SETUP( VAR BUFFER: PACKED ARRAY( 1..LENGTH ) OF CHAR;«, l3=0x41}
0x0644…066b Line {l1=0x25, l2=»;                  LENGTH: INTEGER );«, l3=0x25}
0x066b…06b3 Line {l1=0x46, l2=»;*********************************************************************«, l3=0x46}
0x06b3…06b6 Line {l1=0x01, l2=»;«, l3=0x01}
0x06b6…06ed Line {l1=0x35, l2=»SETUP::POP     B       ;RETURN ADDRESS TO INTERPRETER«, l3=0x35}
0x06ed…0714 Line {l1=0x25, l2=»       POP     D       ;BUFFER LENGTH«, l3=0x25}
0x0714…073c Line {l1=0x26, l2=»       POP     H       ;BUFFER POINTER«, l3=0x26}
0x073c…0773 Line {l1=0x35, l2=»       PUSH    B       ;RETURN ADDRESS TO INTERPRETER«, l3=0x35}
0x0773…079b Line {l1=0x26, l2=»       PUSH    H       ;BUFFER POINTER«, l3=0x26}
0x079b…07b0 Line {l1=0x13, l2=»       SHLD    BPIL«, l3=0x13}
0x07b0…07b3 Line {l1=0x01, l2=»;«, l3=0x01}
0x07b3…07c7 Line {l1=0x12, l2=»       MOV     B,H«, l3=0x12}
0x07c7…07db Line {l1=0x12, l2=»       MOV     C,L«, l3=0x12}
0x07db…0822 Line {l1=0x45, l2=»       DCR     E       ;LAST 3 CHARACTERS OF BUFFER USED FOR OVERHEAD«, l3=0x45}
0x0822…0834 Line {l1=0x10, l2=»       DCR     E«, l3=0x10}
            […0x1…]
0x0846…0878 Line {l1=0x30, l2=»G1:    MVI     M,0     ;ZERO REMAINDER OF BUFFER«, l3=0x30}
0x0878…088a Line {l1=0x10, l2=»       INX     H«, l3=0x10}
0x088a…089c Line {l1=0x10, l2=»       DCR     E«, l3=0x10}
0x089c…08af Line {l1=0x11, l2=»       JNZ     G1«, l3=0x11}
0x08af…08b2 Line {l1=0x01, l2=»;«, l3=0x01}
0x08b2…08e8 Line {l1=0x34, l2=»       MVI     M,0FF   ;SET UP BUFFER STOP CHARACTER«, l3=0x34}
0x08e8…08fa Line {l1=0x10, l2=»       INX     H«, l3=0x10}
0x08fa…0933 Line {l1=0x37, l2=»       MOV     M,C     ; AND POINTER TO START OF BUFFER«, l3=0x37}
0x0933…0945 Line {l1=0x10, l2=»       INX     H«, l3=0x10}
0x0945…0959 Line {l1=0x12, l2=»       MOV     M,B«, l3=0x12}
0x0959…095c Line {l1=0x01, l2=»;«, l3=0x01}
0x095c…098c Line {l1=0x2e, l2=»       LXI     H,6     ;GET AREA FOR SEMAPHORE«, l3=0x2e}
0x098c…09a2 Line {l1=0x14, l2=»       CALL    ALLOC«, l3=0x14}
0x09a2…09d9 Line {l1=0x35, l2=»       MOV     A,D     ;SEE IF WE GOT ANYTHING AT ALL«, l3=0x35}
0x09d9…09eb Line {l1=0x10, l2=»       ORA     E«, l3=0x10}
0x09eb…0a00 Line {l1=0x13, l2=»       JZ      GERR«, l3=0x13}
0x0a00…0a03 Line {l1=0x01, l2=»;«, l3=0x01}
0x0a03…0a10 Line {l1=0x0b, l2=»       XCHG«, l3=0x0b}
0x0a10…0a4c Line {l1=0x3a, l2=»       PUSH    H       ;POINTER TO START OF SEMAPHORE AREA«, l3=0x3a}
0x0a4c…0a61 Line {l1=0x13, l2=»       SHLD    SPIL«, l3=0x13}
0x0a61…0a99 Line {l1=0x36, l2=»       MOV     A,E     ;NUMBER OF CHARACTERS ALLOCATED«, l3=0x36}
0x0a99…0aae Line {l1=0x13, l2=»       STA     SLEN«, l3=0x13}
0x0aae…0adb Line {l1=0x2b, l2=»       MVI     E,6     ;LENGTH OF SEMAPHORE«, l3=0x2b}
0x0adb…0b08 Line {l1=0x2b, l2=»G2:    MVI     M,0     ;ZERO SEMAPHORE AREA«, l3=0x2b}
0x0b08…0b1a Line {l1=0x10, l2=»       INX     H«, l3=0x10}
0x0b1a…0b2c Line {l1=0x10, l2=»       DCR     E«, l3=0x10}
0x0b2c…0b3f Line {l1=0x11, l2=»       JNZ     G2«, l3=0x11}
0x0b3f…0b42 Line {l1=0x01, l2=»;«, l3=0x01}
0x0b42…0b70 Line {l1=0x2c, l2=»       CALL    FÅINI   ;GET A MESSAGE BUFFER«, l3=0x2c}
0x0b70…0ba4 Line {l1=0x32, l2=»       MVI     M,9     ;DEFINE DIRECT INPUT OPCODE«, l3=0x32}
0x0ba4…0bb6 Line {l1=0x10, l2=»       INX     H«, l3=0x10}
            […0x1…]
0x0bc8…0bf6 Line {l1=0x2c, l2=»       POP     B       ;POINTER TO SEMAPHORE«, l3=0x2c}
0x0bf6…0c0a Line {l1=0x12, l2=»       MOV     M,C«, l3=0x12}
0x0c0a…0c1c Line {l1=0x10, l2=»       INX     H«, l3=0x10}
0x0c1c…0c30 Line {l1=0x12, l2=»       MOV     M,B«, l3=0x12}
0x0c30…0c33 Line {l1=0x01, l2=»;«, l3=0x01}
0x0c33…0c47 Line {l1=0x12, l2=»       LXI     B,4«, l3=0x12}
0x0c47…0c59 Line {l1=0x10, l2=»       DAD     B«, l3=0x10}
0x0c59…0c81 Line {l1=0x26, l2=»       POP     B       ;BUFFER POINTER«, l3=0x26}
0x0c81…0c95 Line {l1=0x12, l2=»       MOV     M,C«, l3=0x12}
0x0c95…0ca7 Line {l1=0x10, l2=»       INX     H«, l3=0x10}
0x0ca7…0cbb Line {l1=0x12, l2=»       MOV     M,B«, l3=0x12}
0x0cbb…0cbe Line {l1=0x01, l2=»;«, l3=0x01}
0x0cbe…0cd4 Line {l1=0x14, l2=»       LHLD    CSEMA«, l3=0x14}
0x0cd4…0ce8 Line {l1=0x12, l2=»       MOV     B,H«, l3=0x12}
0x0ce8…0cfc Line {l1=0x12, l2=»       MOV     C,L«, l3=0x12}
0x0cfc…0d09 Line {l1=0x0b, l2=»       XCHG«, l3=0x0b}
0x0d09…0d36 Line {l1=0x2b, l2=»       CALL    SEND    ;DEFINE DIRECT INPUT«, l3=0x2b}
0x0d36…0d39 Line {l1=0x01, l2=»;«, l3=0x01}
0x0d39…0d45 Line {l1=0x0a, l2=»       RET«, l3=0x0a}
0x0d45…0d48 Line {l1=0x01, l2=»;«, l3=0x01}
            […0x1…]
0x0d4b…0d70 Line {l1=0x23, l2=»GERR:  POP     H       ;CLEAR STACK«, l3=0x23}
0x0d70…0d87 Line {l1=0x15, l2=»       MVI     A,-#10«, l3=0x15}
0x0d87…0dad Line {l1=0x24, l2=»       STA     IORSLT  ;SET IORESULT«, l3=0x24}
0x0dad…0db9 Line {l1=0x0a, l2=»       RET«, l3=0x0a}
0x0db9…0dbc Line {l1=0x01, l2=»;«, l3=0x01}
            […0x1…]
0x0dbf…0e07 Line {l1=0x46, l2=»;*********************************************************************«, l3=0x46}
0x0e07…0e30 Line {l1=0x27, l2=»; FINIS - CANCEL DIRECT INPUT CONDITION«, l3=0x27}
0x0e30…0e33 Line {l1=0x01, l2=»;«, l3=0x01}
0x0e33…0e47 Line {l1=0x12, l2=»; PROCEDURE FINIS;«, l3=0x12}
0x0e47…0e8f Line {l1=0x46, l2=»;*********************************************************************«, l3=0x46}
0x0e8f…0e92 Line {l1=0x01, l2=»;«, l3=0x01}
0x0e92…0ec0 Line {l1=0x2c, l2=»FINIS::CALL    FÅINI   ;GET A MESSAGE BUFFER«, l3=0x2c}
0x0ec0…0ed2 Line {l1=0x10, l2=»       PUSH    D«, l3=0x10}
0x0ed2…0f02 Line {l1=0x2e, l2=»       MVI     M,7     ;DEFINE BREAK SEMAPHORE«, l3=0x2e}
0x0f02…0f14 Line {l1=0x10, l2=»       INX     H«, l3=0x10}
            […0x1…]
0x0f26…0f65 Line {l1=0x3d, l2=»       LXI     B,OPMES ;OPERATOR COMMUNICATION MAIN SEMAPHORE«, l3=0x3d}
0x0f65…0f79 Line {l1=0x12, l2=»       MOV     M,C«, l3=0x12}
0x0f79…0f8b Line {l1=0x10, l2=»       INX     H«, l3=0x10}
0x0f8b…0f9f Line {l1=0x12, l2=»       MOV     M,B«, l3=0x12}
0x0f9f…0fb3 Line {l1=0x12, l2=»       LXI     B,4«, l3=0x12}
0x0fb3…0fc5 Line {l1=0x10, l2=»       DAD     B«, l3=0x10}
0x0fc5…1008 Line {l1=0x41, l2=»       LXI     D,TMPIL ;PUT POINTER TO TERMINAL AREA INTO MESSAGE«, l3=0x41}
0x1008…101c Line {l1=0x12, l2=»       MVI     B,2«, l3=0x12}
0x101c…1031 Line {l1=0x13, l2=»       CALL    MOVE«, l3=0x13}
0x1031…1047 Line {l1=0x14, l2=»       LHLD    CSEMA«, l3=0x14}
0x1047…105b Line {l1=0x12, l2=»       MOV     B,H«, l3=0x12}
0x105b…106f Line {l1=0x12, l2=»       MOV     C,L«, l3=0x12}
0x106f…1081 Line {l1=0x10, l2=»       POP     H«, l3=0x10}
0x1081…10c7 Line {l1=0x44, l2=»       CALL    SEND    ;DEFINE BREAK SEMAPHORE (CANCEL DIRECT INPUT)«, l3=0x44}
0x10c7…10ca Line {l1=0x01, l2=»;«, l3=0x01}
0x10ca…10fd Line {l1=0x31, l2=»       LHLD    SPIL    ;DEALLOCATE SEMAPHORE AREA«, l3=0x31}
0x10fd…110a Line {l1=0x0b, l2=»       XCHG«, l3=0x0b}
0x110a…111f Line {l1=0x13, l2=»       LDA     SLEN«, l3=0x13}
0x111f…1133 Line {l1=0x12, l2=»       MOV     L,A«, l3=0x12}
0x1133…1147 Line {l1=0x12, l2=»       MVI     H,0«, l3=0x12}
0x1147…115d Line {l1=0x14, l2=»       CALL    DELOC«, l3=0x14}
0x115d…1160 Line {l1=0x01, l2=»;«, l3=0x01}
0x1160…116c Line {l1=0x0a, l2=»       RET«, l3=0x0a}
0x116c…116f Line {l1=0x01, l2=»;«, l3=0x01}
            […0x2…]
0x1175…11ba Line {l1=0x43, l2=»BPIL:  DS      2       ;ADDRESS WHERE NEXT CHARACTER WILL BE PLACED«, l3=0x43}
0x11ba…11cc Line {l1=0x10, l2=»SPIL:  DS      2«, l3=0x10}
0x11cc…11de Line {l1=0x10, l2=»SLEN:  DS      1«, l3=0x10}
0x11de…11e1 Line {l1=0x01, l2=»;«, l3=0x01}
            […0x1…]
0x11e4…11f0 Line {l1=0x0a, l2=»       END«, l3=0x0a}
0x11f0…1200 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00                                                   ┆                ┆
0x1200…1220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ┆                                ┆
            […0xd…]
0x13c0…13e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 63   ┆                               c┆

Reduced view