|
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) Notes: Mikados TextFile, Mikados_K Names: »PSCIU«
└─⟦ca21ef4c0⟧ Bits:30005311 Extended Pascal System Disc v. 04.07.1980 (SPC/1) └─ ⟦this⟧ »PSCIU«
;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