Page 1 of 1

Paper Tape Punch Artwork

Posted: October 2nd, 2015, 7:48 am
by Caterman
Hi All
Just would like to share with you some of my paper tape punch artwork!
Hope you like.

Re: Paper Tape Punch Artwork

Posted: October 2nd, 2015, 7:57 am
by Caterman
Here's the basic program. It includes a very basic!!! decimal to binary convertor to enable the image to be "printed" to the screen as an option from punching to tape via ACR port.
It's a bit slow anyone have any suggestions on a little speed improvement would be appreciated.

Code: Select all

5 PRINT "HOMER SIMPSON ON PAPER TAPE PUNCH"
10 PRINT "FOR TERMINAL - PRESS 1    FOR PUNCH ON ACR - PRESS 2"
15 INPUT A
20 IF A<1 OR A>2 THEN GOTO 15
30 IF A=1 THEN GOTO 70
34 REM ***PUNCH TO TAPE***
35 READ B
40 IF B=999 THEN GOTO 101
45 OUT 7,B
50 FOR W=0 TO 50
55 NEXT W
60 GOTO 35
69 REM ***DISPLAY ON TERMINAL***
70 DIM Z(82,6)
71 FOR C=1 TO 6
72 FOR R=1 TO 82
73 READ Z(R,C)
74 NEXT R
75 NEXT C 
80 FOR R=1 TO 82
85 FOR C=1 TO 6
90 D=256
91 A=Z(R,C)
92 FOR M=0 to 6:
93 D=D/2 
94 IF INT(A/D)=1 THEN PRINT "*"; ELSE PRINT " ";
95 A=A-(INT(A/D)*D) 
96 NEXT M 
97 IF INT(A)=1 THEN PRINT "*"; ELSE PRINT " ";
98 NEXT C
99 PRINT
100 NEXT R
101 END
102 DATA 0,0,0,0,0,0,1,2,2,4,4,4,4,5,2,3,4,4,4,4,0,8,8,8,8,8,8,8,0,0,4,4,2,2,2,1,7,5,4,4,4
110 DATA 2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,2,2,4,4,0,0,8,8,17,18,36,40
120 DATA 0,0,3,12,59,200,16,16,39,56,32,80,128,0,0,0,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,24,16,20,18,144,113,64,32
130 DATA 30,32,46,32,38,16,15,8,8,8,8,8,8,8,8,8,24,40,104,88,70,65,64,128,128,0,0,128,96,24,6,1,0,0,0,15,112,128,0,0,0
140 DATA 0,0,248,4,4,130,66,255,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,4,0,8,8,16,16,16,16,16,8,8,0,6
150 DATA 1,0,0,0,128,129,2,2,4,4,0,0,0,0,0,0,4,2,1,0,0,192,56,7,0,0,0,0,0,0,0,192,56,7,0,252,3,0,0,0,0
160 DATA 0,0,0,0,0,0,0,224,24,4,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,135,1,0,0,0,0,0,192,192,0,0,0,3,12
170 DATA 240,7,24,96,128,0,0,0,0,0,64,128,224,159,0,0,0,0,0,128,127,0,0,248,12,12,18,18,17,33,32,32,64,64,192,0,0,128,64,32,16
180 DATA 0,0,0,0,0,0,0,0,0,0,0,0,128,128,64,64,32,32,16,16,8,8,4,2,1,127,129,0,0,64,64,64,38,38,32,63,64,128,128,0,0
190 DATA 1,254,0,0,0,0,0,0,0,0,0,0,0,255,2,4,8,8,16,96,184,32,36,36,20,26,26,10,25,17,164,167,98,2,1,0,0,0,0,0,0
200 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,64,16,16,16,16,32,32,192,32,16,16,16,32
210 DATA 208,8,8,0,4,4,4,2,2,2,2,4,56,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,0,0,0,128,128,64,32,32,16
220 DATA 999
It also has a very basic wait loop in the form a for/next loop to allow my DSI 2400 to keep up with ALTAIR 8800.
What would be nicer would be the WAIT command I think but can't get to grips with it?

Re: Paper Tape Punch Artwork

Posted: October 2nd, 2015, 8:02 am
by Caterman
"FRED"

Code: Select all

5 PRINT "FRED FLINTSTONE ON PAPER TAPE PUNCH"
10 PRINT "FOR TERMINAL - PRESS 1    FOR PUNCH ON ACR - PRESS 2"
15 INPUT A
20 IF A<1 OR A>2 THEN GOTO 15
30 IF A=1 THEN GOTO 70
34 REM ***PUNCH TO TAPE***
35 READ B
40 IF B=999 THEN GOTO 101
42 WAIT 6,128,255
45 OUT 7,B
60 GOTO 35
69 REM ***DISPLAY ON TERMINAL***
70 DIM Z(82,6)
71 FOR C=1 TO 6
72 FOR R=1 TO 82
73 READ Z(R,C)
74 NEXT R
75 NEXT C 
80 FOR R=1 TO 82
85 FOR C=1 TO 6
90 D=256
91 A=Z(R,C)
92 FOR M=0 to 6:
93 D=D/2 
94 IF INT(A/D)=1 THEN PRINT "*"; ELSE PRINT " ";
95 A=A-(INT(A/D)*D) 
96 NEXT M 
97 IF INT(A)=1 THEN PRINT "*"; ELSE PRINT " ";
98 NEXT C
99 PRINT
100 NEXT R
101 END
102 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
110 DATA 0,0,0,0,1,2,4,4,4,4,4,4,4,4,4,4,4,4,2,2,2,2,9,9,29,28,14,6,7,3,1,0,1,2,2,2,2,2,2,2,2
120 DATA 0,0,0,0,0,0,0,0,3,7,7,8,0,1,7,15,31,63,127,252,197,5,2,2,2,2,1,1,25,39,64,64,128,128,128,128,128,128,64,64,32
130 DATA 32,56,71,128,0,1,0,0,0,0,0,0,0,24,38,33,32,32,32,16,16,16,16,8,8,128,128,64,64,32,160,224,99,55,60,255,126,60,56,16,16
140 DATA 0,0,0,0,0,31,127,255,255,255,255,127,127,255,255,255,255,255,192,0,102,101,233,121,116,252,218,218,34,210,18,12,0,7,0,8,12,10,9,8,16
150 DATA 32,224,32,64,188,252,62,62,62,62,62,62,62,62,60,164,100,28,8,0,0,0,0,0,0,0,0,3,7,31,127,248,224,0,0,0,0,8,8,24,56
160 DATA 0,0,0,0,0,1,192,240,248,248,252,254,255,255,255,255,255,255,1,3,3,7,7,6,4,0,0,0,64,64,72,144,160,0,0,0,0,0,0,128,64
170 DATA 32,16,8,0,4,4,4,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,3,7,15,63,255,255,254,252,184,56,48,96,64,129,2,4,0,0,0
180 DATA 0,0,0,32,16,16,144,80,80,80,87,103,111,255,255,255,255,255,255,254,254,254,62,54,54,38,38,6,4,4,2,66,34,18,10,10,9,9,17,1,1
190 DATA 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,15,63,255,252,248,240,224,192,0,0,0,0,25,42,84,152,0,0,0,0,0,0
200 DATA 0,0,0,0,0,0,0,0,0,0,0,128,192,192,224,224,224,240,240,112,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
210 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,192,192,128,128,128,64,64,64,32,32,32,32,16,208,48,48,16,8,8,8,8,8,8
220 DATA 999

Re: Paper Tape Punch Artwork

Posted: October 2nd, 2015, 10:53 am
by AltairClone
To wait for the ACR port to be ready for the next character, the code needs to wait until bit 7 of port 6 is zero (active low logic). Use this WAIT command before the OUT command:

42 WAIT 6,128,255

You can then delete statements 50 and 55.

The 255 (0xFF) is XOR'd with the port 6 status register. This inverts every bit so that zeros are now ones and vice-versa. The 128 (0x80) is then AND'd with the XOR result to isolate and test bit 7 for 1. This indicates the port is ready to accept another character.

Mike

Re: Paper Tape Punch Artwork

Posted: October 3rd, 2015, 10:43 am
by Caterman
Thanks for answer on WAIT command.

Code: Select all

1 REM "MICKEY" ON PAPER TAPE PUNCH
5 PRINT "MICKEY ON PAPER TAPE PUNCH"
10 PRINT "FOR TERMINAL - PRESS 1    FOR PUNCH ON ACR - PRESS 2"
15 INPUT A
20 IF A<1 OR A>2 THEN GOTO 15
30 IF A=1 THEN GOTO 70
34 REM ***PUNCH TO TAPE***
35 READ B
40 IF B=999 THEN GOTO 101
42 WAIT 6,128,255
45 OUT 7,B
60 GOTO 35
69 REM ***DISPLAY ON TERMINAL***
70 DIM Z(82,6)
71 FOR C=1 TO 6
72 FOR R=1 TO 82
73 READ Z(R,C)
74 NEXT R
75 NEXT C 
80 FOR R=1 TO 82
85 FOR C=1 TO 6
90 D=256
91 A=Z(R,C)
92 FOR M=0 to 6:
93 D=D/2 
94 IF INT(A/D)=1 THEN PRINT "*"; ELSE PRINT " ";
95 A=A-(INT(A/D)*D) 
96 NEXT M 
97 IF INT(A)=1 THEN PRINT "*"; ELSE PRINT " ";
98 NEXT C
99 PRINT
100 NEXT R
101 END
102 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,8,16,46,41,40,40,44,36,30,21,20,20,20
110 DATA 20,10,8,4,3,0,0,0,0,2,1,1,1,1,1,1,0,0,0,0,0,0,0,1,2,4,4,4,4,4,4,4,2,1,0,0,0,0,0,0,0
120 DATA 0,0,0,3,7,7,15,15,31,31,31,31,31,31,15,15,7,7,0,1,1,27,35,67,67,139,138,138,138,146,146,146,145,80,48,48,32,32,32,48,41
130 DATA 47,79,159,31,252,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,120,135,0,4,2,1,0,0,0,0,0,0,128,64,63,0,0,0,0
140 DATA 0,0,0,192,224,240,240,240,248,248,248,240,247,249,232,240,240,226,229,229,197,197,197,199,198,6,3,7,119,167,35,16,24,156,79,41,17,30,57,127,255
150 DATA 254,252,205,9,9,9,8,8,8,8,8,8,8,8,8,16,8,15,12,28,28,56,120,189,188,135,133,124,130,130,2,4,6,1,8,16,224,0,0,0,0
160 DATA 0,0,0,0,0,0,3,7,7,15,15,15,15,255,159,15,15,7,103,167,36,38,38,230,198,198,134,198,198,218,10,26,36,68,128,136,48,240,248,248,252
170 DATA 6,143,79,15,42,43,164,64,8,8,7,2,10,50,34,36,120,184,120,120,120,120,240,255,104,8,246,8,16,32,0,0,0,0,192,63,0,0,0,0,0
180 DATA 0,0,0,0,0,0,192,224,240,240,248,248,248,248,248,240,240,224,192,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,6,0,8,8,17
190 DATA 50,226,7,64,128,0,0,0,32,72,246,9,0,0,0,0,0,0,0,0,0,0,0,240,8,4,4,2,2,2,2,4,4,0,8,240,0,0,0,0,0
200 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,64,64,64,132,12
210 DATA 52,68,132,0,8,48,192,64,48,8,8,8,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
220 DATA 999

Re: Paper Tape Punch Artwork

Posted: October 4th, 2015, 8:53 pm
by AltairClone
Made my own Homer artwork using a Teletype connected to the ACR port (6/7) and the WAIT command added. Worked great! Post source for the other artwork when you have a chance.

Thanks!

Mike

Re: Paper Tape Punch Artwork

Posted: October 5th, 2015, 6:57 am
by Caterman
Really pleased you like it.
Here's one for the upcoming holidays!

Re: Paper Tape Punch Artwork

Posted: October 5th, 2015, 7:07 am
by Caterman
Have a try with this one as a companion to Hommer!
See what you think.

Code: Select all

5 PRINT "BART SIMPSON ON PAPER TAPE PUNCH"
10 PRINT "FOR TERMINAL - PRESS 1    FOR PUNCH ON ACR - PRESS 2"
15 INPUT A
20 IF A<1 OR A>2 THEN GOTO 15
30 IF A=1 THEN GOTO 70
34 REM ***PUNCH TO TAPE***
35 READ B
40 IF B=999 THEN GOTO 101
42 WAIT 6,128,255
45 OUT 7,B
60 GOTO 35
69 REM ***DISPLAY ON TERMINAL***
70 DIM Z(82,6)
71 FOR C=1 TO 6
72 FOR R=1 TO 82
73 READ Z(R,C)
74 NEXT R
75 NEXT C 
80 FOR R=1 TO 82
85 FOR C=1 TO 6
90 D=256
91 A=Z(R,C)
92 FOR M=0 to 6:
93 D=D/2 
94 IF INT(A/D)=1 THEN PRINT "*"; ELSE PRINT " ";
95 A=A-(INT(A/D)*D) 
96 NEXT M 
97 IF INT(A)=1 THEN PRINT "*"; ELSE PRINT " ";
98 NEXT C
99 PRINT
100 NEXT R
101 END
102 DATA 0,0,0,0,0,0,0,0,0,3,2,2,14,0,4,28,0,8,0,60,16,8,4,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
110 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
120 DATA 0,0,1,5,21,20,16,240,128,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,64,32,16,8,0,4,2,1,0,0,0,0,0,0,0
130 DATA 0,0,0,0,0,0,1,2,4,4,4,4,4,2,10,9,8,16,16,17,17,114,194,194,65,87,176,72,0,0,0,0,0,0,0,0,0,0,0,0,0
140 DATA 0,32,32,208,0,8,0,4,2,1,0,0,0,0,0,0,1,2,2,2,63,64,64,128,128,128,152,152,128,64,33,30,0,0,192,160,160,160,137,243,13
150 DATA 11,9,8,20,20,227,0,4,4,4,4,4,4,4,0,136,120,64,192,32,48,40,36,19,16,8,0,6,9,8,8,23,16,16,16,16,17,18,12,0,0
160 DATA 0,0,0,0,0,0,0,0,0,0,128,64,32,16,120,132,2,1,1,25,26,134,73,49,33,33,38,32,64,128,0,0,0,1,2,6,26,234,74,43,47
170 DATA 45,251,4,4,4,8,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,3,12,16,96,128,64,192,64,64,128,128,0,0,0,0,0
180 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,64,64,32,16,8,8,8,8,8,16,32,64,128,0,0,0,0,0,0,0
190 DATA 224,16,136,136,136,76,106,81,8,8,8,12,14,3,5,4,4,12,12,20,36,68,128,8,22,225,136,240,128,64,63,0,0,0,0,0,0,0,0,0,0
200 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
210 DATA 0,0,0,0,0,0,0,0,128,64,64,32,96,64,96,128,0,0,0,0,0,0,0,0,0,0,128,128,64,128,0,0,0,0,0,0,0,0,0,0,0
220 DATA 999
In my own setup with a DSI NC2400 I add 28 nulls to the end of data set before the end of data code 999, which allows the tape to punch to a point where you can just rip off the tape without fear of not having enough tape out or wasting too much tape.
You'll have to calculate how many nulls for your own machine.