home *** CD-ROM | disk | FTP | other *** search
/ RUN Flagazine: Run 1 / run1.zip / ADDER.BAS < prev    next >
BASIC Source File  |  2014-09-03  |  4KB  |  61 lines

  1. 100 REM BOOLEAANSE OPTELSIMULATOR GWBASIC MONOCHROOM (C) AD/RUN
  2. 110 KEY OFF:CLS:DEFINT A-Z:DIM X(35),Y(35),B(35):COLOR 7,0
  3. 120 FOR I=1 TO 35:READ Y(I),X(I):NEXT:B$(0)="0":B$(1)="1"
  4. 130 FOR I=1 TO 8:READ M$(I):NEXT:GOSUB 310
  5. 140 LOCATE 23,1:INPUT"Eerste getal (≤15) ";A:LOCATE 23,1:PRINT SPC(25);
  6. 150 LOCATE 23,1:INPUT"Tweede getal (≤15) ";B:LOCATE 23,1:PRINT SPC(25);
  7. 160 LOCATE 18,12:PRINT A;:LOCATE 20,12:PRINT B;
  8. 170 SOM=A+B:FOR I=1 TO 4:B(I*2+21)=A MOD 2:A=A\2:NEXT
  9. 180 FOR I=1 TO 4:B(I*2+22)=B MOD 2:B=B\2:NEXT
  10. 190 FOR I=23 TO 30:LOCATE Y(I),X(I):PRINT B$(B(I));:NEXT
  11. 200 FOR T=1 TO 4:B(1)=B(21+2*T):B(2)=B(22+2*T)
  12. 210 A$="V"+MID$(STR$(21+2*T),2)+"0000V"+MID$(STR$(22+2*T),2)+"0000":GOSUB 500
  13. 220 A$="X012200V050000M010000D010000D020000":GOSUB 500
  14. 230 A$="M020000C060100C070200X142200M030000C140600C150700":GOSUB 500
  15. 240 A$="C161500C171400O191415A181617C221800N201800A211920":GOSUB 500
  16. 250 A$="M040000C082100C090500C102200X142200M050000C140800C150900":GOSUB 500
  17. 260 A$="C161500C171400O191415A181617C221800N201800A211920":GOSUB 500
  18. 270 A$="M060000C122100C112200O131011C041300C031200":GOSUB 500
  19. 280 A$="M070000C"+MID$(STR$(30+T),2)+"0300V"+MID$(STR$(30+T),2)+"0000"
  20. 290 GOSUB 500:B(5)=B(4):NEXT:A$="C350400M080000X012200":GOSUB 500
  21. 300 LOCATE Y(31),X(31)+3:PRINT "=";SOM;:LOCATE 23,1:END
  22. 310 PRINT "half-adder:"
  23. 320 PRINT"──┬──────────>┌─────┐                                  "
  24. 330 PRINT"  │           │ OR  │───────────────>┌─────┐           "
  25. 340 PRINT"───────┬─────>└─────┘    ┌─────┐     │ AND │─────> sum "
  26. 350 PRINT"  │    │             ┌──>│ NOT │────>└─────┘           "
  27. 360 PRINT"  │    └─────>┌─────┐│   └─────┘                    "
  28. 370 PRINT"  │           │ AND │┴───────────────────────────> carry"
  29. 380 PRINT"  └──────────>└─────┘":PRINT STRING$(80,205);:PRINT"full-adder:"
  30. 390 PRINT"───────>┌────────────┐─sum────>┌────────────┐─sum────────────> sum  "
  31. 400 PRINT"        │ HALF-ADDER │         │ HALF-ADDER │                       "
  32. 410 PRINT"───────>└────────────┘─c─┐ ┌──>└────────────┘─c──>┌─────┐           "
  33. 420 PRINT"                         └───┐                    │ OR  │────> carry"
  34. 430 PRINT"── delay-bit ──────────────┘ └───────────────────>└─────┘           "
  35. 440 PRINT STRING$(80,205);:PRINT "4-bits-optelling:"
  36. 450 PRINT"[       ] =  ─────>┌────────────┐── sum ───> [         ] = "
  37. 460 PRINT"                   │ FULL-ADDER │                  ┌─────────┐"
  38. 470 PRINT"[       ] =  ─────>└──┬─────────┘─carry───────────>│BIT-DELAY│"
  39. 480 PRINT"                      │                            └─────────┘"
  40. 490 PRINT"                      └─<──delay-bit────────────────────┘":RETURN
  41. 500 FOR P=1 TO LEN(A$)/7:C$=LEFT$(A$,1):X=VAL(MID$(A$,2,2))
  42. 510 Y=VAL(MID$(A$,4,2)):Z=VAL(MID$(A$,6,2)):A$=MID$(A$,8):COLOR 14,0
  43. 520 ON INSTR("CVNOAMXD",C$) GOTO 530,600,540,550,560,570,580,590
  44. 530 B(X)=B(Y):GOTO 590
  45. 540 B(X)=1-B(Y):GOTO 590
  46. 550 B(X)=SGN(B(Y)+B(Z)):GOTO 590
  47. 560 B(X)=SGN(B(Y)*B(Z)):GOTO 590
  48. 570 LOCATE 24,25:PRINT M$(X); STRING$(75-POS(X),32);:GOTO 610
  49. 580 COLOR 7,0:FOR I=X TO Y:LOCATE Y(I),X(I):PRINT "─";:NEXT:GOTO 610
  50. 590 LOCATE Y(X),X(X):PRINT CHR$(219);:FOR Q=1 TO 2000:NEXT Q:SOUND 1000,.5
  51. 600 LOCATE Y(X),X(X):PRINT B$(B(X));
  52. 610 NEXT:RETURN
  53. 620 DATA 18,18,20,18,18,43,20,50,22,26,11,7,13,7,11,30,13,30,15,49
  54. 630 DATA 13,49,11,61,14,61,2,13,4,13,6,13,8,13,5,24,3,36,5,36
  55. 640 DATA 4,49,7,49,18,08,20,08,18,6,20,6,18,4,20,4,18,2,20,2
  56. 650 DATA 18,55,18,53,18,51,18,49,18,47
  57. 660 DATA "Invoer full-adder-rekenen.","Invoer 1e half-adder."
  58. 670 DATA "Verwerking 1e half-adder.","Invoer 2e half-adder."
  59. 680 DATA "Verwerking 2e half-adder.","Afhandeling full-adder."
  60. 690 DATA "Bit-resultaat full-adder-rekenen.","Eind-resultaat!"
  61.