|
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: 16896 (0x4200) Types: TextFile Notes: RCSL-43-GL-, RCSL-43-GL-8408, RCSL-43-GL-8409, RCSL-43-GL-8510 Names: »S1074«
└─⟦a59f0a452⟧ Bits:30000472 DOMUS disk image └─⟦this⟧
! RCSL: 43-GL8409 AUTHOR: PBP EDITED: 79.01.17 RC36-01074.00 IBM DISKETTE FEED PROGRAM. KEYWORDS: MUSIL, FD, LISTING. ABSTRACT: THIS PROGRAM GENERATES THE DISKETTE TO BE USED FOR IBM 3740 PURPUSE BY INITATING THE TRACK ZERO ON THE DISKETTE SO IT FITS FOR IBM 3740 DISKETTE FORMAT. ASCII SOURCE: RCSL: 43-GL8408 REL. BINARY: RCSL: 43-GL8510 «ff» RC36-01074 PAGE 01 ABSTRACT: THIS PROGRAM GENERATES THE DISKETTE TO BE USED FOR IBM 3740 PURPUSE BY INITIATING THE TRACK ZERO ON THE DISKETTE SO IT FITS FOR IBM 3740 FORMAT. DATE: 70.01.17 SIZE: 3602 BYTES. INCLUDING ONE 128 BYTE INPUT/OUTPUT BUFFER. COMMANDS: <VOLID> VOLUME IDENTIFIKATION. FROM ONE TO SIX CHARACTERS. WILL BE PLACED ON SECTOR 7 ON POSITION 5 TO 10. IF NL IS PRESSED IBMIRD WILL BE USED AS VOL1 LABEL. STOP WILL SET PROGRAM NEUTRAL <TRACK1> NUMBER OF FIRST DELETED TRACK IF ANY. MUST BE SMALER THAN DELTRACK2. <TRACK2> NUMBER OF SECOND DELETED TRACK IF ANY. «ff» RC36-01074 PAGE 02 OUTPUT MESSAGES: CATALOG UPDATED CATALOG IS UPDATED. INVALID COMMAND COMMAND IS NOT ALLOWED. TYPE VOLID. MAX 6 CHARACTERS. TYPE THE WANTED VOLUME ID. ERMAP NOT FOUND CHECK READING OF ERMAP UNSUCCESFULL. STANDARD IBMLABEL: IBMIRD IS USED AS VOL1. IBMIRD IS USED AS VOL1 LABEL ON DISKETTE. NO VOLUME LABEL CHECK READING OF VOL1 UNSUCCESFULL. PARITY ERRORS FOUND IN CATALOG DURING CATALOG UPDATE AN PARITY ERROR(S) WAS FOUND. ERRONOMOUS. RECORDLENGTH IS NOT 128 NEITHER 256 THE DISKETTE HAS AN UNKNOWN RECORDLENGTH. TRACK NOT ON DISKETTE OR FIRST TRACKNO. > SECOND TRACKNO. THERE IS AN ERROR IN THE DELETED TRACK NUMBERS. TYPE NUMBER OF FIRST DELETED TRACK IF ANY ELSE TYPE 78. A NUMBER BETWEEN 1 AND 78 ARE LEGAL. TYPE NUMBER OF SECOND DELETED TRACK IF ANY ELSE TYPE 78. A NUMBER > FIRST DELETED TRACK AND LESS THAN 78 ARE LEGAL «ff» RC36-01074 PAGE 03 DISKETTE ERRORS: DISCONNECTED: DEVICE NOT CONNECTED. NOT READY UNIT IS NOT MOUNTED. WRITE PROTECTION PROTECTION LAMP IS LITTED. ILLEGAL DEVICE RESERVED BY OTHER PROGRAM. BLOCK ERROR BLOCK TRANSFERRED IS DIFFERENT FROM 128 BYTES. PARITY ERROR PARITY ERROR DETECTED ON SURFACE. END MEDIUM END OF MEDIUM REACHED. POSITION ERROR WANTED POSITION NOT FOUND. DRIVER MISSING DRIVER IS NOT IN CORE. TIME OUT SURFACE ADRESS NOT FOUND WITHIN GIVEN TIME. SPECIEL REQUIREMENTS: CODEPROCEDURE DELAY RCSL: 43-GLXXXX. !«ff» ! RC36-01074 PAGE 04 ! CONST STARTHELP= "<10>TYPE VOLID. MAX 6 CHARACTERS<10> ", NOERMAP= "<10>ERMAP NOT FOUND ", NOVOL1= "<10>NO VOLUME LABEL ", IBMVOLID= "<10>STANDARD IBMLABEL: IBMIRD IS USED AS VOL1", TRACK1= "<10>TYPE NUMBER OF FIRST DELETED TRACK IF ANY <10> ELSE TYPE 78<10>", TRACK2= "<10>TYPE NUMBER OF SECOND DELETED TRACK IF ANY <10> ELSE TYPE 78<10>", TRACKERROR= "<10>TRACK NOT ON DISKETTE OR FIRST TRACKNO > SECOND TRACKNO", LENGTHERROR= "<10>RECORDLENGHT IS NOT 128 NEITHER 256", PARERRORS= "<10>PARITY ERRORS FOUND IN CATALOG ", CATUPDATED= "<10>CATALOG UPDATED ", NOTALLOWED= "<10>INVALID COMMAND ", SPACES= " ", IBMIRD= "IBMIRD", STOP= "STOP", ERMAP= "ERMAP", VOL1= "VOL1", REPFACTOR= 5, PVOLLABEL= 7, PERMAP= 5, WRITEREAD= 11, READNONSKIP= 17, FDLENGTH= 128, STARTDATA= 27, CHAR= 48, MASKB5= 8'173776, NOTB6= 8'176777, B5B6= 8'003000, B10= 8'40, B11= 8'000020, ET= 49, TO= 50, B= 66, D= 68, E= 69, W= 87, D74001= "74001", D00256= "00256", D74015= "74015", D74115= "74115", D74126= "74126", DISKSTATUS= "<10>DISKETTE STATUS: <0>", ERTEXTS= " DISCONNECTED <0> NOT READY <0> <0> <0> <0> WRITE PROTECTED <0> ILLEGAL <0> END OF FILE <0> BLOCK ERROR <0> <0> PARITY ERROR <0> END MEDIUM <0> POSITION ERROR <0> DRIVER MISSING <0> TIMEOUT <0> <0> ", «ff» ! RC36-01074 PAGE 05 ! ! 128 BYTE PR. SECTOR SECTOR NO. 8 SIDE 0 ! HEADER= " HDR1 <32><32><32><32><32><32><32><32><32> <32><32><32><32><32><32><32><32><32> <32><32>080 <32> 01001 <32> 73026 <32> <32><32><32><32><32><32><32><32><32><32> <32><32><32><32><32><32><32><32><32><32> <32><32><32><32><32><32><32><32><32><32> <32><32><32><32> 01001 <32><0><0><0><0><0><0><0><0><0> <0><0><0><0><0><0><0><0><0><0> <0><0><0><0><0><0><0><0><0><0> <0><0><0><0><0><0><0><0><0><0> <0><0><0><0><0><0><0><0><0> ", «ff» ! RC36-01074 PAGE 06 ! ! EBCDIC => ASCII ! EBCASC = # ! 0 1 2 3 4 5 6 7 ! ! 0 ! 0 31 31 31 31 31 31 31 ! 8 ! 31 31 31 31 31 31 31 31 ! 16 ! 31 31 31 31 31 31 31 31 ! 24 ! 31 31 31 31 31 31 31 31 ! 32 ! 31 31 31 31 31 31 31 31 ! 40 ! 31 31 31 31 31 31 31 31 ! 48 ! 31 31 31 31 31 31 31 31 ! 56 ! 31 31 31 31 31 31 31 31 ! 64 ! 32 31 31 31 31 31 31 31 ! 72 ! 31 31 91 46 60 40 43 94 ! 80 ! 38 31 31 31 31 31 31 31 ! 88 ! 31 31 33 36 42 41 59 92 ! 96 ! 45 47 31 31 31 31 31 31 ! 104 ! 31 31 31 44 37 95 62 63 ! 112 ! 31 31 31 31 31 31 31 31 ! 120 ! 31 31 58 35 64 39 61 34 ! 128 ! 31 65 66 67 68 69 70 71 ! 136 ! 72 73 31 31 31 31 31 31 ! 144 ! 31 74 75 76 77 78 79 80 ! 152 ! 81 82 31 31 31 31 31 31 ! 160 ! 31 31 83 84 85 86 87 88 ! 168 ! 89 90 31 31 31 31 31 31 ! 176 ! 31 31 31 31 31 31 31 31 ! 184 ! 31 31 31 31 31 31 31 31 ! 192 ! 31 65 66 67 68 69 70 71 ! 200 ! 72 73 31 31 31 31 31 31 ! 208 ! 31 74 75 76 77 78 79 80 ! 216 ! 81 82 31 31 31 31 31 31 ! 224 ! 93 31 83 84 85 86 87 88 ! 232 ! 89 90 31 31 31 31 31 31 ! 240 ! 48 49 50 51 52 53 54 55 ! 248 ! 56 57 94 31 31 31 31 31 #, ! END KEYOUTTAB ! «ff» ! RC36-01074 PAGE 07 ! ! ASCII NO PARITY TO EBCDIC ! ASCEBC= # 000 000 ! 000 NUL,SOH ! 002 003 ! 002 STX,ETX ! 055 045 ! 004 EOT,ENQ ! 046 047 ! 006 ACK,BEL ! 022 005 ! 008 BS,HT ! 037 011 ! 010 LF,VT ! 012 013 ! 012 FF,CR ! 014 015 ! 014 SO,SI ! 016 017 ! 016 DLE,DC1 ! 018 019 ! 018 DC2,TM ! 060 061 ! 020 DC4,NAK ! 050 038 ! 022 SYN,ETB ! 024 025 ! 024 CAN,EM ! 063 039 ! 026 SUB,ESC ! 028 029 ! 028 IFS,IGS ! 030 031 ! 030 IRS,IUS ! 064 090 ! 032 SP,EXCLAM ! 127 123 ! 034 ",# ! 091 108 ! 036 $,% ! 080 125 ! 038 &,' ! 077 093 ! 040 (,) ! 092 078 ! 042 *,+ ! 107 096 ! 044 ,,- ! 075 097 ! 046 .,/ ! 240 241 ! 048 0,1 ! 242 243 ! 050 2,3 ! 244 245 ! 052 4,5 ! 246 247 ! 054 6,7 ! 248 249 ! 056 8,9 ! 122 094 ! 058 :,; ! 076 126 ! 060 <,= ! 110 111 ! 062 >,? ! 124 193 ! 064 @,A ! 194 195 ! 066 B,C ! 196 197 ! 068 D,E ! 198 199 ! 070 F,G ! 200 201 ! 072 H,I ! 209 210 ! 074 J,K ! 211 212 ! 076 L,M ! 213 214 ! 078 N,O ! 215 216 ! 080 P,Q ! 217 226 ! 082 R,S ! 227 228 ! 084 T,U ! 229 230 ! 086 V,W ! 231 232 ! 088 X,Y ! 233 063 ! 090 Z, ! 063 063 ! 092 , ! 063 063 ! 094 , ! «ff» ! RC36-01074 PAGE 08 ! 063 129 ! 096 ,A SMALL ! 130 131 ! 098 B,C ! 132 133 ! 100 D,E ! 134 135 ! 102 F,G ! 136 137 ! 104 H,I ! 145 146 ! 106 J,K ! 147 148 ! 108 L,M ! 149 150 ! 110 N,O ! 151 152 ! 112 P,Q ! 153 162 ! 114 R,S ! 163 164 ! 116 T,U ! 165 166 ! 118 V,W ! 167 168 ! 120 X,Y ! 169 063 ! 122 Z, ! 063 063 ! 124 , ! 063 007 ! 126 ,DEL ! #; ! END KEYINTABLE ! «ff» ! RC36-01074 PAGE 09 ! VAR OPTEXT: STRING(80); OPSTRING: STRING(80); DELAYSTRING: STRING(FDLENGTH); OPLENGTH: INTEGER; LENGTH: INTEGER; COUNT: INTEGER; HELPVAR: INTEGER; ENDMEDIUM: INTEGER; SECTORLENGTH: INTEGER; SIDES: INTEGER; MAXDSN: INTEGER; FIRSTTRACK: INTEGER; SECONDTRACK: INTEGER; PAR: INTEGER; MESS1: INTEGER; MESS2: INTEGER; A1: STRING(2); FD: FILE "FD0",14,2,FDLENGTH,U; GIVEUP FDERROR, 8'163776 OF STRING(1); «ff» ! RC36-01074 PAGE 10 ! PROCEDURE OPANSWER; BEGIN OPWAIT(OPLENGTH); OPTEXT:=OPSTRING; OPIN(OPSTRING); END; PROCEDURE OPERATOR; BEGIN OPANSWER; IF OPTEXT = STOP THEN BEGIN FD.ZMODE:=0; GOTO 100; END; END; PROCEDURE FDERROR; BEGIN HELPVAR:=HELPVAR-1; IF HELPVAR <= 0 THEN BEGIN HELPVAR:=REPFACTOR; IF FD.Z0 AND B11 <> 0 THEN BEGIN ENDMEDIUM:=B11; FD.ZREM:=1; GOTO 0; END; IF FD.Z0 = B5B6 THEN FD.Z0:=FD.Z0 AND NOTB6; OPMESS(DISKSTATUS); OPSTATUS(FD.Z0,ERTEXTS); FD.ZMODE:=0; GOTO 100; END; REPEATSHARE(FD); 0: END; PROCEDURE CIFFERCHANGE; BEGIN INSERT(PAR/10+CHAR,A1,0); INSERT(PAR-(PAR/10*10)+CHAR,A1,1); END; «ff» ! RC36-01074 PAGE 11 ! PROCEDURE GETBLOCK; BEGIN GETREC(FD,LENGTH); CONVERT(FD^,FD^,EBCASC,FDLENGTH); END; PROCEDURE ASCTOEBC; BEGIN CONVERT(FD^,FD^,ASCEBC,FDLENGTH); END; PROCEDURE SENCE; BEGIN IF MESS2 SHIFT 10 SHIFT(-15) = 0 THEN SIDES:=1 ELSE SIDES:=2; IF MESS2 SHIFT 11 SHIFT(-11) = 26 THEN SECTORLENGTH:=128 ELSE IF MESS2 SHIFT 11 SHIFT (-11) = 15 THEN SECTORLENGTH:=256 ELSE BEGIN OPMESS(LENGTHERROR); GOTO 100; END; IF SECTORLENGTH=256 THEN BEGIN MESS1:= (MESS2 SHIFT 6 SHIFT (-11) +32) SHIFT 5 + 26; TRANSFER(FD,MESS1,-1); WAITTRANSFER(FD); END; END; PROCEDURE LENGTH256; BEGIN MOVE (D00256,0,DELAYSTRING,22,5); INSERT (ET,DELAYSTRING,33); INSERT (E,DELAYSTRING,43); IF SIDES = 1 THEN MOVE (D74015,0,DELAYSTRING,34,5) ELSE MOVE (D74115,0,DELAYSTRING,34,5); END; PROCEDURE CHANGEHEADER; BEGIN MOVE(SPACES,0,DELAYSTRING,1,3); MOVE(SPACES,0,DELAYSTRING,22,5); MOVE(SPACES,0,DELAYSTRING,28,5); MOVE(SPACES,0,DELAYSTRING,34,5); MOVE(SPACES,0,DELAYSTRING,74,5); END; «ff» ! RC36-01074 PAGE 12 ! PROCEDURE SCRATCH; BEGIN COUNT:=0; REPEAT MOVE(SPACES,0,DELAYSTRING,COUNT,8); ! 8:= NUMBER OF SPACES ! COUNT:=COUNT+8 UNTIL COUNT >= 80; REPEAT INSERT(0,DELAYSTRING,COUNT); COUNT:=COUNT+1 UNTIL COUNT >= FDLENGTH; END; PROCEDURE UPDATE; BEGIN SCRATCH; OPEN(FD,WRITEREAD); COUNT:=0; SETPOSITION(FD,1,1); REPEAT PUTREC(FD,FDLENGTH); FD^:=DELAYSTRING; ASCTOEBC; COUNT:=COUNT+1 UNTIL COUNT > 8; DELAYSTRING:=VOL1; IF SIDES=2 THEN INSERT(TO,DELAYSTRING,71); IF SECTORLENGTH = 256 THEN INSERT (ET,DELAYSTRING,75); INSERT(W,DELAYSTRING,79); SETPOSITION(FD,1,PVOLLABEL); PUTREC(FD,FDLENGTH); FD^:=DELAYSTRING; ASCTOEBC; SETPOSITION(FD,1,PERMAP); SCRATCH; DELAYSTRING:=ERMAP; IF FIRSTTRACK < 78 THEN BEGIN INSERT (0,DELAYSTRING,8); PAR:=FIRSTTRACK; CIFFERCHANGE; MOVE (A1,0,DELAYSTRING,6,2); END; IF SECONDTRACK < 78 THEN BEGIN INSERT (0,DELAYSTRING,12); PAR:=SECONDTRACK; CIFFERCHANGE; MOVE (A1,0,DELAYSTRING,10,2); END; IF SECTORLENGTH = 256 THEN BEGIN INSERT (B,DELAYSTRING,23); COUNT:=24; REPEAT INSERT (0,DELAYSTRING,COUNT); COUNT:=COUNT+1 UNTIL COUNT >= 72; END; PUTREC(FD,FDLENGTH); FD^:=DELAYSTRING; ASCTOEBC; WAITZONE(FD); END; «ff» ! RC36-01074 PAGE 13 ! ! MAIN PROGRAM ! BEGIN HELPVAR:=REPFACTOR; SIDES:=1; SECTORLENGTH:=128; FIRSTTRACK:=78; SECONDTRACK:=78; OPIN(OPSTRING); 9: OPMESS(TRACK1); OPERATOR; DECBIN(OPTEXT,FIRSTTRACK); IF FIRSTTRACK < 1 THEN BEGIN OPMESS(TRACKERROR); GOTO 9; END; IF FIRSTTRACK > 78 THEN BEGIN OPMESS(TRACKERROR); GOTO 9; END; 10: OPMESS(TRACK2); OPERATOR; DECBIN(OPTEXT,SECONDTRACK); IF SECONDTRACK < 1 THEN BEGIN OPMESS(TRACKERROR); GOTO 10; END; IF SECONDTRACK > 78 THEN BEGIN OPMESS(TRACKERROR); GOTO 10; END; IF SECONDTRACK < FIRSTTRACK THEN BEGIN OPMESS(TRACKERROR); GOTO 9; END; 11: OPMESS(STARTHELP); OPERATOR; IF OPLENGTH > 7 THEN BEGIN OPMESS(NOTALLOWED); GOTO 11; END; IF OPLENGTH-1 = 0 THEN BEGIN OPMESS(IBMVOLID); OPTEXT:=IBMIRD; OPLENGTH:=7; END; FD.ZMASK:=MASKB5; OPEN(FD,READNONSKIP); MESS2:=FD.ZFILE; SENCE; 12: UPDATE; OPEN(FD,READNONSKIP); SETPOSITION(FD,1,PERMAP); GETBLOCK; IF FD^ <> ERMAP THEN BEGIN OPMESS(NOERMAP); GOTO 100; END; «ff» ! RC36-01074 PAGE 14 ! 15: SETPOSITION(FD,1,PVOLLABEL); GETBLOCK; DELAYSTRING:=FD^; IF FD^ <> VOL1 THEN BEGIN OPMESS(NOVOL1); GOTO 100; END; CLOSE(FD,0); OPEN(FD,WRITEREAD); SETPOSITION(FD,1,PVOLLABEL); PUTREC(FD,FDLENGTH); FD^:=DELAYSTRING; MOVE(SPACES,0,FD^,4,6); MOVE(OPTEXT,0,FD^,4,OPLENGTH-1); ASCTOEBC; PUTREC(FD,FDLENGTH); DELAYSTRING:=HEADER; IF SECTORLENGTH = 256 THEN LENGTH256 ELSE IF SIDES=2 THEN BEGIN MOVE(D74126,0,DELAYSTRING,34,5); INSERT(E,DELAYSTRING,43); END; FD^:=DELAYSTRING; ASCTOEBC; DELAYSTRING:=HEADER; INSERT(D,DELAYSTRING,0); IF SECTORLENGTH = 256 THEN BEGIN CHANGEHEADER; GOTO 17; END; IF SIDES=2 THEN BEGIN CHANGEHEADER; GOTO 17; END; MOVE(D74001,0,DELAYSTRING,28,5); MOVE(D74001,0,DELAYSTRING,74,5); 17: COUNT:=1; IF SIDES = 1 THEN MAXDSN:=19 ELSE MAXDSN:=45; REPEAT PUTREC(FD,FDLENGTH); FD^:=DELAYSTRING; ASCTOEBC; COUNT:=COUNT+1 UNTIL COUNT >= MAXDSN; WAITZONE(FD); IF COUNT + 8 <> FD.ZBLOCK THEN BEGIN OPMESS(PARERRORS); END ELSE OPMESS(CATUPDATED); 100: CLOSE(FD,1); GOTO 9; END; «ff» «nul»