00000000: 85 81 9F 2F 2A 20 C4 49 53 4B 20 52 4F 55 54 49 |.../* .ISK ROUTI|
00000010: 4E 45 53 20 46 4F 52 20 54 48 45 20 C3 4F 4D 4D |NES FOR THE .OMM|
00000020: 4F 44 4F 52 45 20 31 35 34 31 20 2A 2F 0D 1C 0D |ODORE 1541 */...|
00000030: 1C 0D 1C 0D 9A 53 54 52 55 43 54 20 44 53 54 41 |.....STRUCT DSTA|
00000040: 54 20 DB 0D 9A 0D 9A 20 20 20 20 20 20 20 20 20 |T ..... |
00000050: 49 4E 54 20 52 43 4F 44 45 3B 0D 9A 20 20 20 20 |INT RCODE;.. |
00000060: 20 20 20 20 43 48 41 52 20 52 4D 45 53 53 41 47 | CHAR RMESSAG|
00000070: 45 5B 34 30 5D 3B 0D 9A 20 20 20 20 20 20 20 20 |E[40];.. |
00000080: 20 49 4E 54 20 54 52 41 43 4B 3B 0D 9A 20 20 20 | INT TRACK;.. |
00000090: 20 20 20 20 20 20 49 4E 54 20 53 45 43 54 4F 52 | INT SECTOR|
000000A0: 3B 0D 9A 0D 9A 20 20 20 20 20 20 20 20 20 20 20 |;.... |
000000B0: 20 20 DD 20 44 53 3B 0D 1C 0D 9A 49 4E 54 20 44 | . DS;....INT D|
000000C0: 45 56 20 3D 20 38 3B 0D 1C 0D 1C 0D 1C 0D 96 56 |EV = 8;........V|
000000D0: 4F 49 44 20 44 49 53 4B 53 54 41 54 28 29 0D 1C |OID DISKSTAT()..|
000000E0: 0D 1C DB 0D 1C 0D 1C 46 49 4C 45 20 45 52 52 43 |.......FILE ERRC|
000000F0: 48 41 4E 3B 0D 1C 0D 1C 0D 1C 20 20 20 20 20 45 |HAN;...... E|
00000100: 52 52 43 48 41 4E 20 3D 20 4F 50 45 4E 28 44 45 |RRCHAN = OPEN(DE|
00000110: 56 2C 31 35 2C C5 CD D0 D4 D9 29 3B 0D 1C 0D 1C |V,15,.....);....|
00000120: 20 20 20 20 20 46 53 43 41 4E 46 28 45 52 52 43 | FSCANF(ERRC|
00000130: 48 41 4E 2C 22 25 44 2C 25 2E 2C 53 25 44 2C 25 |HAN,"%D,%.,S%D,%|
00000140: 44 22 2C 26 44 53 2E 52 43 4F 44 45 2C 44 53 2E |D",&DS.RCODE,DS.|
00000150: 52 4D 45 53 53 41 47 45 2C 26 44 53 2E 54 52 41 |RMESSAGE,&DS.TRA|
00000160: 43 4B 2C 26 44 53 2E 53 45 43 54 4F 52 29 3B 0D |CK,&DS.SECTOR);.|
00000170: 1C 0D 1C 20 20 20 20 20 43 4C 4F 53 45 28 45 52 |... CLOSE(ER|
00000180: 52 43 48 41 4E 29 3B 0D 1C DD 0D 1C 0D 96 56 4F |RCHAN);.......VO|
00000190: 49 44 20 57 52 49 54 45 53 54 41 54 28 52 4F 57 |ID WRITESTAT(ROW|
000001A0: 2C 43 4F 4C 29 0D 1C 0D 1C 49 4E 54 20 52 4F 57 |,COL)....INT ROW|
000001B0: 2C 43 4F 4C 3B 0D 1C 0D 1C DB 0D 1C 0D 1C 20 20 |,COL;......... |
000001C0: 20 20 44 49 53 4B 53 54 41 54 28 29 3B 0D 1C 0D | DISKSTAT();...|
000001D0: 1C 20 20 20 20 43 55 52 53 4F 52 28 52 4F 57 2C |. CURSOR(ROW,|
000001E0: 43 4F 4C 29 3B 0D 1C 0D 1C 20 20 20 20 50 52 49 |COL);.... PRI|
000001F0: 4E 54 46 28 22 25 44 20 25 53 20 25 44 20 25 44 |NTF("%D %S %D %D|
00000200: 22 2C 26 44 53 2E 52 43 4F 44 45 2C 44 53 2E 52 |",&DS.RCODE,DS.R|
00000210: 4D 45 53 53 41 47 45 2C 26 44 53 2E 54 52 41 43 |MESSAGE,&DS.TRAC|
00000220: 4B 2C 26 44 53 2E 53 45 43 54 4F 52 29 3B 0D 1C |K,&DS.SECTOR);..|
00000230: 0D 1C DD 0D 1C 0D 96 56 4F 49 44 20 44 45 4C 45 |.......VOID DELE|
00000240: 54 45 28 46 49 4C 45 4E 41 4D 45 29 0D 1C 0D 1C |TE(FILENAME)....|
00000250: 43 48 41 52 20 2A 46 49 4C 45 4E 41 4D 45 3B 0D |CHAR *FILENAME;.|
00000260: 1C 0D 1C DB 0D 1C 0D 1C 46 49 4C 45 20 46 49 4C |........FILE FIL|
00000270: 45 44 45 53 3B 0D 1C 0D 1C 0D 1C 20 20 20 20 20 |EDES;...... |
00000280: 46 49 4C 45 44 45 53 20 3D 20 4F 50 45 4E 28 44 |FILEDES = OPEN(D|
00000290: 45 56 2C 31 35 2C C5 CD D0 D4 D9 29 3B 0D 1C 0D |EV,15,.....);...|
000002A0: 1C 20 20 20 20 20 46 50 52 49 4E 54 46 28 46 49 |. FPRINTF(FI|
000002B0: 4C 45 44 45 53 2C 22 53 30 3A 25 53 22 2C 46 49 |LEDES,"S0:%S",FI|
000002C0: 4C 45 4E 41 4D 45 29 3B 0D 1C 0D 1C 20 20 20 20 |LENAME);.... |
000002D0: 20 43 4C 4F 53 45 28 46 49 4C 45 44 45 53 29 3B | CLOSE(FILEDES);|
000002E0: 0D 1C 0D 1C DD 0D 1C 0D 96 56 4F 49 44 20 52 45 |.........VOID RE|
000002F0: 4E 41 4D 45 28 46 52 4F 4D 2C 54 4F 29 0D 1C 0D |NAME(FROM,TO)...|
00000300: 1C 43 48 41 52 20 2A 46 52 4F 4D 2C 2A 54 4F 3B |.CHAR *FROM,*TO;|
00000310: 0D 1C 0D 1C DB 0D 1C 0D 1C 46 49 4C 45 20 46 49 |.........FILE FI|
00000320: 4C 45 44 45 53 3B 0D 1C 0D 1C 0D 1C 20 20 20 20 |LEDES;...... |
00000330: 20 46 49 4C 45 44 45 53 20 3D 20 4F 50 45 4E 28 | FILEDES = OPEN(|
00000340: 44 45 56 2C 31 35 2C C5 CD D0 D4 D9 29 3B 0D 1C |DEV,15,.....);..|
00000350: 0D 1C 20 20 20 20 20 46 50 52 49 4E 54 46 28 46 |.. FPRINTF(F|
00000360: 49 4C 45 44 45 53 2C 22 52 30 3A 25 53 3D 25 53 |ILEDES,"R0:%S=%S|
00000370: 22 2C 54 4F 2C 46 52 4F 4D 29 3B 0D 1C 0D 1C 20 |",TO,FROM);.... |
00000380: 20 20 20 20 43 4C 4F 53 45 28 46 49 4C 45 44 45 | CLOSE(FILEDE|
00000390: 53 29 3B 0D 1C 0D 1C DD 0D 1C 0D 96 56 4F 49 44 |S);.........VOID|
000003A0: 20 46 4F 52 4D 41 54 28 44 49 53 4B 4E 41 4D 45 | FORMAT(DISKNAME|
000003B0: 2C 49 44 29 0D 1C 0D 1C 43 48 41 52 20 2A 44 49 |,ID)....CHAR *DI|
000003C0: 53 4B 4E 41 4D 45 2C 2A 49 44 3B 0D 1C 0D 1C DB |SKNAME,*ID;.....|
000003D0: 0D 1C 0D 1C 46 49 4C 45 20 46 49 4C 45 44 45 53 |....FILE FILEDES|
000003E0: 3B 0D 1C 0D 1C 20 20 20 20 20 46 49 4C 45 44 45 |;.... FILEDE|
000003F0: 53 20 3D 20 4F 50 45 4E 28 44 45 56 2C 31 35 2C |S = OPEN(DEV,15,|
00000400: C5 CD D0 D4 D9 29 3B 0D 1C 0D 1C 20 20 20 20 20 |.....);.... |
00000410: 46 50 52 49 4E 54 46 28 46 49 4C 45 44 45 53 2C |FPRINTF(FILEDES,|
00000420: 22 4E 30 3A 25 53 2C 25 53 22 2C 44 49 53 4B 4E |"N0:%S,%S",DISKN|
00000430: 41 4D 45 2C 49 44 29 3B 0D 1C 0D 1C 20 20 20 20 |AME,ID);.... |
00000440: 20 43 4C 4F 53 45 28 46 49 4C 45 44 45 53 29 3B | CLOSE(FILEDES);|
00000450: 0D 1C 0D 1C DD 0D 1C 0D 96 56 4F 49 44 20 43 4F |.........VOID CO|
00000460: 50 59 28 46 52 4F 4D 2C 54 4F 29 0D 1C 0D 1C 43 |PY(FROM,TO)....C|
00000470: 48 41 52 20 2A 46 52 4F 4D 2C 2A 54 4F 3B 0D 1C |HAR *FROM,*TO;..|
00000480: 0D 1C DB 0D 1C 0D 1C 46 49 4C 45 20 46 49 4C 45 |.......FILE FILE|
00000490: 44 45 53 3B 0D 1C 0D 1C 20 20 20 20 20 46 49 4C |DES;.... FIL|
000004A0: 45 44 45 53 20 3D 20 4F 50 45 4E 28 44 45 56 2C |EDES = OPEN(DEV,|
000004B0: 31 35 2C C5 CD D0 D4 D9 29 3B 0D 1C 0D 1C 20 20 |15,.....);.... |
000004C0: 20 20 20 46 52 49 4E 54 46 28 46 49 4C 45 44 45 | FRINTF(FILEDE|
000004D0: 53 2C 22 43 30 3A 25 53 3D 25 53 22 2C 54 4F 2C |S,"C0:%S=%S",TO,|
000004E0: 46 52 4F 4D 29 3B 0D 1C 0D 1C 20 20 20 20 20 43 |FROM);.... C|
000004F0: 4C 4F 53 45 28 46 49 4C 45 44 45 53 29 3B 0D 1C |LOSE(FILEDES);..|
00000500: 0D 1C DD 0D 1C 0D 96 56 4F 49 44 20 44 49 53 4B |.......VOID DISK|
00000510: 43 4F 4D 28 53 54 52 49 4E 47 2C 43 4F 4D 53 54 |COM(STRING,COMST|
00000520: 52 29 0D 1C 0D 1C 43 48 41 52 20 2A 53 54 52 49 |R)....CHAR *STRI|
00000530: 4E 47 2C 2A 43 4F 4D 53 54 52 3B 0D 1C 0D 1C DB |NG,*COMSTR;.....|
00000540: 0D 1C 0D 1C 46 49 4C 45 20 46 49 4C 45 44 45 53 |....FILE FILEDES|
00000550: 3B 0D 1C 0D 1C 20 20 20 20 20 46 49 4C 45 44 45 |;.... FILEDE|
00000560: 53 20 3D 20 4F 50 45 4E 28 44 45 56 2C 31 35 2C |S = OPEN(DEV,15,|
00000570: 43 4F 4D 53 54 52 29 3B 0D 1C 0D 1C 20 20 20 20 |COMSTR);.... |
00000580: 20 46 52 49 4E 54 46 28 46 49 4C 44 45 53 2C 22 | FRINTF(FILDES,"|
00000590: 25 53 22 2C 53 54 52 49 4E 47 29 3B 0D 1C 0D 1C |%S",STRING);....|
000005A0: 20 20 20 20 20 43 4C 4F 53 45 28 46 49 4C 45 44 | CLOSE(FILED|
000005B0: 45 53 29 3B 0D 1C 0D 1C DD 0D 1C 0D 00 |ES);......... |
.../* DISK ROUTINES FOR THE COMMODORE 15
41 */........STRUCT DSTAT .....
INT RCODE;.. CHAR RMESSAGE[40];..
INT TRACK;.. INT SECTOR
;.... . DS;....INT DEV = 8;.
.......VOID DISKSTAT().........FILE ERRC
HAN;...... ERRCHAN = OPEN(DEV,15,EMP
TY);.... FSCANF(ERRCHAN,"%D,%.,S%D,%
D",&DS.RCODE,DS.RMESSAGE,&DS.TRACK,&DS.S
ECTOR);.... CLOSE(ERRCHAN);.......VO
ID WRITESTAT(ROW,COL)....INT ROW,COL;...
...... DISKSTAT();.... CURSOR(ROW,
COL);.... PRINTF("%D %S %D %D",&DS.RC
ODE,DS.RMESSAGE,&DS.TRACK,&DS.SECTOR);..
.......VOID DELETE(FILENAME)....CHAR *FI
LENAME;.........FILE FILEDES;......
FILEDES = OPEN(DEV,15,EMPTY);.... FP
RINTF(FILEDES,"S0:%S",FILENAME);....
CLOSE(FILEDES);.........VOID RENAME(FRO
M,TO)....CHAR *FROM,*TO;.........FILE FI
LEDES;...... FILEDES = OPEN(DEV,15,E
MPTY);.... FPRINTF(FILEDES,"R0:%S=%S
",TO,FROM);.... CLOSE(FILEDES);.....
....VOID FORMAT(DISKNAME,ID)....CHAR *DI
SKNAME,*ID;.........FILE FILEDES;....
FILEDES = OPEN(DEV,15,EMPTY);....
FPRINTF(FILEDES,"N0:%S,%S",DISKNAME,ID);
.... CLOSE(FILEDES);.........VOID CO
PY(FROM,TO)....CHAR *FROM,*TO;.........F
ILE FILEDES;.... FILEDES = OPEN(DEV,
15,EMPTY);.... FRINTF(FILEDES,"C0:%S
=%S",TO,FROM);.... CLOSE(FILEDES);..
.......VOID DISKCOM(STRING,COMSTR)....CH
AR *STRING,*COMSTR;.........FILE FILEDES
;.... FILEDES = OPEN(DEV,15,COMSTR);
.... FRINTF(FILDES,"%S",STRING);....
CLOSE(FILEDES);.........
×
C64 Image
> CLICK IMAGE PREVIEW FOR FULL MODAL