josh@unm-cvax.UUCP (06/20/84)
How can you get the system let you write to the language card? I want to use it for a program and all I can manage to do is to load int basic into it(not what I want!). Another question comes to mind . . . How to you get the apple tool kit to assemble code into relocatable code? P.S. I have a ][e . thanks for all help. Josh Siegel {convex,ucbvax,gatech,csu-cs,anl-mcs,lanl-a}!unmvax!unm-cvax!josh
glen@intelca.UUCP (Glen Shires) (06/21/84)
There are a few I/O locations (address $C???) that control the language
cards (write-protect/enable, read RAM/ROM)
They are listed in the documentation you should have received with the
card.
If you can't find them, I can look them up.
--
^ ^ Glen Shires, Intel, Santa Clara, Ca.
O O Usenet: {ucbvax!amd70,pur-ee,hplabs}!intelca!glen
> ARPA: "amd70!intelca!glen"@BERKELEY
\-/ --- stay mellow
clt@pur-phy.UUCP (Carrick Talmadge) (06/25/84)
[Take that, you filthy line eater!] This is a bit long, but I thought it might be of general interest... >How can you get the system let you write to the language card? > >I want to use it for a program and all I can manage to do is to load > int basic into it(not what I want!). Hopefully, the following will answer your questions: Memory Organization ------------------- The Ramcard has 16K of memory, but has an address space allowed for it (forgetting for the momment $C080-$C08F) of $D000-$FFFF, or 12K. To "fit" the entire ram address space into this area, two 4K segments of memory share the space from $D000-$DFFF. When you select either bank one or bank two, you automatically select one of the two 4K segments plus the other 8K from $E000-$FFFF. The figure below illustrates this. _________________ $FFFF | | | | | | | | |_______________| $F000 | | | | | | | | ________|_______________|________ $E000 | | | | | | | BANK 1 | BANK 2 | | | | |_______________|_______________| $D000 Ram Selection/Deselection ------------------------- ADDRESS Action $C080 Read-Deselect Ram(Enable Rom). Write protect Ram $C081 Read-Deselect Ram. Two sucessive Reads write enables Ram. $C082 Read-Deselect Ram(Enable Rom). Write protect Ram $C083 Read-Select Ram. Two sucessive Reads write enables Ram. $C084 (Decodes same as $C080). $C085 (Decodes same as $C081) $C086 (Decodes same as $C082). $C087 (Decodes same as $C083) $C088-$C08F Same action as (ADDRESS-8), except selects/deselects Bank 1 of Ram. Example: ; ; RAMSET ; Sets up ram card for usage. Note that it doesn't ; copy Basic Rom (excepting enough Rom for Hires graphics ; routines). ; RAMSET LDA $C081 LDA $C081 Enable Ramcard for writing ; ; Next a macro to move from,to,length ; This copies the Rom from $F300-$FFFF to ram ; MOV $F300,$F300,$D00 LDA $C083 LDA $C083 Finally fully enable second Bank of Ram ; (Read enable as well as write enable). -------------------- Source: What's Where in the Apple by W.F. Luebbert (Micro Ink) Notice than you should use reads, rather than writes, as the latter will give unpredictable results (a write will select a memory location twice, but in rapid sucession, so that the ramcard will notice two address selections only part of the time). Hope this helps some. Carrick Talmadge UUCP: {decvax,ucbvax,harpo,allegra,inuxc,seismo,teklabs}!pur-ee!Physics:clt INTERNET: clt @ pur-phy.UUCP
coller@utah-cs.UUCP (Lee D. Coller) (06/28/84)
<> One other thing regarding reading and writing language cards. If one writes to an address between $D000 and $FFFF, and the card has not been selected (and has not been write protected), the write is still done on the language card. Of course, to read the card one has to select it. This is out of the Language Card Reference Manual that came with my card (I bought it in 1981). Lee Coller UUCP: harpo!utah-cs!coller ARPA: coller@utah-cs.ARPA
ags@pucc-i (Seaman) (07/03/84)
> If one writes to an address between $D000 and $FFFF, and the card has not > been selected (and has not been write protected), the write is still done > on the language card. Of course, to read the card one has to select it. This is the basis for an easy way to copy the F8 ROM into RAM (I'll just do one byte): LDA $C081 ;Enable ROM read LDA $C081 ; and RAM write (must do it twice) LDA $FFFF ;this fetches from ROM STA $FFFF ;this stores in RAM Voila! Write-only memory! An even easier way on the //e is to call the routine COPYROM at $CF78. Notice that there is no language card on a //e. The upper 16K is simply called "bank-switched memory," a curious term since ALL the memory on a 128K //e is bank-switched. -- Dave Seaman "My hovercraft is full of eels." ..!pur-ee!pucc-i:ags