TIP: Click on subject to list as thread! ANSI
echo: apple
to: comp.sys.apple2
from: John B. Matthews
date: 2008-07-02 14:43:44
subject: Re: 80 Columns under cc65?

In article ,
 "Michael J. Mahon"  wrote:

> John B. Matthews wrote:
> > In article , ol.sc{at}web.de (Oliver Schmidt) 
> > wrote:
> > 
> > 
> >>>>How do I get an 80-column text mode on an Apple 2 under cc65?
> >>
> >>>It looks like the cc65 conio library goes to some lengths to avoid 
> >>>changing whatever your program loader sets.
> >>
> >>That's very true. And in fact it goes beyond that: In contrast to at
> >>least some other cc65 targets the Apple2 conio implementation allows
> >>you to mix stdio and conio. Additionally you can use the well-known
> >>Apple2 zero-page variables to restrict the output to a certain window
> >>both for stdio and conio.
> > 
> > 
> > Oliver: thanks for expanding on this. I'm still new to cc65:-)
> > 
> > 
> >>>         LDA MACHID
> >>>         AND #2
> >>>         BEQ NO80COL
> >>>         JSR $C300
> >>
> >>I've tried recently to do that from within a cc65 program via inline
> >>assembler but that mixed up something with ProDOS so file I/O didn't
> >>work anymore. I'll have to investigate but my current work life
> >>situation doesn't allow for that. So the current workaround is to set
> >>80-column mode before starting the cc65 program.
> > 
> > 
> > Oliver: the code above was from a ProDOS system program. A non-system 
> > cc65 program launched from the Basic prompt under ProDOS is running 
> > alongside BASIC.SYSTEM. It might be necessary to update the BASIC Global 
> > Page Default I/O vectors after initializing the card:
> > 
> > BE30:  VECTOUT   DW  COUT1       ;Current character output routine
> > BE32:  VECTIN    DW  CHIN1       ;Current character input routine
> > 
> > I'll have to learn enough inline assembler to try it myself, but 
> > experimenting from the Basic prompt seems to confirm this. I'm tempted 
> > to just try printing control-DPR#3.
> > 
> > Interestingly, not updating the vectors appears to turn on trace!
> > 
> > ]mtr
> > *c300g
> > *^c
> > ]10 ?"Hello"
> > ]run
> > #10 Hello
> > 
> > ProDOS is also disconnected, but call 976 ($3d0) restores normalcy.
> 
> BASIC.SYSTEM runs with "real" trace turned on all the time--that's
> how it gets control for continuous garbage collection.  So if you
> disconnect it without its cooperation, you'll see the trace output.

Michael: Thanks!

I'm thinking I can just jsr $c300 and copy the updated page zero vectors 
(36.39) to the Basic system page (be30.be33). To exit, I issue a 
control-U and restore the system page.

Alternatively, if the loader enables 80 columns, printing control-Q and 
control-R switch to 40- and 80-columns, respectively.

Thoughts?

-- 
John B. Matthews
trashgod at gmail dot com
home dot woh dot rr dot com slash jbmatthews
--- SBBSecho 2.12-Win32
* Origin: Derby City BBS - Louisville, KY - derbycitybbs.com (1:2320/100)
SEEN-BY: 10/1 3 34/999 106/1 120/228 123/500 140/1 222/2 226/0 236/150 249/303
SEEN-BY: 250/306 261/20 38 100 1404 1406 1410 1418 266/1413 280/1027 320/119
SEEN-BY: 393/11 396/45 633/260 267 712/848 800/432 801/161 189 2222/700
SEEN-BY: 2320/100 105 200 2905/0
@PATH: 2320/100 261/38 633/260 267

SOURCE: echomail via fidonet.ozzmosis.com

Email questions or comments to sysop@ipingthereforeiam.com
All parts of this website painstakingly hand-crafted in the U.S.A.!
IPTIA BBS/MUD/Terminal/Game Server List, © 2025 IPTIA Consulting™.