home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.whtech.com
/
ftp.whtech.com.tar
/
ftp.whtech.com
/
Geneve
/
9640news
/
CAT15
/
GPLMVX.ARK
< prev
next >
Wrap
Text File
|
2006-10-19
|
6KB
|
187 lines
?
Listed below are a number of examples of the GPL MOVE statement. This is a
LIST file generated by a GPL Assembler.
When the GPL Interpreter talks to CPU Memory it offsets the CPU address by
>8300. This can be seen in the OPCODES for the third move statement which
breaks down as follows:
>35 MOVE
>1234 >1234 bytes
>8F to Cpu Memory (non-indexed) (AF = Vdp memory)
>9D00 at >2000 (>9D00+>8300=>2000)
>8F from Cpu Memory (non-indexed)
>1D00 at >A000 (>1D00+>8300=>A000)
When the GPL Interpreter talks to CPU Scratch Pad Memory Below >8380 or when
a Scratch Pad address is used for indexing it is referenced by one byte
(i.e. >831F will appear as >1F in the Opcode).
In the Examples listed below: G@ = Grom/Gram Memory
V@ = Vdp Memory and
@ = Cpu Memory
99/4 GPL-ASSEMBLER
GROM 3 - MOVE TEST
<0001>
<0002> GROM 3
<0003> AORG 0
<0004>
<0005> * GPL MOVE Statements
<0006> *
<0007> * MOVE #bytes,source,destination
<0008> *
<0009> 6000 21,12,34 MOVE >1234,G@>C000,G@>E000
6003 E0,00,C0
6006 00
<0010> 6007 35,12,34 MOVE >1234,V@>1000,V@>3000
600A AF,30,00
600D AF,10,00
<0011> 6010 35,12,34 MOVE >1234,@>A000,@>2000
6013 8F,9D,00
6016 8F,1D,00
<0012> 6019 35,12,34 MOVE >1234,@>A000,@>831F
601C 1F,8F,1D
601F 00
<0013> 6020 35,12,34 MOVE >1234,@>A000,@>839E
6023 80,9E,8F
6026 1D,00
<0014>
<0015> 6028 31,12,34 MOVE >1234,G@>C000,V@>3000
602B AF,30,00
602E C0,00
<0016> 6030 31,12,34 MOVE >1234,G@>C000,@>2000
6033 8F,9D,00
6036 C0,00
<0017> 6038 31,12,34 MOVE >1234,G@>C000,@>831F
603B 1F,C0,00
<0018> 603E 31,12,34 MOVE >1234,G@>C000,@>839E
6041 80,9E,C0
6044 00
<0019>
<0020> 6045 25,12,34 MOVE >1234,V@>1000,G@>C000
6048 C0,00,AF
604B 10,00
<0021> 604D 35,12,34 MOVE >1234,V@>1000,@>2000
6050 8F,9D,00
6053 AF,10,00
<0022> 6056 35,12,34 MOVE >1234,V@>1000,@>831F
6059 1F,AF,10
605C 00
<0023> 605D 35,12,34 MOVE >1234,V@>1000,@>839E
6060 80,9E,AF
6063 10,00
<0024>
<0025> 6065 25,12,34 MOVE >1234,@>2000,G@>C000
6068 C0,00,8F
606B 9D,00
<0026> 606D 35,12,34 MOVE >1234,@>2000,V@>1000
6070 AF,10,00
6073 8F,9D,00
<0027> 6076 35,12,34 MOVE >1234,@>831F,@>832F
6079 2F,1F
<0028> 607B 35,12,34 MOVE >1234,@>839E,@>83AE
607E 80,AE,80
6081 9E
<0029> 6082 35,12,34 MOVE >1234,@>839E,@>831F
6085 1F,80,9E
<0030>
<0031> * INDEXED MOVES -------------------------------
<0032>
<0033> 831F TEMP1 EQU >831F
<0034> 839E TEMP2 EQU >839E
<0035>
<0036> 6088 29,12,34 MOVE >1234,G@>C000,G@2(@TEMP2)
608B 00,02,9E
608E C0,00
<0037> 6090 31,12,34 MOVE >1234,G@>C000,V@2(@TEMP2)
6093 E0,02,9E
6096 C0,00
<0038> 6098 31,12,34 MOVE >1234,G@>C000,@2(@TEMP2)
609B CF,7D,02
609E 9E,C0,00
<0039> 60A1 31,12,34 MOVE >1234,G@>C000,@>830F(@TEMP1)
60A4 C0,0F,1F
60A7 C0,00
<0040> 60A9 2B,12,34 MOVE >1234,G@1(@TEMP1),G@2(@TEMP2)
60AC 00,02,9E
60AF 00,01,1F
<0041>
<0042> 60B2 2D,12,34 MOVE >1234,@>A000,G@2(@TEMP2)
60B5 00,02,9E
60B8 8F,1D,00
<0043> 60BB 35,12,34 MOVE >1234,V@1(@TEMP1),V@2(@TEMP2)
60BE E0,02,9E
60C1 E0,01,1F
<0044> 60C4 35,12,34 MOVE >1234,@1(@TEMP1),@2(@TEMP2)
60C7 CF,7D,02
60CA 9E,CF,7D
60CD 01,1F
<0045>
<0046> * INDIRECT MOVES ------------------------------
<0047>
<0048> 60CF 31,12,34 MOVE >1234,G@>C000,V*TEMP2
60D2 B0,9E,C0
60D5 00
<0049> 60D6 31,12,34 MOVE >1234,G@>C000,*TEMP2
60D9 90,9E,C0
60DC 00
<0050> 60DD 31,12,34 MOVE >1234,G@>C000,*>830F(@TEMP1)
60E0 D0,0F,1F
60E3 C0,00
<0051> 60E5 33,12,34 MOVE >1234,G@1(@TEMP1),*TEMP2
60E8 90,9E,00
60EB 01,1F
<0052>
<0053> 60ED 35,12,34 MOVE >1234,V*1(@TEMP1),V*2(@TEMP2)
60F0 FF,7D,02
60F3 9E,FF,7D
60F6 01,1F
<0054> 60F8 35,12,34 MOVE >1234,*TEMP1,*TEMP2
60FB 90,9E,90
60FE 1F
<0055>
<0056> END
----------------------------------------------------------------------------
GPL XMLs
If you are using Gram to store an Assembly file in, that is in turn MOVED
out by a CALL or a GPL program (patch) you can start the Assembly program
with a GPL XML statement.
The Opcode for GPL XML is >OF xx - where xx represents the XML table to use
for the start vector (See the Explorer Manual page 77 for the XML tables).
For example let's say you used a GPL MOVE to move an 8K assembly program out
of Gram 7 (>E000) to high Memory Expansion and now you want to go out of GPL
and execute your Assembly program. Let's say that your Assembly program
starts at address >A040, this could be the code you could use to do this
task.
31 20 00 MYPROG MOVE >2000,G@>E000,@>A000
8F 1D 00
E0 00
BF 00 A0 DST >A040,@>8300 (store start address)
40
0F F0 XML >F0 (go to >8300 to get start address)
00 RTN
When your Assembly program is finished you can then B @>006A to go back to
the GPL Interpreter. Don't forget to reset the Grom Address if your Assembly
program changed it. When the GPL Interpreter starts back up it will grab the
>00 opcode (RTN) and return from the CALL MYPROG that you set up somewhere
else in Gram to start the above routine. By the way, the Opcode for a CALL
is >06 so the CALL MYPROG would be 06 xx xx where xx xx = the address in
Gram where you placed the above code.
Have Fun. ------ MG ------
Download complete. Turn off Capture File.