Home » Archimedes archive » Acorn User » AU 1998-02 B.adf » Regulars » StarInfo/Boham/DiscCopy
StarInfo/Boham/DiscCopy
This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.
Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.
Tape/disk: | Home » Archimedes archive » Acorn User » AU 1998-02 B.adf » Regulars |
Filename: | StarInfo/Boham/DiscCopy |
Read OK: | ✔ |
File size: | 0621 bytes |
Load address: | 0000 |
Exec address: | 0000 |
File contents
1*ADFS 2*DRIVE 0 3MODE 27:OFF 4PRINT"Insert source disc and press space" 5PROCw 6DIM d% 256 7SYS "ADFS_DescribeDisc",":0",d% 8sect_size% = 1<<(d%?0) 9PRINT "Sector size = ";sect_size%;" bytes" 10PRINT "Sectors per track = ";d%?1 11track_size% = (d%?1 * sect_size%) 12PRINT "Track size = ";track_size% DIV 1024;" Kb" 13tracks% = d%!16 / track_size% 14PRINT "Total tracks = ";tracks% 15disc_size%=d%!16 16PRINT "Disc size = ";(d%!16)DIV1024;" Kb" 17PRINT "Disc name = ";FNs(d%+22,10) 18PRINT '''' 19DIM read% disc_size% 20a%=0 21FOR track% = 0 TO tracks%-1 22FOR sector% = 0 TO (d%?1)-1 23SYS "XADFS_DiscOp",,1,a%,read%+a%,sect_size% TO r0;f% 24IF (f% AND 1)<>0 THEN 25IF FNs(r0+4,255)="Escape" THEN ERROR EXT 0,"Escape":END 26GCOL 1 27COLOUR 1 28ELSE 29COLOUR 7 30GCOL 2 31ENDIF 32PRINT TAB(0,20);"Track: ";track%;TAB(20);"Sector: ";sector%;" ";TAB(40);"Disc address: &";FNh8(a%) 33 34RECTANGLEFILL track%*8,sector%*8,4,4 35a%=a%+sect_size% 36NEXT , 37: 38REM SYS "OS_File",10,":4.DiscDUMP",&FFD,,read%,read%+disc_size% 39PRINT "Insert destination disc:" 40A=GET 41a%=0 42FOR track% = 0 TO tracks%-1 43FOR sector% = 0 TO (d%?1)-1 44SYS "XADFS_DiscOp",,2,a%,read%+a%,sect_size% TO r0;f% 45IF (f% AND 1)<>0 THEN 46IF FNs(r0+4,255)="Escape" THEN ERROR EXT 0,"Escape":END 47GCOL 5 48COLOUR 5 49ELSE 50COLOUR 7 51GCOL 4 52ENDIF 53PRINT TAB(0,20);"Track: ";track%;TAB(20);"Sector: ";sector%;" ";TAB(40);"Disc address: &";FNh8(a%) 54 55RECTANGLEFILL track%*8,sector%*8,4,4 56a%=a%+sect_size% 57NEXT , 58 59END 60: 61DEFPROCw 62WHILE GET<>32 63ENDWHILE 64ENDPROC 65: 66DEFFNs(a,l) 67LOCAL a$,m 68a$="" 69m=a+l 70WHILE ?a>31 AND a<m 71a$=a$+CHR$(?a) 72a=a+1 73ENDWHILE 74=a$ 75: 76DEFFNh8(n) 77=RIGHT$("0000000"+STR$~(n),8)
*ADFS *DRIVE 0 � 27:� )�"Insert source disc and press space" �w � d% 256 "ș "ADFS_DescribeDisc",":0",d% sect_size% = 1<<(d%?0) 0� "Sector size = ";sect_size%;" bytes" !� "Sectors per track = ";d%?1 %track_size% = (d%?1 * sect_size%) 5� "Track size = ";track_size% � 1024;" Kb" !tracks% = d%!16 / track_size% $� "Total tracks = ";tracks% disc_size%=d%!16 /� "Disc size = ";(d%!16)�1024;" Kb" )� "Disc name = ";�s(d%+22,10) � '''' � read% disc_size% a%=0 � track% = 0 � tracks%-1 � sector% = 0 � (d%?1)-1 7ș "XADFS_DiscOp",,1,a%,read%+a%,sect_size% � r0;f% � (f% � 1)<>0 � .� �s(r0+4,255)="Escape" � � � 0,"Escape":� � 1 � 1 � � 7 � 2 � Y� �0,20);"Track: ";track%;�20);"Sector: ";sector%;" ";�40);"Disc address: &";�h8(a%) ! "ȓȐ track%*8,sector%*8,4,4 #a%=a%+sect_size% $� , %: &A� SYS "OS_File",10,":4.DiscDUMP",&FFD,,read%,read%+disc_size% ' � "Insert destination disc:" (A=� )a%=0 *� track% = 0 � tracks%-1 +� sector% = 0 � (d%?1)-1 ,7ș "XADFS_DiscOp",,2,a%,read%+a%,sect_size% � r0;f% -� (f% � 1)<>0 � ..� �s(r0+4,255)="Escape" � � � 0,"Escape":� /� 5 0� 5 1� 2� 7 3� 4 4� 5Y� �0,20);"Track: ";track%;�20);"Sector: ";sector%;" ";�40);"Disc address: &";�h8(a%) 6 7ȓȐ track%*8,sector%*8,4,4 8a%=a%+sect_size% 9� , : ;� <: =��w >ȕ �<>32 ?� @� A: Bݤs(a,l) C � a$,m D a$="" E m=a+l Fȕ ?a>31 � a<m Ga$=a$+�(?a) H a=a+1 I� J=a$ K: Lݤh8(n) M=�"0000000"+�~(n),8) �
00000000 0d 00 01 09 2a 41 44 46 53 0d 00 02 0c 2a 44 52 |....*ADFS....*DR| 00000010 49 56 45 20 30 0d 00 03 0a eb 20 32 37 3a 87 0d |IVE 0..... 27:..| 00000020 00 04 29 f1 22 49 6e 73 65 72 74 20 73 6f 75 72 |..)."Insert sour| 00000030 63 65 20 64 69 73 63 20 61 6e 64 20 70 72 65 73 |ce disc and pres| 00000040 73 20 73 70 61 63 65 22 0d 00 05 06 f2 77 0d 00 |s space".....w..| 00000050 06 0c de 20 64 25 20 32 35 36 0d 00 07 22 c8 99 |... d% 256..."..| 00000060 20 22 41 44 46 53 5f 44 65 73 63 72 69 62 65 44 | "ADFS_DescribeD| 00000070 69 73 63 22 2c 22 3a 30 22 2c 64 25 0d 00 08 1a |isc",":0",d%....| 00000080 73 65 63 74 5f 73 69 7a 65 25 20 3d 20 31 3c 3c |sect_size% = 1<<| 00000090 28 64 25 3f 30 29 0d 00 09 30 f1 20 22 53 65 63 |(d%?0)...0. "Sec| 000000a0 74 6f 72 20 73 69 7a 65 20 20 20 20 20 20 20 3d |tor size =| 000000b0 20 22 3b 73 65 63 74 5f 73 69 7a 65 25 3b 22 20 | ";sect_size%;" | 000000c0 62 79 74 65 73 22 0d 00 0a 21 f1 20 22 53 65 63 |bytes"...!. "Sec| 000000d0 74 6f 72 73 20 70 65 72 20 74 72 61 63 6b 20 3d |tors per track =| 000000e0 20 22 3b 64 25 3f 31 0d 00 0b 25 74 72 61 63 6b | ";d%?1...%track| 000000f0 5f 73 69 7a 65 25 20 3d 20 28 64 25 3f 31 20 2a |_size% = (d%?1 *| 00000100 20 73 65 63 74 5f 73 69 7a 65 25 29 0d 00 0c 35 | sect_size%)...5| 00000110 f1 20 22 54 72 61 63 6b 20 73 69 7a 65 20 20 20 |. "Track size | 00000120 20 20 20 20 20 3d 20 22 3b 74 72 61 63 6b 5f 73 | = ";track_s| 00000130 69 7a 65 25 20 81 20 31 30 32 34 3b 22 20 4b 62 |ize% . 1024;" Kb| 00000140 22 0d 00 0d 21 74 72 61 63 6b 73 25 20 3d 20 64 |"...!tracks% = d| 00000150 25 21 31 36 20 2f 20 74 72 61 63 6b 5f 73 69 7a |%!16 / track_siz| 00000160 65 25 0d 00 0e 24 f1 20 22 54 6f 74 61 6c 20 74 |e%...$. "Total t| 00000170 72 61 63 6b 73 20 20 20 20 20 20 3d 20 22 3b 74 |racks = ";t| 00000180 72 61 63 6b 73 25 0d 00 0f 14 64 69 73 63 5f 73 |racks%....disc_s| 00000190 69 7a 65 25 3d 64 25 21 31 36 0d 00 10 2f f1 20 |ize%=d%!16.../. | 000001a0 22 44 69 73 63 20 73 69 7a 65 20 20 20 20 20 20 |"Disc size | 000001b0 20 20 20 3d 20 22 3b 28 64 25 21 31 36 29 81 31 | = ";(d%!16).1| 000001c0 30 32 34 3b 22 20 4b 62 22 0d 00 11 29 f1 20 22 |024;" Kb"...). "| 000001d0 44 69 73 63 20 6e 61 6d 65 20 20 20 20 20 20 20 |Disc name | 000001e0 20 20 3d 20 22 3b a4 73 28 64 25 2b 32 32 2c 31 | = ";.s(d%+22,1| 000001f0 30 29 0d 00 12 0a f1 20 27 27 27 27 0d 00 13 16 |0)..... ''''....| 00000200 de 20 72 65 61 64 25 20 64 69 73 63 5f 73 69 7a |. read% disc_siz| 00000210 65 25 0d 00 14 08 61 25 3d 30 0d 00 15 1c e3 20 |e%....a%=0..... | 00000220 74 72 61 63 6b 25 20 3d 20 30 20 b8 20 74 72 61 |track% = 0 . tra| 00000230 63 6b 73 25 2d 31 0d 00 16 1c e3 20 73 65 63 74 |cks%-1..... sect| 00000240 6f 72 25 20 3d 20 30 20 b8 20 28 64 25 3f 31 29 |or% = 0 . (d%?1)| 00000250 2d 31 0d 00 17 37 c8 99 20 22 58 41 44 46 53 5f |-1...7.. "XADFS_| 00000260 44 69 73 63 4f 70 22 2c 2c 31 2c 61 25 2c 72 65 |DiscOp",,1,a%,re| 00000270 61 64 25 2b 61 25 2c 73 65 63 74 5f 73 69 7a 65 |ad%+a%,sect_size| 00000280 25 20 b8 20 72 30 3b 66 25 0d 00 18 13 e7 20 28 |% . r0;f%..... (| 00000290 66 25 20 80 20 31 29 3c 3e 30 20 8c 0d 00 19 2e |f% . 1)<>0 .....| 000002a0 e7 20 a4 73 28 72 30 2b 34 2c 32 35 35 29 3d 22 |. .s(r0+4,255)="| 000002b0 45 73 63 61 70 65 22 20 8c 20 85 20 a2 20 30 2c |Escape" . . . 0,| 000002c0 22 45 73 63 61 70 65 22 3a e0 0d 00 1a 07 e6 20 |"Escape":...... | 000002d0 31 0d 00 1b 07 fb 20 31 0d 00 1c 05 cc 0d 00 1d |1..... 1........| 000002e0 07 fb 20 37 0d 00 1e 07 e6 20 32 0d 00 1f 05 cd |.. 7..... 2.....| 000002f0 0d 00 20 59 f1 20 8a 30 2c 32 30 29 3b 22 54 72 |.. Y. .0,20);"Tr| 00000300 61 63 6b 3a 20 22 3b 74 72 61 63 6b 25 3b 8a 32 |ack: ";track%;.2| 00000310 30 29 3b 22 53 65 63 74 6f 72 3a 20 22 3b 73 65 |0);"Sector: ";se| 00000320 63 74 6f 72 25 3b 22 20 20 22 3b 8a 34 30 29 3b |ctor%;" ";.40);| 00000330 22 44 69 73 63 20 61 64 64 72 65 73 73 3a 20 26 |"Disc address: &| 00000340 22 3b a4 68 38 28 61 25 29 0d 00 21 04 0d 00 22 |";.h8(a%)..!..."| 00000350 1f c8 93 c8 90 20 74 72 61 63 6b 25 2a 38 2c 73 |..... track%*8,s| 00000360 65 63 74 6f 72 25 2a 38 2c 34 2c 34 0d 00 23 14 |ector%*8,4,4..#.| 00000370 61 25 3d 61 25 2b 73 65 63 74 5f 73 69 7a 65 25 |a%=a%+sect_size%| 00000380 0d 00 24 07 ed 20 2c 0d 00 25 05 3a 0d 00 26 41 |..$.. ,..%.:..&A| 00000390 f4 20 53 59 53 20 22 4f 53 5f 46 69 6c 65 22 2c |. SYS "OS_File",| 000003a0 31 30 2c 22 3a 34 2e 44 69 73 63 44 55 4d 50 22 |10,":4.DiscDUMP"| 000003b0 2c 26 46 46 44 2c 2c 72 65 61 64 25 2c 72 65 61 |,&FFD,,read%,rea| 000003c0 64 25 2b 64 69 73 63 5f 73 69 7a 65 25 0d 00 27 |d%+disc_size%..'| 000003d0 20 f1 20 22 49 6e 73 65 72 74 20 64 65 73 74 69 | . "Insert desti| 000003e0 6e 61 74 69 6f 6e 20 64 69 73 63 3a 22 0d 00 28 |nation disc:"..(| 000003f0 07 41 3d a5 0d 00 29 08 61 25 3d 30 0d 00 2a 1c |.A=...).a%=0..*.| 00000400 e3 20 74 72 61 63 6b 25 20 3d 20 30 20 b8 20 74 |. track% = 0 . t| 00000410 72 61 63 6b 73 25 2d 31 0d 00 2b 1c e3 20 73 65 |racks%-1..+.. se| 00000420 63 74 6f 72 25 20 3d 20 30 20 b8 20 28 64 25 3f |ctor% = 0 . (d%?| 00000430 31 29 2d 31 0d 00 2c 37 c8 99 20 22 58 41 44 46 |1)-1..,7.. "XADF| 00000440 53 5f 44 69 73 63 4f 70 22 2c 2c 32 2c 61 25 2c |S_DiscOp",,2,a%,| 00000450 72 65 61 64 25 2b 61 25 2c 73 65 63 74 5f 73 69 |read%+a%,sect_si| 00000460 7a 65 25 20 b8 20 72 30 3b 66 25 0d 00 2d 13 e7 |ze% . r0;f%..-..| 00000470 20 28 66 25 20 80 20 31 29 3c 3e 30 20 8c 0d 00 | (f% . 1)<>0 ...| 00000480 2e 2e e7 20 a4 73 28 72 30 2b 34 2c 32 35 35 29 |... .s(r0+4,255)| 00000490 3d 22 45 73 63 61 70 65 22 20 8c 20 85 20 a2 20 |="Escape" . . . | 000004a0 30 2c 22 45 73 63 61 70 65 22 3a e0 0d 00 2f 07 |0,"Escape":.../.| 000004b0 e6 20 35 0d 00 30 07 fb 20 35 0d 00 31 05 cc 0d |. 5..0.. 5..1...| 000004c0 00 32 07 fb 20 37 0d 00 33 07 e6 20 34 0d 00 34 |.2.. 7..3.. 4..4| 000004d0 05 cd 0d 00 35 59 f1 20 8a 30 2c 32 30 29 3b 22 |....5Y. .0,20);"| 000004e0 54 72 61 63 6b 3a 20 22 3b 74 72 61 63 6b 25 3b |Track: ";track%;| 000004f0 8a 32 30 29 3b 22 53 65 63 74 6f 72 3a 20 22 3b |.20);"Sector: ";| 00000500 73 65 63 74 6f 72 25 3b 22 20 20 22 3b 8a 34 30 |sector%;" ";.40| 00000510 29 3b 22 44 69 73 63 20 61 64 64 72 65 73 73 3a |);"Disc address:| 00000520 20 26 22 3b a4 68 38 28 61 25 29 0d 00 36 04 0d | &";.h8(a%)..6..| 00000530 00 37 1f c8 93 c8 90 20 74 72 61 63 6b 25 2a 38 |.7..... track%*8| 00000540 2c 73 65 63 74 6f 72 25 2a 38 2c 34 2c 34 0d 00 |,sector%*8,4,4..| 00000550 38 14 61 25 3d 61 25 2b 73 65 63 74 5f 73 69 7a |8.a%=a%+sect_siz| 00000560 65 25 0d 00 39 07 ed 20 2c 0d 00 3a 04 0d 00 3b |e%..9.. ,..:...;| 00000570 05 e0 0d 00 3c 05 3a 0d 00 3d 07 dd f2 77 0d 00 |....<.:..=...w..| 00000580 3e 0c c8 95 20 a5 3c 3e 33 32 0d 00 3f 05 ce 0d |>... .<>32..?...| 00000590 00 40 05 e1 0d 00 41 05 3a 0d 00 42 0c dd a4 73 |.@....A.:..B...s| 000005a0 28 61 2c 6c 29 0d 00 43 0a ea 20 61 24 2c 6d 0d |(a,l)..C.. a$,m.| 000005b0 00 44 09 61 24 3d 22 22 0d 00 45 09 6d 3d 61 2b |.D.a$=""..E.m=a+| 000005c0 6c 0d 00 46 12 c8 95 20 3f 61 3e 33 31 20 80 20 |l..F... ?a>31 . | 000005d0 61 3c 6d 0d 00 47 0f 61 24 3d 61 24 2b bd 28 3f |a<m..G.a$=a$+.(?| 000005e0 61 29 0d 00 48 09 61 3d 61 2b 31 0d 00 49 05 ce |a)..H.a=a+1..I..| 000005f0 0d 00 4a 07 3d 61 24 0d 00 4b 05 3a 0d 00 4c 0b |..J.=a$..K.:..L.| 00000600 dd a4 68 38 28 6e 29 0d 00 4d 18 3d c2 22 30 30 |..h8(n)..M.=."00| 00000610 30 30 30 30 30 22 2b c3 7e 28 6e 29 2c 38 29 0d |00000"+.~(n),8).| 00000620 ff |.| 00000621