61 lines
1.3 KiB
Plaintext
61 lines
1.3 KiB
Plaintext
100 S$ = "1100 + 1100 = " : GOSUB 400
|
|
110 S$ = "1100 + 1101 = " : GOSUB 400
|
|
120 S$ = "1100 + 1110 = " : GOSUB 400
|
|
130 S$ = "1100 + 1111 = " : GOSUB 400
|
|
140 S$ = "1101 + 0000 = " : GOSUB 400
|
|
150 S$ = "1101 + 0001 = " : GOSUB 400
|
|
160 S$ = "1101 + 0010 = " : GOSUB 400
|
|
170 S$ = "1101 + 0011 = " : GOSUB 400
|
|
180 END
|
|
|
|
400 A0 = VAL(MID$(S$, 4, 1))
|
|
410 A1 = VAL(MID$(S$, 3, 1))
|
|
420 A2 = VAL(MID$(S$, 2, 1))
|
|
430 A3 = VAL(MID$(S$, 1, 1))
|
|
440 B0 = VAL(MID$(S$, 11, 1))
|
|
450 B1 = VAL(MID$(S$, 10, 1))
|
|
460 B2 = VAL(MID$(S$, 9, 1))
|
|
470 B3 = VAL(MID$(S$, 8, 1))
|
|
480 GOSUB 600
|
|
490 PRINT S$;
|
|
|
|
REM 4 BIT PRINT
|
|
500 PRINT C;S3;S2;S1;S0
|
|
510 RETURN
|
|
|
|
REM 4 BIT ADD
|
|
REM ADD A3 A2 A1 A0 TO B3 B2 B1 B0
|
|
REM RESULT IN S3 S2 S1 S0
|
|
REM CARRY IN C
|
|
600 C = 0
|
|
610 A = A0 : B = B0 : GOSUB 700 : S0 = S
|
|
620 A = A1 : B = B1 : GOSUB 700 : S1 = S
|
|
630 A = A2 : B = B2 : GOSUB 700 : S2 = S
|
|
640 A = A3 : B = B3 : GOSUB 700 : S3 = S
|
|
650 RETURN
|
|
|
|
REM FULL ADDER
|
|
REM ADD A + B + C
|
|
REM RESULT IN S
|
|
REM CARRY IN C
|
|
700 BH = B : B = C : GOSUB 800 : C1 = C
|
|
710 A = S : B = BH : GOSUB 800 : C2 = C
|
|
720 C = C1 OR C2
|
|
730 RETURN
|
|
|
|
REM HALF ADDER
|
|
REM ADD A + B
|
|
REM RESULT IN S
|
|
REM CARRY IN C
|
|
800 GOSUB 900 : S = C
|
|
810 C = A AND B
|
|
820 RETURN
|
|
|
|
REM XOR GATE
|
|
REM A XOR B
|
|
REM RESULT IN C
|
|
900 C = A AND NOT B
|
|
910 D = B AND NOT A
|
|
920 C = C OR D
|
|
930 RETURN
|