DataMuseum.dk

Presents historical artifacts from the history of:

RegneCentralen RC3600/RC7000

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

See our Wiki for more about RegneCentralen RC3600/RC7000

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦464deb1fc⟧ TextFile

    Length: 19456 (0x4c00)
    Types: TextFile
    Notes: RCSL-43-GL-, RCSL-43-GL-8980, RCSL-43-GL-8981, RCSL-43-GL-8982
    Names: »S6305«

Derivation

└─⟦a59f0a452⟧ Bits:30000472 DOMUS disk image
    └─ ⟦this⟧ »/S6305« 

TextFile

!	 						RCSL: 43-GL8981

							AUTHOR: PBP/ME

							EDITED: 79.04.26
                                                                83.26.02
























			RC36-06305.01

                IBM 3740 CATALOG HANDLER.
























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.
                SUPPORTS SINGLE OR DOUBBLE SIDED DISKETTES
                WITH 128 OR 256 BYTES PR SECTOR.
                LÆSER GAMMEL HEADER OG GEMMER EOD-INFORMATION.
                SLETTER HEADER,SKRIVER NY VOL FORTLØBENDE,EFTER
                INDTASTNING AF FØRSTE NR.
                SLETTER GAMMEL DATA PÅ DISKETTEN (FRA 1- EOD).

ASCII SOURCE:	RCSL: 43-GL8980
REL.  BINARY:	RCSL: 43-GL8982
«ff»
					RC36-00305 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.
                SUPPORTS SINGLE OR DOUBBLE SIDED DISKETTES WITH
                128 OR 256 BYTES PR SECTOR.


DATE:		79.04.26 / 83.02.26

SIZE:		3178 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 NEXT NUMBER WILL BE USED AS VOL.
                        IBMIRD WILL BE USED AS VOL1 LABEL IF YOU WRITE 
                        IBMIRD. IF YOU WRITE A NUMBER THIS NUMBER WILLBE USED.

    STOP		WILL SET PROGRAM NEUTRAL 


«ff»
					RC36-00305 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.
    MOUNT DISKETTE NR
                        MOUNT NEW DISKETTE
    FOR MEGET DATA PÅ DENNE DISKETTE
                        SLET DENNE DISKETTE MED PROG FORMA
    MONTER EN ANDEN DISKETTE
                        MOUNT NEW DISKETTE

«ff»
					RC36-00305 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-00305 PAGE 04 !

CONST

MOUNTNEXT=      "<10>MOUNT DISKETTE NR  ",
NEXTLIN=        "<13><0>",
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",
LENGTHERROR=    "<10>RECORDLENGHT IS NOT 128 NEITHER 256",
PARERRORS=	"<10>PARITY ERRORS FOUND IN CATALOG ",
CATUPDATED=	"<10>CATALOG UPDATED ",
NOTALLOWED=	"<10>INVALID COMMAND ",
SPACES=		"          ",
ANOTHER=        "<10>FOR MEGET DATA PAA DENNE DISKETTE",
NEXTDIS=        "<10>MONTER EN ANDEN DISKETTE ",
C=              "C",


IBMIRD=         "IBMIRD",
STOP=		"STOP",
ERMAP=		"ERMAP",
VOL1=		"VOL1",
HDR1=           "HDR1",
HDRSTART=       8,



REPFACTOR=      25,

PVOLLABEL=	7,
PERMAP=		5,
WRITESEQ=       3,
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-00305 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>
		",
BINNUL=         "<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><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><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-00305 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-00305 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-00305 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-00305 PAGE 09 !


VAR
OPTEXT:		STRING(80);
OPSTRING:	STRING(80);
DELAYSTRING:	STRING(FDLENGTH);
OPSTR:          STRING(6);
OPLENGTH:	INTEGER;

OUTNO:          INTEGER;
LENGTH:		INTEGER;
COUNT:		INTEGER;
HELPVAR:	INTEGER;
ENDMEDIUM:	INTEGER;
SECTORLENGTH:   INTEGER;
SIDES:          INTEGER;
MAXDSN:         INTEGER;
PAR:            INTEGER;
MESS1:          INTEGER;
MESS2:          INTEGER;
EOD:            INTEGER;
GEMEOD:         INTEGER;
LNG:            INTEGER;
A1:             STRING(2);
NR:             STRING(6);
OPNEXT:         STRING(80);
OPREST:         STRING(10);



FD:	FILE
	"FD0",14,4,FDLENGTH,U;
	GIVEUP FDERROR, 8'163776
	OF STRING(1);


«ff»
!					RC36-00305 PAGE 10 !

PROCEDURE OPANSWER;
BEGIN
    OPWAIT(OPLENGTH);
    OPTEXT:=OPSTRING;
    OPIN(OPSTRING);
END;

PROCEDURE OPERATOR;
BEGIN
    IF OUTNO > 0 THEN
    BEGIN
      NR:= SPACES;
      OUTNO:= OUTNO+1;
      BINDEC(OUTNO,NR);
      MOVE(NR,2,OPNEXT,3,3);
      OPMESS(MOUNTNEXT); OPMESS(OPNEXT);
      OPMESS(NEXTLIN);
      OPANSWER;
      IF OPLENGTH-1 <> 0 THEN
      BEGIN
        OUTNO:= 0;
        NR:= SPACES;
        IF OPTEXT = IBMIRD THEN 
        BEGIN
          OPLENGTH:= 1;
          GOTO 60;
        END;
        IF OPTEXT = STOP THEN GOTO 55;
        GOTO 50;
      END;
      OPLENGTH:= 7;
      OPTEXT:= OPNEXT;
      GOTO 60;
    END;
    OPANSWER;
50: MOVE (OPTEXT,3,NR,0,3);
    DECBIN(NR,OUTNO);
    OPNEXT:= SPACES;
    MOVE(OPTEXT,0,OPNEXT,0,6);
	
    IF OPTEXT = STOP THEN
    BEGIN
55:
	FD.ZMODE:=0; GOTO 100;
    END;
60:
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 5;
          END;

        IF FD.Z0 AND 8'040000 <> 0 THEN GOTO 3;
	IF FD.Z0 = B5B6 THEN FD.Z0:=FD.Z0 AND NOTB6;
	OPMESS(DISKSTATUS);
	OPSTATUS(FD.Z0,ERTEXTS);
3:
        FD.ZMODE:=0;
        IF OUTNO > 1 THEN OUTNO:= OUTNO-1;

	GOTO 100;
    END;
    REPEATSHARE(FD);
5:
END;

PROCEDURE CIFFERCHANGE;
BEGIN
  INSERT(PAR/10+CHAR,A1,0);
  INSERT(PAR-(PAR/10*10)+CHAR,A1,1);
END;




«ff»
!					RC36-00305 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;
        PROCEDURE OLDDATA;
        BEGIN
          OPSTR:=SPACES;
          EOD:= 1898;
          GEMEOD:= 0;
          SETPOSITION(FD,1,HDRSTART);
          GETBLOCK;
          DELAYSTRING:= FD^;
          IF FD^ <> HDR1 THEN GOTO 7;
6:
          MOVE(DELAYSTRING,44,OPSTR,0,1);
          IF OPSTR = C THEN GOTO 7;
          MOVE(DELAYSTRING,74,OPSTR,0,2);
          DECBIN(OPSTR,EOD); EOD:= (EOD-1)*26;
          IF EOD >= 520 THEN  
          BEGIN
7:        OPMESS(ANOTHER); OPMESS(NEXTDIS);
          OUTNO:= OUTNO - 1; FD.ZMODE:= 0;
          GOTO 100;
        END;
          MOVE(DELAYSTRING,77,OPSTR,0,2);
          DECBIN(OPSTR,LNG); EOD:= EOD+ LNG;
          GETBLOCK;
          DELAYSTRING:=FD^;
          IF FD^ =HDR1 THEN
          BEGIN
            GEMEOD:= EOD+GEMEOD;
            GOTO 6;
          END;
          IF GEMEOD <> 0 THEN EOD:= GEMEOD+EOD;
        END;

«ff»
!					RC36-00305 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 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-00305 PAGE 13 !

!      MAIN PROGRAM	!
BEGIN
        OUTNO:= 0;
        OPNEXT:= BINNUL;
        NR:= SPACES;
	HELPVAR:=REPFACTOR; 
        SIDES:=1; SECTORLENGTH:=128;
        OPIN(OPSTRING);
11:	OPMESS(STARTHELP); OPERATOR;
	IF OPLENGTH > 7 THEN
	BEGIN
            OUTNO:= 0;
	    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;
        OLDDATA;
12:     UPDATE;
        OPEN(FD,READNONSKIP);
        
	SETPOSITION(FD,1,PERMAP);

	GETBLOCK;
	IF FD^ <> ERMAP THEN
	BEGIN
	    OPMESS(NOERMAP);
	    GOTO 100;
	END;

15:     SETPOSITION(FD,1,PVOLLABEL);
        GETBLOCK;
        DELAYSTRING:=FD^;
        IF FD^ <> VOL1 THEN
        BEGIN
          OPMESS(NOVOL1);
          GOTO 100;
        END;
«ff»
!					RC36-00305 PAGE 14 !


        ! VOLUME IDENTIFIER !
	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;

        ! HDR1 LABEL !
	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;

        ! DDR1 LABELS !
	DELAYSTRING:=HEADER;
	INSERT(D,DELAYSTRING,0);
        IF SECTORLENGTH = 256 THEN
        BEGIN
          ! ALL 256 BYTES DISKETTES !
            CHANGEHEADER;
            GOTO 19;
        END;
        IF SIDES = 2 THEN
        BEGIN
          ! 128 BYTES DOUBBLE SIDED !
          CHANGEHEADER;
          GOTO 19;
        END;
        ! 128 BYTES SINGLE SIDED !
	MOVE(D74001,0,DELAYSTRING,28,5);
	MOVE(D74001,0,DELAYSTRING,74,5);

19:	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);
            GOTO 100;
        END;
         COUNT:= 1;
          FD.ZMODE:= WRITESEQ;
         SETPOSITION(FD,1,STARTDATA);
         DELAYSTRING:= BINNUL;
         REPEAT
           PUTREC(FD,FDLENGTH);
           FD^:= DELAYSTRING;
           COUNT:= COUNT+1
         UNTIL COUNT >= 4;
              WAITZONE(FD);
        REPEAT
          PUTREC(FD,FDLENGTH);
          COUNT:= COUNT+1
        UNTIL COUNT>= EOD;
        WAITZONE(FD);
        BINDEC(COUNT,OPSTR);
	 OPMESS(CATUPDATED);
  
100:
	CLOSE(FD,1);
	GOTO 11;
END;
«ff»
«nul»