Punch Characters to Paper Tape - 8k Basic

General discussions related to the Altair 8800 Clone

Punch Characters to Paper Tape - 8k Basic

Postby Caterman » November 13th, 2015, 4:40 pm

Here's my take on punching characters to paper tape connected to ACR using 8k basic!
You can output to terminal or tape.
I've encoded low case as well as upper.
Hope you like.
Code: Select all
10 REM ***PUNCH MESSAGE INCLUDING LOWER CASE***
20 REM ***FETCH DATA***
21 PRINT "PLEASE WAIT - DATA LOADING"
22 PRINT
25 DIM L$(30)
30 DIM C(91,5)
40 FOR X=1 TO 91
50 FOR Y=1 TO 5
60 READ C(X,Y)
70 NEXT Y
80 NEXT X
100 REM ***INPUT STRING***
110 PRINT "MESSAGE ON PAPER TAPE PUNCH"
120 PRINT "INPUT CHARACTERS FOLLOWED BY RETURN"
130 INPUT A$
200 REM ***STRING EXTRACTION***
210 L=LEN(A$)
230 FOR B=1 TO L
240 L$(B)=MID$(A$,B,1)
250 NEXT B
300 REM ***OUTPUT SELECTION***
310 PRINT "SELECT ACTION"
320 PRINT "1 - DISPLAY MESSAGE ON TERMINAL" 
330 PRINT "2 - PUNCH MESSAGE ON PAPER TAPE"
335 PRINT "3 - ENTER NEW MESSAGE"
340 PRINT "4 - EXIT"
350 INPUT A
360 IF A<1 OR A>4 THEN GOTO 350
370 IF A=1 THEN GOTO 500
380 IF A=2 THEN GOTO 400
385 IF A=3 THEN GOTO 100
390 END
400 REM ***PUNCH TO TAPE***
410 FOR X=1 TO L
415 P=(ASC(L$(X)))-31
420 FOR Y=1 TO 5
430 WAIT 6,128,255
440 OUT 7,C(P,Y)
450 NEXT Y
451 WAIT 6,128,255
452 OUT 7,0
460 NEXT X
470 GOTO 300
500 REM ***DISPLAY ON TERMINAL***
510 FOR X=1 TO L
520 P=(ASC(L$(X)))-31
530 FOR Y=1 TO 5
540 D=256
550 A=C(P,Y)
555 FOR M=0 TO 6
560 D=D/2
570 IF INT(A/D)=1 THEN PRINT "*";
575 IF INT(A/D)<>1 THEN PRINT " ";
580 A=A-(INT(A/D)*D)
585 NEXT M
590 IF INT(A)=1 THEN PRINT "*";
592 IF INT(A)<>1 THEN PRINT " ";
595 PRINT
600 NEXT Y
610 PRINT
620 NEXT X
630 GOTO 300
790 REM ***DATA***
800 DATA 0,0,0,0,0,0,0,190,0,0,0,14,0,14,0,40,254,40,254,40
840 DATA 72,84,254,84,32,78,42,214,168,228,108,146,170,68,160
870 DATA 0,0,22,14,0,0,56,68,130,0,0,130,68,56,0
900 DATA 84,56,254,56,84,16,16,254,16,16,0,176,112,0,0
930 DATA 16,16,16,16,16,0,192,192,0,0,64,32,16,8,4
960 DATA 124,162,146,138,124,0,132,254,128,0,228,146,146,146,140
990 DATA 68,130,146,146,108,48,40,36,254,32,78,138,138,138,114
1020 DATA 120,148,146,146,96,2,226,18,10,6,108,146,146,146,108
1050 DATA 12,146,146,82,60,0,108,108,0,0,0,182,118,0,0
1080 DATA 16,40,68,130,0,40,40,40,40,40,0,130,68,40,16
1110 DATA 4,2,162,18,12,100,146,242,130,124,248,36,34,36,248
1140 DATA 130,254,146,146,108,124,130,130,130,68,130,254,130,130,124
1170 DATA 254,146,146,130,130,254,18,18,2,2,124,130,146,146,116
1200 DATA 254,16,16,16,254,0,130,254,130,0,64,128,130,126,2
1230 DATA 254,16,40,68,130,254,128,128,128,128,254,4,24,4,254
1260 DATA 254,8,16,32,254,124,130,130,130,124,254,18,18,18,12
1290 DATA 124,130,162,66,188,254,18,50,82,140,76,146,146,146,100
1320 DATA 2,2,254,2,2,126,128,128,128,126,14,48,192,48,14
1350 DATA 254,64,48,64,254,198,40,16,40,198,6,8,240,8,6
1380 DATA 194,162,146,138,134,0,254,130,130,0,4,8,16,32,64
1390 DATA 0,130,130,254,0,8,4,2,4,8,128,128,128,128,128
1400 DATA 0,0,7,11,0,64,168,168,168,112,254,80,136,136,112
1410 DATA 112,136,136,136,136,112,136,136,80,254,112,168,168,168,48
1420 DATA 16,252,18,18,4,16,168,168,168,120,254,16,8,8,240
1430 DATA 0,136,250,128,0,64,128,136,122,8,130,254,32,80,136
1440 DATA 0,130,254,128,0,248,8,240,8,240,248,16,8,8,240
1450 DATA 112,136,136,136,112,248,40,40,40,16,16,40,40,40,248
1460 DATA 248,16,8,8,16,144,168,168,168,72,8,8,126,136,136
1470 DATA 120,128,128,64,248,56,64,128,64,56,120,128,96,128,120
1480 DATA 136,80,32,80,136,24,160,160,160,120,136,200,168,152,136
Caterman
 
Posts: 52
Joined: May 31st, 2015, 3:07 pm
Location: UK

Re: Punch Characters to Paper Tape - 8k Basic

Postby AltairClone » November 15th, 2015, 5:52 pm

Just tried it with my Teletype connected to the ACR serial port - works great! If you want to keep developing the program, here are some ideas:

You can add a CLEAR 1000 statement at the beginning of the program to allocate more string space to prevent the "Out of string space" error on longer messages.

It would be nice if the program ran out leader and trailer tape for you - especially when using a Teletype.

An option to flip all characters would allow punching the message on the opposite side of the tape. This is handy when the message reads correctly only when viewed from the pre-printed side of the paper tape (if your paper tape has printing on it like mine!).

Great work!

Mike
AltairClone
Site Admin
 
Posts: 632
Joined: April 5th, 2013, 10:55 am


Return to General Discussions

Who is online

Users browsing this forum: No registered users and 16 guests