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