williamm@tramp.Colorado.EDU (Michael Williams) (05/20/88)
Two problems, both dealing with communications/serial cards:
1) How do you use Apple's Serial Card, non-Super? If anybody has one of
these up and running with a modem/whatever, please talk to me. I at
first thought that my card was not working, so I borrowed another.
Neither it nor mine appear to send ANY characters at all to the external
Hayes modem to which it is connected, with only switch 3 set on (1200bps).
Any help at all tackling this would be appreciated.
2) Regarding 6502 code, specifically that which resides on the PROM of Apple's
1978 Communications card. Since this was produced so far back, it was
not set up to access an 80-colmn card, etc. Nor did it even allow lower-
case characters through without a conversion to upper case. Therefore,
I am trying to rewrite what I can such that it is compatible.
Right now I have eliminated the upper-case conversion (not at all
any problem), but am not sure about the input/output of the card. Here
is what is confusing me at the moment:
* various locations used:
CH EQU $24 ; <-- should this be replaced with OURCH ??
CSWL EQU $36
KSWL EQU $38
KSWH EQU $39
BASL EQU $28
COUT EQU $FDED
COUT1 EQU $FDF0
KEYIN EQU $FD1B
KEYINS EQU $FD18
KEYIN3 EQU $FD26
0000 START ; Branches elsewhere, where everything is
initialized (including the SEI) and then
jumps to the label TEST
0005 SOENTR ... ; Serial Out routine Entry (See TEST ?)
0007 SIENTR ... ; Serial In routine Entry ( " " ?)
:
000F SEI ; Disable Interrupts <--- Do I really want this ???
:
004C TEST LDA KSWL ; Determine if entered from KEYIN
004E BNE OUT
0050 CPY KSWH
0052 BNE OUT ; If not, goto OUT
0054 LDA #7 ; If KEYIN then set serial
0056 STA KSWL ; input entry and goto SERIAL IN
0058 BVC NOAC ; (V clear if came from START, initial entry)
(NOAC is a Serial In check, to which SIENTR)
(eventually goes)
005A OUT LDA #5 ; If entered from COUT
005C STA CSWL ; set serial output entry and
005E SEROUT ... ; Code for the Serial Out
:
Problems:
(a) At 000F, should the Interrupts be disabled? Is it the
responsibility of the software to re-enable them?
(b) Within TEST, It appears that the input entry is rehooked to --07, which
is SERIN, by modifying KSWL (Keyboard Switch). But wouldn't KSWH need
to be modified to $CN (N is the slot number)? Else, the input will
simply be rehooked to a routine at $0007, not $CN07.
(c) Same for the output rehook. CSWL is modified to --07, which would set
the rehook to SEROUT *if* CSWH were modified to $CN as well.
From the SEROUT and SERIN routines are called COUT1 and KEYIN, which will,
I believe, make a connection to the standard 40-colmn routines.
These will need to be modified as well, but for now I am simply trying to
understand the rehooking of the input and output.
--> If ANYBODY has ever worked with rehooking the I/O, maybe you can help me
with this. ESPECIALLY if you have ever setup a system for 80-colmn, but
at this point not even that is necessary.
Eternal thanks to any help,
Remo
------------------------------------------------------------------------------
..{nbires,ncar,seismo,ihnp4}!boulder!tramp!williamm \ Bela Lugosi riding the
BIT: WILLIAMS_MS%CUBLDR@VAXF.COLORADO.EDU / Kundalini Express in ...
SNAIL: 2905 E Aurora Ave #129, Boulder CO 80303 \ (could it be?) Sunshine!tsouth@pro-pac.cts.COM (Todd South) (05/22/88)
In Article: <6141@sigi.Colorado.EDU> williamm@tramp (Michael Williams) writes: > : > 000F SEI ; Disable Interrupts <--- Do I really want this ??? > : > 004C TEST LDA KSWL ; Determine if entered from KEYIN > 004E BNE OUT > 0050 CPY KSWH > 0052 BNE OUT ; If not, goto OUT > 0054 LDA #7 ; If KEYIN then set serial > 0056 STA KSWL ; input entry and goto SERIAL IN > 0058 BVC NOAC ; (V clear if came from START, initial entry) > (NOAC is a Serial In check, to which SIENTR) > (eventually goes) > 005A OUT LDA #5 ; If entered from COUT > 005C STA CSWL ; set serial output entry and > 005E SEROUT ... ; Code for the Serial Out > : > > Problems: > (a) At 000F, should the Interrupts be disabled? Is it the > responsibility of the software to re-enable them? Yes and No, it all depends on what you are trying to do with the code. If you are going to make it so that it runs on something like *ONLY* a 300 baud modem then even though protocol says you need to handle interrupts, I doubt that you will seriously have to worry here. But, believe me! If you are going to use ProDOS it would be adviseable to include interrupt handling. Also, make sure that you only turn off interrupts for the SHORTEST TIME POSSIBLE!!! The only time in your code that you need to disable the inter- rupts is when you ACTUALLY read in the character. If you turn it off for long periods (as you apparently have in the above code) you will start losing data on a regular basis. This is why circular buffers are real popular ways of getting modem input, mate! > (b) Within TEST, It appears that the input entry is rehooked to --07, which > is SERIN, by modifying KSWL (Keyboard Switch). But wouldn't KSWH need > to be modified to $CN (N is the slot number)? Else, the input will > simply be rehooked to a routine at $0007, not $CN07. Huh? Where'd you get that? You need to realize (I think) that the code you are writing is intended to replace the ROM code. This means that it will already have setup the KSWL/H and CSWL/H when it is initialized, if you follow old and accepted techniques. If these vectors are setup, you can only access the slotROM areas which are kicked in when the card is initialized. This means that the $Cn number will not change as long as that is the active card. > (c) Same for the output rehook. CSWL is modified to --07, which would set > the rehook to SEROUT *if* CSWH were modified to $CN as well. > > From the SEROUT and SERIN routines are called COUT1 and KEYIN, which will, > I believe, make a connection to the standard 40-colmn routines. > These will need to be modified as well, but for now I am simply trying to > understand the rehooking of the input and output. Read above... > > --> If ANYBODY has ever worked with rehooking the I/O, maybe you can help me > with this. ESPECIALLY if you have ever setup a system for 80-colmn, but > at this point not even that is necessary. What you need (I hate to say it) is a copy of the Super Serial Card manual. It is damn worth the price of the card, as the *fully* commented ROM source listing will teach you much! It shows some really neat tricks for chaining the 80-column firmware, and allows you to chain into non-standard 80-col's also. > Eternal thanks to any help, > Remo Todd South -- UUCP: {nosc, ihnp4, cacilj, sdcsvax, hplabs!hp-sdd, sun!ihnp4} ...!crash!pnet01!pro-simasd!pro-pac!tsouth ARPA: crash!pnet01!pro-simasd!pro-pac!tsouth@nosc.MIL INET: tsouth@pro-pac.CTS.COM - BITNET: pro-pac.UUCP!tsouth@PSUVAX1