Paper Tape Punch Artwork

General discussions related to the Altair 8800 Clone

Paper Tape Punch Artwork

Postby Caterman » October 2nd, 2015, 7:48 am

Hi All
Just would like to share with you some of my paper tape punch artwork!
Hope you like.
Attachments
Hommer.jpg
Caterman
 
Posts: 52
Joined: May 31st, 2015, 3:07 pm
Location: UK

Re: Paper Tape Punch Artwork

Postby Caterman » October 2nd, 2015, 7:57 am

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?
Caterman
 
Posts: 52
Joined: May 31st, 2015, 3:07 pm
Location: UK

Re: Paper Tape Punch Artwork

Postby Caterman » October 2nd, 2015, 8:02 am

"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
Attachments
Fred Flintstone.jpg
Last edited by Caterman on October 7th, 2015, 3:07 am, edited 1 time in total.
Caterman
 
Posts: 52
Joined: May 31st, 2015, 3:07 pm
Location: UK

Re: Paper Tape Punch Artwork

Postby AltairClone » October 2nd, 2015, 10:53 am

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
AltairClone
Site Admin
 
Posts: 632
Joined: April 5th, 2013, 10:55 am

Re: Paper Tape Punch Artwork

Postby Caterman » October 3rd, 2015, 10:43 am

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
Attachments
Mickey.jpg
Last edited by Caterman on October 7th, 2015, 3:09 am, edited 1 time in total.
Caterman
 
Posts: 52
Joined: May 31st, 2015, 3:07 pm
Location: UK

Re: Paper Tape Punch Artwork

Postby AltairClone » October 4th, 2015, 8:53 pm

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
AltairClone
Site Admin
 
Posts: 632
Joined: April 5th, 2013, 10:55 am

Re: Paper Tape Punch Artwork

Postby Caterman » October 5th, 2015, 6:57 am

Really pleased you like it.
Here's one for the upcoming holidays!
Attachments
Pumpkin.jpg
Caterman
 
Posts: 52
Joined: May 31st, 2015, 3:07 pm
Location: UK

Re: Paper Tape Punch Artwork

Postby Caterman » October 5th, 2015, 7:07 am

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.
Caterman
 
Posts: 52
Joined: May 31st, 2015, 3:07 pm
Location: UK


Return to General Discussions

Who is online

Users browsing this forum: No registered users and 17 guests

cron