ACA1233n.library
From IndividualComputers
Contents |
ACA1233_DisableC0Mem
NAME
ACA1233_DisableC0Mem() - turn off 1 MB of memory starting at 0xC00000
SYNOPSIS
ACA1233_DisableC0Mem();
void ACA1233_DisableC0Mem(void);
FUNCTION
Turns off the memory region 0x0c00000 to 0x0cfffff, also known as "Slow RAM" to maximize compatibility with old software or DMA devices which use the lower 16M address space (like A2091 or GVP controllers).
INPUTS
none
RESULT
success - TRUE, if the card accepts the setting, otherwise FALSE.
EXAMPLE
Printf("Turbocard's processor will be disabled in 10 seconds -"); Printf("Finish all disk activity NOW!\n");
Delay(500);
ACA1233_DisableC0Mem();
NOTES
Calling this function will also cause an immediate reboot. Warn the user! And well, the "0" in "C0" is a zero. ;-)
BUGS
None known
ACA1233_GetCurrentSpeed
NAME
ACA1233_GetCurrentSpeed -- determine the current speed values of the card
SYNOPSIS
speedinfo = GetCurrentSpeed() D0
struct ACA1233ClockInfo *ACA1233_GetCurrentSpeed(void);
FUNCTION
Read current speed setting of the card. Returns a pointer to an internal library structure. Both actual clock value (STRPTR) and speed stepping (UWORD) will be returned. *
INPUTS
none
RESULT
speedinfo - pointer to struct ACA1233ClockInfo (see ACA1233n.h) or NULL
EXAMPLE
struct ACA1233ClockInfo *ACASpeed = NULL:
ACASpeed = ACA1233_GetCurrentSpeed();
Printf("My current speed stepping is %ld (%s)", ACASpeed->ci_CPUSpeedStep, ACASpeed->ci_CPUClock);
NOTES
Any task accessing the library may call SetSpeed(), so always call GetCurrentSpeed() right before you process the ClockInfo values. This function is a shortcut; you could also obtain the speed values via ACA1233_GetStatus. If the 68030 of the card has been deactivated, the function will always return the clock speed of the host machine's CPU and either a speed stepping of 0 or that of the ACA500+ (if attached, see ACA500+ documentation for further information).
BUGS
None known
SEE ALSO
ACA1233_GetMaxSpeed(), ACA1233_SetSpeed(), ACA1233_GetStatus, libraries/ACA1233n.h
ACA1233_GetMaxSpeed
NAME
ACA1233_GetMaxSpeed() - determine the maximum speed of the card
SYNOPSIS
speedinfo = GetMaxSpeed(); D0
struct ClockInfo *GetMaxSpeed(void);
FUNCTION
Read maximum speed setting of the card. Returns a pointer to an internal library structure. Both actual clock value (STRPTR) and speed stepping (UWORD) will be returned.
INPUTS
none
RESULT
speedinfo - pointer to struct ACA1233ClockInfo (see ACA1233n.h) or NULL
EXAMPLE
struct ACA1233ClockInfo *ACAMaxSpeed = NULL:
ACAMaxSpeed = ACA1233_GetMaxSpeed();
Printf("My maximum speed stepping is %ld (%s)", ACAMaxSpeed->ci_CPUSpeedStep, ACAMaxSpeed->ci_CPUClock);
NOTES
The maximum speed is determined by the CPU of the ACA1233n, regardless if it's currently active or not. This function is a shortcut; you could also obtain the maximum speed values via ACA1233_GetStatus.
BUGS
None known
SEE ALSO
ACA1233_GetCurrentSpeed(), ACA1233_SetSpeed(), ACA1233_GetStatus() libraries/ACA1233n.h
ACA1233_GetStatus
NAME
ACA1233_GetStatus() - return info about the card's settings
SYNOPSIS
status = ACA1233_GetStatus(); D0
struct ACA1233Info *ACA1233_GetStatus(void);
FUNCTION
Reads settings of the card and returns a pointer to an internal library structure.
INPUTS
none
RESULT
status - pointer to struct ACA1233Info (see ACA1233n.h) or NULL
EXAMPLE
struct ACA1233Info *ACAInfo = NULL:
ACAInfo = ACA1233_GetStatus();
Printf("MapROM is currently %s\n", ACAInfo->ai_MapROMStatus ? "enabled" : "not enabled");
NOTES
None
BUGS
None known
SEE ALSO
libraries/ACA1233n.h
ACA1233_MapROM
NAME
ACA1233_MapROM() - Maps/unmaps Kickstart ROM to/from FastRAM
SYNOPSIS
success = ACA1233_MapROM(fh); D0
BOOL ACA1233_MapROM(BPTR);
FUNCTION
Maps Kickstart ROM to the contents of a file which will be copied to FastRAM beforehand.Supply AR_MAPINT as argument to use the internal physical Kickstart ROM as the source or supply AR_MAPREMOVE to deactivate the MapROM feature.
INPUTS
none
RESULT
success - TRUE, if the card accepts the setting, otherwise FALSE.
EXAMPLE
BOOL success = FALSE; BPTR fh; ...
success = ACA1233_MapROM(fh);
if (success) { Printf("Contents of the file have been mapped as Kickstart ROM\n"); }
NOTES
V1.0 of the lib contains an incomplete implementation and handles only mapping of the machine's internal ROM. Thus any argument will be overwritten by AR_MAPINT.
BUGS
Mapping the ROM while the card's CPU is not active is currently not supported. You must map the ROM in 030 mode and then switch off the CPU.
SEE ALSO
libraries/ACA1233n.h
ACA1233_NoMemcard
NAME
ACA1233_NoMemcard() - completely disables all FastMemory of the card
SYNOPSIS
success = ACA1233_NoMemcard(); D0
BOOL ACA1233_NoMemcard(void);
FUNCTION
Switch off all Fast Memory of the turbocard. Will result in the ACA1233n being completely disabled if followed by a call to ACA1233_CPUSwitch.
INPUTS
none
RESULT
success - TRUE, if the card accepts the setting, otherwise FALSE.
EXAMPLE
BOOL success = FALSE;
success = ACA1233_NoMemcard();
if (success) { Printf("FastMem will be gone after the next reboot...\n"); }
BUGS
This feature is broken in the firmware of the first batch of cards delivered in July 2016, unfortunately. You must therefore check for the return value and display a proper message to the user. The cards' firmware will be updated by IComp at customer's request.
ACA1233_SetSpeed
NAME
ACA1233_SetSpeed - changes the current speed setting of the card
SYNOPSIS
Success = ACA1233_SetSpeed(speedStepping); D0 D0
BOOL ACA1233_SetSpeed(UBYTE);
FUNCTION
Change the current speed setting of the card to the supplied stepping. The setting is in effect until the next flip of the power switch.
INPUTS
speedStepping - binary value, the ACA1233n supports (depending on the fitted CPU) stepping 0-3, which correspond to the following clock values:
0: 13.33 MHz 1: 16.00 MHz 2: 20.00 MHz 3: 26.67 MHz 4: 40.00 MHz
RESULT
success - TRUE, if the card accepts the setting, otherwise FALSE. You may verify this by calling ACA1233_GetCurrentSpeed(), but only in 68030 mode, since it will return the host machine's secondary CPU's speed while the ACA1233n's CPU is deactivated. (Lots of genitive forms over here...)
EXAMPLE
BOOL success = FALSE; UBYTE mySpeed = 2;
success = ACA1233_SetSpeed(mySpeed);
if (success) { Printf("My speed stepping has been set to %ld\n", mySpeed); }
NOTES
The maximum speed available is determined by CPU fitted to the card. This function will always return FALSE while the CPU of the card is deactivated.
You may call the function anytime without the need to disable multitasking. Other tasks (e.g. formatting disks, etc.) will not be disturbed.
BUGS
Well, it's technically possible to "preprogram" the speed of the card while the card's CPU is switched off. But since that does not make much sense, it has not been implemented.
SEE ALSO
ACA1233_GetCurrentSpeed(), ACA1233_GetMaxSpeed(), libraries/ACA1233n.h
ACA1233_SetWaitstates
NAME
ACA1233_SetWaitstates() - sets the number of write waitstates
SYNOPSIS
success = ACA1233_SetWaitstates(waitstates); D0 D0
BOOL ACA1233_SetWaitstates(UBYTE);
FUNCTION
The SD-RAM controller of the ACA1233n can be configured to operate with 0-waitstate or with 1-waitstate. Write performance is significantly higher with 0-waitstate, but timing is very tight and might get instable if an FPU is installed, the power supply is not absolutely stable or environmental conditions are difficult for the card (e.g. excessive heat). Timing on power-up will be set to 0-waitstate if there is no FPU installed, and it will be set to 1-waitstate if an FPU is installed. This function allows to control this behaviour manually - valid values for "waitstates" are AW_NOWAITSTATE and AW_WAITSTATE.
INPUTS
none
RESULT
success - TRUE, if the card accepts the setting, otherwise FALSE.
EXAMPLE
BOOL success = FALSE;
success = ACA1233_SetWaitstates(0);
if (success) { Printf("No more waitstates for writes!\n"); }
NOTES
This function can used at any time, regardless of FPU presence. The effect is instant.
BUGS
None known
ACA1233_SwitchCPU
NAME
ACA1233_SwitchCPU() - disable or (re-)enable the card's CPU
SYNOPSIS
ACA1233_SwitchCPU();
void ACA1233_SwitchCPU(void);
FUNCTION
Disable/enable the card's processor and thus - depending on whether your machine is an A1200 or A500 - switch to either the internal 68EC020 of the A1200 or the 68000 of the ACA500(+). If the 68030 has already been switched off, calling the function again will turn it back on again.
INPUTS
none
RESULT
none - see notes below
EXAMPLE
Printf("Turbocard's processor will be disabled in 10 seconds -"); Printf("Finish all disk activity NOW!\n");
Delay(500);
ACA1233_SwitchCPU();
NOTES
Calling this function will also cause an immediate reboot. Warn the user! "Did you try turning it off and back on again?"
BUGS
none known