diff --git a/dec/23MTCH.BAS b/dec/23MTCH.BAS
new file mode 100644
index 0000000..6f3c1c1
--- /dev/null
+++ b/dec/23MTCH.BAS
@@ -0,0 +1,44 @@
+100 REM ***23 MATCHES
+110 PRINT "LET'S PLAY 23 MATCHES. WE START WITH 23 MATCHES."
+115 PRINT "YOU MOVE FIRST. YOU MAY TAKE 1,2 OR 3 MATCHES."
+120 PRINT "THEN I MOVE...I MAY TAKE 1,2 OR 3 MATCHES."
+125 PRINT "YOU MOVE, I MOVE AND SO ON. THE ONE WHO HAS TO"
+130 PRINT "TAKE THE LAST MATCH LOSES."
+135 PRINT "GOOD LUCK AND MAY THE BEST COMPUTER (HA HA) WIN."
+140 PRINT
+150 LET M=23
+200 REM ***THE HUMAN MOVES
+205 PRINT
+210 PRINT "THERE ARE NOW";M;"MATCHES."
+215 PRINT
+220 PRINT "HOW MANY DO YOU TAKE";
+230 INPUT H
+240 IF H>M THEN 510
+250 IF H<>INT(H) THEN 510
+260 IF H<=0 THEN 510
+270 IF H>=4 THEN 510
+280 LET M=M-H
+290 IF M=0 THEN 410
+300 REM ***THE COMPUTER MOVES
+305 IF M=1 THEN 440
+310 LET R=M-4*INT(M/4)
+320 IF R<>1 THEN 350
+330 LET C=INT(3*RND(0))+1
+340 GO TO 360
+350 LET C=(R+3)-4*INT((R+3)/4)
+360 LET M=M-C
+370 IF M=0 THEN 440
+375 PRINT
+380 PRINT "I TOOK";C;"...";
+390 GO TO 210
+400 REM ***SOMEBODY WON (SEE LINES 290,305,370)
+410 PRINT
+420 PRINT "I WON!!! BETTER LUCK NEXT TIME."
+430 GO TO 140
+440 PRINT
+450 PRINT "O.K. SO YOU WON. LET'S PLAY AGAIN."
+460 GO TO 140
+500 REM ***THE HUMAN CHEATED! (SEE LINES 240 THRU 270)
+510 PRINT "YOU CHEATED! BUT I'LL GIVE YOU ANOTHER CHANCE."
+520 GO TO 215
+999 END
diff --git a/dec/3DPLOT.BAS b/dec/3DPLOT.BAS
new file mode 100644
index 0000000..5ee6847
--- /dev/null
+++ b/dec/3DPLOT.BAS
@@ -0,0 +1,14 @@
+5 DEF FNA(Z)=30*EXP(-Z*Z/100)
+100 PRINT
+110 FOR X=-30 TO 30 STEP 1.5
+120 L=0
+130 Y1=5*INT(SQR(900-X*X)/5)
+140 FOR Y=Y1 TO -Y1 STEP -5
+150 Z=INT(25+FNA(SQR(X*X+Y*Y))-.7*Y)
+160 IF Z<=L THEN 190
+170 L=Z
+180 PRINT TAB(Z)"*";
+190 NEXT Y
+200 PRINT
+210 NEXTX
+300 END
diff --git a/dec/TRAIN.BAS b/dec/TRAIN.BAS
new file mode 100644
index 0000000..8762661
--- /dev/null
+++ b/dec/TRAIN.BAS
@@ -0,0 +1,21 @@
+4 PRINT "TIME - SPEED - DISTANCE EXERCISE"\PRINT
+5 RANDOMIZE
+10 C=INT(RND*25)+40
+15 D=INT(RND*15)+5
+20 T=INT(RND*19)+20
+25 PRINT " A CAR TRAVELING"C"MPH CAN MAKE A CERTAIN TRIP IN"
+30 PRINT D"HOURS LESS THAN A TRAIN TRAVELING AT"T"MPH."
+35 PRINT "HOW LONG DOES THE TRIP TAKE BY CAR";
+40 INPUT A
+45 V=D*T/(C-T)
+50 E=INT(ABS((V-A)*100/A)+.5)
+55 IF E>5 THEN 70
+60 PRINT "GOOD! ANSWER WITHIN"E"PERCENT."
+65 GOTO 80
+70 PRINT "SORRY. YOU WERE OFF BY"E"PERCENT."
+80 PRINT "CORRECT ANSWER IS"V"HOURS."
+90 PRINT
+95 PRINT "ANOTHER PROBLEM (YES OR NO)";
+100 INPUT A$\PRINT
+105 IF A$="YES" THEN 10
+999 END
diff --git a/dec/TRAP.BAS b/dec/TRAP.BAS
new file mode 100644
index 0000000..cbf79cb
--- /dev/null
+++ b/dec/TRAP.BAS
@@ -0,0 +1,46 @@
+10 G=6
+20 N=100
+30 REM-TRAP
+40 REM-STEVE ULLMAN, 8-1-72
+50 PRINT "WANT INSTRUCTIONS (1 FOR YES)";
+60 INPUT Z
+70 IF Z<>1 THEN 180
+80 PRINT "I AM THINKING OF A NUMBER BETWEEN 1 AND";N
+90 PRINT "TRY TO GUESS MY NUMBER. ON EACH GUESS,"
+100 PRINT "YOU ARE TO ENTER 2 NUMBERS, TRYING TO TRAP"
+110 PRINT "MY NUMBER BETWEEN THE TWO NUMBERS. I WILL"
+120 PRINT "TELL YOU IF YOU HAVE TRAPPED MY NUMBER, IF MY"
+130 PRINT "NUMBER IS LARGER THAN YOUR TWO NUMBERS, OR IF"
+140 PRINT "MY NUMBER IS SMALLER THAN YOUR TWO NUMBERS."
+150 PRINT "IF YOU WANT TO GUESS ONE SINGLE NUMBER, TYPE"
+160 PRINT "YOUR GUESS FOR BOTH YOUR TRAP NUMBERS."
+170 PRINT "YOU GET";G;"GUESSES TO GET MY NUMBER."
+180 X=INT(N*RND(0))+1
+190 FOR Q=1 TO G
+200 PRINT
+210 PRINT "GUESS #";Q;
+220 INPUT A,B
+230 IF A<>B THEN 240
+235 IF X=A THEN 400
+240 IF A <=B THEB 260
+250 GOSUB 360
+260 IF XM THEN 510
+ 250 IF H<>INT(H) THEN 510
+ 260 IF H<=0 THEN 510
+ 270 IF H>=4 THEN 510
+ 280 LET M=M-H
+ 290 IF M=0 THEN 410
+ 300 REM ***THE COMPUTER MOVES
+ 305 IF M=1 THEN 440
+ 310 LET R=M-4*INT(M/4)
+ 320 IF R<>1 THEN 350
+ 330 LET C=INT(3*RND(0))+1
+ 340 GO TO 360
+ 350 LET C=(R+3)-4*INT((R+3)/4)
+ 360 LET M=M-C
+ 370 IF M=0 THEN 440
+ 375 PRINT
+ 380 PRINT "I TOOK";C;"...";
+ 390 GO TO 210
+ 400 REM ***SOMEBODY WON (SEE LINES 290,305,370)
+ 410 PRINT
+ 420 PRINT "I WON!!! BETTER LUCK NEXT TIME."
+ 430 GO TO 140
+ 440 PRINT
+ 450 PRINT "O.K. SO YOU WON. LET'S PLAY AGAIN."
+ 460 GO TO 140
+ 500 REM ***THE HUMAN CHEATED! (SEE LINES 240 THRU 270)
+ 510 PRINT "YOU CHEATED! BUT I'LL GIVE YOU ANOTHER CHANCE."
+ 520 GO TO 215
+ 999 END
diff --git a/port/3DPLOT.BAS b/port/3DPLOT.BAS
new file mode 100644
index 0000000..891d02f
--- /dev/null
+++ b/port/3DPLOT.BAS
@@ -0,0 +1,19 @@
+ 5 DEF FNA(Z)=30*EXP(-Z*Z/100)
+ 10 ' DEF FNA(Z)=SQR(900.01-Z*Z)*.9-2
+ 20 ' DEF FNA(Z)=30*(COS(Z/16))^2
+ 30 ' DEF FNA(Z)=30-30*SIN(Z/18)
+ 40 ' DEF FNA(Z)=30*EXP(-COS(Z/16))-30
+ 50 ' DEF FNA(Z)=30*SIN(Z/10)
+ 100 PRINT
+ 110 FOR X=-30 TO 30 STEP 1.5
+ 120 L=0
+ 130 Y1=5*INT(SQR(900-X*X)/5)
+ 140 FOR Y=Y1 TO -Y1 STEP -5
+ 150 Z=INT(25+FNA(SQR(X*X+Y*Y))-.7*Y)
+ 160 IF Z<=L THEN 190
+ 170 L=Z
+ 180 PRINT TAB(Z)"*";
+ 190 NEXT Y
+ 200 PRINT
+ 210 NEXTX
+ 300 END
diff --git a/port/TRAIN.BAS b/port/TRAIN.BAS
new file mode 100644
index 0000000..da47d70
--- /dev/null
+++ b/port/TRAIN.BAS
@@ -0,0 +1,21 @@
+ 4 PRINT "TIME - SPEED - DISTANCE EXERCISE"\PRINT
+ 5 RANDOMIZE
+ 10 C=INT(RND(1)*25)+40
+ 15 D=INT(RND(1)*15)+5
+ 20 T=INT(RND(1)*19)+20
+ 25 PRINT " A CAR TRAVELING"C"MPH CAN MAKE A CERTAIN TRIP IN"
+ 30 PRINT D"HOURS LESS THAN A TRAIN TRAVELING AT"T"MPH."
+ 35 PRINT "HOW LONG DOES THE TRIP TAKE BY CAR";
+ 40 INPUT A
+ 45 V=D*T/(C-T)
+ 50 E=INT(ABS((V-A)*100/A)+.5)
+ 55 IF E>5 THEN 70
+ 60 PRINT "GOOD! ANSWER WITHIN"E"PERCENT."
+ 65 GOTO 80
+ 70 PRINT "SORRY. YOU WERE OFF BY"E"PERCENT."
+ 80 PRINT "CORRECT ANSWER IS"V"HOURS."
+ 90 PRINT
+ 95 PRINT "ANOTHER PROBLEM (YES OR NO)";
+ 100 INPUT A$\PRINT
+ 105 IF A$="YES" THEN 10
+ 999 END
diff --git a/port/TRAP.BAS b/port/TRAP.BAS
new file mode 100644
index 0000000..e899f56
--- /dev/null
+++ b/port/TRAP.BAS
@@ -0,0 +1,47 @@
+ 5 RANDOMIZE
+ 10 G=6
+ 20 N=100
+ 30 REM-TRAP
+ 40 REM-STEVE ULLMAN, 8-1-72
+ 50 PRINT "WANT INSTRUCTIONS (1 FOR YES)";
+ 60 INPUT Z
+ 70 IF Z<>1 THEN 180
+ 80 PRINT "I AM THINKING OF A NUMBER BETWEEN 1 AND";N
+ 90 PRINT "TRY TO GUESS MY NUMBER. ON EACH GUESS,"
+ 100 PRINT "YOU ARE TO ENTER 2 NUMBERS, TRYING TO TRAP"
+ 110 PRINT "MY NUMBER BETWEEN THE TWO NUMBERS. I WILL"
+ 120 PRINT "TELL YOU IF YOU HAVE TRAPPED MY NUMBER, IF MY"
+ 130 PRINT "NUMBER IS LARGER THAN YOUR TWO NUMBERS, OR IF"
+ 140 PRINT "MY NUMBER IS SMALLER THAN YOUR TWO NUMBERS."
+ 150 PRINT "IF YOU WANT TO GUESS ONE SINGLE NUMBER, TYPE"
+ 160 PRINT "YOUR GUESS FOR BOTH YOUR TRAP NUMBERS."
+ 170 PRINT "YOU GET";G;"GUESSES TO GET MY NUMBER."
+ 180 X=INT(N*RND(0))+1
+ 190 FOR Q=1 TO G
+ 200 PRINT
+ 210 PRINT "GUESS #";Q;
+ 220 INPUT A,B
+ 230 IF A<>B THEN 240
+ 235 IF X=A THEN 400
+ 240 IF A <=B THEB 260
+ 250 GOSUB 360
+ 260 IF X