Jump to content
IGNORED

Black Box Printer Problem (old post from 1995)


Recommended Posts

I'm not sure if this is even relevant anymore, but figured I would post it here.  

 

From news.cac.psu.edu!news.pop.psu.edu!hudson.lm.com!newsfeed.pitt.edu!gatech!howland.reston.ans.net!news.moneng.mei.com!uwm.edu!reuter.cse.ogi.edu!engr.orst.edu!news.CSOS.ORST.EDU!PEAK.ORG!jamesw Mon Feb  6 18:41:44 1995
Path: news.cac.psu.edu!news.pop.psu.edu!hudson.lm.com!newsfeed.pitt.edu!gatech!howland.reston.ans.net!news.moneng.mei.com!uwm.edu!reuter.cse.ogi.edu!engr.orst.edu!news.CSOS.ORST.EDU!PEAK.ORG!jamesw
From: James Wood <jamesw@CSOS.ORST.EDU>
Newsgroups: comp.sys.atari.8bit
Subject: Black Box printer problem (from Atari net)
Date: Mon, 30 Jan 1995 00:29:35 -0800
Organization: OSU CS Outreach Services, Corvallis, Oregon
Lines: 542
Message-ID: <Pine.SUN.3.91.950130002511.5775C-100000@PEAK.ORG>
NNTP-Posting-Host: peak.org
Mime-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII
Content-Transfer-Encoding: QUOTED-PRINTABLE
X-Sender: jamesw@PEAK.ORG


Here's an interesting message, I believe from the same guy who discussed
the prior XEP message.  He encountered a problem with his Black Box
printing....

Read in the message that he had similar luck contacting Bob Puff - sort
of like I did.  Bob must be awfully busy, eh??

Here goes:
------------------------------------------------------------

1=BE
  Title: Black Box Speed Up (1)
 Author: ATREJU
     To: All
 Posted: Sat 14-Jan-95 at 12:36:10am
Replies: 0
 Origin: ABBUC-BBS [node #408]
         Germany [+49+5439+3265]


                    New facts about the BlackBox
                    ----------------------------


(c) Erhard Puetz                                        November 10th, 1994

This article has been written for the ABBUC  magazine.  It  may  be  freely
distributed but not changed in any way without the authors consent.
(Translated by Mathy Van Nisselroy, December 19, 1994)



     Some time ago, I printed a letter using StarTexter  (Mathy:  a  German
Wordprocessor).  I just had bought the BlackBox and therefore played around
with it a lot.  The transfer from data to the printer struck me  as  taking
very much time.  And this with my nice Laserprinter.   I  prepared  a  Test
text with StarTexter.  This ment, totally filling a page.  E.g.,  79  times
the character "A" on a line, with 66 lines.

Printersettings;  12 cpi, Left margin 10, Buffer 10kB.

     So, off with the text, stopwatch started.  WHAAAAATTT, 14  seconds?!?!
This can not be true.  a)  the  BlackBox  provides  parallel  datatransfer,
which should be about 10 times faster than serial datatransfer  (No  Start-
and Stopbits, and eight bits are send at the same time) and b) there  is  a
10kB printerspooler.  So that handfull of characters should have  flown  to
the printer in no time.  But whatever I tried, nothing helped.  So  I  read
the technical page of the printer  manual.   It  says:   After  a  dataword
arrived at the interface, the HOST, in my case a 130XE, has to wait 0.5  us
and then activate the STROBE-signal, for at least another 0.5 us.  Then the
printer needs approximately 10 us for the  processing,  which  adds  up  to
11us.  Which means that the printer is able to receive the above  mentioned
5280 characters in approx. 0.06 seconds.  The difference between 14 seconds
and 0.06 seconds was a bit much for my taste.  1.2 seconds (or twenty times
0.06 seconds) should be about enough for the 130XE I thought, we do have to
call CIO, which calls the parallel bus and then there  are  some  read  and
write operations.  Well, some of you might think, why is this guys  p*ssing
his pants for 14 seconds?  Easy.  Now write a letter with  Daisy  Dot  III.
Two pages.  That should be about 250 kByte of data.  This would take  about
7 minutes to transfer, but that's just the transfer.  Add to that the  time
Daisy Dot needs to convert.  And Daisy Dot can not convert while  printing,
so a slow datatransfer really slows down the system.  You loose  a  quarter
of an hour for a stupid letter, you could have written by hand in the  same
time.  Since my XE should be able to transfer the data  ten  times  faster,
the only remaining source of error seemed to be the printer.  So what  does
this idea do?  I wrote to EPSON, raging around about  their  not  so  cheap
printers being lame.  They, being far from stupid, run a small test program
under my conditions (text 66 x 80) and achieve 0.14 seconds transfer  time.

     One fine day I got the idea  to  try  the  whole  thing  with  my  old
Wiesemann Interface.  Ready, GO.  Measured  time:  8  seconds.   Say  what?
Whattheheckisthis?  The ancient interface is faster than the BlackBox?  So,
at it.  Letter to Robert Puff.  Including return-postage.  No answer.   Via
Internet.  No answer.  Via the ABBUC BBS.   No  answer.   Fax.   No  answer
either.   (Bull  sh*t!).   I  can't  see  through  this  BlackBox.    Looks
complicated.  I'll have to accept that.

     And yesterday I came to the conclusion that I'm not gonna  accept  it.
So I delved into the operation system of the BlackBox.  Looking  for  what?
For a $40 for the printer in DDEVIC = $300.  To my own suprise, I found  =
it
relatively soon.  The reassembling then took quite a bit of time and  brain
power, but below you'll find the listing I want to talk about.  The  actual
printer routine starts on page 4 in line 2370 with the label  IOV.   Boldly
speaking you could say that it checks if the printerport  of  the  BlackBox
will be used.  In case the answer is "YES", the data will branch to  either
send data directly to printerport or save data in  a  printerspooler.   The
printerspooler can either be RAM inside the XL/XE,  or  extra  RAM  on  the
BlackBox itself.  If the spooler is used, as much data as possible will  be
put in.  As long/soon as this is less than approximately 60kB of data,  the
wordprocessor or whatever and load other files.  The data will then be send
from the spooler, per timerdriven interrupt, at about  173  characters  per
second, if I got my calculations right, to the printer till the spooler  is
empty.  But the slow datatransfer happened  without  the  spooler,  so  the
direct printer routine is the one we need to look at.  The  most  important
part you'll find at page nine.  And only after  a  long  time  I  saw  what
really stood there,  in  line  4940.   It  says:   BNE  WR_OK,  which  when
translated reads, the computer should wait,  as  long  as  the  printer  is
ready.  This is baloney.  It should read, wait as long as  the  printer  is
NOT ready.  So it should say: BEQ WR_OK.  I've tried that out  immediately.
Once with the original, once with the corrected bug and once  with  changed
STROBE-Timing (Lines 4780  and  4840).   All  this  using  Turbo-Basic  and
BW-DOS:

(Mathy: BW-DOS is a SpartaDOS compatible and written by  Jiri  Bernasek  of
BEWESOFT.)

10 DIM A$(66*80)
20 A$(1)="A":A$(5280)="A":A$(2)=A$:REM fill A$ with 'A's.
30 FOR I=80 TO 5280 STEP 80
40   A$(I,I)=CHR$(155):REM the 80th char in each line is an EOL
50 NEXT I
60 OPEN #1,8,0,"P:"
70 TIME$="000000"
80 ? #1;A$;:?TIME,TIME$
90 CLOSE #1:END

Here are the test results:

- originally the printout would take  664 jiffies = approx. 13.28 seconds
- after the first change              118 jiffies = approx.  2.36 seconds
- after the first change & DMA OFF     87 jiffies = approx.  1.74 seconds
- & new STROBE timing                  95 jiffies = approx.  1.9  seconds
- & new STROBE timing & DMA OFF        71 jiffies = approx.  1.4  seconds

With th new operating system of the Black BOX, the BB Enhancer:

(Mathy: this probably goes for the Floppy Board  as  well,  since  it  also
contains the BB Enhancer.)

- after all changes                   102 jiffies = approx.  2.04 seconds
- after all changes & DMA OFF          75 jiffies = approx.  1.5  seconds

Wow, really cool to see that data zap to the printer.   And  I  was  really
surprised about how close my estimated 1.2 seconds came to the 1.4  seconds
it really took.  I'm happy.  But also suspicious, this  might  not  be  the
only bug Robert Puff left inhere.  There always is  the  possibility  of  a
serious bug hiding somewhere.  On the other hand though, the  BlackBox  has
been working for me for a very long time and doing very good.  I've got  to
make a few remarks here.  The new STROBE-timing now takes  approximately  7
us, about 10 times more then the printer  needs.   BUT  this  works  on  MY
printer.  How this works out for other printers, I don't  know.   And  then
something I've been talking to many people about,  including  Robert  Puff,
who even happened to have time for an  answer.   I  said,  or  bettter  yet
wrote:    Whenever  the  interface  encounters  the   XL/XE's   end-of-line
character, called EOL, ASCII value 155 or $9B, changes into CR =  13  ($0=
D)
or  CR + LF = 13 + 10 ($0D,  $0A),  graphicdata  might  be  changed  in  =
my
opinion.  When a 155 appears in a picture, the interface changes this  into
a 13, resulting in an error in the picture.  It's even worse  if  a  LF  is
added.  In that case, the printer will not  receive  the  amount  of  bytes
announced in the graphics data command,  e.g.  641  bytes  instead  of  640
bytes, confusing the printer.  For the interface has no way of  knowing  if
it's converting graphic or text data.  Let's look at page 6, line 3120  and
following.  There it says;  take a character from the buffer.  Is  it  EOL?
If yes, convert it into CR.  Which creates an error if it's graphics  data.
And there are so many commands for graphic print-outs,  that  an  interface
would have trouble recognizing all of them.  What if one  sends  downloaded
charactersets to the printer?  It's been 10 years ago already since I first
found this error.  At that time, I had just written a  driver,  that  would
pass-through all ATASCII characters when printing  a  BASIC  listing.   The
special characters  where  send  to  the  printer  as  graphic  data.   The
character Ae (upper case character A with two dots over the A) always  made
trouble.  When I looked at the graphics data a bit closer,  the  value  155
actually showed up.  I then changed the character in such  a  manner,  that
154 or something related came out, it worked.

Last remark.  The operating system of the  BlackBox  has  a  checksum.   At
least with the Enhancer, the change did  not  stay  unnoticed.   It  always
beeps for a second, when I open a certain menu (no food on this one).   But
maybe good old Robert will get his hands on an ABBUC magazine.

So that's it, goodbye and thanks for all the fish.

Your Floppydoc



0890     .TAB 17,23,40
0900     .TITLE "Black Box: part of the printer driver"
0910     .SET 0,4    ;(1-4)        ,0   Byte und .SByte Listing Format
0920     .SET 1,0    ;(1-31)       ,0   Left margin
0930     .SET 2,125  ;(40-132)     ,80  Max length of line
0940     .SET 3,12   ;(0-255)      ,12  Form feed char
0950     .SET 4,66   ;(28-255)     ,66  Number of lines per page
0960     .SET 5,0    ;(0-255)      ,0   # spaces in comment field
0970     .SET 6,0    ;($0000-$FFFF),0   Offset:PC+Offset
0980 ;
0990     .PAGE "         Sytem Equates"
1000 **********************************************************************
1010 *                                                                    *
1020 *         Black Box: Part of the printer driver                      *
1030 *                                                                    *
1040 *         Sourcecode reassembled   by: Erhard Puetz                  *
1050 *                                 (c): November 1994                 *
1060 *                                                                    *
1070 *         Without any warranties                                     *
1080 *                                                                    *
1090 **********************************************************************
1100 ;
1110 ;System page zero equates
1120 ;
1130 POKMSK = $10
1140 BRKKEY = $11
1150 RTCLOK = $12
1160 BUFRLO = $32    printer buffer address, moved from DCB ($0304-$0305)
1170 BUFRHI = $33    to zero page
1180 BFENLO = $34    save Y register, counts from 0 to ($0308)
1190 BFENHI = $35    BFENHI is used with CRETRY similar to BUFRLO for the
1200 CRETRY = $36    XE ram spooler buffer address.
1210 DRETRY = $37
1220 SOUNDR = $41
1230 CRITIC = $42
1240 ;
1250 ;Seite 2
1260 ;
1270 PDVMSK = $0247
1280 ;
1290 ;Seite 3  -  Der Device Control Block  (DCB)
1300 ;
1310 DDEVIC = $0300
1320 DUNIT = $0301
1330 DCOMND = $0302
1340 DBUFLO = $0304
1350 DBUFHI = $0305
1360 DBYTLO = $0308
1370 ;
1380 ;The Hardwareregister: The VIA from the Black Box
1390 ;
1400 CENTSTAT = $D170 R     Bit 4: BUSY (H), Bit 5: FAULT (L)
1410 CENTDATA = $D171 W     Dataoutput to Centronics-Inteface (inv)
1420 DDRB =  $D172   R-W   Data-direction-register. 0=Input, 1=Output=
.
1430 DDRA =  $D173   R-W   Data-direction-register. 0=Input, 1=Output=
.
1440 T1C_L = $D174   ;     R: Low counter  W: Low latch
1450 T1C_H = $D175   R-W   High counter
1460 T1L_L = $D176   R-W   Low latch
1470 T1H_L = $D177   R-W   High latch
1480 T2C_L = $D178   ;     R: Low counter  W: Low latch
1490 T2H_L = $D179   R-W   High counter
1500 SR  =   $D17A   R-W   shift register
1510 ACR =   $D17B   R-W   Auxiliary Control Register
1520 CENT_CLK = $D17C R-W  Peripheral Control Register (PCR)
1530 IFR =   $D17D   R-W   Interrupt Flag Register
1540 IER =   $D17E   R-W   Interrupt Enable Register
1550 DRA =   $D17F   R-W   Port A without Handshake
1560 ;
1570 ;Adresses of the Parallel Bus
1580 ;
1590 RAMPAGE = $D1BC R-W   Black Box. Pagenumber of the active RAM.
1600 PBIBANK = $D1FF R-W   Actual PDVS, but the BB uses it differently
1610 ;
1620 ;I-O groups
1630 ;
1640 AUDF4 = $D206   W     POKEY
1650 AUDC4 = $D207   W
1660 AUDCTL = $D208  W
1670 IRQST = $D20E   R
1680 IRQEN = $D20E   W
1690 SKCTL = $D20F   W
1700 PORTB = $D301   R-W   PIA
1710 WSYNC = $D40A   W     ANTIC
1720 ;
1730 ;End of system equates
1740 ;
1750 ;External reference equates
1760 ;
1770 BB_RAM = $D600  Banked Memory, $D600 - $D6FF.
1780 BB_03 = $D680
1790 BB_BADR = $D688
1800 BB_BSIZ = $D690
1810 BB_CFG1 = $D6ED ;only valid on page $F5 active
1820 BB_CFG2 = $D6ED ;only valid on page $F5 active
1830 BB_01   = $DA55
1840 BB_02   = $DE6F
1850 ;End of external references
1860     .PAGE "         The actual Programm"
1870     *=  $D800
1880 ;
1890     .WORD $734E ;Checksum
1900     .BYTE $00   ;Version Nr. 0
1910     .BYTE $80   ;ID 1 = 128
1920     .BYTE $00   ;Device Type
1930 PDIOV JMP IOV   ;$D84B
1940 PDIRQ JMP IRQV  ;$D84A
1950     .BYTE $91   ;ID 2 = 145
1960     .BYTE $00   ;Device name
1970 ;
1980     .WORD IRQV  ;OPEN     All entries into this Handler tables
1990     .WORD IRQV  ;CLOSE    point to RTS. They are apparently
2000     .WORD IRQV  ;GET      not used. That they appear here
2010     .WORD IRQV  ;PUT      is required by the Busdefinitions.
2020     .WORD IRQV  ;STATUS
2030     .WORD IRQV  ;SPECIAL
2040     JMP INIT    ;$D842
2050 ;
2060 SEL_ROM STX PBIBANK ;$D1FF Selectionregister
2070     RTS
2080 ;
2090     BRK
2100     CLC
2110     JMP BB_01   ;$DA55
2120 ;
2130     JMP BB_02   ;$DE6F
2140 ;
2150     SEC
2160     JSR $DA54
2170     LDX #$02
2180     BNE SEL_ROM always ->
2190 ;
2200 RAM_MISC PHA
2210     LDA #$FE
2220     BNE SEL_RAM
2230 RAM_MCFG PHA
2240     LDA #$F5
2250     BNE SEL_RAM
2260 RAM_NORM PHA
2270     LDA #$FF
2280 SEL_RAM STA RAMPAGE
2290     PLA
2300     RTS
2310 ;
2320 INIT LDA PDVMSK ;$0247
2330     ORA #$08
2340     STA PDVMSK  ;$0247
2350 IRQV RTS
2360 ;
2370 IOV JSR RAM_MCFG
2380     LDA BB_CFG1 Is printerport of BB switched on?
2390     AND #$20
2400     BEQ EXIT    No ->
2410     LDA DDEVIC  Should I speak to printer?
2420     CMP #$40
2430     BNE EXIT    No ->
2440     LDA BB_CFG1 All printernumbers active?
2450     AND #$08
2460     BNE IOV_1   Yes ->
2470     LDA BB_CFG1 No, only one between 0-7
2480     AND #$07
2490     CLC
2500     ADC #$01
2510     CMP DUNIT   Is this the one?
2520     BEQ IOV_1   Yes ->
2530 EXIT CLC
2540     JMP RAM_NORM
2550 ;
2560 IOV_1 LDA CENTSTAT Does the printer give an 'ERROR'?
2570     AND #$20
2580     BEQ EXIT    Yes ->
2590     LDA DBUFLO
2600     STA BUFRLO
2610     LDA DBUFHI
2620     STA BUFRHI
2630     LDA BRKKEY  Was BREAK pressed?
2640     BNE NOTBRK  No ->
2650     DEC BRKKEY  Erase
2660     BNE ERR_BRK Break abort ->
2670 ;
2680 NOTBRK LDA DCOMND Status Command?
2690     CMP #$53
2700     BNE WRITE   No ->
2710     LDY #$03
2720 :01 LDA PSTAT_TAB,Y
2730     STA (BUFRLO),Y
2740     DEY
2750     BPL :01     All 4 Bytes ->
2760 ;
2770 NO_ERR LDY #$01 Status ok
2780     .BYTE $2C
2790 ERR_NAK LDY #$8B
2800     .BYTE $2C
2810 ERR_WP LDY #$90
2820     .BYTE $2C
2830 ERR_BRK LDY #$80
2840 ;
2850     LDA SOUNDR  I-O Sound on?
2860     BEQ GO_EXIT No ->
2870     JSR RAM_MCFG
2880     LDA BB_CFG1 I-O Sound suppressed?
2890     BPL GO_EXIT Yes ->
2900     LDA #$00
2910     STA AUDF4
2920     STA AUDC4   Volume 0
2930 GO_EXIT SEC
2940     JMP RAM_NORM
2950 ;
2960 PSTAT_TAB .BYTE $80,$28,$1F,$00
2970 ;
2980 WRITE CMP #$57  Write Data?
2990     BNE ERR_NAK No. Then unknown command ->
3000     LDA SOUND
3010     BEQ WR_1    Non ->
3020     LDA BB_CFG1 I-O Sound allowed?
3030     BPL WR_1    No ->
3040     LDA #$03    Just the keyboard
3050     STA SKCTL
3060     LDA #$00    Base frequency 64 KHz
3070     STA AUDCTL
3080     LDA #$A4    Volume 4, pure Tone
3090     STA AUDC4
3100     LDA #$30    Pitch
3110     STA AUDF4
3120 WR_1 LDY A$00
3130 WR_2 LDA (BUFRLO),Y Read character from buffer
3140     CMP #$9B    Is it EOL
3150     BNE WR_3    No ->
3160     LDA A$0D    Send CR
3170     JSR WR_4
3180     BCS ERR_WP
3190     JSR RAM_MCFG
3200     LDA BB_CFG1 create linefeed?
3210     AND #$10
3220     BEQ WR_X    No ->
3230     LDA #$0A    Send LF
3240     JSR WR_4
3250     BCS ERR_WP
3260 WR_X JMP NO_ERR
3270 ;
3280 WR_3 STY BFENLO Y salvage
3290     JSR WR_4    output or buffer data
3300     BCS ERR_WP
3310     LDY BFENLO  Buffer end reached?
3320     INY
3330     CPY DBYTLO
3340     BCC WR_2    No ->
3350     BCS NO_ERR  Yes ->
3360 ;
3370 WR_4 EOR #$FF   Invert data
3380     TAX         into X-Register
3390     JSR RAM_MCFG
3400     LDA BB_CFG2 Is printer spooler allowed?
3410     BMI SPOOL_1
3420     JMP WR_5
3430 ;
3440 SPOOL_1 PHA
3970     ROR A
3980     LSR A
3990     STA BFENHI+1
4000     LDY DRETRY  bank number as index
4010     LDA PORTB
4020     PHA
4030     AND #$E3
4040     ORA XE_TAB,Y Read table value
4050     STA PORTB
4060     LDY BB_BADR
4070     TXA
4080     STA (BFENHI),Y Buffer dataword
4090     PLA
4100     STA PORTB
4110     JMP SPOOL_4 ;$D95A
4120 ;
4130 XE_TAB .BYTE $E3,$E7,$EB,$EF
4140 BB_TAB .BYTE $50,$73,$70,$6F
4150     .BYTE $6F,$6C,$65,$72
4160 ;
4170 CHK_RAM JSR RAM_MISC
4180     LDY #$07
4190 CHK_1 LDA BB_03,A,X ;$D680 are those 8 values still present?
4200     CMP BB_TAB,Y
4210     BNE RAM_INI ;$D9C5 Error ->
4220     DEY
4230     BPL CHK_1   ;$D9B9 Still OK, continue ->
4240     RTS
4250 ;
4260 RAM_INI SEI
4270     LDY #$07
4280 :02 LDA BB_TAB,Y Enter testvalues
4290     STA BB_03,Y ;$D680
4300     LDA #$00
4310     STA BB_BADR,Y Set Bufferstart to zero
4320     STA BB_BSIZ,Y Bufferlength also zero (no data in it yet)
4330     DEY
4340     BPL :02
4350     STA T1L_L   Timer 1 creates interrupt for spooler.
4360     STA T1C_L   He's loaded with the value $2800 = 10240.
4370     LDA #$28    Timer 1 devides the systemfrequency of 1.77 Mhz by
4380     STA T1H_L   this value, resulting in approx. 173 IRQs / second
4390     STA T1C_H   Which comes down to approx. 1400 Bd!!!
4400     LDA #$C0    Timer 1 Interrupt switched on.
4410     STA IER
4420     RTS
4430 ;
4440 WR_ERR SEC
4450     RTS
4460 ;
4470     EOR #$FF
4480     TAX
4490 WR_5 LDA #$FF
4500     STA DDRA    Port A all Bits as Output
4510     LDY #$08
4520     STY BFENHI+1
4530     STY BFENHI  ;$0035
4540     LDA IRQST   Was BREAK pressed?
4550     BMI WR_6    No ->
4560     LDA POKMSK  Yes, Reset
4570     STA IRQEN
4580     SEC
4590     RTS
4600 ;
4610 WR_6 LDA CENTSTAT Test printer 'ERROR'
4620     AND #$20
4630     BEQ WR_ERR  Error ->
4640     LDA CENTSTAT Test printer 'BUSY'
4650     AND #$10
4660     BEQ WR_7    Ready ->
4670 ;
4680     STA WSYNC   Timeout-Routine 8^3*145 + 8^3 + 8^2
4690     DEY         comes down to approx. 42 ms BUSY-Timeout?
4700     BNE WR_6
4710     DEC BFENHI+1
4720     BNE WR_6
4730     DEC BFENHI
4740     BNE WR_6
4750     BEQ WR_ERR
4760 ;
4770 WR_7 STX CENTDATA ;$D171
4780     LDX #$04    Wait atleast 2+(4x5)+2+2 = 26 cycles
4790 WR_8 DEX        This comes down, at 1.77 MHz to 26 x 0.56 = 14.6 us
4800     BPL WR_8    For the EPL-5200 0.5 us will do.
4810     LDA CENT_CLK 'STROBE' active LO
4820     AND #$DF    PCR sets CB2 to Low (% 110XXXXX)
4830     STA CENT_CLK
4840     LDX #$10    Wait 2+(16*5)+2+2 = 86 cycles = 48.6 us
4850 WR_9 DEX        For the EPL-5200 0.5 us will do.
4860     BPL WR_9    Wait ->
4870     ORA #$20    Reset 'STROBE'
4880     STA CENT_CLK  PCR sets CB2 to High (% 111X XXXX)
4890 WR_A LDA CENTSTAT printer 'ERROR'?
4900     AND #$20
4910     BEQ WR_ERR  Yes ->
4920     LDA CENTSTAT Printer 'BUSY'?
4930     AND #$10
4940     BNE WR_OK   No ->
4950     DEX
4960     BMI WR_A    Yes, test another 126 times, then ok.
4970 WR_OK CLC
4980     RTS
4990 ;
5000     .END


 

  • Like 2
Link to comment
Share on other sites

Hello Karl

 

The text looks familiar.  😃

 

Sincerely

 

Mathy

 

PS this text and a few others by Erhard/Atreju/FloppyDoc can also be found on my site.

 

Edited by Mathy
  • Like 1
Link to comment
Share on other sites

Quote

This article has been written for the ABBUC  magazine.  It  may  be  freely
distributed but not changed in any way without the authors consent.
(Translated by Mathy Van Nisselroy, December 19, 1994)

😷

Link to comment
Share on other sites

Interesting article I've been messing with printer emulation for a while lately and I got to admit printing on Atari 8-bit seems to be way too slow.

For example this (Print Shop) Banner probably took more than 10 minutes...

image.thumb.jpeg.b5b0c46e532fc4fca5e363cf517afeba.jpeg

image.thumb.jpeg.64f346c5e331da5a9632191f6b79dde3.jpeg

image.thumb.jpeg.479c9858676b86fd80149aecf1f192c0.jpeg

Link to comment
Share on other sites

Just to clear up some confusion I recently created printer software Bridge between classic computers and modern printers set up on Windows - Linux - MAC -  Raspberry Pi.

This of course needs Hardware or Altirra emulator set up with Network TCP printer.atdevice.

For setting up Altirra using Network TCP printer.atdevice please refer to this thread: Printing using Altirra?

Link to comment
Share on other sites

Print Shop is just ungodly slow on these banners.  It was on the Apple 2, and also on the Atari.  Had nothing to do with the printer speed either.  Even when I used my 64kB print buffer, dead slow.  Print Shop just took forever ti convert data to something the printer could use, and pipe it out.

  • Like 1
Link to comment
Share on other sites

8 hours ago, Chri O. said:

This of course needs Hardware or Altirra emulator set up with Network TCP printer.atdevice.

I have one of those old SIO to Centronics interface, a German made device something like a 72000 model

and used an Arduino to print files to text files on a PC, when I have time, will write a bit more code to

print directly to my modern printer.

Link to comment
Share on other sites

If print shop is too slow in software, output device won't do anything except if the Atari shuts down it's screen giving full processor use or the slow code is re-written/optimized or both.

It is possible a driver or such could be improved/made better as well.

1200XL users might be able to use the hot key to shut display down and see, and a patch to do the same on others using a key combo could be a helpful ticket to punch.

After some investigation it could be one the other or all.

Link to comment
Share on other sites

8 hours ago, kheller2 said:

Been a while since I printed something, but can you print to a disk file, and then print the file?  :)

 

Don't think it's possible without some type of software converter in between no modern printer will understand the language of these old printers.

For example the banner was printed on old Epson printer with ESC/P Commands which are obsolete with the exception of ESC/POS (point of sale) terminals (recipe printers).

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...