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