Home » Archimedes archive » Archimedes World » AW-1991-03.adf » !AWMar91/Goodies/Eureka!/SpriteJoin
!AWMar91/Goodies/Eureka!/SpriteJoin
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 » Archimedes World » AW-1991-03.adf |
Filename: | !AWMar91/Goodies/Eureka!/SpriteJoin |
Read OK: | ✔ |
File size: | 0905 bytes |
Load address: | FFFFFB42 |
Exec address: | D55208F3 |
File contents
10REM > SpriteJoin 20REM small program to append 2 sprites together using OS_SpriteOp 35 30REM (C) John Bell 11/12/90 40REM for Archimedes World - Eureka! column 50 60ON ERROR PROCerror:END 70CLS 80dir$=":0.$" 90OSCLI"CAT "+dir$ 100PROCloadsprites 110PROCgetsprites 120PROCsavesprites 130 140END 150 160REM ******************************************************************** 170 180DEFPROCloadsprites 190LOCAL l%,sprite% 200INPUT'"Input file ",file$ 210SYS "OS_File",13,file$,,,dir$+"." TO ,,,,splength :REM get length of file 220splength+=4 :REM add a bit 230DIM Sprites splength :REM set sprite area size 240!Sprites = splength :REM set length of area 250SYS "OS_SpriteOp",10+256,Sprites,dir$+"."+file$ :REM load the sprite file 260SYS "OS_SpriteOp",8+256,Sprites TO ,,,nosprites% :REM number of sprites 270IF nosprites%=1 THEN ERROR 0,"Not enough sprites" :REM error if <2 sprites 280DIM names$(nosprites%) :REM dimension name array 290CLS 300FOR sprite%= 1 TO nosprites% :REM FOR/NEXT loop to 310names$(sprite%)=FNgetname(sprite%) :REM read in the names 320PRINT STR$sprite%+" "+names$(sprite%) :REM of the sprites 330NEXT sprite% 340ENDPROC 350 360DEFFNgetname(sprite%) 370LOCAL name$,length%,loop%,buffer 380DIM buffer 100 390name$="" 400SYS "OS_SpriteOp",13+256,Sprites,buffer,100,sprite% TO ,,,length% 410FOR loop%= 1 TO length% 420name$=name$+CHR$(buffer?(loop%-1)) 430NEXT loop% 440=name$ 450 460REM ******************************************************************** 470 480DEFPROCgetsprites 490LOCAL sp1%,sp2%,key%,append% 500REPEAT:INPUT'"1st sprite ",sp1%:UNTIL (sp1%>=1) AND (sp1%<=nosprites%) 510REPEAT:INPUT"2nd sprite ",sp2%:UNTIL (sp2%>=1) AND (sp2%<=nosprites%) AND (sp2%<>sp1%) 520CLS 530PRINT"1. Horizontal append" 540PRINT"2. Vertical append" 550REPEAT:append%=GET-&31:UNTIL (append%=0) OR (append%=1) 560SYS "OS_SpriteOp",35+256,Sprites,names$(sp1%),names$(sp2%),append% 570ENDPROC 580 590REM ******************************************************************** 600 610DEFPROCsavesprites 620LOCAL file2$ 630CLS 640INPUT"Output file ",file2$ :REM get new filename 650IF file2$="" THEN file2$=file$ 660SYS "OS_SpriteOp",12+256,Sprites,dir$+"."+file2$ :REM save appended sprites 670ENDPROC 680 690REM ******************************************************************** 700 710DEFPROCerror 720CLS 730REPORT:PRINT" at line ";ERL 740ENDPROC
� > SpriteJoin E� small program to append 2 sprites together using OS_SpriteOp 35 � (C) John Bell 11/12/90 (+� for Archimedes World - Eureka! column 2 <� � �error:� F� Pdir$=":0.$" Z�"CAT "+dir$ d�loadsprites n�getsprites x�savesprites � �� � �J� ******************************************************************** � ���loadsprites �� l%,sprite% ��'"Input file ",file$ �Iș "OS_File",13,file$,,,dir$+"." � ,,,,splength :� get length of file �Bsplength+=4 :� add a bit �K� Sprites splength :� set sprite area size �K!Sprites = splength :� set length of area �Lș "OS_SpriteOp",10+256,Sprites,dir$+"."+file$ :� load the sprite file Hș "OS_SpriteOp",8+256,Sprites � ,,,nosprites% :� number of sprites D� nosprites%=1 � � 0,"Not enough sprites" :� error if <2 sprites K� names$(nosprites%) :� dimension name array "� ,F� sprite%= 1 � nosprites% :� FOR/NEXT loop to 6Inames$(sprite%)=�getname(sprite%) :� read in the names @@� �sprite%+" "+names$(sprite%) :� of the sprites J � sprite% T� ^ hݤgetname(sprite%) r � name$,length%,loop%,buffer |� buffer 100 �name$="" �Cș "OS_SpriteOp",13+256,Sprites,buffer,100,sprite% � ,,,length% �� loop%= 1 � length% �#name$=name$+�(buffer?(loop%-1)) �� loop% � =name$ � �J� ******************************************************************** � ���getsprites �� sp1%,sp2%,key%,append% �;�:�'"1st sprite ",sp1%:� (sp1%>=1) � (sp1%<=nosprites%) �I�:�"2nd sprite ",sp2%:� (sp2%>=1) � (sp2%<=nosprites%) � (sp2%<>sp1%) � �"1. Horizontal append" �"2. Vertical append" &/�:append%=�-&31:� (append%=0) � (append%=1) 0Eș "OS_SpriteOp",35+256,Sprites,names$(sp1%),names$(sp2%),append% :� D NJ� ******************************************************************** X b��savesprites l� file2$ v� �D�"Output file ",file2$ :� get new filename �� file2$="" � file2$=file$ �Lș "OS_SpriteOp",12+256,Sprites,dir$+"."+file2$ :� save appended sprites �� � �J� ******************************************************************** � ���error �� ��:�" at line ";� �� �
00000000 0d 00 0a 12 f4 20 3e 20 53 70 72 69 74 65 4a 6f |..... > SpriteJo| 00000010 69 6e 0d 00 14 45 f4 20 73 6d 61 6c 6c 20 70 72 |in...E. small pr| 00000020 6f 67 72 61 6d 20 74 6f 20 61 70 70 65 6e 64 20 |ogram to append | 00000030 32 20 73 70 72 69 74 65 73 20 74 6f 67 65 74 68 |2 sprites togeth| 00000040 65 72 20 75 73 69 6e 67 20 4f 53 5f 53 70 72 69 |er using OS_Spri| 00000050 74 65 4f 70 20 33 35 0d 00 1e 1c f4 20 28 43 29 |teOp 35..... (C)| 00000060 20 4a 6f 68 6e 20 42 65 6c 6c 20 31 31 2f 31 32 | John Bell 11/12| 00000070 2f 39 30 0d 00 28 2b f4 20 66 6f 72 20 41 72 63 |/90..(+. for Arc| 00000080 68 69 6d 65 64 65 73 20 57 6f 72 6c 64 20 2d 20 |himedes World - | 00000090 45 75 72 65 6b 61 21 20 63 6f 6c 75 6d 6e 0d 00 |Eureka! column..| 000000a0 32 04 0d 00 3c 10 ee 20 85 20 f2 65 72 72 6f 72 |2...<.. . .error| 000000b0 3a e0 0d 00 46 05 db 0d 00 50 0f 64 69 72 24 3d |:...F....P.dir$=| 000000c0 22 3a 30 2e 24 22 0d 00 5a 10 ff 22 43 41 54 20 |":0.$"..Z.."CAT | 000000d0 22 2b 64 69 72 24 0d 00 64 10 f2 6c 6f 61 64 73 |"+dir$..d..loads| 000000e0 70 72 69 74 65 73 0d 00 6e 0f f2 67 65 74 73 70 |prites..n..getsp| 000000f0 72 69 74 65 73 0d 00 78 10 f2 73 61 76 65 73 70 |rites..x..savesp| 00000100 72 69 74 65 73 0d 00 82 04 0d 00 8c 05 e0 0d 00 |rites...........| 00000110 96 04 0d 00 a0 4a f4 20 2a 2a 2a 2a 2a 2a 2a 2a |.....J. ********| 00000120 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 00000150 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 00 aa 04 |************....| 00000160 0d 00 b4 11 dd f2 6c 6f 61 64 73 70 72 69 74 65 |......loadsprite| 00000170 73 0d 00 be 10 ea 20 6c 25 2c 73 70 72 69 74 65 |s..... l%,sprite| 00000180 25 0d 00 c8 19 e8 27 22 49 6e 70 75 74 20 66 69 |%.....'"Input fi| 00000190 6c 65 20 22 2c 66 69 6c 65 24 0d 00 d2 49 c8 99 |le ",file$...I..| 000001a0 20 22 4f 53 5f 46 69 6c 65 22 2c 31 33 2c 66 69 | "OS_File",13,fi| 000001b0 6c 65 24 2c 2c 2c 64 69 72 24 2b 22 2e 22 20 b8 |le$,,,dir$+"." .| 000001c0 20 2c 2c 2c 2c 73 70 6c 65 6e 67 74 68 20 3a f4 | ,,,,splength :.| 000001d0 20 67 65 74 20 6c 65 6e 67 74 68 20 6f 66 20 66 | get length of f| 000001e0 69 6c 65 0d 00 dc 42 73 70 6c 65 6e 67 74 68 2b |ile...Bsplength+| 000001f0 3d 34 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |=4 | 00000200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00000210 20 20 20 20 20 20 20 20 20 3a f4 20 61 64 64 20 | :. add | 00000220 61 20 62 69 74 0d 00 e6 4b de 20 53 70 72 69 74 |a bit...K. Sprit| 00000230 65 73 20 73 70 6c 65 6e 67 74 68 20 20 20 20 20 |es splength | 00000240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00000250 20 20 20 20 20 20 20 20 20 3a f4 20 73 65 74 20 | :. set | 00000260 73 70 72 69 74 65 20 61 72 65 61 20 73 69 7a 65 |sprite area size| 00000270 0d 00 f0 4b 21 53 70 72 69 74 65 73 20 3d 20 73 |...K!Sprites = s| 00000280 70 6c 65 6e 67 74 68 20 20 20 20 20 20 20 20 20 |plength | 00000290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 000002a0 20 20 20 20 20 20 3a f4 20 73 65 74 20 6c 65 6e | :. set len| 000002b0 67 74 68 20 6f 66 20 61 72 65 61 0d 00 fa 4c c8 |gth of area...L.| 000002c0 99 20 22 4f 53 5f 53 70 72 69 74 65 4f 70 22 2c |. "OS_SpriteOp",| 000002d0 31 30 2b 32 35 36 2c 53 70 72 69 74 65 73 2c 64 |10+256,Sprites,d| 000002e0 69 72 24 2b 22 2e 22 2b 66 69 6c 65 24 20 20 20 |ir$+"."+file$ | 000002f0 3a f4 20 6c 6f 61 64 20 74 68 65 20 73 70 72 69 |:. load the spri| 00000300 74 65 20 66 69 6c 65 0d 01 04 48 c8 99 20 22 4f |te file...H.. "O| 00000310 53 5f 53 70 72 69 74 65 4f 70 22 2c 38 2b 32 35 |S_SpriteOp",8+25| 00000320 36 2c 53 70 72 69 74 65 73 20 b8 20 2c 2c 2c 6e |6,Sprites . ,,,n| 00000330 6f 73 70 72 69 74 65 73 25 20 20 3a f4 20 6e 75 |osprites% :. nu| 00000340 6d 62 65 72 20 6f 66 20 73 70 72 69 74 65 73 0d |mber of sprites.| 00000350 01 0e 44 e7 20 6e 6f 73 70 72 69 74 65 73 25 3d |..D. nosprites%=| 00000360 31 20 8c 20 85 20 30 2c 22 4e 6f 74 20 65 6e 6f |1 . . 0,"Not eno| 00000370 75 67 68 20 73 70 72 69 74 65 73 22 20 3a f4 20 |ugh sprites" :. | 00000380 65 72 72 6f 72 20 69 66 20 3c 32 20 73 70 72 69 |error if <2 spri| 00000390 74 65 73 0d 01 18 4b de 20 6e 61 6d 65 73 24 28 |tes...K. names$(| 000003a0 6e 6f 73 70 72 69 74 65 73 25 29 20 20 20 20 20 |nosprites%) | 000003b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 000003c0 20 20 20 20 20 20 20 3a f4 20 64 69 6d 65 6e 73 | :. dimens| 000003d0 69 6f 6e 20 6e 61 6d 65 20 61 72 72 61 79 0d 01 |ion name array..| 000003e0 22 05 db 0d 01 2c 46 e3 20 73 70 72 69 74 65 25 |"....,F. sprite%| 000003f0 3d 20 31 20 b8 20 6e 6f 73 70 72 69 74 65 73 25 |= 1 . nosprites%| 00000400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00000410 20 20 20 20 20 20 3a f4 20 46 4f 52 2f 4e 45 58 | :. FOR/NEX| 00000420 54 20 6c 6f 6f 70 20 74 6f 0d 01 36 49 6e 61 6d |T loop to..6Inam| 00000430 65 73 24 28 73 70 72 69 74 65 25 29 3d a4 67 65 |es$(sprite%)=.ge| 00000440 74 6e 61 6d 65 28 73 70 72 69 74 65 25 29 20 20 |tname(sprite%) | 00000450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a f4 | :.| 00000460 20 72 65 61 64 20 69 6e 20 74 68 65 20 6e 61 6d | read in the nam| 00000470 65 73 0d 01 40 40 f1 20 c3 73 70 72 69 74 65 25 |es..@@. .sprite%| 00000480 2b 22 20 22 2b 6e 61 6d 65 73 24 28 73 70 72 69 |+" "+names$(spri| 00000490 74 65 25 29 20 20 20 20 20 20 20 20 20 20 20 20 |te%) | 000004a0 20 3a f4 20 6f 66 20 74 68 65 20 73 70 72 69 74 | :. of the sprit| 000004b0 65 73 0d 01 4a 0d ed 20 73 70 72 69 74 65 25 0d |es..J.. sprite%.| 000004c0 01 54 05 e1 0d 01 5e 04 0d 01 68 16 dd a4 67 65 |.T....^...h...ge| 000004d0 74 6e 61 6d 65 28 73 70 72 69 74 65 25 29 0d 01 |tname(sprite%)..| 000004e0 72 20 ea 20 6e 61 6d 65 24 2c 6c 65 6e 67 74 68 |r . name$,length| 000004f0 25 2c 6c 6f 6f 70 25 2c 62 75 66 66 65 72 0d 01 |%,loop%,buffer..| 00000500 7c 10 de 20 62 75 66 66 65 72 20 31 30 30 0d 01 ||.. buffer 100..| 00000510 86 0c 6e 61 6d 65 24 3d 22 22 0d 01 90 43 c8 99 |..name$=""...C..| 00000520 20 22 4f 53 5f 53 70 72 69 74 65 4f 70 22 2c 31 | "OS_SpriteOp",1| 00000530 33 2b 32 35 36 2c 53 70 72 69 74 65 73 2c 62 75 |3+256,Sprites,bu| 00000540 66 66 65 72 2c 31 30 30 2c 73 70 72 69 74 65 25 |ffer,100,sprite%| 00000550 20 b8 20 2c 2c 2c 6c 65 6e 67 74 68 25 0d 01 9a | . ,,,length%...| 00000560 18 e3 20 6c 6f 6f 70 25 3d 20 31 20 b8 20 6c 65 |.. loop%= 1 . le| 00000570 6e 67 74 68 25 0d 01 a4 23 6e 61 6d 65 24 3d 6e |ngth%...#name$=n| 00000580 61 6d 65 24 2b bd 28 62 75 66 66 65 72 3f 28 6c |ame$+.(buffer?(l| 00000590 6f 6f 70 25 2d 31 29 29 0d 01 ae 0b ed 20 6c 6f |oop%-1))..... lo| 000005a0 6f 70 25 0d 01 b8 0a 3d 6e 61 6d 65 24 0d 01 c2 |op%....=name$...| 000005b0 04 0d 01 cc 4a f4 20 2a 2a 2a 2a 2a 2a 2a 2a 2a |....J. *********| 000005c0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 000005f0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 01 d6 04 0d |***********.....| 00000600 01 e0 10 dd f2 67 65 74 73 70 72 69 74 65 73 0d |.....getsprites.| 00000610 01 ea 1c ea 20 73 70 31 25 2c 73 70 32 25 2c 6b |.... sp1%,sp2%,k| 00000620 65 79 25 2c 61 70 70 65 6e 64 25 0d 01 f4 3b f5 |ey%,append%...;.| 00000630 3a e8 27 22 31 73 74 20 73 70 72 69 74 65 20 22 |:.'"1st sprite "| 00000640 2c 73 70 31 25 3a fd 20 28 73 70 31 25 3e 3d 31 |,sp1%:. (sp1%>=1| 00000650 29 20 80 20 28 73 70 31 25 3c 3d 6e 6f 73 70 72 |) . (sp1%<=nospr| 00000660 69 74 65 73 25 29 0d 01 fe 49 f5 3a e8 22 32 6e |ites%)...I.:."2n| 00000670 64 20 73 70 72 69 74 65 20 22 2c 73 70 32 25 3a |d sprite ",sp2%:| 00000680 fd 20 28 73 70 32 25 3e 3d 31 29 20 80 20 28 73 |. (sp2%>=1) . (s| 00000690 70 32 25 3c 3d 6e 6f 73 70 72 69 74 65 73 25 29 |p2%<=nosprites%)| 000006a0 20 80 20 28 73 70 32 25 3c 3e 73 70 31 25 29 0d | . (sp2%<>sp1%).| 000006b0 02 08 05 db 0d 02 12 1b f1 22 31 2e 20 48 6f 72 |........."1. Hor| 000006c0 69 7a 6f 6e 74 61 6c 20 61 70 70 65 6e 64 22 0d |izontal append".| 000006d0 02 1c 19 f1 22 32 2e 20 56 65 72 74 69 63 61 6c |...."2. Vertical| 000006e0 20 61 70 70 65 6e 64 22 0d 02 26 2f f5 3a 61 70 | append"..&/.:ap| 000006f0 70 65 6e 64 25 3d a5 2d 26 33 31 3a fd 20 28 61 |pend%=.-&31:. (a| 00000700 70 70 65 6e 64 25 3d 30 29 20 84 20 28 61 70 70 |ppend%=0) . (app| 00000710 65 6e 64 25 3d 31 29 0d 02 30 45 c8 99 20 22 4f |end%=1)..0E.. "O| 00000720 53 5f 53 70 72 69 74 65 4f 70 22 2c 33 35 2b 32 |S_SpriteOp",35+2| 00000730 35 36 2c 53 70 72 69 74 65 73 2c 6e 61 6d 65 73 |56,Sprites,names| 00000740 24 28 73 70 31 25 29 2c 6e 61 6d 65 73 24 28 73 |$(sp1%),names$(s| 00000750 70 32 25 29 2c 61 70 70 65 6e 64 25 0d 02 3a 05 |p2%),append%..:.| 00000760 e1 0d 02 44 04 0d 02 4e 4a f4 20 2a 2a 2a 2a 2a |...D...NJ. *****| 00000770 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 000007a0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d |***************.| 000007b0 02 58 04 0d 02 62 11 dd f2 73 61 76 65 73 70 72 |.X...b...savespr| 000007c0 69 74 65 73 0d 02 6c 0c ea 20 66 69 6c 65 32 24 |ites..l.. file2$| 000007d0 0d 02 76 05 db 0d 02 80 44 e8 22 4f 75 74 70 75 |..v.....D."Outpu| 000007e0 74 20 66 69 6c 65 20 22 2c 66 69 6c 65 32 24 20 |t file ",file2$ | 000007f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00000800 20 20 20 20 20 20 3a f4 20 67 65 74 20 6e 65 77 | :. get new| 00000810 20 66 69 6c 65 6e 61 6d 65 0d 02 8a 1e e7 20 66 | filename..... f| 00000820 69 6c 65 32 24 3d 22 22 20 8c 20 66 69 6c 65 32 |ile2$="" . file2| 00000830 24 3d 66 69 6c 65 24 0d 02 94 4c c8 99 20 22 4f |$=file$...L.. "O| 00000840 53 5f 53 70 72 69 74 65 4f 70 22 2c 31 32 2b 32 |S_SpriteOp",12+2| 00000850 35 36 2c 53 70 72 69 74 65 73 2c 64 69 72 24 2b |56,Sprites,dir$+| 00000860 22 2e 22 2b 66 69 6c 65 32 24 20 3a f4 20 73 61 |"."+file2$ :. sa| 00000870 76 65 20 61 70 70 65 6e 64 65 64 20 73 70 72 69 |ve appended spri| 00000880 74 65 73 0d 02 9e 05 e1 0d 02 a8 04 0d 02 b2 4a |tes............J| 00000890 f4 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |. **************| 000008a0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 000008d0 2a 2a 2a 2a 2a 2a 0d 02 bc 04 0d 02 c6 0b dd f2 |******..........| 000008e0 65 72 72 6f 72 0d 02 d0 05 db 0d 02 da 14 f6 3a |error..........:| 000008f0 f1 22 20 61 74 20 6c 69 6e 65 20 22 3b 9e 0d 02 |." at line ";...| 00000900 e4 05 e1 0d ff |.....| 00000905