Where is my code wrong? It should be going the same amount down as up. negative numbers are decoded as something called 9's complement, and I suspect that this is where I've made an error, Beyond the first 3 numbers, the first digit of a number is the x-displacement, second the y. Suggestions as to why in decoding negative values I seem to be generating a bigger step then I should be?
(Is there some quirk of PLOT BY, i'm missing? (BB4W 6.16a) )
10 MODE 2
20
30 MOVE 100,100
40 READ W%,X%,Y%
50
60 IF X%>60 Y%=FNnine2(X%)
70 IF Y%>60 Y%=FNnine2(Y%)
80
90 MOVE BY X%, Y%
100
110 D%=0
120
130 WHILE D%<>50
140
150 READ D%
160 L%=0:L%=D% DIV 10:IF L%=>6:L%=FNnine(L%)
170 R%=0:R%=D% MOD 10:IF R%=>6:R%=FNnine(R%)
180
190 CASE L% OF
200 WHEN 5:
210 IF D%<>0 THEN
220 FOR I%=1TOR%
230 PLOT BY OLDL%,OLDR%
NEXT
240 ENDIF
250 OTHERWISE:
260 L%*=2:R%*=2:OLDL%=L%:OLDR%=R%: PLOT BY OLDL%,OLDR%
270 ENDCASE
280 ENDWHILE
290 END
300
310 :
320 DEF FNnine(A%)
330 = -(9-(A%+1))
340
350
360 DEF FNnine2(A%)
370 = -(99-(A%+1))
380
390
400
410 DATA 07, 93, 10, 17, 55, 20, 13, 55, 50
(Is there some quirk of PLOT BY, i'm missing? (BB4W 6.16a) )
10 MODE 2
20
30 MOVE 100,100
40 READ W%,X%,Y%
50
60 IF X%>60 Y%=FNnine2(X%)
70 IF Y%>60 Y%=FNnine2(Y%)
80
90 MOVE BY X%, Y%
100
110 D%=0
120
130 WHILE D%<>50
140
150 READ D%
160 L%=0:L%=D% DIV 10:IF L%=>6:L%=FNnine(L%)
170 R%=0:R%=D% MOD 10:IF R%=>6:R%=FNnine(R%)
180
190 CASE L% OF
200 WHEN 5:
210 IF D%<>0 THEN
220 FOR I%=1TOR%
230 PLOT BY OLDL%,OLDR%
NEXT
240 ENDIF
250 OTHERWISE:
260 L%*=2:R%*=2:OLDL%=L%:OLDR%=R%: PLOT BY OLDL%,OLDR%
270 ENDCASE
280 ENDWHILE
290 END
300
310 :
320 DEF FNnine(A%)
330 = -(9-(A%+1))
340
350
360 DEF FNnine2(A%)
370 = -(99-(A%+1))
380
390
400
410 DATA 07, 93, 10, 17, 55, 20, 13, 55, 50
Statistics: Posted by alex_farlie — Wed Jun 18, 2025 5:29 am