This page (revision-9) was last changed on 03-Feb-2023 15:21 by Gromit 

This page was created on 27-Aug-2010 22:53 by Florian Dingler

Only authorized users are allowed to rename pages.

Only authorized users are allowed to delete pages.

Page revision history

Version Date Modified Size Author Changes ... Change note
9 03-Feb-2023 15:21 31 KB Gromit to previous
8 17-May-2011 13:30 30 KB Gromit to previous | to last
7 17-May-2011 12:34 30 KB Gromit to previous | to last
6 28-Aug-2010 12:51 30 KB Florian Dingler to previous | to last
5 28-Aug-2010 12:44 19 KB Florian Dingler to previous | to last
4 28-Aug-2010 12:43 19 KB Florian Dingler to previous | to last
3 27-Aug-2010 23:01 13 KB Florian Dingler to previous | to last
2 27-Aug-2010 22:58 13 KB Florian Dingler to previous | to last
1 27-Aug-2010 22:53 13 KB Florian Dingler to last

Page References

Incoming links Outgoing links

Version management

Difference between version and

At line 427 added 173 lines
!!BUGS IN THE ACTION! RUNTIME LIBRARY
We have found a few bugs in the original version(s) of the RunTime Library Disk. Fortunately, they are all easy to fix. (The RunTime library is independent of the cartridge, so bugs affect all versions.)
In the fixes given below, the portion to be changed (to implement the fix) is underlined. The rest of the line remains the same. To make the fixes, simply load the library file containing the affected PROCedure, edit, and save it back to disk.
!1. Hex numbers are printed incorrectly by PrintH and the %H parameter of PrintF.
Fix: Change second line of CCIO:
{{{
PROC CCIO=*()
[$A386$A0A$A0A$AA$A3A5$9D$342 ...
--- ---
}}}
!2. PrintBDE can cause a spurious compile time error.
Fix: Change first line of PrintBDE:
{{{
PROC PrintBDE =*(BYTE d,n)[$A0$0]
}}}
--
!3. A minor error exists in ChkErr.
Fix: Change second line of ChkErr:
{{{
PROC ChkErr=*(BYTE r,b,eC)
[$1610$88C0$8F0
$98$80C0$12F0 ...
---
}}}
!4. If your program redefines a library procedure (e.g., one which declares its own version of PROC Graphics), it will compile with no errors using the cartridge only (because declared procedures take precedence over built-in ones). However, since th (text ends in original File)
!!PROBLEMS WITH PAD
We will list the problems (and solutions) regarding the Programmer's Aid Disk here in reasonably compact form.
!1. BGET/BPUT PROBLEMS
The BGet and BPut routines in the IO.ACT file do not work properly under certain conditions. To fix this bug, replace the BGet and BPut routines with the following ACTION! code:
{{{
;********************************
;Burst (Block) I/O routines to do
;quick disk I/O, utilizing a call
;to CIO
;********************************
PROC CIO=$E456( BYTE areg, xreg )
;********************************
CARD FUNC Burst( BYTE chan, mode,
CARD addr, buflen )
TYPE IOCB=[BYTE id,num,cmd,stat
CARD badr,padr,blen
BYTE a1,a2,a3,
a4,a5,a6]
IOCB POINTER iptr
chan ==& $07
iptr = $340+(chan LSH 4)
iptr.cmd = mode
iptr.blen = buflen
iptr.badr = addr
CIO( 0, chan LSH 4 )
RETURN( iptr.blen )
;********************************
CARD FUNC BGet( BYTE chan,
CARD addr, len )
CARD temp
temp = Burst(chan,7,addr,len)
RETURN( temp )
;********************************
PROC BPut(BYTE chan,
CARD addr,len)
Burst( chan, 11, addr, len )
RETURN
}}}
!2. PRINTF
The PRINTF routine has a bug which was reported and fixed in the Spring, 1984 newsletter. In the file PRINTF.ACT, use the ACTION! editor to find
{{{
args ==+ s
}}}
and change it to
{{{
args ==+ 2
}}}
!3. PLAYER/MISSILE GRAPHICS
Because S: uses some memory just below the display list (undocumented), our method of finding the base address for Player/Missile Graphics needs a slight revision. Use the ACTION! editor with the file PMG.ACT to find
{{{
PM_BaseAdr=(HiMem-
PM_MemSize(mode))
&PM_AdrMask(mode)
}}}
and change it to
{{{
PM_BaseAdr=(HiMem-
PM_MemSize(mode)-$80)
&PM_AdrMask(mode)
}}}
!4. PMMove
If you use the PMMove procedure and specify a vertical movement of zero, the horizontal movement does not take place (it should). To fix this, change the lines in PMG.ACT which read
{{{
IF deltay=0 THEN
RETURN ; do nothing
FI
}}}
to the following:
{{{
IF deltay=0 THEN
; do horizontal anyway
PMHpos(n)=x
RETURN
FI
}}}
!5. PLAYER/MISSILE GRAPHICS
The documentation for PMG.ACT states that you may read the contents of PMHpos to find the horizontal position of a player or missile. This is simply not true. PMHpos is a set of write-only hardware registers. (Note that in the ToolKit we have added a shadow array and changed the name of the hardware registers, so this works correctly. If you wish, you could consider doing something similar on your PAD.)
!6. REAL NUMBER ROUTINES
There are two discrepancies in PROCedure names in the REAL.ACT library as compared to the REAL.DOC documentation, as follow:
||Name in .DOC||Name in .ACT
|StrR|RealToStr
|ValR|StrToReal
We suggest that you change the source code in REAL.ACT to reflect the names given in the documentation (rather than vice versa), since this makes the names appear compatibile with the library's other number-string conversion routines.
!7. REAL NUMBER ROUTINES
In that same area, the routine RealToStr (or should that be StrR?) needs to change the line which reads ptr=LBuff to the following:
{{{
ptr=InBuff
}}}
!8. ALLOC.ACT
The free list pointer may not be set up properly. Also, when freeing a block, right adjacency is not handled properly if left adjacency has already been found. Fix these problems as follows:
In the PROCedure Free, after the line reading:
{{{
last.size==+nBytes
}}}
insert the line:
{{{
target=last
}}}
Also, in the same procedure, change the line reading:
{{{
IF target+nBytes=current THEN
}}}
to read:
{{{
IF target+target.size
=current THEN
}}}
In the PROCedure AllocInit, replace the line reading:
{{{
FreeList.next=p
}}}
with the following lines:
{{{
FreeList=p
p==+4
FreeList.next=p
}}}