|
|
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: 3008 (0xbc0)
Types: TextFile
Notes: Mikados_K
Names: »PSCIU.K«
└─⟦f1b095e24⟧ Bits:30005320 Katalogisering af disketter
└─⟦this⟧ »PSCIU.K«
;DISC SECTOR I/O FOR PASCAL - RM-800104
;
;TYPE BLOCK = PACKED ARRAY(0..255) OF CHAR;
;
;PROCEDURE PSCIU( VAR DISCBUFFER: BLOCK;
; DISC, TRACK, SECTOR, IOCODE: INTEGER;
; VAR ERRORCODE: INTEGER ); EXTERNAL;
;
;PURPOSE: READS (IOCODE=1) OR WRITES (IOCODE=2) THE SECTOR IDENTIFIED
; BY THE DISC ADDRESS IN 'TRACK'/'SECTOR' ON THE DISC IDENTI-
; FIED BY 'DISC' INTO/FROM 'DISCBUFFER'
; THE RESULTING MIKADOS DISC DRIVER ERROR CODE IS RETURNED
; IN 'ERRORCODE' (ZERO IMPLIES NO ERROR).
;
SYMB
;
;
PSCIU::POP B ;RETURN ADDRESS TO PASCAL INTERPRETER
;
POP H ;POINTER TO ERROR CODE (DEFINED AS 'VAR')
SHLD ERRPT
POP H ;I/O CODE
MOV A,L
STA IOKOD
POP H ;SECTOR NUMBER
MOV A,L
STA DKB+SEKT1+2 ;SAVE IN DKB
POP H ;TRACK NUMBER
SHLD DKB+SEKT1
POP D ;DISC NUMBER
POP H ;BUFFER POINTER
SHLD DKB+NÆPST
;
PUSH B ;RETURN ADDRESS TO PASCAL INTERPRETER
;
MOV A,E ;COMPUTE DISC IDENTIFICATION POINTER
ADI '0'
MOV D,A
MVI E,'P'
LXI H,DKB ; AND STORE IN THE DKB
CALL PFIND
ANA A
JNZ ERRUD ;JUMP IF ILLEGAL DISC NUMBER
;
MVI A,1
STA DKB+SANT ;ONE SECTOR TO BE READ/WRITTEN
LDA IOKOD ;TURN ON BIT 7 IN THE I/O CODE TO INDICATE
ORI 80 ; USER SPECIFIED BUFFER ADDRESS
LXI H,DKB
CALL UDIND ;CALL MIKADOS TO DO DISC I/O
;
ERRUD: LHLD ERRPT ;STORE ERROR CODE FOR USER
MOV M,A
INX H
MVI M,0
;
RET ;DONE
;
;
; DATA AREA
;
RAM
IOKOD: DS 1 ;I/O CODE (1=READ, 2=WRITE)
ERRPT: DS 2 ;POINTER TO USER ERROR VARIABLE
DKB: DS BUFF ;DATA CONTROL BLOCK (HEADER ONLY)
;
END
0x000…029 Line {l1=0x27, l2=»;DISC SECTOR I/O FOR PASCAL - RM-800104«, l3=0x27}
0x029…02c Line {l1=0x01, l2=»;«, l3=0x01}
0x02c…059 Line {l1=0x2b, l2=»;TYPE BLOCK = PACKED ARRAY(0..255) OF CHAR;«, l3=0x2b}
0x059…05c Line {l1=0x01, l2=»;«, l3=0x01}
0x05c…086 Line {l1=0x28, l2=»;PROCEDURE PSCIU( VAR DISCBUFFER: BLOCK;«, l3=0x28}
0x086…0bf Line {l1=0x37, l2=»; DISC, TRACK, SECTOR, IOCODE: INTEGER;«, l3=0x37}
0x0bf…0f6 Line {l1=0x35, l2=»; VAR ERRORCODE: INTEGER ); EXTERNAL;«, l3=0x35}
0x0f6…0f9 Line {l1=0x01, l2=»;«, l3=0x01}
0x0f9…140 Line {l1=0x45, l2=»;PURPOSE: READS (IOCODE=1) OR WRITES (IOCODE=2) THE SECTOR IDENTIFIED«, l3=0x45}
0x140…187 Line {l1=0x45, l2=»; BY THE DISC ADDRESS IN 'TRACK'/'SECTOR' ON THE DISC IDENTI-«, l3=0x45}
0x187…1b8 Line {l1=0x2f, l2=»; FIED BY 'DISC' INTO/FROM 'DISCBUFFER'«, l3=0x2f}
0x1b8…1fc Line {l1=0x42, l2=»; THE RESULTING MIKADOS DISC DRIVER ERROR CODE IS RETURNED«, l3=0x42}
0x1fc…22f Line {l1=0x31, l2=»; IN 'ERRORCODE' (ZERO IMPLIES NO ERROR).«, l3=0x31}
0x22f…232 Line {l1=0x01, l2=»;«, l3=0x01}
0x232…23f Line {l1=0x0b, l2=» SYMB«, l3=0x0b}
0x23f…242 Line {l1=0x01, l2=»;«, l3=0x01}
[…0x1…]
0x245…283 Line {l1=0x3c, l2=»PSCIU::POP B ;RETURN ADDRESS TO PASCAL INTERPRETER«, l3=0x3c}
0x283…286 Line {l1=0x01, l2=»;«, l3=0x01}
0x286…2c8 Line {l1=0x40, l2=» POP H ;POINTER TO ERROR CODE (DEFINED AS 'VAR')«, l3=0x40}
0x2c8…2de Line {l1=0x14, l2=» SHLD ERRPT«, l3=0x14}
0x2de…300 Line {l1=0x20, l2=» POP H ;I/O CODE«, l3=0x20}
0x300…314 Line {l1=0x12, l2=» MOV A,L«, l3=0x12}
0x314…32a Line {l1=0x14, l2=» STA IOKOD«, l3=0x14}
0x32a…351 Line {l1=0x25, l2=» POP H ;SECTOR NUMBER«, l3=0x25}
0x351…365 Line {l1=0x12, l2=» MOV A,L«, l3=0x12}
0x365…38f Line {l1=0x28, l2=» STA DKB+SEKT1+2 ;SAVE IN DKB«, l3=0x28}
0x38f…3b5 Line {l1=0x24, l2=» POP H ;TRACK NUMBER«, l3=0x24}
0x3b5…3cf Line {l1=0x18, l2=» SHLD DKB+SEKT1«, l3=0x18}
0x3cf…3f4 Line {l1=0x23, l2=» POP D ;DISC NUMBER«, l3=0x23}
0x3f4…41c Line {l1=0x26, l2=» POP H ;BUFFER POINTER«, l3=0x26}
0x41c…436 Line {l1=0x18, l2=» SHLD DKB+NÆPST«, l3=0x18}
0x436…439 Line {l1=0x01, l2=»;«, l3=0x01}
0x439…477 Line {l1=0x3c, l2=» PUSH B ;RETURN ADDRESS TO PASCAL INTERPRETER«, l3=0x3c}
0x477…47a Line {l1=0x01, l2=»;«, l3=0x01}
0x47a…4b7 Line {l1=0x3b, l2=» MOV A,E ;COMPUTE DISC IDENTIFICATION POINTER«, l3=0x3b}
0x4b7…4cb Line {l1=0x12, l2=» ADI '0'«, l3=0x12}
0x4cb…4df Line {l1=0x12, l2=» MOV D,A«, l3=0x12}
0x4df…4f5 Line {l1=0x14, l2=» MVI E,'P'«, l3=0x14}
0x4f5…524 Line {l1=0x2d, l2=» LXI H,DKB ; AND STORE IN THE DKB«, l3=0x2d}
0x524…53a Line {l1=0x14, l2=» CALL PFIND«, l3=0x14}
0x53a…54c Line {l1=0x10, l2=» ANA A«, l3=0x10}
0x54c…581 Line {l1=0x33, l2=» JNZ ERRUD ;JUMP IF ILLEGAL DISC NUMBER«, l3=0x33}
0x581…584 Line {l1=0x01, l2=»;«, l3=0x01}
0x584…598 Line {l1=0x12, l2=» MVI A,1«, l3=0x12}
0x598…5d1 Line {l1=0x37, l2=» STA DKB+SANT ;ONE SECTOR TO BE READ/WRITTEN«, l3=0x37}
0x5d1…614 Line {l1=0x41, l2=» LDA IOKOD ;TURN ON BIT 7 IN THE I/O CODE TO INDICATE«, l3=0x41}
0x614…64c Line {l1=0x36, l2=» ORI 80 ; USER SPECIFIED BUFFER ADDRESS«, l3=0x36}
0x64c…662 Line {l1=0x14, l2=» LXI H,DKB«, l3=0x14}
0x662…697 Line {l1=0x33, l2=» CALL UDIND ;CALL MIKADOS TO DO DISC I/O«, l3=0x33}
0x697…69a Line {l1=0x01, l2=»;«, l3=0x01}
0x69a…6cd Line {l1=0x31, l2=»ERRUD: LHLD ERRPT ;STORE ERROR CODE FOR USER«, l3=0x31}
0x6cd…6e1 Line {l1=0x12, l2=» MOV M,A«, l3=0x12}
0x6e1…6f3 Line {l1=0x10, l2=» INX H«, l3=0x10}
0x6f3…707 Line {l1=0x12, l2=» MVI M,0«, l3=0x12}
0x707…70a Line {l1=0x01, l2=»;«, l3=0x01}
0x70a…728 Line {l1=0x1c, l2=» RET ;DONE«, l3=0x1c}
0x728…72b Line {l1=0x01, l2=»;«, l3=0x01}
[…0x1…]
0x72e…73b Line {l1=0x0b, l2=»; DATA AREA«, l3=0x0b}
0x73b…73e Line {l1=0x01, l2=»;«, l3=0x01}
0x73e…74a Line {l1=0x0a, l2=» RAM«, l3=0x0a}
0x74a…77e Line {l1=0x32, l2=»IOKOD: DS 1 ;I/O CODE (1=READ, 2=WRITE)«, l3=0x32}
0x77e…7b6 Line {l1=0x36, l2=»ERRPT: DS 2 ;POINTER TO USER ERROR VARIABLE«, l3=0x36}
0x7b6…7f0 Line {l1=0x38, l2=»DKB: DS BUFF ;DATA CONTROL BLOCK (HEADER ONLY)«, l3=0x38}
0x7f0…7f3 Line {l1=0x01, l2=»;«, l3=0x01}
0x7f3…7ff Line {l1=0x0a, l2=» END«, l3=0x0a}
0x7ff…800 00 ┆ ┆
0x800…820 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 ┆ ┆
[…0x1c…]
0xba0…bc0 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 67 ┆ g┆