General Information \\ Author: Carsten Strotmann & Matthias Drees \\ Language: ACTION! \\ Compiler/Interpreter: ACTION! \\ Published: 19.02.90 \\ {{{ ;******************************** ;** ** ;** Phoenix SoftCrew ACTION! ** ;** Programme und Tips f. 8Bit ** ;** ** ;** Carsten Strotmann ** ;** ** ;******************************** ; Programmname:BLOAD ; Programmierer:CARSTEN STROTMANN/MATTHIAS DREES ; Filename:BLOAD.ACT ; first Version:19.02.90 ; last Aenderung:19.02.90 ; load COMFILES ; Comment:MC-CODE ; ; PROC Bload =$0600 () PROC Bload_Init () BYTE ARRAY mc ($8C)=[ $4C $3D $06 $A0 $F0 $A2 $06 $8C $54 $03 $8E $55 $03 $A8 $A2 00 $8C $58 $03 $8E $59 $03 $A9 $07 $8D $52 $03 $A2 $10 $4C $56 $E4 $38 $ED $F2 $06 $A8 $8A $ED $F3 $06 $AA $C8 $D0 $01 $E8 $AD $F2 $06 $8D $54 $03 $AD $F3 $06 $8D $55 $03 $4C $10 $06 $A9 $00 $8D $F2 $06 $8D $F3 $06 $AD $44 $03 $C9 $E2 $D0 $07 $AD $45 $03 $C9 $02 $F0 $34 $A9 $02 $20 $03 $06 $30 $2D $A9 $FF $CD $F0 $06 $D0 $05 $CD $F1 $06 $F0 $DF $AD $F0 $06 $AE $F1 $06 $8D $F2 $06 $8E $F3 $06 $A9 $02 $20 $03 $06 $30 $0E $AD $F0 $06 $AE $F1 $06 $20 $20 $06 $10 $C1 $6C $E0 $02 $6C $E2 $02 $60 $00] MoveBlock ($0600,mc,$8A) RETURN }}} 1.1 Another Version {{{ ; This fragment loads an Action! ; program and executes it ; (thru INITAD). This fragment can be ; easily modified to support any type ; of binary load file by checking the ; status of INITAD and RUNAD after ; each block of code has been loaded. ; If you want this fragment to remain ; resident, you must compile to a ; specific location (outside your own ; program, obviously) using either the ; SET $E/SET $491 method or using ; SET $B5 to set a compilation offset ; (Note: due to a bug in the Action! ; compiler offset routine, you can ; only specify a positive offset) ; Once the program is compiled, type: ; ?Load ; from the monitor to obtain the ; runtime address. In your own source ; that calls Load, you must insert the ; following line before its use: ; PROC Load=$xxxx(CHAR ARRAY str) ; where "$xxxx" is the address you ; found above, and where the CHAR ; ARRAY "str" is the complete filespec ; of the program you want to load. MODULE ;LOAD.ACT BYTE CIO_status CARD start, len ; NOTE: CIO and ReadBlock are ; copyrighted routines of ; Action! computer services ; Credit such as this of their origin ; must be given if used in your own ; program source CHAR FUNC CIO=*(BYTE dev, CARD addr,size, BYTE cmd,aux1,aux2) [$29$F$85$A0$86$A1$A$A$A$A$AA$A5$A5$9D$342$A5$A3$9D$348$A5$A4$9D$349$A5$A6$F0$8$9D$34A$A5$A7$9D$34B$98$9D$345 $A5$A1$9D$344$20$E456$8C CIO_status$C0$88$D0$6$98$A4$A0$99 EOF$60] CARD FUNC ReadBlock=*(BYTE dev, CARD addr, size) [$48$A9$7$85$A5$A9$0$85$A6$A5$A3$5$A4$D0$6$85$A0$85$A1$68$60$68$20 CIO$BD$348$85$A0$BD$349$85$A1$60] ; MAINLINE **************************** CARD FUNC GetOne() BYTE cLow CARD cHigh DO cLow=GetD(1) cHigh=GetD(1) cHigh== LSH 8 % cLow UNTIL cHigh#$FFFF OD RETURN(cHigh) PROC GetAddrs=*() start=GetOne() len=GetOne()-start+1 RETURN PROC Load(CHAR ARRAY filespec) CARD INITAD=$2E2 Close(1) Open(1,filespec,4,0) WHILE start#$2E2 DO GetAddrs() ReadBlock(1,start,len) OD Close(1) [$6C INITAD] RETURN }}}