Home » Archimedes archive » Archimedes World » AW-1991-02.adf » !AWFeb91/Goodies/ProgARM/Program1
!AWFeb91/Goodies/ProgARM/Program1
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-02.adf |
Filename: | !AWFeb91/Goodies/ProgARM/Program1 |
Read OK: | ✔ |
File size: | 044B bytes |
Load address: | FFFFFB42 |
Exec address: | CB48A82E |
File contents
10REM >Program1 30MODE 9 50name$="robert" 70buffer%=FNload_sprite(name$) 90sprite_start%=buffer%+buffer%!(2*4) 100data_start% =sprite_start%+sprite_start%!(8*4) 110data_end% =sprite_start%+sprite_start%!0 120palette% =sprite_start%+11*4 140FOR I%=0 TO 15 150 COLOURI%,palette%!(I%*4) 160NEXT 180SYS "OS_SpriteOp",34+256,buffer%,name$,0,0,0 200key=GET 230FORI%=data_start% TO data_end%-1 240 SYS "Hourglass_Percentage",(I%-data_start%)*100 DIV (data_start%-data_end%) 250 I%?0=FNcorrupt(I%?0,8) 260 IF (I% AND &3F)= 0 THEN 270 SYS "OS_SpriteOp",34+256,buffer%,name$,0,0,0 271 ENDIF 280NEXT 310SYS "OS_SpriteOp",34+256,buffer%,name$,0,0,0 330key=GET 350END 370DEFFNload_sprite(name$) 380LOCALlen%,hand%,buf% 390hand%=OPENIN(name$) 400IF hand%<>0 THEN 410 len%=EXT#hand%+&100 420 DIM buf% len% 430 buf%!0=len% 440 buf%!4=0 450 buf%!8=16 460 buf%!12=16 470 SYS "OS_SpriteOp",9+256,buf% 480 SYS "OS_SpriteOp",10+256,buf%,name$ 490 CLOSE#hand% 500ENDIF 510=buf% 530DEFFNcorrupt(data%,bits%) 540LOCALI% 550FORI%=0TObits%-1 560 IF RND(100) <5 THEN 570 data%= data% EOR (1<<I%) 580 ENDIF 590NEXT 600=data% 620DEFFNrndbit(bits%) 630LOCAL shift% 640shift%=RND(bits%)-1 650=1<<shift%
� >Program1 � 9 2name$="robert" Fbuffer%=�load_sprite(name$) Z'sprite_start%=buffer%+buffer%!(2*4) d3data_start% =sprite_start%+sprite_start%!(8*4) n/data_end% =sprite_start%+sprite_start%!0 x$palette% =sprite_start%+11*4 �� I%=0 � 15 � �I%,palette%!(I%*4) �� �/ș "OS_SpriteOp",34+256,buffer%,name$,0,0,0 � key=� �!�I%=data_start% � data_end%-1 �N ș "Hourglass_Percentage",(I%-data_start%)*100 � (data_start%-data_end%) � I%?0=�corrupt(I%?0,8) � (I% � &3F)= 0 � 3 ș "OS_SpriteOp",34+256,buffer%,name$,0,0,0 � � 6/ș "OS_SpriteOp",34+256,buffer%,name$,0,0,0 J key=� ^� rݤload_sprite(name$) |�len%,hand%,buf% �hand%=�(name$) �� hand%<>0 � � len%=�#hand%+&100 � � buf% len% � buf%!0=len% � buf%!4=0 � buf%!8=16 � buf%!12=16 �! ș "OS_SpriteOp",9+256,buf% �( ș "OS_SpriteOp",10+256,buf%,name$ � �#hand% �� � =buf% ݤcorrupt(data%,bits%) �I% &�I%=0�bits%-1 0 � �(100) <5 � : data%= data% � (1<<I%) D � N� X =data% lݤrndbit(bits%) v� shift% �shift%=�(bits%)-1 �=1<<shift% �
00000000 0d 00 0a 0f f4 20 3e 50 72 6f 67 72 61 6d 31 0d |..... >Program1.| 00000010 00 1e 07 eb 20 39 0d 00 32 12 6e 61 6d 65 24 3d |.... 9..2.name$=| 00000020 22 72 6f 62 65 72 74 22 0d 00 46 1f 62 75 66 66 |"robert"..F.buff| 00000030 65 72 25 3d a4 6c 6f 61 64 5f 73 70 72 69 74 65 |er%=.load_sprite| 00000040 28 6e 61 6d 65 24 29 0d 00 5a 27 73 70 72 69 74 |(name$)..Z'sprit| 00000050 65 5f 73 74 61 72 74 25 3d 62 75 66 66 65 72 25 |e_start%=buffer%| 00000060 2b 62 75 66 66 65 72 25 21 28 32 2a 34 29 0d 00 |+buffer%!(2*4)..| 00000070 64 33 64 61 74 61 5f 73 74 61 72 74 25 20 20 3d |d3data_start% =| 00000080 73 70 72 69 74 65 5f 73 74 61 72 74 25 2b 73 70 |sprite_start%+sp| 00000090 72 69 74 65 5f 73 74 61 72 74 25 21 28 38 2a 34 |rite_start%!(8*4| 000000a0 29 0d 00 6e 2f 64 61 74 61 5f 65 6e 64 25 20 20 |)..n/data_end% | 000000b0 20 20 3d 73 70 72 69 74 65 5f 73 74 61 72 74 25 | =sprite_start%| 000000c0 2b 73 70 72 69 74 65 5f 73 74 61 72 74 25 21 30 |+sprite_start%!0| 000000d0 0d 00 78 24 70 61 6c 65 74 74 65 25 20 20 20 20 |..x$palette% | 000000e0 20 3d 73 70 72 69 74 65 5f 73 74 61 72 74 25 2b | =sprite_start%+| 000000f0 31 31 2a 34 0d 00 8c 0f e3 20 49 25 3d 30 20 b8 |11*4..... I%=0 .| 00000100 20 31 35 0d 00 96 19 20 20 fb 49 25 2c 70 61 6c | 15.... .I%,pal| 00000110 65 74 74 65 25 21 28 49 25 2a 34 29 0d 00 a0 05 |ette%!(I%*4)....| 00000120 ed 0d 00 b4 2f c8 99 20 22 4f 53 5f 53 70 72 69 |..../.. "OS_Spri| 00000130 74 65 4f 70 22 2c 33 34 2b 32 35 36 2c 62 75 66 |teOp",34+256,buf| 00000140 66 65 72 25 2c 6e 61 6d 65 24 2c 30 2c 30 2c 30 |fer%,name$,0,0,0| 00000150 0d 00 c8 09 6b 65 79 3d a5 0d 00 e6 21 e3 49 25 |....key=....!.I%| 00000160 3d 64 61 74 61 5f 73 74 61 72 74 25 20 b8 20 64 |=data_start% . d| 00000170 61 74 61 5f 65 6e 64 25 2d 31 0d 00 f0 4e 20 20 |ata_end%-1...N | 00000180 c8 99 20 22 48 6f 75 72 67 6c 61 73 73 5f 50 65 |.. "Hourglass_Pe| 00000190 72 63 65 6e 74 61 67 65 22 2c 28 49 25 2d 64 61 |rcentage",(I%-da| 000001a0 74 61 5f 73 74 61 72 74 25 29 2a 31 30 30 20 81 |ta_start%)*100 .| 000001b0 20 28 64 61 74 61 5f 73 74 61 72 74 25 2d 64 61 | (data_start%-da| 000001c0 74 61 5f 65 6e 64 25 29 0d 00 fa 1b 20 20 49 25 |ta_end%).... I%| 000001d0 3f 30 3d a4 63 6f 72 72 75 70 74 28 49 25 3f 30 |?0=.corrupt(I%?0| 000001e0 2c 38 29 0d 01 04 17 20 20 e7 20 28 49 25 20 80 |,8).... . (I% .| 000001f0 20 26 33 46 29 3d 20 30 20 8c 0d 01 0e 33 20 20 | &3F)= 0 ....3 | 00000200 20 20 c8 99 20 22 4f 53 5f 53 70 72 69 74 65 4f | .. "OS_SpriteO| 00000210 70 22 2c 33 34 2b 32 35 36 2c 62 75 66 66 65 72 |p",34+256,buffer| 00000220 25 2c 6e 61 6d 65 24 2c 30 2c 30 2c 30 0d 01 0f |%,name$,0,0,0...| 00000230 07 20 20 cd 0d 01 18 05 ed 0d 01 36 2f c8 99 20 |. ........6/.. | 00000240 22 4f 53 5f 53 70 72 69 74 65 4f 70 22 2c 33 34 |"OS_SpriteOp",34| 00000250 2b 32 35 36 2c 62 75 66 66 65 72 25 2c 6e 61 6d |+256,buffer%,nam| 00000260 65 24 2c 30 2c 30 2c 30 0d 01 4a 09 6b 65 79 3d |e$,0,0,0..J.key=| 00000270 a5 0d 01 5e 05 e0 0d 01 72 18 dd a4 6c 6f 61 64 |...^....r...load| 00000280 5f 73 70 72 69 74 65 28 6e 61 6d 65 24 29 0d 01 |_sprite(name$)..| 00000290 7c 14 ea 6c 65 6e 25 2c 68 61 6e 64 25 2c 62 75 ||..len%,hand%,bu| 000002a0 66 25 0d 01 86 12 68 61 6e 64 25 3d 8e 28 6e 61 |f%....hand%=.(na| 000002b0 6d 65 24 29 0d 01 90 10 e7 20 68 61 6e 64 25 3c |me$)..... hand%<| 000002c0 3e 30 20 8c 0d 01 9a 17 20 20 6c 65 6e 25 3d a2 |>0 ..... len%=.| 000002d0 23 68 61 6e 64 25 2b 26 31 30 30 0d 01 a4 11 20 |#hand%+&100.... | 000002e0 20 de 20 62 75 66 25 20 6c 65 6e 25 0d 01 ae 11 | . buf% len%....| 000002f0 20 20 62 75 66 25 21 30 3d 6c 65 6e 25 0d 01 b8 | buf%!0=len%...| 00000300 0e 20 20 62 75 66 25 21 34 3d 30 0d 01 c2 0f 20 |. buf%!4=0.... | 00000310 20 62 75 66 25 21 38 3d 31 36 0d 01 cc 10 20 20 | buf%!8=16.... | 00000320 62 75 66 25 21 31 32 3d 31 36 0d 01 d6 21 20 20 |buf%!12=16...! | 00000330 c8 99 20 22 4f 53 5f 53 70 72 69 74 65 4f 70 22 |.. "OS_SpriteOp"| 00000340 2c 39 2b 32 35 36 2c 62 75 66 25 0d 01 e0 28 20 |,9+256,buf%...( | 00000350 20 c8 99 20 22 4f 53 5f 53 70 72 69 74 65 4f 70 | .. "OS_SpriteOp| 00000360 22 2c 31 30 2b 32 35 36 2c 62 75 66 25 2c 6e 61 |",10+256,buf%,na| 00000370 6d 65 24 0d 01 ea 0d 20 20 d9 23 68 61 6e 64 25 |me$.... .#hand%| 00000380 0d 01 f4 05 cd 0d 01 fe 09 3d 62 75 66 25 0d 02 |.........=buf%..| 00000390 12 1a dd a4 63 6f 72 72 75 70 74 28 64 61 74 61 |....corrupt(data| 000003a0 25 2c 62 69 74 73 25 29 0d 02 1c 07 ea 49 25 0d |%,bits%).....I%.| 000003b0 02 26 11 e3 49 25 3d 30 b8 62 69 74 73 25 2d 31 |.&..I%=0.bits%-1| 000003c0 0d 02 30 13 20 20 e7 20 b3 28 31 30 30 29 20 3c |..0. . .(100) <| 000003d0 35 20 8c 0d 02 3a 1e 20 20 20 20 64 61 74 61 25 |5 ...:. data%| 000003e0 3d 20 64 61 74 61 25 20 82 20 28 31 3c 3c 49 25 |= data% . (1<<I%| 000003f0 29 0d 02 44 07 20 20 cd 0d 02 4e 05 ed 0d 02 58 |)..D. ...N....X| 00000400 0a 3d 64 61 74 61 25 0d 02 6c 13 dd a4 72 6e 64 |.=data%..l...rnd| 00000410 62 69 74 28 62 69 74 73 25 29 0d 02 76 0c ea 20 |bit(bits%)..v.. | 00000420 73 68 69 66 74 25 0d 02 80 15 73 68 69 66 74 25 |shift%....shift%| 00000430 3d b3 28 62 69 74 73 25 29 2d 31 0d 02 8a 0e 3d |=.(bits%)-1....=| 00000440 31 3c 3c 73 68 69 66 74 25 0d ff |1<<shift%..| 0000044b