Home » Archimedes archive » Archimedes World » AW-1991-02.adf » !AWFeb91/Goodies/FeedBack/DivByZero
!AWFeb91/Goodies/FeedBack/DivByZero
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/FeedBack/DivByZero |
Read OK: | ✔ |
File size: | 020F bytes |
Load address: | FFFFFB42 |
Exec address: | CA2FC456 |
File contents
10 REM > divbyzero 20 : 30 REM AJM Stevenson 13 Nov 1990 40 : 50 REPEAT 60 INPUT "Evaluate: " expr$ 70 IF FNdivbyzero(expr$) PROCzerr:UNTIL FALSE 80 PROCevaluate(expr$) 90 UNTIL expr$ = "QUIT" 100 END 110 : 120 DEF PROCevaluate(str$) 130 LOCAL ERROR 140 ON ERROR LOCAL PROCevalerr:ENDPROC 150 PRINT STR$ EVAL str$ 160 ENDPROC 170 : 180 DEF PROCevalerr 190 REPORT 200 PRINT 210 ENDPROC 220 : 230 DEF FNdivbyzero(str$) 240 LOCAL at%, rest$ 250 at% = INSTR(str$, "/") 260 rest$ = RIGHT$(str$, LENstr$-at%) 270 IF at% IF FNdivbyzero(rest$) THEN =TRUE 280 IF at% IF EVAL (rest$) = 0 THEN =TRUE 290 =FALSE 300 : 310 DEF PROCzerr 320 PRINT 330 PRINT"Division by zero" 340 ENDPROC
� > divbyzero : � AJM Stevenson 13 Nov 1990 ( : 2 � < � "Evaluate: " expr$ F$ � �divbyzero(expr$) �zerr:� � P �evaluate(expr$) Z � expr$ = "QUIT" d � n : x � �evaluate(str$) � � � � � � � �evalerr:� � � � � str$ � � � : � � �evalerr � � � � � � � : � � �divbyzero(str$) � � at%, rest$ � at% = �str$, "/") rest$ = �str$, �str$-at%) # � at% � �divbyzero(rest$) � =� ! � at% � � (rest$) = 0 � =� " =� , : 6 � �zerr @ � J �"Division by zero" T � �
00000000 0d 00 0a 12 20 f4 20 3e 20 64 69 76 62 79 7a 65 |.... . > divbyze| 00000010 72 6f 0d 00 14 06 20 3a 0d 00 1e 20 20 f4 20 41 |ro.... :... . A| 00000020 4a 4d 20 53 74 65 76 65 6e 73 6f 6e 20 31 33 20 |JM Stevenson 13 | 00000030 4e 6f 76 20 31 39 39 30 0d 00 28 06 20 3a 0d 00 |Nov 1990..(. :..| 00000040 32 06 20 f5 0d 00 3c 1b 20 20 20 e8 20 22 45 76 |2. ...<. . "Ev| 00000050 61 6c 75 61 74 65 3a 20 22 20 65 78 70 72 24 0d |aluate: " expr$.| 00000060 00 46 24 20 20 20 e7 20 a4 64 69 76 62 79 7a 65 |.F$ . .divbyze| 00000070 72 6f 28 65 78 70 72 24 29 20 f2 7a 65 72 72 3a |ro(expr$) .zerr:| 00000080 fd 20 a3 0d 00 50 17 20 20 20 f2 65 76 61 6c 75 |. ...P. .evalu| 00000090 61 74 65 28 65 78 70 72 24 29 0d 00 5a 15 20 fd |ate(expr$)..Z. .| 000000a0 20 65 78 70 72 24 20 3d 20 22 51 55 49 54 22 0d | expr$ = "QUIT".| 000000b0 00 64 06 20 e0 0d 00 6e 06 20 3a 0d 00 78 16 20 |.d. ...n. :..x. | 000000c0 dd 20 f2 65 76 61 6c 75 61 74 65 28 73 74 72 24 |. .evaluate(str$| 000000d0 29 0d 00 82 08 20 ea 20 85 0d 00 8c 15 20 ee 20 |).... . ..... . | 000000e0 85 20 ea 20 f2 65 76 61 6c 65 72 72 3a e1 0d 00 |. . .evalerr:...| 000000f0 96 0f 20 f1 20 c3 20 a0 20 73 74 72 24 0d 00 a0 |.. . . . str$...| 00000100 06 20 e1 0d 00 aa 06 20 3a 0d 00 b4 0f 20 dd 20 |. ..... :.... . | 00000110 f2 65 76 61 6c 65 72 72 0d 00 be 06 20 f6 0d 00 |.evalerr.... ...| 00000120 c8 06 20 f1 0d 00 d2 06 20 e1 0d 00 dc 06 20 3a |.. ..... ..... :| 00000130 0d 00 e6 17 20 dd 20 a4 64 69 76 62 79 7a 65 72 |.... . .divbyzer| 00000140 6f 28 73 74 72 24 29 0d 00 f0 11 20 ea 20 61 74 |o(str$).... . at| 00000150 25 2c 20 72 65 73 74 24 0d 00 fa 16 20 61 74 25 |%, rest$.... at%| 00000160 20 3d 20 a7 73 74 72 24 2c 20 22 2f 22 29 0d 01 | = .str$, "/")..| 00000170 04 1e 20 72 65 73 74 24 20 3d 20 c2 73 74 72 24 |.. rest$ = .str$| 00000180 2c 20 a9 73 74 72 24 2d 61 74 25 29 0d 01 0e 23 |, .str$-at%)...#| 00000190 20 e7 20 61 74 25 20 e7 20 a4 64 69 76 62 79 7a | . at% . .divbyz| 000001a0 65 72 6f 28 72 65 73 74 24 29 20 8c 20 3d b9 0d |ero(rest$) . =..| 000001b0 01 18 21 20 e7 20 61 74 25 20 e7 20 20 a0 20 28 |..! . at% . . (| 000001c0 72 65 73 74 24 29 20 3d 20 30 20 20 8c 20 3d b9 |rest$) = 0 . =.| 000001d0 0d 01 22 07 20 3d a3 0d 01 2c 06 20 3a 0d 01 36 |..". =...,. :..6| 000001e0 0c 20 dd 20 f2 7a 65 72 72 0d 01 40 06 20 f1 0d |. . .zerr..@. ..| 000001f0 01 4a 18 20 f1 22 44 69 76 69 73 69 6f 6e 20 62 |.J. ."Division b| 00000200 79 20 7a 65 72 6f 22 0d 01 54 06 20 e1 0d ff |y zero"..T. ...| 0000020f