REM Copyright (C) 2001, John J. G. Savard DIM im%(80, 320), ma%(8) FOR i = 0 TO 7 READ ma%(i) NEXT i LINE INPUT "Output file name? "; fi$ OPEN fi$ FOR OUTPUT AS #2 PRINT "Maximum slide rule width: 624 pixels." INPUT "Slide rule width: ", rw REM input "Image height: ", h% h% = 200 w% = rw + 16 wb% = (w% + 7) \ 8 w% = wb% * 8 FOR j% = 1 TO h% FOR i% = 1 TO wb% im%(i%, j%) = 0 NEXT i% NEXT j% REM start of code to set pixels in image to 1 sg = 1 / LOG(10) sf = rw * sg REM allow 8 blank pixels on each side of the slide rule REM A and B scales FOR i% = 100 TO 190 STEP 10 FOR j% = 0 TO 5 STEP 5 sh% = 3 IF j% = 0 THEN sh% = 5 x = 8 + .5 * sf * LOG(.01 * (i% + j%)) GOSUB 3000 lo% = 50 - sh% hi% = 50 + sh% FOR y% = lo% TO hi% im%(p% + 1, y% + 1) = im%(p% + 1, y% + 1) OR m% NEXT y% x = x + rw / 2 GOSUB 3000 FOR y% = lo% TO hi% im%(p% + 1, y% + 1) = im%(p% + 1, y% + 1) OR m% NEXT y% NEXT j% NEXT i% FOR i% = 20 TO 40 STEP 10 FOR j% = 0 TO 5 STEP 5 FOR k% = 0 TO 4 sh% = 3 IF k% = 0 THEN sh% = 5: IF j% = 0 THEN sh% = 7 x = 8 + .5 * sf * LOG(.1 * (i% + j% + k%)) GOSUB 3000 lo% = 50 - sh% hi% = 50 + sh% FOR y% = lo% TO hi% im%(p% + 1, y% + 1) = im%(p% + 1, y% + 1) OR m% NEXT y% x = x + rw / 2 GOSUB 3000 FOR y% = lo% TO hi% im%(p% + 1, y% + 1) = im%(p% + 1, y% + 1) OR m% NEXT y% NEXT k% NEXT j% NEXT i% FOR i% = 50 TO 90 STEP 10 FOR j% = 0 TO 8 STEP 2 sh% = 3 IF j% = 0 THEN sh% = 5 x = 8 + .5 * sf * LOG(.1 * (i% + j%)) GOSUB 3000 lo% = 50 - sh% hi% = 50 + sh% FOR y% = lo% TO hi% im%(p% + 1, y% + 1) = im%(p% + 1, y% + 1) OR m% NEXT y% x = x + rw / 2 GOSUB 3000 FOR y% = lo% TO hi% im%(p% + 1, y% + 1) = im%(p% + 1, y% + 1) OR m% NEXT y% NEXT j% NEXT i% REM L scale FOR i% = 0 TO 900 STEP 100 FOR j% = 0 TO 90 STEP 10 FOR k% = 0 TO 5 STEP 5 sh% = 3 IF k% = 0 THEN sh% = 5: IF j% = 0 THEN sh% = 7 x = 8 + rw * .001 * (i% + j% + k%) GOSUB 3000 lo% = 80 - sh% hi% = 80 FOR y% = lo% TO hi% im%(p% + 1, y% + 1) = im%(p% + 1, y% + 1) OR m% NEXT y% NEXT k% NEXT j% NEXT i% REM C and D scales FOR i% = 100 TO 190 STEP 10 FOR j% = 0 TO 8 STEP 2 sh% = 3 IF j% = 0 THEN sh% = 5 x = 8 + sf * LOG(.01 * (i% + j%)) GOSUB 3000 lo% = 110 - sh% hi% = 110 + sh% FOR y% = lo% TO hi% im%(p% + 1, y% + 1) = im%(p% + 1, y% + 1) OR m% NEXT y% NEXT j% NEXT i% FOR i% = 200 TO 490 STEP 10 FOR j% = 0 TO 5 STEP 5 sh% = 3 IF j% = 0 THEN sh% = 5 x = 8 + sf * LOG(.01 * (i% + j%)) GOSUB 3000 lo% = 110 - sh% hi% = 110 + sh% FOR y% = lo% TO hi% im%(p% + 1, y% + 1) = im%(p% + 1, y% + 1) OR m% NEXT y% NEXT j% NEXT i% FOR i% = 50 TO 90 STEP 10 FOR j% = 0 TO 5 STEP 5 FOR k% = 0 TO 4 sh% = 3 IF k% = 0 THEN sh% = 5: IF j% = 0 THEN sh% = 7 x = 8 + sf * LOG(.1 * (i% + j% + k%)) GOSUB 3000 lo% = 110 - sh% hi% = 110 + sh% FOR y% = lo% TO hi% im%(p% + 1, y% + 1) = im%(p% + 1, y% + 1) OR m% NEXT y% NEXT k% NEXT j% NEXT i% REM K scale FOR i% = 100 TO 190 STEP 10 sh% = 3 x = 8 + sf * .33333 * LOG(.01 * i%) GOSUB 3000 lo% = 140 - sh% hi% = 140 + sh% FOR y% = lo% TO hi% im%(p% + 1, y% + 1) = im%(p% + 1, y% + 1) OR m% NEXT y% x = x + rw * .33333 GOSUB 3000 FOR y% = lo% TO hi% im%(p% + 1, y% + 1) = im%(p% + 1, y% + 1) OR m% NEXT y% x = x + rw * .33333 GOSUB 3000 FOR y% = lo% TO hi% im%(p% + 1, y% + 1) = im%(p% + 1, y% + 1) OR m% NEXT y% NEXT i% FOR i% = 20 TO 40 STEP 10 FOR j% = 0 TO 8 STEP 2 sh% = 3 IF j% = 0 THEN sh% = 5 x = 8 + sf * .33333 * LOG(.1 * (i% + j%)) GOSUB 3000 lo% = 140 - sh% hi% = 140 + sh% FOR y% = lo% TO hi% im%(p% + 1, y% + 1) = im%(p% + 1, y% + 1) OR m% NEXT y% x = x + rw * .33333 GOSUB 3000 FOR y% = lo% TO hi% im%(p% + 1, y% + 1) = im%(p% + 1, y% + 1) OR m% NEXT y% x = x + rw * .33333 GOSUB 3000 FOR y% = lo% TO hi% im%(p% + 1, y% + 1) = im%(p% + 1, y% + 1) OR m% NEXT y% NEXT j% NEXT i% FOR i% = 50 TO 90 STEP 10 FOR j% = 0 TO 5 STEP 5 sh% = 3 IF j% = 0 THEN sh% = 5 x = 8 + sf * .33333 * LOG(.1 * (i% + j%)) GOSUB 3000 lo% = 140 - sh% hi% = 140 + sh% FOR y% = lo% TO hi% im%(p% + 1, y% + 1) = im%(p% + 1, y% + 1) OR m% NEXT y% x = x + rw * .33333 GOSUB 3000 FOR y% = lo% TO hi% im%(p% + 1, y% + 1) = im%(p% + 1, y% + 1) OR m% NEXT y% x = x + rw * .33333 GOSUB 3000 FOR y% = lo% TO hi% im%(p% + 1, y% + 1) = im%(p% + 1, y% + 1) OR m% NEXT y% NEXT j% NEXT i% REM LL scale FOR i% = 10100 TO 10190 STEP 10 sh% = 3 x = 8 + rw * .33333 * (2 + sg * LOG(LOG(.0001 * i%))) GOSUB 3000 lo% = 160 - sh% hi% = 160 + sh% FOR y% = lo% TO hi% im%(p% + 1, y% + 1) = im%(p% + 1, y% + 1) OR m% NEXT y% NEXT i% FOR i% = 1020 TO 1040 STEP 10 FOR j% = 0 TO 8 STEP 2 sh% = 3 IF j% = 0 THEN sh% = 5 x = 8 + rw * .33333 * (2 + sg * LOG(LOG(.001 * (i% + j%)))) GOSUB 3000 lo% = 160 - sh% hi% = 160 + sh% FOR y% = lo% TO hi% im%(p% + 1, y% + 1) = im%(p% + 1, y% + 1) OR m% NEXT y% NEXT j% NEXT i% FOR i% = 1050 TO 1090 STEP 10 FOR j% = 0 TO 5 STEP 5 sh% = 3 IF j% = 0 THEN sh% = 5 x = 8 + rw * .33333 * (2 + sg * LOG(LOG(.001 * (i% + j%)))) GOSUB 3000 lo% = 160 - sh% hi% = 160 + sh% FOR y% = lo% TO hi% im%(p% + 1, y% + 1) = im%(p% + 1, y% + 1) OR m% NEXT y% NEXT j% NEXT i% FOR i% = 1100 TO 1190 STEP 10 sh% = 3 x = 8 + rw * .33333 * (2 + sg * LOG(LOG(.001 * i%))) GOSUB 3000 lo% = 160 - sh% hi% = 160 + sh% FOR y% = lo% TO hi% im%(p% + 1, y% + 1) = im%(p% + 1, y% + 1) OR m% NEXT y% NEXT i% FOR i% = 120 TO 140 STEP 10 FOR j% = 0 TO 8 STEP 2 sh% = 3 IF j% = 0 THEN sh% = 5 x = 8 + rw * .33333 * (2 + sg * LOG(LOG(.01 * (i% + j%)))) GOSUB 3000 lo% = 160 - sh% hi% = 160 + sh% FOR y% = lo% TO hi% im%(p% + 1, y% + 1) = im%(p% + 1, y% + 1) OR m% NEXT y% NEXT j% NEXT i% FOR i% = 150 TO 190 STEP 10 FOR j% = 0 TO 5 STEP 5 sh% = 3 IF j% = 0 THEN sh% = 5 x = 8 + rw * .33333 * (2 + sg * LOG(LOG(.01 * (i% + j%)))) GOSUB 3000 lo% = 160 - sh% hi% = 160 + sh% FOR y% = lo% TO hi% im%(p% + 1, y% + 1) = im%(p% + 1, y% + 1) OR m% NEXT y% NEXT j% NEXT i% FOR i% = 20 TO 30 STEP 10 FOR j% = 0 TO 9 sh% = 3 IF j% = 0 THEN sh% = 5 x = 8 + rw * .33333 * (2 + sg * LOG(LOG(.1 * (i% + j%)))) GOSUB 3000 lo% = 160 - sh% hi% = 160 + sh% FOR y% = lo% TO hi% im%(p% + 1, y% + 1) = im%(p% + 1, y% + 1) OR m% NEXT y% NEXT j% NEXT i% FOR i% = 40 TO 90 STEP 10 FOR j% = 0 TO 8 STEP 2 sh% = 3 IF j% = 0 THEN sh% = 5 x = 8 + rw * .33333 * (2 + sg * LOG(LOG(.1 * (i% + j%)))) GOSUB 3000 lo% = 160 - sh% hi% = 160 + sh% FOR y% = lo% TO hi% im%(p% + 1, y% + 1) = im%(p% + 1, y% + 1) OR m% NEXT y% NEXT j% NEXT i% FOR i% = 10 TO 90 STEP 10 FOR j% = 0 TO 8 STEP 2 sh% = 3 IF j% = 0 THEN sh% = 5 x = 8 + rw * .33333 * (2 + sg * LOG(LOG(i% + j%))) GOSUB 3000 lo% = 160 - sh% hi% = 160 + sh% FOR y% = lo% TO hi% im%(p% + 1, y% + 1) = im%(p% + 1, y% + 1) OR m% NEXT y% NEXT j% NEXT i% FOR i% = 10 TO 90 STEP 10 FOR j% = 0 TO 5 STEP 5 sh% = 3 IF j% = 0 THEN sh% = 5 x = 8 + rw * .33333 * (2 + sg * LOG(LOG(10 * (i% + j%)))) GOSUB 3000 lo% = 160 - sh% hi% = 160 + sh% FOR y% = lo% TO hi% im%(p% + 1, y% + 1) = im%(p% + 1, y% + 1) OR m% NEXT y% NEXT j% NEXT i% FOR i% = 10 TO 90 STEP 10 sh% = 3 x = 8 + rw * .33333 * (2 + sg * LOG(LOG(100 * i%))) GOSUB 3000 lo% = 160 - sh% hi% = 160 + sh% FOR y% = lo% TO hi% im%(p% + 1, y% + 1) = im%(p% + 1, y% + 1) OR m% NEXT y% NEXT i% REM code ends os$ = " " la$ = "" wi% = -1 PRINT #2, "#define image_width "; w% PRINT #2, "#define image_height "; h% PRINT #2, "static unsigned char image_bits[] = {" FOR j% = 1 TO h% FOR i% = 1 TO wb% a$ = "0x" + RIGHT$("0" + HEX$(im%(i%, j%)), 2) GOSUB 1000 NEXT i% NEXT j% GOSUB 2000 END 1000 IF wi% < 0 THEN 1010 os$ = os$ + " " + la$ + "," 1010 la$ = a$ wi% = wi% + 1 IF wi% < 12 THEN 1020 PRINT #2, os$ os$ = " " wi% = 0 1020 RETURN 2000 os$ = os$ + " " + la$ + " } ;" PRINT #2, os$ RETURN 3000 xi% = INT(x + .5) p% = xi% \ 8 m% = ma%(xi% - 8 * p%) RETURN DATA 1,2,4,8,16,32,64,128