|
DataMuseum.dkPresents historical artifacts from the history of: RegneCentralen RC3600/RC7000 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about RegneCentralen RC3600/RC7000 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - download
Length: 8704 (0x2200) Types: TextFile Notes: RCSL-43-GL-0619, RCSL-43-GL-2621, RCSL-43-GL-4403, RCSL-43-GL-5110, RCSL-43-GL-5681, RCSL-43-GL-5692, RCSL-43-GL-5704, RCSL-43-GL-7836, RCSL-43-GL-9392, RCSL-43-GL-9393, RCSL-43-GL-9394 Names: »SRDAT«
└─⟦a59f0a452⟧ Bits:30000472 DOMUS disk image └─⟦this⟧
! RCSL:43-GL9393 AUTHOR: PBP EDITED: 79.08.31 PROGRAM RC36-01186.00 RECIEVE MODULE ON MAGTAPE AT AN MCC ** BRNO INTERNATIONAL TECHNICAL FAIR 79. ** RDAT KEYWORDS: MUSIL DEVICEHANDLER,MT0,LISTING ABSTRACT: DEVICEPROGRAM, OUTPUT ON MAGTAPE WITH A BLOCKSIZE OF 130 BYTES. THE PROGRAM RECIEVES FLOPPY DATA FROM AN RCC. ASCII SOURCE: RCSL: 43-GL9392 REL/BIN: RCSL: 43-GL9394 MODIF X ! «ff» ! PROGRAM: RC36-00000 TITLE: RECIEVE MODULE ON MAGTAPE ABSTRACT: DEVICEPROGRAM. OUTPUT ON MAGTAPE WITH A BLOCKSIZE OF 130 BYTES. THE PROGRAM RECIEVES FLOPPY OR PAPERTAPE DATA FROM AN RCC. SIZE: XXXX BYTES. RUNTIME PARAMETERS: THE PARAMETERS ARE GIVEN TO THIS MODULE VIA THE MAIN MODULE. :SF. STARTS THE RECIEVE MODULE. (HAS NO PARAMETERS) :FF. FINIS THE RECIEVE MODULE. (HAS NO PARAMETERS) :PS. PROCESSING STATE. TYPES THE NUMBER OF BLOCKS ON MAGTAPE (HAS NO PARAMETERS) :ER. ERROR REPLY. THIS COMMAND MUST BE USED AS A REPLY TO A DEVICE ERROR MESSAGE. PARAMETERS DESCRIPTION R REPEAT THE FAULTY OPERATION. A ACCEPT THE ERRONEUS DATA. OUTPUT MESSAGES: PAR ERROR PARAMETER ERROR COM ERROR COMMAND ERROR MOUNT NEXT TAPE MOUNT A NEW TAPE TO CONTINUE ! «ff» ! SPECIAL REQUIREMENTS: CODEPROCEDURE ARESERVE RCSL: 43-GL4403. CODEPROCEDURE SEARCHVALUE RCSL: 43-GL2621. CODEPROCEDURE DELAY RCSL: 43-GL0619. CODEPROCEDURE OUTSTATUS RCSL: 43-GL7836. CODEPROCEDURE SETSHARE RCSL: 43-GL5110. CODEPROCEDURE GETTABLEADDRESS RCSL: 43-GL5692. CODEPROCEDURE OUTVALUE RCSL: 43-GL5681. CODEPROCEDURE MOVOUT RCSL:43-GL5704. ! «ff» CONST MAINKIND= 1, MAINMASK= 8'000422, MTKIND= 14, MTSHARES= 1, MTSHARESIZE= 130, MTMASK= 8'163776, RUNNING= 1, STOPPED= 0, MAINMODE= 1, MTMODE= 3, TRUE= 1, FALSE= 0, EM= '<13><0>', R= '<82>', B711= 8'000420, B11= 8'000020, HARDBITS= 8'101356, TABNAME= 'CCM<0><0><0>', «ff» ERRORTXT= ' <0> ****<0>', BLOCKDISP= ' NNNN BLOCKS=NNNNN<13><0>', ENDFUNC= ' END FUNCTION<13>', PARAMERROR= ' PAR ERROR<13>', MOUNTTAPE= ' MOUNT NEXT TAPE<13>', COMERR= ' COM ERROR<13>', MTERRTXTS= ' DISCONNECTED<0> OFF-LINE<0> REWINDING<0> <0> <0> WRITE LOCK<0> ILLEGAL<0> <0> BLOCK ERROR<0> DATA LATE<0> PARITY ERROR<0> EOT<0> POSITION ERROR<0> DRIVER MISSING<0> TIMEOUT<0> <0>', «ff» START= ':SF', FINIS= ':FF', ERROR= ':ER', GETPR= ':PS'; «ff» VAR AREA: RECORD CONNECT: INTEGER; STREAMNO: INTEGER; SENDER: INTEGER END; PROGSTATE: INTEGER; COMMAND: STRING(80); COML: INTEGER; RECLENGTH: INTEGER; HELPST: STRING(6); EOV: INTEGER; MTERRORCODE: INTEGER; LENGTH: INTEGER; TEXTLINE: STRING(80); REST: INTEGER; RCCNO: INTEGER; ADR: INTEGER; CDADR: INTEGER; NAME: STRING(4); X: INTEGER; RCCID: INTEGER; DUMMY: STRING(2); ! FROM DUMMY TO RCC7 THE ! BLOCKCOUNT: INTEGER; ! SEQUENCE MUST NOT BE ! RCC1,RCC2,RCC3: INTEGER; ! CHANGED ! RCC4,RCC5,RCC6: INTEGER; RCC7: INTEGER; «ff» MAIN: FILE 'XXX', MAINKIND, 1, 1, U; GIVEUP MAINERROR, MAINMASK OF STRING(1); MT: FILE 'MT0', MTKIND, MTSHARES, MTSHARESIZE, U; GIVEUP MTERROR, MTMASK OF STRING(MTSHARESIZE); «ff» PROCEDURE SEARCHVALUE (VAR COMMAND: STRING(2); CONST VALUE: INTEGER; VAR LENGTH: INTEGER); CODEBODY P0059; PROCEDURE ARESERVE (VAR SENDER: INTEGER; VAR ZNAME: STRING(6); VAR AREA: INTEGER); CODEBODY P0138; PROCEDURE DELAY (CONST TIME: INTEGER); CODEBODY; PROCEDURE OUTSTATUS (CONST BITS: INTEGER; CONST TEXTARRAY: STRING(1); VAR TEXTLINE: STRING(1); VAR INDEX: INTEGER); CODEBODY P0209; PROCEDURE SETSHARE (FILE FILENAME; CONST NOOFSHARES: INTEGER; CONST SHARELENGTH: INTEGER; VAR SHAREADR: INTEGER; CONST OFFSET: INTEGER); CODEBODY P0130; PROCEDURE OUTVALUE (VAR RESULT: INTEGER; CONST FROMADR: INTEGER; CONST ATYPE: INTEGER); CODEBODY P0122; PROCEDURE GETTABLEADDRESS (VAR ADR: INTEGER; CONST IDENT: STRING(6)); CODEBODY P0125; PROCEDURE MOVOUT (CONST FROMADR: INTEGER; VAR TOSTR: STRING(1); CONST TOINDEX: INTEGER; CONST COUNT: INTEGER); CODEBODY P0161; «ff» PROCEDURE PROCESSSTATE; BEGIN GETTABLEADDRESS(ADR,TABNAME); ADR:=ADR+26; OUTVALUE(CDADR,ADR,2); ! ADDRESS OF CDTABLE ! X:=4; REPEAT REPEAT CDADR:=CDADR+8; OUTVALUE(RCCID,CDADR,2); IF RCCID=0 THEN GOTO 5; MOVOUT(CDADR+2,NAME,0,4) UNTIL RCCID AND AREA.STREAMNO<>0; MOVE(NAME,0,BLOCKDISP,4,4); MOVE(DUMMY,X,DUMMY,2,2); BINDEC(BLOCKCOUNT,HELPST); MOVE(HELPST,0,BLOCKDISP,16,5); OPMESS(BLOCKDISP); X:=X+2 UNTIL 1<>1; 5: END; «ff» PROCEDURE OPERATOR; BEGIN OPWAIT(COML); IF COMMAND=START THEN GOTO 99 ELSE IF COMMAND=FINIS THEN GOTO 11000 ELSE IF COMMAND=GETPR THEN PROCESSSTATE ELSE IF COMMAND=ERROR THEN BEGIN MOVE(COMMAND,COML-2,HELPST,0,1); MTERRORCODE:=0; END ELSE OPMESS(COMERR); 99: OPIN(COMMAND); END; «ff» PROCEDURE CHANGETAPE; BEGIN CLOSE(MT,TRUE); OPMESS(MOUNTTAPE); OPEN(MT,MTMODE); MTERRORCODE:=0; SETPOSITION(MT,1,1); EOV:=FALSE; END; «ff» PROCEDURE OUTERROR; BEGIN IF LENGTH AND HARDBITS=0 THEN LENGTH:=8'100000 ELSE LENGTH:=8'040000; COML:=0; OUTSTATUS(LENGTH,ERRORTXT,TEXTLINE,COML); END; PROCEDURE MAINERROR; BEGIN IF MAIN.Z0 AND B711 <> 0 THEN GOTO 200; IF MAIN.Z0 AND 2<>0 THEN BEGIN REST:=REST+MAIN.ZREM; IF OPTEST<>0 THEN OPERATOR; REPEATSHARE(MAIN); END; END; PROCEDURE MTERROR; BEGIN IF MT.Z0=B11 THEN IF MT.ZMODE EXTRACT 2=3 THEN BEGIN EOV:=TRUE; GOTO 999; END; IF MTERRORCODE=0 THEN BEGIN MTERRORCODE:=MT.Z0; LENGTH:=MT.Z0; OUTERROR; OUTSTATUS(8'100000,MT.ZNAME,TEXTLINE,COML); OUTSTATUS(MT.Z0,MTERRTXTS,TEXTLINE,COML); MOVE(EM,0,TEXTLINE,COML,2); OPMESS(TEXTLINE); END; IF MTERRORCODE AND HARDBITS=0 THEN BEGIN DELAY(10); IF OPTEST<>0 THEN OPERATOR; REPEATSHARE(MT); END; REPEAT OPERATOR UNTIL COMMAND=ERROR; IF HELPST=R THEN REPEATSHARE(MT); 999: END; «ff» BEGIN 100: AREA.SENDER:=0; ARESERVE(AREA.SENDER,MAIN.ZNAME,AREA.CONNECT); INSERT(0,COMMAND,0); INSERT(0,COMMAND,1); MOVE(COMMAND,0,COMMAND,2,78); WAITZONE(MT); SETSHARE(MAIN,1,130,MT.ZTOP,0); MTERRORCODE:=0; OPIN(COMMAND); 110: PROGSTATE:=STOPPED; REPEAT OPERATOR UNTIL COMMAND=START; PROGSTATE:=RUNNING; EOV:=FALSE; OPEN(MT,MTMODE); MTERRORCODE:=0; SETPOSITION(MT,1,1); OPEN(MAIN,AREA.STREAMNO+MAINMODE); !CONNECT MODULE! «ff» 200: REPEAT BEGIN ARESERVE(AREA.SENDER,MAIN.ZNAME,AREA.CONNECT); REST:=0; GETREC(MAIN,RECLENGTH); RCCNO:=BYTE MAIN^ SHIFT (-4); ! RCCNO ! IF RCCNO>=20 THEN RCCNO:=RCCNO-4; RCCNO:=RCCNO*2; RECLENGTH:=RECLENGTH+REST; MAIN.ZTOP:=MAIN.ZTOP+REST; MTERRORCODE:=0; MT.ZREM:=0; IF RECLENGTH<130 THEN MT.ZREM:=130-RECLENGTH; OUTBLOCK(MT); MOVE(DUMMY,RCCNO,DUMMY,2,2); BLOCKCOUNT:=BLOCKCOUNT+1; MOVE(DUMMY,2,DUMMY,RCCNO,2); IF EOV=TRUE THEN CHANGETAPE; END UNTIL OPTEST<>0; OPERATOR; GOTO 200; «ff» 10000: CLOSE(MAIN,TRUE); !DISCONNECT MODULE! CLOSE(MT,TRUE); PROCESSSTATE; OPMESS(ENDFUNC); PROGSTATE:=STOPPED; GOTO 110; 11000: IF MTERRORCODE<>0 THEN MT.ZMODE:=0; IF MT.ZMODE<>0 THEN CLOSE(MT,TRUE); IF MAIN.ZMODE<>0 THEN CLOSE(MAIN,TRUE); PROCESSSTATE; OPMESS(ENDFUNC); OPMESS(COMMAND); GOTO 100; END; «ff» «nul»