[comp.sys.atari.8bit] PD Runtime pack - Action!

curzon@kaoa01.dec.com (Richard Curzon TRS 5/2 DTN 640-2149) (05/26/88)

    Here is Jeff Reister's PD Runtime package for the Action! 8 bit language.
To use it in the simplest form, simply add to the beginning of your Action!
program the line 
         INCLUDE "D:RUNTIME.ACT"
and compile as normal.  If the compile is successful, the resulting file can be
run as a binary file (No Action! cartridge necessary).

     Additional programs not included here because they are binaries:

      RTSCAN.COM - run against your source file to produce a listing
                     showing which RUNTIME.ACT routines are actually required
                     by your program.  Allows you to trim out unneeded 
                     routines to save symbol table space, etc.
      RTWRITE.COM - If you send the output from RTSCAN.COM to a disk file,
                     you can then run RTWRITE on that file -- it in turn
                     outputs the trimmed down version of RUNTIME.ACT for
                     you.

     These should be available from any respectable Atari club library.  Of
course, you don't need them for most programs, just include the full
RUNTIME.ACT and don't get fancy.  The whole works is on the computer services
GEnie, Delphi, Compuserve. 



;--------------begin RUNTIME.ACT---------------



PROC _CPYPRM=*()
SET $4EE = _CPYPRM
[$85$A0$86$A1$84$A2$18$68$85$84$69$03
$A8$68$85$85$69$00$48$98$48$A0$01$B1
$84$85$82$C8$B1$84$85$83$C8$B1$84$A8
$B9$A0$00$91$82$88$10$F8$60]


PROC _CHGSGN=*()
[$85$C0$86$C1$38$A9$00$E5$C0$48$A9$00
$E5$C1$AA$68$60]


PROC _FIXSGN=*()
[$86$C2$E0$00$10$03$20 _CHGSGN $85$82
$86$83$A5$85$45$C2$85$C2$A6$85$10$09
$A5$84$20 _CHGSGN $85$84$86$85$60]


PROC _FIXRES=*()
[$A5$86$A6$87$A4$C2$10$03$4C _CHGSGN
$60]


PROC _MUL=*()
SET $4E8 = _MUL
[$20 _FIXSGN $A9$00$85$86$85$87$A5$82
$D0$04$A5$83$F0$22$A5$84$D0$04$A5$85
$F0$1A$46$85$66$84$90$0D$18$A5$86$65
$82$85$86$A5$87$65$83$85$87$06$82$26
$83$38$B0$D6$4C _FIXRES]


PROC _DIV=*()
SET $4EA = _DIV
[$20 _FIXSGN $A9$00$85$86$85$87$85$C1
$A9$01$85$C0$A5$82$D0$04$A5$83$F0$5F
$A5$84$D0$04$A5$85$F0$57$A5$82$C5$84
$A5$83$E5$85$90$0F$A5$C1$30$0B$06$84
$26$85$06$C0$26$C1$38$B0$E7$A5$C0$D0
$04$A5$C1$F0$36$A5$82$D0$04$A5$83$F0
$2E$A5$82$C5$84$A5$83$E5$85$90$19$38
$A5$82$E5$84$85$82$A5$83$E5$85$85$83
$A5$86$05$C0$85$86$A5$87$05$C1$85$87
$46$85$66$84$46$C1$66$C0$38$B0$C2$4C
_FIXRES]


PROC _MODOP=*()
SET $4EC = _MODOP
[$20 _DIV $A5$82$A6$83$60]


PROC _RSHOP=*()
SET $4E6 = _RSHOP
[$A4$84$F0$0A$86$86$46$86$6A$88$D0$FA
$A6$86$60]


PROC _LSHOP=*()
SET $4E4 = _LSHOP
[$A4$84$F0$0A$86$86$0A$26$86$88$D0$FA
$A6$86$60]


PROC _ERROU=*()
[$A9$70$AA$A9$0C$9D$42$03$20$56$E4$8A
$38$E9$10$D0$F1$6C$0A$00]

PROC _ERRVEC=*()
[_ERROU]

PROC _DEVIC=*()
[$00]

MODULE
CARD Error=_ERRVEC
BYTE device=_DEVIC



PROC _GOCIO=*()
[$20$56$E4$10$1A$C0$88$F0$06$68$68$98
$6C _ERRVEC $48$8A$48$4A$4A$4A$4A$AA
$A9$01$9D$C0$05$68$AA$68$60]


PROC _LODCHN=*()
[$C9$08$90$07$68$68$A9$86$6C _ERRVEC
$0A$0A$0A$0A$AA$60]


PROC _STONAM=*()
[$18$69$01$9D$44$03$98$69$00$9D$45$03
$60]


PROC _SHFTR=*()
[$48$8A$A8$68$AA$AD _DEVIC $60]


PROC _CLREOL=*()
[$48$A9$00$85$A5$68$60]


PROC _SETEOL=*()
[$48$A9$01$85$A5$68$60]


PROC _PRECON=*()
[$8A$48$98$AA$68$A0$03$84$A3$A0$FD$60]


PROC _DOPRNT=*()
[$86$A3$84$A4$20 _LODCHN $A9$00$9D$49
$03$A8$B1$A3$F0$1A$9D$48$03$18$A5$A3
$69$01$9D$44$03$A5$A4$69$00$9D$45$03
$A9$0B$9D$42$03$20 _GOCIO $A5$A5$F0
$12$A9$00$9D$48$03$9D$49$03$A9$0B$9D
$42$03$A9$9B$20 _GOCIO $60]


PROC StrC=*(CARD c, s)
[$85$D4$86$D5$84$A2$20$AA$D9$20$E6$D8
$A0$00$B1$F3$30$06$C8$91$A2$38$B0$F6
$29$7F$C8$91$A2$98$A0$00$91$A2$60]


PROC StrB=*(BYTE b CARD s)
[$84$A3$48$8A$A8$A2$00$68$4C StrC]


PROC StrI=*(INT i CARD s)
[$E0$00$30$03$4C StrC   $49$FF$85$A2
$8A$49$FF$AA$E6$A2$D0$01$E8$A5$A2$20
StrC $A0$00$18$B1$A2$69$01$91$A2$A8
$88$B1$A2$C8$91$A2$88$88$D0$F7$C8$A9
$2D$91$A2$60]


PROC _DOPRNC=*()
[$48$20 _PRECON $20 StrC $68$A2$FD$A0
$03$4C _DOPRNT]


PROC DOPRNI=*()
[$48$20 _PRECON $20 StrI $68$A2$FD$A0
$03$4C _DOPRNT]


PROC PrintCD=*(BYTE d CARD c)
[$20 _CLREOL $4C _DOPRNC]


PROC PrintC=*(CARD c)
[$20 _SHFTR $4C PrintCD]


PROC PrintCDE=*(BYTE d CARD c)
[$20 _SETEOL $4C _DOPRNC]


PROC PrintCE=*(CARD c)
[$20 _SHFTR $4C PrintCDE]


PROC PrintBD=*(BYTE d, b)
[$A0$00$4C PrintCD]


PROC PrintB=*(BYTE b)
[$20 _SHFTR $4C PrintBD]


PROC PrintBDE=*(BYTE d, b)
[$A0$00$4C PrintCDE]


PROC PrintBE=*(BYTE b)
[$20 _SHFTR $4C PrintBDE]


PROC PrintID=*(BYTE d INT i)
[$20 _CLREOL $4C _DOPRNI]


PROC PrintI=*(INT i)
[$20 _SHFTR $4C PrintID]


PROC PrintIDE=*(BYTE d INT i)
[$20 _SETEOL $4C _DOPRNI]


PROC PrintIE=*(INT i)
[$20 _SHFTR $4C PrintIDE]


PROC PrintD=*(BYTE d CARD s)
[$20 _CLREOL $4C _DOPRNT]


PROC Print=*(CARD s)
[$20 _SHFTR $4C PrintD]


PROC PrintDE=*(BYTE d CARD s)
[$20 _SETEOL $4C _DOPRNT]


PROC PrintE=*(CARD s)
[$20 _SHFTR $4C PrintDE]


PROC _HEXSTR=*()
[$85$84$86$85$A9$FD$85$A2$A9$03$85$A3
$A0$00$A9$05$91$A2$C8$A9$24$91$A2$A9
$00$A2$04$06$84$26$85$2A$CA$D0$F8$69
$30$C9$3A$90$02$69$06$C8$91$A2$C0$05
$D0$E5$60]


PROC PrintF=*(CARD s,a,b,c,d,e,f,g)
[$85$82$86$83$84$A2$AD _DEVIC $0A$0A
$0A$0A$85$C1$A0$00$84$87$84$C0$B1$82
$F0$4C$85$86$E6$C0$F0$46$A4$C0$C4$86
$F0$02$B0$3E$B1$82$C9$25$D0$3E$E6$C0
$C8$C4$86$F0$02$B0$35$B1$82$C9$25$F0
$2F$C9$45$F0$29$A8$A6$87$E0$0E$B0$D4
$B5$A2$48$B5$A3$E8$E8$86$87$AA$68$C0
$43$F0$15$C0$49$F0$34$C0$48$F0$3C$C0
$53$F0$3F$38$B0$1D$60$38$B0$B2$A9$9B
$A8$A6$C1$A9$00$9D$48$03$9D$49$03$A9
$0B$9D$42$03$98$20 _GOCIO $38$B0$E4
$A0$03$84$A3$A0$FD$20 StrC $38$B0$0F
$A0$03$84$A3$A0$FD$20 StrI $38$B0$03
$20 _HEXSTR $A9$FD$A2$03$85$84$86$85
$A6$C1$A9$00$9D$49$03$A8$B1$84$F0$B5
$9D$48$03$18$A5$84$69$01$9D$44$03$A5
$85$69$00$9D$45$03$A9$0B$9D$42$03$20
_GOCIO $38$B0$98]


PROC PutD=*(BYTE d, c)
[$86$A0$20 _LODCHN $A9$00$9D$48$03$9D
$49$03$A9$0B$9D$42$03$A5$A0$20 _GOCIO
$60]


PROC PutDE=*(BYTE d)
[$A2$9B$4C PutD]


PROC Put=*(BYTE c)
[$AA$AD _DEVIC $4C PutD]


PROC PutE=*()
[$A9$9B$4C Put]


BYTE FUNC ValB=*(CARD a)
CARD FUNC ValC=*(CARD a)
INT FUNC ValI=*(CARD a)
[$85$A2$86$A3$A9$00$85$A0$85$A1$85$A5
$A8$B1$A2$85$A4$C8$B1$A2$C9$20$F0$F9
$C9$2D$D0$0B$C6$A5$C8$C4$A4$F0$02$B0
$31$B1$A2$38$E9$30$90$2A$C9$0A$B0$26
$48$06$A0$26$A1$A5$A0$A6$A1$0A$26$A1
$0A$26$A1$18$65$A0$85$A0$8A$65$A1$85
$A1$18$68$65$A0$85$A0$90$CD$E6$A1$38
$B0$C8$A5$A5$F0$0D$38$A9$00$E5$A0$85
$A0$A9$00$E5$A1$85$A1$60]


PROC _DOINPT=*()
[$86$A4$84$A5$20 _LODCHN $18$A5$A4$69
$01$9D$44$03$A5$A5$69$00$9D$45$03$A5
$A3$F0$18$9D$48$03$A9$00$9D$49$03$A9
$05$9D$42$03$20 _GOCIO $BD$48$03$F0
$03$38$E9$01$A0$00$91$A4$A5$A6$F0$07
$A5$A4$A6$A5$4C ValC $60]


BYTE FUNC InputBD=*(BYTE d)
CARD FUNC InputCD=*(BYTE d)
INT FUNC InputID=*(BYTE d)
[$48$A9$78$85$A3$A9$01$85$A6$68$A2$FD
$A0$03$4C _DOINPT]


BYTE FUNC InputB=*()
CARD FUNC InputC=*()
INT FUNC InputI=*()
[$AD _DEVIC$4C InputCD]


PROC InputMD=*(BYTE d CARD s BYTE l)
[$48$A9$00$85$A6$68$4C _DOINPT]


PROC InputSD=*(BYTE d CARD s)
[$48$A9$FF$85$A3$68$4C InputMD]


PROC InputS=*(CARD s)
[$20 _SHFTR $4C InputSD]


CHAR FUNC GetD=*(BYTE d)
[$20 _LODCHN $A9$00$9D$48$03
$9D$49$03$A9$07$9D$42$03$20 _GOCIO
$85$A0$60]


PROC Open=*(BYTE d CARD s BYTE m, a)
[$86$A1$20 _LODCHN $A5$A1$20
 _STONAM $A5$A3$9D$4A$03$A5$A4$9D$4B
$03$A9$03$9D$42$03$20 _GOCIO $8A$4A
$4A$4A$4A$AA$A9$00$9D$C0$05$60]


PROC Close=*(BYTE d)
[$20 _LODCHN $A9$0C$9D$42$03$20
_GOCIO $60]


PROC XIO=*(BYTE d,z,c,a1,a2 CARD s)
[$20 _LODCHN $98$9D$42$03$A5$A3$9D$4A
$03$A5$A4$9D$4B$03$A5$A5$A4$A6$20
_STONAM $20 _GOCIO $60]


PROC Note=*(BYTE d CARD s, o)
[$86$A1$84$A2$20 _LODCHN $A9$26$9D$42
$03$20 _GOCIO $A0$00$BD$4C$03$91$A1
$BD$4E$03$91$A3$BD$4D$03$C8$91$A1$60]


PROC Point=*(BYTE d CARD s BYTE o)
[$86$A1$20 _LODCHN $A5$A1$9D$4C$03$98
$9D$4D$03$A5$A3$9D$4E$03$A9$25$9D$42
$03$20 _GOCIO $60]


PROC Graphics=*(BYTE m)
[$48$A2$60$A9$0C$9D$42$03$20$56$E4$68
$9D$4B$03$49$10$09$0C$9D$4A$03$A9$53
$85$A0$A9$3A$85$A1$A9$A0$9D$44$03$A9
$00$9D$45$03$A9$03$9D$42$03$20 _GOCIO
$60]


PROC SetColor=*(BYTE r, h, l)
[$C9$05$B0$13$85$A0$8A$0A$0A$0A$0A$85
$A1$98$29$0F$05$A1$A6$A0$9D$C4$02$60]


PROC Position=*(CARD x BYTE y)
[$85$55$86$56$84$54$60]


PROC Plot=*(CARD x BYTE y)
[$20 Position $A9$06$AE$FD$02$4C
PutD]


PROC DrawTo=*(CARD x BYTE y)
[$20 Position $A2$60$A9$11
$9D$42$03$AD$FB$02$8D$FD$02$20 _GOCIO
$60]


PROC Fill=*(CARD x BYTE y)
[$20 Position $A2$60$A9$12
$9D$42$03$AD$FB$02$8D$FD$02$20 _GOCIO
$60]


BYTE FUNC Locate=*(CARD x BYTE y)
[$20 Position $A9$06$4C GetD]


PROC Sound=*(BYTE c, p, d, v)
[$C9$04$B0$25$86$A1$0A$AA$A9$00$8D$08
$D2$A9$03$8D$0F$D2$A5$A3$29$0F$85$A3
$98$29$0E$0A$0A$0A$0A$05$A3$9D$01$D2
$A5$A1$9D$00$D2$60]


PROC SndRst=*()
[$A9$00$A2$07$9D$00$D2$CA$10$FA$60]


BYTE FUNC Paddle=*(BYTE p)
[$29$07$AA$BD$70$02$85$A0$60]


BYTE FUNC PTrig=*(BYTE p)
[$29$07$AA$BD$7C$02$85$A0$60]


BYTE FUNC Stick=*(BYTE p)
[$29$03$AA$BD$78$02$85$A0$60]


BYTE FUNC STrig=*(BYTE p)
[$29$03$AA$BD$84$02$85$A0$60]


INT FUNC SCompare=*(CARD s1, s2)
[$85$A4$86$A5$84$A2$A0$00$84$A0$84$A1
$B1$A4$85$A6$B1$A2$85$A7$C4$A6$F0$15
$C4$A7$F0$11$C8$B1$A4$D1$A2$F0$F1$90
$03$E6$A0$60$C6$A0$C6$A1$60$A5$A6$C5
$A7$F0$F9$B0$F0$90$F1]


PROC SCopy=*(CARD d, s)
[$85$A0$86$A1$84$A2$A0$00$B1$A2$A8$B1
$A2$91$A0$C0$00$F0$04$88$38$B0$F4$60]


PROC SCopyS=*(CARD d, s BYTE b, e)
[$85$A0$86$A1$84$A2$A0$00$84$A6$B1$A2
$C5$A5$B0$02$85$A5$A5$A4$F0$15$C5$A5
$F0$02$B0$0F$A4$A4$E6$A4$B1$A2$E6$A6
$A4$A6$91$A0$38$B0$E7$A5$A6$A0$00$91
$A0$60]


PROC SAssign=*(CARD d, s BYTE b, e)
[$85$A0$86$A1$84$A2$A5$A4$F0$3B$C5$A5
$F0$02$B0$35$85$A7$C6$A7$A0$00$84$A8
$B1$A0$85$A9$B1$A2$85$AA$A5$A7$C5$A5
$B0$15$A5$A8$C5$AA$B0$0F$E6$A8$A4$A8
$B1$A2$E6$A7$A4$A7$91$A0$38$B0$E5$A5
$A7$C5$A9$90$04$A0$00$91$A0$60]


BYTE FUNC Rand=*(BYTE r)
[$85$A2$C6$A2$A9$01$C5$A2$B0$05$38$2A
$38$B0$F7$85$A3$AD$0A$D2$25$A3$C5$A2
$F0$04$90$02$B0$F3$85$A0$60]


PROC Poke=*(CARD a BYTE v)
[$85$A0$86$A1$98$A0$00$91$A0$60]


PROC PokeC=*(CARD a, v)
[$20 Poke $C8$A5$A3$91$A0$60]


BYTE FUNC Peek=*(CARD a)
CARD FUNC PeekC=*(CARD a)
[$85$A2$86$A3$A0$00$B1$A2$85$A0$C8$B1
$A2$85$A1$60]


PROC SetBlock=*(CARD a, l, v)
[$85$A0$86$A1$84$A2$A0$00$A5$A2$D0$04
$A5$A3$F0$16$A5$A4$91$A0$C8$D0$02$E6
$A1$C6$A2$A5$A2$C9$FF$D0$E7$C6$A3$38
$B0$E2$60]


PROC Zero=*(CARD a, l)
[$48$A9$00$85$A4$68$4C SetBlock]


PROC MoveBlock=*(CARD d, s, l)
[$85$A0$86$A1$84$A2$A0$00$A5$A4$D0$04
$A5$A5$F0$18$B1$A2$91$A0$C8$D0$04$E6
$A1$E6$A3$C6$A4$A5$A4$C9$FF$D0$E5$C6
$A5$38$B0$E0$60]


MODULE


;-----------------end RUNTIME.ACT--------------


                                Richard Curzon
                                Digital Equipment of Canada

(DEC E-NET)	KAOA01::CURZON
(UUCP)		{decvax, ucbvax, allegra}!decwrl!kaoa01.dec.com!curzon
(ARPA)		curzon%kaoa01.DEC@decwrl.ARPA