_  __   _  _         _ _     _      _           _           
  __| |/ /_ | || |     __| (_)___| | __ (_)_ __   __| | _____  __
 / _` | '_ \| || |_   / _` | / __| |/ / | | '_ \ / _` |/ _ \ \/ /
| (_| | (_) |__   _| | (_| | \__ \   <  | | | | | (_| |  __/>  < 
 \__,_|\___/   |_|    \__,_|_|___/_|\_\ |_|_| |_|\__,_|\___/_/\_\
                                                                 
            

PRANDCR

FILE INFORMATION

FILENAME(S): PRANDCR

FILE TYPE(S): SEQ

FILE SIZE: 2.2K

FIRST SEEN: 2025-12-01 01:07:53

APPEARS ON: 1 disk(s)

FILE HASH

4cabc4c1c7448ed96de475c4fc81d2949370f0831f861c371f5b3cbaface8963

FOUND ON DISKS (1 DISKS)

DISK TITLE FILENAME FILE TYPE COLLECTION TRACK SECTOR ACTIONS
04 DODDLE PRANDCR SEQ hedning, Kaevlinge 33 4 DOWNLOAD FILE

FILE CONTENT & ANALYSIS

00000000: 50 52 4F 47 52 41 4D 20  50 52 41 4E 44 43 52 28  |PROGRAM PRANDCR(|
00000010: 52 41 4E 44 4F 4D 20 46  49 4C 45 20 43 52 45 41  |RANDOM FILE CREA|
00000020: 54 45 2C 31 31 2F 31 32  2F 38 32 29 3B 0D 0D 43  |TE,11/12/82);..C|
00000030: 4F 4E 53 54 20 44 49 53  4B 55 4E 49 54 3D 38 3B  |ONST DISKUNIT=8;|
00000040: 0D 20 20 20 20 20 20 44  41 54 41 43 48 41 4E 3D  |.      DATACHAN=|
00000050: 32 3B 0D 20 20 20 20 20  20 43 4D 44 43 48 41 4E  |2;.      CMDCHAN|
00000060: 3D 31 35 3B 0D 20 20 20  20 20 20 46 49 45 4C 44  |=15;.      FIELD|
00000070: 53 45 50 3D 24 32 30 3B  0D 0D 56 41 52 20 52 45  |SEP=$20;..VAR RE|
00000080: 43 4F 52 44 53 49 5A 45  2C 20 46 49 4C 45 53 49  |CORDSIZE, FILESI|
00000090: 5A 45 3A 20 49 4E 54 45  47 45 52 3B 0D 20 20 20  |ZE: INTEGER;.   |
000000A0: 20 44 41 54 41 4F 55 54  2C 20 43 4F 4D 4D 41 4E  | DATAOUT, COMMAN|
000000B0: 44 49 4E 2C 20 43 4F 4D  4D 41 4E 44 4F 55 54 3A  |DIN, COMMANDOUT:|
000000C0: 20 54 45 58 54 3B 0D 0D  50 52 4F 43 45 44 55 52  | TEXT;..PROCEDUR|
000000D0: 45 20 50 4F 53 49 54 49  4F 4E 28 43 48 41 4E 4E  |E POSITION(CHANN|
000000E0: 45 4C 2C 20 52 45 43 4F  52 44 4E 55 4D 42 45 52  |EL, RECORDNUMBER|
000000F0: 2C 20 53 54 41 52 54 50  4F 53 49 54 49 4F 4E 3A  |, STARTPOSITION:|
00000100: 20 49 4E 54 45 47 45 52  29 3B 0D 20 20 42 45 47  | INTEGER);.  BEG|
00000110: 49 4E 0D 20 20 20 20 57  52 49 54 45 4C 4E 28 43  |IN.    WRITELN(C|
00000120: 4F 4D 4D 41 4E 44 4F 55  54 2C 43 4F 4E 43 41 54  |OMMANDOUT,CONCAT|
00000130: 28 27 50 27 2C 0D 20 20  20 20 20 20 20 20 20 20  |('P',.          |
00000140: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000150: 20 20 20 20 43 48 52 28  43 48 41 4E 4E 45 4C 29  |    CHR(CHANNEL)|
00000160: 2C 0D 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |,.              |
00000170: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000180: 43 48 52 28 52 45 43 4F  52 44 4E 55 4D 42 45 52  |CHR(RECORDNUMBER|
00000190: 29 2C 43 48 52 28 52 45  43 4F 52 44 4E 55 4D 42  |),CHR(RECORDNUMB|
000001A0: 45 52 20 53 48 52 20 38  29 2C 0D 20 20 20 20 20  |ER SHR 8),.     |
000001B0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000001C0: 20 20 20 20 20 20 20 20  20 43 48 52 28 53 54 41  |         CHR(STA|
000001D0: 52 54 50 4F 53 49 54 49  4F 4E 29 29 29 0D 20 20  |RTPOSITION))).  |
000001E0: 45 4E 44 3B 0D 0D 46 55  4E 43 54 49 4F 4E 20 44  |END;..FUNCTION D|
000001F0: 49 53 4B 45 52 52 4F 52  3A 20 42 4F 4F 4C 45 41  |ISKERROR: BOOLEA|
00000200: 4E 3B 0D 20 20 56 41 52  20 45 52 52 4F 52 4E 55  |N;.  VAR ERRORNU|
00000210: 4D 42 45 52 3A 20 49 4E  54 45 47 45 52 3B 0D 20  |MBER: INTEGER;. |
00000220: 20 20 20 20 20 4D 45 53  53 41 47 45 3A 20 53 54  |     MESSAGE: ST|
00000230: 52 49 4E 47 3B 0D 20 20  46 55 4E 43 54 49 4F 4E  |RING;.  FUNCTION|
00000240: 20 54 45 58 54 4F 46 28  46 52 4F 4D 43 42 4D 3A  | TEXTOF(FROMCBM:|
00000250: 20 53 54 52 49 4E 47 29  3A 20 53 54 52 49 4E 47  | STRING): STRING|
00000260: 3B 0D 20 20 20 20 56 41  52 20 43 4F 4D 4D 41 50  |;.    VAR COMMAP|
00000270: 4F 53 3A 20 49 4E 54 45  47 45 52 3B 0D 20 20 20  |OS: INTEGER;.   |
00000280: 20 42 45 47 49 4E 0D 20  20 20 20 20 20 43 4F 4D  | BEGIN.      COM|
00000290: 4D 41 50 4F 53 3A 3D 50  4F 53 28 27 2C 27 2C 46  |MAPOS:=POS(',',F|
000002A0: 52 4F 4D 43 42 4D 29 3B  0D 20 20 20 20 20 20 54  |ROMCBM);.      T|
000002B0: 45 58 54 4F 46 3A 3D 43  4F 50 59 28 46 52 4F 4D  |EXTOF:=COPY(FROM|
000002C0: 43 42 4D 2C 32 2C 43 4F  4D 4D 41 50 4F 53 2D 32  |CBM,2,COMMAPOS-2|
000002D0: 29 0D 20 20 20 20 45 4E  44 3B 0D 20 20 42 45 47  |).    END;.  BEG|
000002E0: 49 4E 0D 20 20 20 20 52  45 41 44 28 43 4F 4D 4D  |IN.    READ(COMM|
000002F0: 41 4E 44 49 4E 2C 45 52  52 4F 52 4E 55 4D 42 45  |ANDIN,ERRORNUMBE|
00000300: 52 2C 4D 45 53 53 41 47  45 29 3B 0D 20 20 20 20  |R,MESSAGE);.    |
00000310: 49 46 20 45 52 52 4F 52  4E 55 4D 42 45 52 3C 32  |IF ERRORNUMBER<2|
00000320: 30 0D 20 20 20 20 20 20  20 20 54 48 45 4E 20 44  |0.        THEN D|
00000330: 49 53 4B 45 52 52 4F 52  3A 3D 46 41 4C 53 45 0D  |ISKERROR:=FALSE.|
00000340: 20 20 20 20 20 20 45 4C  53 45 20 49 46 20 45 52  |      ELSE IF ER|
00000350: 52 4F 52 4E 55 4D 42 45  52 3D 35 30 0D 20 20 20  |RORNUMBER=50.   |
00000360: 20 20 20 20 20 20 20 20  20 20 20 20 54 48 45 4E  |            THEN|
00000370: 20 42 45 47 49 4E 0D 20  20 20 20 20 20 20 20 20  | BEGIN.         |
00000380: 20 20 20 20 20 20 20 20  20 20 20 20 20 57 52 49  |             WRI|
00000390: 54 45 4C 4E 28 54 45 58  54 4F 46 28 4D 45 53 53  |TELN(TEXTOF(MESS|
000003A0: 41 47 45 29 29 3B 0D 20  20 20 20 20 20 20 20 20  |AGE));.         |
000003B0: 20 20 20 20 20 20 20 20  20 20 20 20 20 44 49 53  |             DIS|
000003C0: 4B 45 52 52 4F 52 3A 3D  46 41 4C 53 45 0D 20 20  |KERROR:=FALSE.  |
000003D0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000003E0: 20 20 45 4E 44 0D 20 20  20 20 20 20 20 20 20 20  |  END.          |
000003F0: 20 20 20 45 4C 53 45 20  42 45 47 49 4E 0D 20 20  |   ELSE BEGIN.  |
00000400: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000410: 20 20 57 52 49 54 45 4C  4E 28 54 45 58 54 4F 46  |  WRITELN(TEXTOF|
00000420: 28 4D 45 53 53 41 47 45  29 29 3B 0D 20 20 20 20  |(MESSAGE));.    |
00000430: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000440: 44 49 53 4B 45 52 52 4F  52 3A 3D 54 52 55 45 3B  |DISKERROR:=TRUE;|
00000450: 0D 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.               |
00000460: 20 20 20 20 20 57 52 49  54 45 4C 4E 28 27 45 4E  |     WRITELN('EN|
00000470: 44 45 44 20 42 59 20 44  49 53 4B 20 45 52 52 4F  |DED BY DISK ERRO|
00000480: 52 27 29 0D 20 20 20 20  20 20 20 20 20 20 20 20  |R').            |
00000490: 20 20 20 20 20 20 45 4E  44 0D 20 20 45 4E 44 3B  |      END.  END;|
000004A0: 0D 0D 42 45 47 49 4E 0D  20 20 52 45 53 45 54 28  |..BEGIN.  RESET(|
000004B0: 43 4F 4D 4D 41 4E 44 49  4E 2C 0D 20 20 20 20 20  |COMMANDIN,.     |
000004C0: 20 20 20 44 49 53 4B 55  4E 49 54 2C 0D 20 20 20  |   DISKUNIT,.   |
000004D0: 20 20 20 20 20 43 4D 44  43 48 41 4E 29 3B 0D 20  |     CMDCHAN);. |
000004E0: 20 52 45 57 52 49 54 45  28 43 4F 4D 4D 41 4E 44  | REWRITE(COMMAND|
000004F0: 4F 55 54 2C 0D 20 20 20  20 20 20 20 20 20 20 44  |OUT,.          D|
00000500: 49 53 4B 55 4E 49 54 2C  0D 20 20 20 20 20 20 20  |ISKUNIT,.       |
00000510: 20 20 20 43 4D 44 43 48  41 4E 2C 0D 20 20 20 20  |   CMDCHAN,.    |
00000520: 20 20 20 20 20 20 27 53  30 3A 52 41 4E 44 4F 4D  |      'S0:RANDOM|
00000530: 27 29 3B 0D 20 20 52 45  50 45 41 54 0D 20 20 20  |');.  REPEAT.   |
00000540: 20 57 52 49 54 45 28 27  52 45 43 4F 52 44 20 53  | WRITE('RECORD S|
00000550: 49 5A 45 20 49 4E 20 43  48 41 52 41 43 54 45 52  |IZE IN CHARACTER|
00000560: 53 3F 20 27 29 3B 0D 20  20 20 20 52 45 41 44 4C  |S? ');.    READL|
00000570: 4E 28 52 45 43 4F 52 44  53 49 5A 45 29 3B 0D 20  |N(RECORDSIZE);. |
00000580: 20 20 20 49 46 20 52 45  43 4F 52 44 53 49 5A 45  |   IF RECORDSIZE|
00000590: 3C 31 36 0D 20 20 20 20  20 20 20 20 54 48 45 4E  |<16.        THEN|
000005A0: 20 57 52 49 54 45 4C 4E  28 27 54 4F 4F 20 53 4D  | WRITELN('TOO SM|
000005B0: 41 4C 4C 21 27 29 0D 20  20 20 20 20 20 45 4C 53  |ALL!').      ELS|
000005C0: 45 20 49 46 20 52 45 43  4F 52 44 53 49 5A 45 3E  |E IF RECORDSIZE>|
000005D0: 32 35 34 0D 20 20 20 20  20 20 20 20 20 20 20 20  |254.            |
000005E0: 20 20 20 54 48 45 4E 20  57 52 49 54 45 4C 4E 28  |   THEN WRITELN(|
000005F0: 27 54 4F 4F 20 4C 41 52  47 45 21 27 29 0D 20 20  |'TOO LARGE!').  |
00000600: 55 4E 54 49 4C 20 28 52  45 43 4F 52 44 53 49 5A  |UNTIL (RECORDSIZ|
00000610: 45 3E 31 35 29 20 41 4E  44 20 28 52 45 43 4F 52  |E>15) AND (RECOR|
00000620: 44 53 49 5A 45 3C 32 35  35 29 3B 0D 20 20 52 45  |DSIZE<255);.  RE|
00000630: 57 52 49 54 45 28 44 41  54 41 4F 55 54 2C 0D 20  |WRITE(DATAOUT,. |
00000640: 20 20 20 20 20 20 20 20  20 44 49 53 4B 55 4E 49  |         DISKUNI|
00000650: 54 2C 0D 20 20 20 20 20  20 20 20 20 20 44 41 54  |T,.          DAT|
00000660: 41 43 48 41 4E 2C 0D 20  20 20 20 20 20 20 20 20  |ACHAN,.         |
00000670: 20 43 4F 4E 43 41 54 28  27 30 3A 52 41 4E 44 4F  | CONCAT('0:RANDO|
00000680: 4D 2C 4C 2C 27 2C 43 48  52 28 52 45 43 4F 52 44  |M,L,',CHR(RECORD|
00000690: 53 49 5A 45 29 29 29 3B  0D 20 20 49 46 20 44 49  |SIZE)));.  IF DI|
000006A0: 53 4B 45 52 52 4F 52 0D  20 20 20 20 20 20 54 48  |SKERROR.      TH|
000006B0: 45 4E 20 45 58 49 54 28  4D 41 49 4E 29 3B 0D 20  |EN EXIT(MAIN);. |
000006C0: 20 52 45 50 45 41 54 0D  20 20 20 20 57 52 49 54  | REPEAT.    WRIT|
000006D0: 45 28 27 46 49 4C 45 20  53 49 5A 45 20 49 4E 20  |E('FILE SIZE IN |
000006E0: 4E 55 4D 42 45 52 20 4F  46 20 52 45 43 4F 52 44  |NUMBER OF RECORD|
000006F0: 53 3F 20 27 29 3B 0D 20  20 20 20 52 45 41 44 4C  |S? ');.    READL|
00000700: 4E 28 46 49 4C 45 53 49  5A 45 29 3B 0D 20 20 20  |N(FILESIZE);.   |
00000710: 20 49 46 20 46 49 4C 45  53 49 5A 45 3C 32 0D 20  | IF FILESIZE<2. |
00000720: 20 20 20 20 20 20 20 54  48 45 4E 20 57 52 49 54  |       THEN WRIT|
00000730: 45 4C 4E 28 27 54 4F 4F  20 53 4D 41 4C 4C 21 27  |ELN('TOO SMALL!'|
00000740: 29 0D 20 20 20 20 20 20  45 4C 53 45 20 49 46 20  |).      ELSE IF |
00000750: 46 49 4C 45 53 49 5A 45  3E 4D 41 58 49 4E 54 0D  |FILESIZE>MAXINT.|
00000760: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 54  |               T|
00000770: 48 45 4E 20 57 52 49 54  45 4C 4E 28 27 54 4F 4F  |HEN WRITELN('TOO|
00000780: 20 4C 41 52 47 45 21 27  29 0D 20 20 55 4E 54 49  | LARGE!').  UNTI|
00000790: 4C 20 28 46 49 4C 45 53  49 5A 45 3E 31 35 29 20  |L (FILESIZE>15) |
000007A0: 41 4E 44 20 28 46 49 4C  45 53 49 5A 45 3C 4D 41  |AND (FILESIZE<MA|
000007B0: 58 49 4E 54 29 3B 0D 20  20 50 4F 53 49 54 49 4F  |XINT);.  POSITIO|
000007C0: 4E 28 44 41 54 41 43 48  41 4E 2C 46 49 4C 45 53  |N(DATACHAN,FILES|
000007D0: 49 5A 45 2C 31 29 3B 0D  20 20 49 46 20 44 49 53  |IZE,1);.  IF DIS|
000007E0: 4B 45 52 52 4F 52 0D 20  20 20 20 20 20 54 48 45  |KERROR.      THE|
000007F0: 4E 20 45 58 49 54 28 4D  41 49 4E 29 3B 0D 20 20  |N EXIT(MAIN);.  |
00000800: 57 52 49 54 45 28 44 41  54 41 4F 55 54 2C 43 48  |WRITE(DATAOUT,CH|
00000810: 52 28 32 35 35 29 29 3B  0D 20 20 49 46 20 44 49  |R(255));.  IF DI|
00000820: 53 4B 45 52 52 4F 52 0D  20 20 20 20 20 20 54 48  |SKERROR.      TH|
00000830: 45 4E 20 45 58 49 54 28  4D 41 49 4E 29 3B 0D 20  |EN EXIT(MAIN);. |
00000840: 20 50 4F 53 49 54 49 4F  4E 28 44 41 54 41 43 48  | POSITION(DATACH|
00000850: 41 4E 2C 31 2C 31 29 3B  0D 20 20 49 46 20 44 49  |AN,1,1);.  IF DI|
00000860: 53 4B 45 52 52 4F 52 0D  20 20 20 20 20 20 54 48  |SKERROR.      TH|
00000870: 45 4E 20 45 58 49 54 28  4D 41 49 4E 29 3B 0D 20  |EN EXIT(MAIN);. |
00000880: 20 57 52 49 54 45 4C 4E  28 44 41 54 41 4F 55 54  | WRITELN(DATAOUT|
00000890: 2C 46 49 4C 45 53 49 5A  45 2C 46 49 45 4C 44 53  |,FILESIZE,FIELDS|
000008A0: 45 50 2C 52 45 43 4F 52  44 53 49 5A 45 29 3B 0D  |EP,RECORDSIZE);.|
000008B0: 20 20 49 46 20 44 49 53  4B 45 52 52 4F 52 0D 20  |  IF DISKERROR. |
000008C0: 20 20 20 20 20 54 48 45  4E 20 45 58 49 54 28 4D  |     THEN EXIT(M|
000008D0: 41 49 4E 29 0D 45 4E 44  2E 0D 03 FB              |AIN).END....    |
PROGRAM PRANDCR(RANDOM FILE CREATE,11/12
/82);..CONST DISKUNIT=8;.      DATACHAN=
2;.      CMDCHAN=15;.      FIELDSEP=$20;
..VAR RECORDSIZE, FILESIZE: INTEGER;.   
 DATAOUT, COMMANDIN, COMMANDOUT: TEXT;..
PROCEDURE POSITION(CHANNEL, RECORDNUMBER
, STARTPOSITION: INTEGER);.  BEGIN.    W
RITELN(COMMANDOUT,CONCAT('P',.          
                    CHR(CHANNEL),.      
                        CHR(RECORDNUMBER
),CHR(RECORDNUMBER SHR 8),.             
                 CHR(STARTPOSITION))).  
END;..FUNCTION DISKERROR: BOOLEAN;.  VAR
 ERRORNUMBER: INTEGER;.      MESSAGE: ST
RING;.  FUNCTION TEXTOF(FROMCBM: STRING)
: STRING;.    VAR COMMAPOS: INTEGER;.   
 BEGIN.      COMMAPOS:=POS(',',FROMCBM);
.      TEXTOF:=COPY(FROMCBM,2,COMMAPOS-2
).    END;.  BEGIN.    READ(COMMANDIN,ER
RORNUMBER,MESSAGE);.    IF ERRORNUMBER<2
0.        THEN DISKERROR:=FALSE.      EL
SE IF ERRORNUMBER=50.               THEN
 BEGIN.                      WRITELN(TEX
TOF(MESSAGE));.                      DIS
KERROR:=FALSE.                    END.  
           ELSE BEGIN.                  
  WRITELN(TEXTOF(MESSAGE));.            
        DISKERROR:=TRUE;.               
     WRITELN('ENDED BY DISK ERROR').    
              END.  END;..BEGIN.  RESET(
COMMANDIN,.        DISKUNIT,.        CMD
CHAN);.  REWRITE(COMMANDOUT,.          D
ISKUNIT,.          CMDCHAN,.          'S
0:RANDOM');.  REPEAT.    WRITE('RECORD S
IZE IN CHARACTERS? ');.    READLN(RECORD
SIZE);.    IF RECORDSIZE<16.        THEN
 WRITELN('TOO SMALL!').      ELSE IF REC
ORDSIZE>254.               THEN WRITELN(
'TOO LARGE!').  UNTIL (RECORDSIZE>15) AN
D (RECORDSIZE<255);.  REWRITE(DATAOUT,. 
         DISKUNIT,.          DATACHAN,. 
         CONCAT('0:RANDOM,L,',CHR(RECORD
SIZE)));.  IF DISKERROR.      THEN EXIT(
MAIN);.  REPEAT.    WRITE('FILE SIZE IN 
NUMBER OF RECORDS? ');.    READLN(FILESI
ZE);.    IF FILESIZE<2.        THEN WRIT
ELN('TOO SMALL!').      ELSE IF FILESIZE
>MAXINT.               THEN WRITELN('TOO
 LARGE!').  UNTIL (FILESIZE>15) AND (FIL
ESIZE<MAXINT);.  POSITION(DATACHAN,FILES
IZE,1);.  IF DISKERROR.      THEN EXIT(M
AIN);.  WRITE(DATAOUT,CHR(255));.  IF DI
SKERROR.      THEN EXIT(MAIN);.  POSITIO
N(DATACHAN,1,1);.  IF DISKERROR.      TH
EN EXIT(MAIN);.  WRITELN(DATAOUT,FILESIZ
E,FIELDSEP,RECORDSIZE);.  IF DISKERROR. 
     THEN EXIT(MAIN).END....
C64 Preview

> CLICK IMAGE PREVIEW FOR FULL MODAL