mirror of
https://github.com/dwsJason/gslaplay.git
synced 2024-06-15 11:29:29 +00:00
import: snasm assembler, and a .bat to help me remember to run it.
This commit is contained in:
parent
9a8848f415
commit
4dc8723dd0
1
bin/snasm/CFG.BAT
Normal file
1
bin/snasm/CFG.BAT
Normal file
|
@ -0,0 +1 @@
|
|||
copy \asm\snbug658.cfg snbug658.cf7
|
1
bin/snasm/CFGORIG.BAT
Normal file
1
bin/snasm/CFGORIG.BAT
Normal file
|
@ -0,0 +1 @@
|
|||
copy \asm\snbug658.cfg snbug658.cf7
|
6
bin/snasm/DIPS.TXT
Normal file
6
bin/snasm/DIPS.TXT
Normal file
|
@ -0,0 +1,6 @@
|
|||
Regular dip switch settings (Snasm 1)
|
||||
-------------------------------------
|
||||
|
||||
A - all down except 5,6,7
|
||||
B - 1,2,3 up, all rest down
|
||||
|
39
bin/snasm/EXAMPLE.658
Normal file
39
bin/snasm/EXAMPLE.658
Normal file
|
@ -0,0 +1,39 @@
|
|||
|
||||
B0 group org($08000)
|
||||
Break group org($0FFE6)
|
||||
|
||||
org 0
|
||||
|
||||
section s1,b0
|
||||
|
||||
regs pc=*,p=%00000100,s=$1ff,d=$5678,db=$00
|
||||
|
||||
mx %11
|
||||
|
||||
TrapEntry equ $708008
|
||||
BreakEntry equ $70800B
|
||||
|
||||
assume db:$00
|
||||
|
||||
rep %00110000
|
||||
|
||||
MainLoop jsl TrapEntry ; service debugger
|
||||
|
||||
lda #100
|
||||
jsr Delay
|
||||
bra MainLoop
|
||||
|
||||
Delay module
|
||||
dea
|
||||
bne Delay
|
||||
rts
|
||||
modend
|
||||
|
||||
DoBrk jmp >BreakEntry
|
||||
|
||||
section s3,Break
|
||||
dw DoBRK
|
||||
|
||||
|
||||
|
||||
|
15
bin/snasm/EXAMPLE.PRJ
Normal file
15
bin/snasm/EXAMPLE.PRJ
Normal file
|
@ -0,0 +1,15 @@
|
|||
[snmake]
|
||||
t7:; example.658
|
||||
snasm658 $! example.658,t7:,example.sym
|
||||
|
||||
!ifdef(DebugStr)
|
||||
snbug658 example.sym
|
||||
!endif
|
||||
|
||||
[eval]
|
||||
snbug658 /v$$$ example.sym
|
||||
|
||||
[debug]
|
||||
snbug658 example.sym
|
||||
|
||||
|
BIN
bin/snasm/EXAMPLE.SYM
Normal file
BIN
bin/snasm/EXAMPLE.SYM
Normal file
Binary file not shown.
65
bin/snasm/GRAB16MB.GRB
Normal file
65
bin/snasm/GRAB16MB.GRB
Normal file
|
@ -0,0 +1,65 @@
|
|||
!demo.bin
|
||||
8000 to 10000
|
||||
18000 to 20000
|
||||
28000 to 30000
|
||||
38000 to 40000
|
||||
48000 to 50000
|
||||
58000 to 60000
|
||||
68000 to 70000
|
||||
78000 to 80000
|
||||
88000 to 90000
|
||||
98000 to A0000
|
||||
A8000 to B0000
|
||||
B8000 to C0000
|
||||
C8000 to D0000
|
||||
D8000 to E0000
|
||||
E8000 to F0000
|
||||
F8000 to 100000
|
||||
108000 to 110000
|
||||
118000 to 120000
|
||||
128000 to 130000
|
||||
138000 to 140000
|
||||
148000 to 150000
|
||||
158000 to 160000
|
||||
168000 to 170000
|
||||
178000 to 180000
|
||||
188000 to 190000
|
||||
198000 to 1A0000
|
||||
1A8000 to 1B0000
|
||||
1B8000 to 1C0000
|
||||
1C8000 to 1D0000
|
||||
1D8000 to 1E0000
|
||||
1E8000 to 1F0000
|
||||
1F8000 to 200000
|
||||
208000 to 210000
|
||||
218000 to 220000
|
||||
228000 to 230000
|
||||
238000 to 240000
|
||||
248000 to 250000
|
||||
258000 to 260000
|
||||
268000 to 270000
|
||||
278000 to 280000
|
||||
288000 to 290000
|
||||
298000 to 2A0000
|
||||
2A8000 to 2B0000
|
||||
2B8000 to 2C0000
|
||||
2C8000 to 2D0000
|
||||
2D8000 to 2E0000
|
||||
2E8000 to 2F0000
|
||||
2F8000 to 300000
|
||||
308000 to 310000
|
||||
318000 to 320000
|
||||
328000 to 330000
|
||||
338000 to 340000
|
||||
348000 to 350000
|
||||
358000 to 360000
|
||||
368000 to 370000
|
||||
378000 to 380000
|
||||
388000 to 390000
|
||||
398000 to 3A0000
|
||||
3A8000 to 3B0000
|
||||
3B8000 to 3C0000
|
||||
3C8000 to 3D0000
|
||||
3D8000 to 3E0000
|
||||
3E8000 to 3F0000
|
||||
3F8000 to 400000
|
17
bin/snasm/GRAB4MB.GRB
Normal file
17
bin/snasm/GRAB4MB.GRB
Normal file
|
@ -0,0 +1,17 @@
|
|||
!demo.bin
|
||||
8000 to 10000
|
||||
18000 to 20000
|
||||
28000 to 30000
|
||||
38000 to 40000
|
||||
48000 to 50000
|
||||
58000 to 60000
|
||||
68000 to 70000
|
||||
78000 to 80000
|
||||
88000 to 90000
|
||||
98000 to A0000
|
||||
A8000 to B0000
|
||||
B8000 to C0000
|
||||
C8000 to D0000
|
||||
D8000 to E0000
|
||||
E8000 to F0000
|
||||
F8000 to 100000
|
34
bin/snasm/GRAB8MB.GRB
Normal file
34
bin/snasm/GRAB8MB.GRB
Normal file
|
@ -0,0 +1,34 @@
|
|||
!demo.bin
|
||||
8000 to 10000
|
||||
18000 to 20000
|
||||
28000 to 30000
|
||||
38000 to 40000
|
||||
48000 to 50000
|
||||
58000 to 60000
|
||||
68000 to 70000
|
||||
78000 to 80000
|
||||
88000 to 90000
|
||||
98000 to A0000
|
||||
A8000 to B0000
|
||||
B8000 to C0000
|
||||
C8000 to D0000
|
||||
D8000 to E0000
|
||||
E8000 to F0000
|
||||
F8000 to 100000
|
||||
108000 to 110000
|
||||
118000 to 120000
|
||||
128000 to 130000
|
||||
138000 to 140000
|
||||
148000 to 150000
|
||||
158000 to 160000
|
||||
168000 to 170000
|
||||
178000 to 180000
|
||||
188000 to 190000
|
||||
198000 to 1A0000
|
||||
1A8000 to 1B0000
|
||||
1B8000 to 1C0000
|
||||
1C8000 to 1D0000
|
||||
1D8000 to 1E0000
|
||||
1E8000 to 1F0000
|
||||
1F8000 to 200000
|
||||
|
BIN
bin/snasm/INSTALL.EXE
Normal file
BIN
bin/snasm/INSTALL.EXE
Normal file
Binary file not shown.
BIN
bin/snasm/LTU.EXE
Normal file
BIN
bin/snasm/LTU.EXE
Normal file
Binary file not shown.
729
bin/snasm/NEW658.DOC
Normal file
729
bin/snasm/NEW658.DOC
Normal file
|
@ -0,0 +1,729 @@
|
|||
This file contains engineering notes on the versions of SNASM on this disk.
|
||||
The notes on older versions are also included for people who may have missed
|
||||
a release. Please note that we don't usually supply the latest version of
|
||||
the software with new systems so you may want to update even if you have
|
||||
only just get your system.
|
||||
|
||||
This information is incorporated into the manual each time we do a reprint
|
||||
so much of this may already be in your current manual.
|
||||
|
||||
|
||||
*****************************************************************************
|
||||
|
||||
SNASM658 1.24
|
||||
SNBUG658 1.63
|
||||
SNLINK 1.23
|
||||
SNLIB 1.10
|
||||
SCSILINK 1.5
|
||||
|
||||
|
||||
. a bug that made snasm658 fail to recognise labels with direct page
|
||||
optimisation switched on has been fixed.
|
||||
|
||||
|
||||
*****************************************************************************
|
||||
|
||||
SNASM658 1.23
|
||||
SNBUG658 1.63
|
||||
SNLINK 1.23
|
||||
SNLIB 1.10
|
||||
SCSILINK 1.5
|
||||
|
||||
|
||||
. a bug that prevented data being defined outside of any section has
|
||||
been fixed in snasm658
|
||||
|
||||
. The linker could only output a maximum of 13 files when using
|
||||
the group 'file' option. This limit has now been eradicated.
|
||||
|
||||
|
||||
*****************************************************************************
|
||||
|
||||
SNASM658 1.22
|
||||
SNBUG658 1.63
|
||||
SNLINK 1.21
|
||||
SNLIB 1.10
|
||||
SCSILINK 1.5
|
||||
|
||||
. a bug in snasm658's memory allocation that caused a crash at the
|
||||
start of pass two in low memory conditions if more that 300K of
|
||||
code was being assembled has been fixed.
|
||||
|
||||
. a bug in snasm658 that could cause the linker to run wild if data
|
||||
space was allocated outside any section/group has been fixed.
|
||||
|
||||
|
||||
*****************************************************************************
|
||||
|
||||
SNASM658 1.21
|
||||
SNBUG658 1.63
|
||||
SNLINK 1.21
|
||||
SNLIB 1.10
|
||||
SCSILINK 1.5
|
||||
|
||||
|
||||
. a bug in snlib that left XDEF'd symbols in object files produced
|
||||
by snasm658 'unseen' has been fixed.
|
||||
|
||||
. a number of small improvments have been made to the file window and
|
||||
file handling in snbug658. The only one noticable to the user is that
|
||||
the full pathname of the file on display is now shown along the top
|
||||
of the window.
|
||||
|
||||
*****************************************************************************
|
||||
|
||||
SNASM658 1.21
|
||||
SNBUG658 1.57
|
||||
SNLINK 1.21
|
||||
SNLIB 1.09
|
||||
SCSILINK 1.5
|
||||
|
||||
. groupend() and sectend() functions have been implemented in snasm658.
|
||||
These give the end address of a group or section respectively. These
|
||||
addresses are not evaluated until link time thus
|
||||
|
||||
#groupend(g1)-grouporg(g1)
|
||||
|
||||
gives the final size of group g1
|
||||
|
||||
|
||||
*****************************************************************************
|
||||
|
||||
SNASM658 1.20
|
||||
SNBUG658 1.57
|
||||
SNLINK 1.21
|
||||
SNLIB 1.09
|
||||
SCSILINK 1.5
|
||||
|
||||
. Bug that prevented macro expansion inside short macros has been
|
||||
fixed
|
||||
|
||||
|
||||
*****************************************************************************
|
||||
|
||||
SNASM658 1.19
|
||||
SNBUG658 1.57
|
||||
SNLINK 1.21
|
||||
SNLIB 1.09
|
||||
SCSILINK 1.5
|
||||
|
||||
. Bug that crashed PC whilst stepping in the debugger has been fixed.
|
||||
|
||||
|
||||
*****************************************************************************
|
||||
|
||||
SNASM658 1.19
|
||||
SNBUG658 1.53
|
||||
SNLINK 1.21
|
||||
SNLIB 1.09
|
||||
SCSILINK 1.5
|
||||
|
||||
. Fixed __mx in assembler
|
||||
|
||||
. Debugger now displays sizes of accumulator and index registers
|
||||
|
||||
. Various fixes to assembler and debugger
|
||||
|
||||
*****************************************************************************
|
||||
SNASM658 1.18
|
||||
SNBUG658 1.47
|
||||
SNLINK 1.21
|
||||
SNLIB 1.09
|
||||
SCSILINK 1.5
|
||||
|
||||
. The assembler and linker now utilise all free memory on the
|
||||
system, including UMB's on DOS 5+ and up to 64k of EMS if
|
||||
available.
|
||||
|
||||
. The functions sectsize() and groupsize(); which return the
|
||||
current size of a section or group respectively, have been
|
||||
added. They are evaluated immediately and so reflect the
|
||||
current section size at the point they are used, not the final
|
||||
size.
|
||||
|
||||
. A bug that caused byte alignment when attempting to word
|
||||
align a section has been fixed.
|
||||
|
||||
. The linker version number has also been bumped due to added
|
||||
support for 68000 C cross-compilers.
|
||||
|
||||
. The debugger has some significant bug fixes and can now dump
|
||||
the active window to the printer.
|
||||
|
||||
1. Multiple target support will now handle switching targets
|
||||
during the Abort/Retry ... phase.
|
||||
|
||||
2. Problems with displaying memory at the end of bank $08 have
|
||||
been fixed.
|
||||
|
||||
3. Indirection in debugger expressions now defaults to being
|
||||
unsigned so that expressions such as 7e0000+[ptr] are evaluated
|
||||
correctly when [ptr] > $8000
|
||||
|
||||
4. Effective address display will now conform to the way the
|
||||
65816 works. Thus
|
||||
|
||||
lda $ffff,x
|
||||
|
||||
where db = $7e
|
||||
x = $1
|
||||
|
||||
now resolves to $7f0000 NOT $7e0000.
|
||||
|
||||
5. A bug in running to cursor where the cursor resides on a
|
||||
breakpoint is now fixed.
|
||||
|
||||
6. Locking a window whilst it is in disassembly mode and then
|
||||
changing to a hex display no longer crashes the debugger.
|
||||
|
||||
|
||||
7. Alt-P will dump a copy of the active window to the printer.
|
||||
|
||||
. Snlib has had its version number bumped because of additions
|
||||
to its support for 68000 C cross compilers.
|
||||
|
||||
|
||||
*****************************************************************************
|
||||
SNASM658 1.17
|
||||
SNBUG658 1.42
|
||||
SNLINK 1.19
|
||||
SNLIB 1.08
|
||||
SCSILINK 1.5
|
||||
|
||||
. The debugger file window has been re-written. There is little
|
||||
difference to the user in the way it operates. Key assignments have
|
||||
been altered so that Ctrl-S/Ctrl-R saves/restores registers in all
|
||||
windows and Alt-S/Alt-N starts/resumes a search.
|
||||
|
||||
|
||||
*****************************************************************************
|
||||
SNASM658 1.17
|
||||
SNBUG658 1.40
|
||||
SNLINK 1.19
|
||||
SNLIB 1.08
|
||||
SCSILINK 1.5
|
||||
|
||||
. Fixed bug in debugger that 'lost' MX records in disassembly.
|
||||
|
||||
|
||||
*****************************************************************************
|
||||
SNASM658 1.17
|
||||
SNBUG658 1.39
|
||||
SNLINK 1.19
|
||||
SNLIB 1.08
|
||||
SCSILINK 1.5
|
||||
|
||||
. Fixed bug in assembler that crashed if more that 256 include files
|
||||
used.
|
||||
|
||||
. Fixed bug in assembler that allowed infinite macro expansion.
|
||||
|
||||
. Fixed bug in assembler that 'lost count' of parenthesis.
|
||||
|
||||
. Un-step added to the debugger on Alt-F4/Alt-F7
|
||||
|
||||
. Functions added to linker to support object file conversion for
|
||||
C 68000 cross-compilers.
|
||||
|
||||
. Better detection of illegal addressing modes added to the assembler.
|
||||
|
||||
. option ow+/- has been added to the assembler to generate a warning
|
||||
when absolute addressing has been assumed. This is designed to help
|
||||
'update' code that was written when the assembler assumed long
|
||||
absolute mode when it didn't know the operand value.
|
||||
|
||||
. Problems with scsilink and fast 486's fixed with the addition of
|
||||
extra timeouts.
|
||||
|
||||
|
||||
*****************************************************************************
|
||||
SNASM658 1.13
|
||||
SNBUG658 1.38
|
||||
SNLINK 1.18
|
||||
SNLIB 1.08
|
||||
SCSILINK 1.4
|
||||
|
||||
. The linker has been profiled and many speed improvements have been
|
||||
made.
|
||||
|
||||
. Linker now deletes the files created by the file() attribute on
|
||||
groups if assembly fails.
|
||||
|
||||
. Problems in assembler caused by & continuation if white space (ws)
|
||||
was enabled fixed.
|
||||
|
||||
. Errors in the inform statement don't no have their output appended
|
||||
onto the inform output.
|
||||
|
||||
. You now don't need to define groups in your source code. Any
|
||||
section that isn't placed in a group at assembly time can be assigned
|
||||
to a group in the linker command file.
|
||||
|
||||
. Fixed problems with case sensitivity in debugger CLI.
|
||||
|
||||
. Fixed problems with debugger windows being left blank if a key was
|
||||
pressed during loading with auto-update off.
|
||||
|
||||
. A new variable called __mx has been added which hold the current value
|
||||
of the mx variable according to the assembler.
|
||||
|
||||
. Major changes to the way the assembler handles addressing modes.
|
||||
See info. at end of this fix report. There are some changes in here
|
||||
from the version 1.12 so everyone should have a read.
|
||||
|
||||
. Effective address display added to top of disassembly window.
|
||||
|
||||
. Extra code added to enable to debugger to 'sync' its disassembly
|
||||
better.
|
||||
|
||||
. The debugger now understands the memory map of the console so labels
|
||||
should be visible no matter what the DB reg holds.
|
||||
|
||||
|
||||
Changes to addressing mode handling
|
||||
-----------------------------------
|
||||
65816 assembler :
|
||||
|
||||
The addressing mode stuff has been changed to conform with WDC spec.
|
||||
|
||||
There is now an optimisation option opt od-/+ which enables the
|
||||
optimisation to direct page access to take place. Default is off.
|
||||
|
||||
opt t-/+ . When enabled truncates values in db/dw statements and immediate
|
||||
operand values to the required size. Default is off.
|
||||
|
||||
opt ta+/-. When enabled truncates all address operands to the required size.
|
||||
Default is on.
|
||||
|
||||
Immediate operands can specify the bytes of the operand to use as
|
||||
in WDC spec, eg.
|
||||
|
||||
short accumulator long accumulator
|
||||
lda #$12345678 -> lda #$78 lda #$5678
|
||||
lda #<$12345678 -> lda #$78 lda #$5678
|
||||
lda #>$12345678 -> lda #$56 lda #$3456
|
||||
lda #^$12345678 -> lda #$34 lda #$1234
|
||||
|
||||
|
||||
Absolute addressing modes can be forced, eg. :
|
||||
|
||||
lda <$12345678 -> lda $78 direct page
|
||||
lda |$12345678 -> lda $5678 absoulte
|
||||
lda >$12345678 -> lda $345678 long absoulte
|
||||
|
||||
Absoulte addressing modes should now behave as follows when no overiding
|
||||
mode is specified :
|
||||
|
||||
(1) The address is evaluated.
|
||||
(2) If direct page optimisation is on then the assembler will try
|
||||
to convert to this mode.
|
||||
(3) If (2) fails then the assembler will normally use absolute mode
|
||||
unless it can determine that absolute long mode is necessary in
|
||||
which case it will use that mode. It will no longer use long
|
||||
absolute mode when it doesn't know the operand value.
|
||||
|
||||
Assumes :
|
||||
|
||||
In the following the operand value is known if (1) the operand can be
|
||||
evaluated, (2) the operand is at a known offset from the start of an
|
||||
org'd section, (3) the operand is at a known offset from the start
|
||||
of a section which is known to be the first section in an org'd group
|
||||
or (4) the operand is at a known offset from the start of the very
|
||||
first section which will takes its base address from the first org
|
||||
in the program.
|
||||
|
||||
if opt od+ is in effect then
|
||||
|
||||
(1) if d is not assumed then known operands in the range 0-255 will
|
||||
be converted to direct page access.
|
||||
|
||||
(2) if d is assumed to a constant value then conversion to direct
|
||||
access will take place when the operand value is 0-255 more than
|
||||
that value.
|
||||
|
||||
(3) if d is assumed to a section then direct mode will be used if the
|
||||
operand is known and is at an offset 0-255 from the start of that
|
||||
section or if the operand is a symbol in that section.
|
||||
|
||||
(4) if d is assumed to a group then direct mode will be used if the
|
||||
operand is known and is at an offset 0-255 from the start of that
|
||||
group or if the operand is a symbol in that group.
|
||||
|
||||
|
||||
Long absolute mode will be used when
|
||||
|
||||
(1) if db is not assumed and the operand value is known and greater
|
||||
than $ffff.
|
||||
|
||||
(2) if db is assumed to a constant value and the operand value is
|
||||
known and is less than that value or more than $ffff greater
|
||||
than it unless it can be accessed by virtue of the mirroring
|
||||
of ram & hardware registers in certain parts of the sfx memory map.
|
||||
|
||||
(3) if db is assumed to a section which is org'd and the operand value
|
||||
is not in the same bank allowing for mirroring of ram and hardware
|
||||
registers.
|
||||
|
||||
(4) if db is assumed to a group which is org'd and the operand value
|
||||
is not in the same bank allowing for mirroring of ram and hardware
|
||||
registers.
|
||||
|
||||
|
||||
*****************************************************************************
|
||||
SNASM658 1.10
|
||||
SNBUG658 1.29
|
||||
SNLINK 1.15
|
||||
SNLIB 1.08
|
||||
SCSILINK 1.4
|
||||
|
||||
. The jsr/jmp absolute instructions now get the bank information
|
||||
correct so labels are always used correctly.
|
||||
|
||||
. Tracing problems in debugger are now definately fixed.
|
||||
|
||||
. Debugger CLI parsing has been rewritten as the multi-target support
|
||||
introduced some problems. You shouldn't notice any changes so if you
|
||||
do report it as a bug.
|
||||
|
||||
*****************************************************************************
|
||||
SNASM658 1.10
|
||||
SNBUG658 1.25
|
||||
SNLINK 1.15
|
||||
SNLIB 1.08
|
||||
SCSILINK 1.4
|
||||
|
||||
. The assembler now allows question marks in labels.
|
||||
|
||||
. The l+/- option has been expanded to allow (almost) any character
|
||||
to be used for a local label. You can specify any character here
|
||||
but only a few will work without causing problems. The main one
|
||||
this feature was added for was colon.
|
||||
opt l: ; set local label char to colon
|
||||
|
||||
. The debugger had improved multi-target facilities. You can now
|
||||
specify several targets on the command line and they can all
|
||||
have seperate .cpe files and symbol tables. Unless you regularly
|
||||
debug on two machine simultaniously you can ignore this option.
|
||||
|
||||
. More timeouts have been added to SCSILINK
|
||||
|
||||
. If the assembler can't evaluate the expression to which an equ
|
||||
has been done it now substitutes the full expression where needed.
|
||||
This means that you can equate something to an offset from an xref'd
|
||||
symbol, equate something to an expression involving the pc when
|
||||
linking etc.
|
||||
|
||||
. Grouporg function added which tells you the physical address at which
|
||||
a group has been placed. This is mainly for use when you use the
|
||||
obj directive on groups to find where the group is in memory to
|
||||
allow it to be relocated.
|
||||
|
||||
. The < and > operators now have a very low priority so that
|
||||
lda #<123+456
|
||||
Gives the low byte of the full expression.
|
||||
|
||||
. A new option, B, has been added which swaps the meaning of < and >
|
||||
when they are used as high/low byte operators
|
||||
|
||||
. The instructions rep, sep and cop now allow their operands to be
|
||||
preceeded by a hash for compatability reasons.
|
||||
|
||||
. Ampersand (&) has been added as a general purpose line continuation
|
||||
character. e.g.
|
||||
MyMacro 1,2,3,4,&
|
||||
5,6,7
|
||||
This can be used at the end of any line except in the middle of
|
||||
a string.
|
||||
|
||||
. You can now have a size on a short macro (i.e. mybcc.s)
|
||||
|
||||
. If you have sections in unnamed groups in your source you can
|
||||
place them into groups in the linker command file. e.g.
|
||||
In source
|
||||
s1 section word
|
||||
...
|
||||
|
||||
s2 section word
|
||||
...
|
||||
end
|
||||
|
||||
In linker command file
|
||||
g1 group word
|
||||
|
||||
section s1,g1
|
||||
section s2,g2
|
||||
|
||||
include source.obj
|
||||
|
||||
The group attributes *bss, word etc) must match the attributes of
|
||||
the sections or an error will be raised.
|
||||
|
||||
*****************************************************************************
|
||||
SNASM658 1.09
|
||||
SNBUG658 1.23
|
||||
SNLINK 1.13
|
||||
SNLIB 1.06
|
||||
SCSILINK 1.3
|
||||
|
||||
. Occasional problem tracing using snbug658 V1.19 fixed. Things seem
|
||||
to check out now but contact us if there are any more problems.
|
||||
|
||||
. The linker now has a new switch /b which makes in link in 'big mode'.
|
||||
This slightly increases link time (even a small disk cache will make
|
||||
this inconsequential though) but allows very much more complex
|
||||
projects to be linked.
|
||||
|
||||
|
||||
*****************************************************************************
|
||||
SNASM658 1.09
|
||||
SNBUG658 1.19
|
||||
SNLINK 1.12
|
||||
SNLIB 1.06
|
||||
SCSILINK 1.3
|
||||
|
||||
. The linker now allows groups to be orged to different addresses and
|
||||
it also allows use of org ?size,type just like in the assembler.
|
||||
Please note that only one ordinary org command should be used in the
|
||||
linker command file and that this org will set the base address for
|
||||
all groups that aren't orged seperately. The size parameter must be
|
||||
a decimal or hex number as the object files have not been read by
|
||||
this point to you will need to look at your map file to see how
|
||||
much room to reserve for different groups.
|
||||
|
||||
. To go with DB and DW we have added DT and DL. These are for putting
|
||||
down three byte and four byte constants. These were in version
|
||||
1.08 but weren't documented.
|
||||
|
||||
. Assume can now be used to tell the assembler that a group is direct
|
||||
addressable. Syntax is :-
|
||||
DirectGroup group
|
||||
assume d:DirectGroup
|
||||
Any variables in this group will be accessed using the direct
|
||||
addressing mode (if legal) as long as they are defined before they
|
||||
are referenced.
|
||||
|
||||
*****************************************************************************
|
||||
SNASM658 1.08
|
||||
SNBUG658 1.16
|
||||
SNLINK 1.11
|
||||
SNLIB 1.06
|
||||
SCSILINK 1.3
|
||||
|
||||
. The linker always used to be case sensitive but now it has a switch
|
||||
in the same way as the assembler. To be compatible with the assembler
|
||||
the linker now works case insensitive by default so you may need to
|
||||
set a switch to maintain the status quo. Type snlink on its own
|
||||
for an up to date list of linker switches.
|
||||
|
||||
. The assembler now reports the file/line where a structure was opened
|
||||
if it isn't closed properly. This works for all of the structures
|
||||
including modules and if's.
|
||||
|
||||
. The linker now stops if ESC is pressed whilst it is running. It
|
||||
also tidies up open files if it is Ctrl-C'd.
|
||||
|
||||
. The assembler now writes the processor type into .obj files to
|
||||
allow the linker to correctly handle regs commands. The linker
|
||||
will give a warning if various .obj files were produced by different
|
||||
assemblers but you are still free to do this. This has cured the bug
|
||||
which occurred if you set the registers in a linker command file
|
||||
when you were generating a .cpe file.
|
||||
|
||||
. To reduce the 'red tape' when you want just one section per group
|
||||
you can now attach attributes to a section definition. Example -
|
||||
Code section bss org($7E000)
|
||||
This can be used whether or not you are linking. If you use this
|
||||
feature you loose the ability to have several sections in the same
|
||||
group.
|
||||
|
||||
. The type() function now returns zero if its argument isn't the
|
||||
name of a symbol rather than giving an error. So type(Fred+3)
|
||||
returns zero as opposed to giving an error.
|
||||
|
||||
. There is now another special macro
|
||||
parameter \_. This returns the whole of the line following a
|
||||
macro invocation from after the name of the macro until the end of
|
||||
line or comment. This feature can be used when you are invoking a
|
||||
macro from within a macro but as macros are stored without comments
|
||||
the parts of the line after white space will have been removed.
|
||||
|
||||
. There were a few problems with forward referenced equates whilst in
|
||||
link mode which have now all been fixed. These occurred when you did
|
||||
something like :-
|
||||
a equ b
|
||||
b equ c
|
||||
c
|
||||
and the assembler had to evaluate the equs at the end of the first
|
||||
pass.
|
||||
|
||||
. There is now no need to preceed a macro parameter with a backslash
|
||||
when it is being used in an expression. You will still need the
|
||||
backslash, and possible another at the end of the name, in all other
|
||||
cases. For example -
|
||||
fred macro x,y
|
||||
dw x,y ; no backslash required
|
||||
db 'X is \x and Y is \y' ; but is required here
|
||||
db '123\x\456 ; both backslashes required
|
||||
|
||||
. The sect and offset functions now work correctly even when you are
|
||||
linking i.e. sect(x)+offset(x) will always equal x. This means however
|
||||
that neither sect nor offset can be evaluated until link time. If
|
||||
you require the offset into the current modules contribution to a
|
||||
section you will need to place a label at the start of the section
|
||||
and do the subtract yourself.
|
||||
|
||||
. Partly in response to the above the alignment function has been added.
|
||||
This tells you the offset from the section'ss alignment type (byte,
|
||||
word or long) its argument is. In a byte aligned section alignment(x)
|
||||
will always return 0, in a word aligned one it will return 0 or 1, and
|
||||
in a long word aligned one 0 .. 3.
|
||||
This function is usually used to check if the PC is odd or even as
|
||||
in this example.
|
||||
|
||||
if alignment(*)&1
|
||||
db 0 ; pad with a zero to word boundary
|
||||
endif
|
||||
|
||||
*****************************************************************************
|
||||
SNASM658 1.05
|
||||
SNBUG658 1.16
|
||||
SNLINK 1.09
|
||||
SNLIB 1.05
|
||||
SCSILINK 1.3
|
||||
|
||||
. Bug the caused branches to be reported out of range has been fixed
|
||||
|
||||
. As search has been added on Alt-S save and restore regs are now on
|
||||
Ctrl-S and Ctrl-R
|
||||
|
||||
. SCSI errors in the debugger are auto-retried. If you abort you
|
||||
get a chance to save the config file.
|
||||
|
||||
. The assembler now traps Ctrl-C and Ctrl-Break and exits gracefully.
|
||||
|
||||
. The @ operator has been added. It is used in expressions when you
|
||||
need the value of the current PC.
|
||||
Example
|
||||
dw @,@,@ ; The three words will be 2 bytes apart.
|
||||
dw Fred-@,Start-@ ; The offsets are from the current word.
|
||||
The @ differs from the * in that * is the pc at the start of the line
|
||||
whereas @ is advanced during the line.
|
||||
|
||||
. The debugger can now disassemble to file using Ctrl-D when in a
|
||||
disassembly window. You are prompted for file name and range.
|
||||
|
||||
. Search has been added to the debugger on Alt-S. This works in
|
||||
disassembly windows where you are prompted for instruction text to
|
||||
search for, and in hex windows where you are prompted for a list
|
||||
of values (or expressions) to search for. The search size (byte,word,
|
||||
long) is decided by the current data size of the window (changed with
|
||||
Alt-W). If you preceed the search expression with a double quote you
|
||||
can search for ASCII text in a memory window.
|
||||
|
||||
. A bug that stopped F6 taking you around once more if the cursor was
|
||||
at the current PC has been fixed.
|
||||
|
||||
. Update flag and interval are now saved in debugger config files.
|
||||
|
||||
. Aborting due to SCSI error now gives you the option of saving the
|
||||
config file.
|
||||
|
||||
. Upload now verifies if you want to overwrite an existing file.
|
||||
|
||||
. The CLI option for label level now overrides the setting in the
|
||||
config file. Update flag and interval work the same way.
|
||||
|
||||
. A bug in SCSILINK which occured for large send/receives which crossed
|
||||
two 64k boundaries. This didn't affect any of the SNASM utilities as
|
||||
they typically use 32K buffers which avoids the problem.
|
||||
|
||||
. Due to the large amount of work that has gone into the assembler and
|
||||
linker, we have changed the version number in the OBJ files so you
|
||||
will need to use all of the new tools as a set.
|
||||
|
||||
. A peculiarity with absolute indirect has been cleared up.
|
||||
|
||||
. A bug which caused some branches to be reported out of range has been
|
||||
fixed.
|
||||
|
||||
. DCB and DCW now advance the PC correctly!
|
||||
|
||||
*****************************************************************************
|
||||
SNASM658 1.03
|
||||
SNBUG658 1.05
|
||||
SNLINK 1.05
|
||||
SNLIB 1.02
|
||||
SCSILINK 1.2
|
||||
|
||||
. Bug when assembling
|
||||
dcb 50000,$ff
|
||||
has been fixed
|
||||
|
||||
. opt ws+/- switches between the 68000 and 65816 treatment of white
|
||||
space in operands.
|
||||
opt ws-
|
||||
you then don't need to use a semi-colon to introduce a comment but
|
||||
you can't write things like ...
|
||||
lda #3 + 2
|
||||
|
||||
. Several new group attributes have been added.
|
||||
Size Set maximum size of group. Warning if exceeded.
|
||||
Obj Assemble whole group to run at different address.
|
||||
File Write group to binary file. Now works in linker.
|
||||
Over Put two or more groups on top of each other for overlays.
|
||||
See section on new linker command file format for more info.
|
||||
|
||||
. Assembler no longer insists on an org statement. It is now back as
|
||||
before so the manual examples will work again!
|
||||
|
||||
. Debugger now does an auto-retry after 1/2 second when it gets a
|
||||
SCSI error.
|
||||
|
||||
. Problems with multiple file windows have been fixed.
|
||||
|
||||
. Linker has a totally new command file syntax as below.
|
||||
; Comment
|
||||
include filename Specify object file to read.
|
||||
Can be in quotes. Default extension .obj
|
||||
incbin filename Specify library file to search.
|
||||
Can be in quotes. Default extension .lib
|
||||
org address Give org address of program. The ? stuff
|
||||
works as before.
|
||||
regs pc=value Give start address. This will soon work for
|
||||
the other registers.
|
||||
name equ value Equate a symbol
|
||||
name group [bss,org(val),over(name),word,file("name"),obj(val),
|
||||
size(val),bank(val)]
|
||||
Define a group and attributes. Group order
|
||||
is determined by order of group statements.
|
||||
section name[,group] Define a section and state which group it
|
||||
is in. Section ordering is determined by
|
||||
order of section statements.
|
||||
workspace address Move workspace if downloading. The workspace
|
||||
command doesn't currently work with CPE
|
||||
files but will in a future release.
|
||||
|
||||
Example
|
||||
include sorter.obj
|
||||
include output.obj
|
||||
org 1024
|
||||
regs pc=ProgStart
|
||||
LowGroup group word
|
||||
CodeGroup group
|
||||
BssGroup group bss
|
||||
section Data1,LowGroup
|
||||
section Data2,LowGroup
|
||||
section Code1,CodeGroup
|
||||
section Code2,CodeGroup
|
||||
section Tables,BssGroup
|
||||
section Buffers,BssGroup
|
||||
|
||||
To clear up any confusion about group attributes.
|
||||
If you aren't linking all attributes should be specified in the
|
||||
assembler source.
|
||||
|
||||
If you are linking the only attribute you should use in the source
|
||||
are word and bss. All the others should be specified in the linker
|
||||
command file.
|
||||
|
||||
|
83
bin/snasm/READ.ME
Normal file
83
bin/snasm/READ.ME
Normal file
|
@ -0,0 +1,83 @@
|
|||
Contents of the distribution disk:
|
||||
==================================
|
||||
|
||||
\macros\snasm.cb |
|
||||
\macros\snasm1.cb |Set of brief macros to give integrated use of snasm
|
||||
\macros\snasm.cm |
|
||||
\macros\snasm1.cm |
|
||||
\macros\snmk0.mnu brief menu file
|
||||
\snasm\scsilink.exe TSR required to connect to target machines
|
||||
\snasm\snasm658.exe Snasm 65186 Macro Assembler
|
||||
\snasm\snbug658.exe Snasm 65186 Remote Debugger
|
||||
\snasm\snlib.exe Snasm Library Manager
|
||||
\snasm\snlink.exe Snasm Linker
|
||||
\snasm\ltu.exe Snasm Link Test Utility
|
||||
\snasm\snmake.exe Snasm make utility
|
||||
\snasm\sncopy.exe Snasm copy utility
|
||||
\snasm\snbug658.cf7 Snbug658 config file
|
||||
\install.exe A utility to install the SNASM system
|
||||
|
||||
|
||||
|
||||
Notes
|
||||
=====
|
||||
|
||||
1. The SNASM directory contains a utility (LTU) for testing the SCSI
|
||||
link. It has built-in help using LTU ?
|
||||
|
||||
2. The brief editor macros that interface SNASM to the editor have
|
||||
been revised to work with the Cross Products make utility SnMake, and
|
||||
hence provide a better working environment for the SNASM user. In
|
||||
practical terms this means that within brief the dialogue-box interface
|
||||
to SNASM has been completely scrapped and now relies on using SnMake
|
||||
and its associated 'project files' for the setting up and executing of
|
||||
external commands. Whilst this involves slightly more work in initial
|
||||
setting-up it offers longer-term time savings and and much more
|
||||
flexibility. Please see the SNASM manual for further details on the make
|
||||
utility and its operation.
|
||||
|
||||
3. Version 1.50 of the Brief macros have a new feature not covered in the
|
||||
manual. This is the 'Assemble this file' menu item - keyboard binding Ctrl-A.
|
||||
This macro allows the user to assemble the file in the current buffer without
|
||||
using a project file and SnMake. Upon selection the macro creates a window on
|
||||
the editor screen containing something similar to the following :
|
||||
|
||||
Snasm658 /i/d filename
|
||||
|
||||
The /i switch is allways set - this makes Snasm create an information window
|
||||
on the editor screen as it assembles.
|
||||
|
||||
The /d switch appears depending on the state of the Debug variable as set
|
||||
from the SNASM menu.
|
||||
|
||||
The user can now type in the remainder of the command line they wish to issue
|
||||
and this will be restored when the macro is used later.
|
||||
|
||||
|
||||
4. Version 1.51 of the Brief macros now pass control of error reporting on
|
||||
to Brief's built in error handling if the SNASM project macros have not been
|
||||
used to do an assembly\compile. This allows fuller use of Briefs built in
|
||||
assembler\compiler support.
|
||||
|
||||
5. Version 1.24 of SnMake now has a facility to swap itself out of memory if
|
||||
the user is experiencing memory shortages during an assembly. The syntax is
|
||||
follows the normal project file command format with an addition as follows :
|
||||
|
||||
-mxxx snasm658 $! test1.658,t7:
|
||||
|
||||
where xxx is the memory threshold (in K) at which the make utility
|
||||
should swap out. Thus -m500 will force the make utility to swap
|
||||
itself out of memory if less than 500k of memory is available. -m640
|
||||
will always cause a swap.
|
||||
|
||||
The swapping is done to extended memory by default, if none is available
|
||||
expanded memory is looked for. Failure to find either extended or expanded
|
||||
memory will force SnMake to swap itself to disk; by default the current
|
||||
directory is used. This can be altered, for example to use a ram disk, in the
|
||||
following manner :
|
||||
|
||||
swapdir=e:
|
||||
|
||||
which will force the make utility to swap to e: if it can find no available
|
||||
'high' memory.NOTE - swapdir should be specified only once in a given
|
||||
project file.
|
164
bin/snasm/RECORD.68K
Normal file
164
bin/snasm/RECORD.68K
Normal file
|
@ -0,0 +1,164 @@
|
|||
; Some rather complex macros to add strucures (sort of) to your assembly
|
||||
; language programs. (Needs SNASM >=0.21)
|
||||
|
||||
; This is presented as a starting point for discussion rather than a working
|
||||
; and useable piece of code
|
||||
|
||||
; It may take you a while to figure out how these macros work but it is worth
|
||||
; the effort!
|
||||
|
||||
|
||||
; Run through the field array of Type and define all the offsets from Name
|
||||
|
||||
Define macro Name,Type
|
||||
|
||||
local TagNum,Temp
|
||||
|
||||
TagNum = 0
|
||||
\Name equ *
|
||||
|
||||
rept \Type\_Count
|
||||
|
||||
Temp equs \Type\_\#TagNum
|
||||
|
||||
\Name\_\Temp equ \Name+\Type\_\Temp
|
||||
|
||||
TagNum = TagNum+1
|
||||
|
||||
endr
|
||||
|
||||
ds.b \Type\_Size
|
||||
|
||||
endm
|
||||
|
||||
|
||||
; Initialise a field array
|
||||
|
||||
Record macro Name
|
||||
|
||||
_RecName equs '\Name'
|
||||
|
||||
_RecCount = 0
|
||||
|
||||
rsreset
|
||||
|
||||
endm
|
||||
|
||||
|
||||
; Add a name to the current field array
|
||||
|
||||
NewName macro Name
|
||||
|
||||
\_RecName\_\#_RecCount equs '\Name'
|
||||
|
||||
_RecCount = _RecCount+1
|
||||
|
||||
endm
|
||||
|
||||
|
||||
; Terminate field array
|
||||
|
||||
Recend macro
|
||||
|
||||
\_RecName\_Size equ __RS
|
||||
|
||||
\_RecName\_Count equ _RecCount
|
||||
|
||||
endm
|
||||
|
||||
|
||||
; Add either a simple type or a structure to the current field array
|
||||
|
||||
RI macro Name,Field
|
||||
|
||||
local TagNum,Temp,Base
|
||||
|
||||
; Check for simple types
|
||||
|
||||
if strcmp('\Field','byte')
|
||||
|
||||
\_RecName\_\Name rs.b 1
|
||||
|
||||
NewName \Name
|
||||
|
||||
elseif strcmp('\Field','word')
|
||||
|
||||
\_RecName\_\Name rs.b 2
|
||||
|
||||
NewName \Name
|
||||
|
||||
elseif strcmp('\Field','long')
|
||||
|
||||
\_RecName\_\Name rs.b 4
|
||||
|
||||
NewName \Name
|
||||
|
||||
else
|
||||
|
||||
; It's a structure so run through field array adding new names
|
||||
|
||||
\_RecName\_\Name equ __RS
|
||||
|
||||
NewName \Name
|
||||
|
||||
TagNum = 0
|
||||
Base = __RS
|
||||
|
||||
rept \Field\_Count
|
||||
|
||||
Temp equs \Field\_\#TagNum
|
||||
|
||||
\_RecName\_\Name\_\Temp equ Base+\Field\_\Temp
|
||||
|
||||
NewName \Name\_\Temp
|
||||
|
||||
TagNum = TagNum+1
|
||||
|
||||
endr
|
||||
|
||||
rs.b \Field\_Size
|
||||
|
||||
endif
|
||||
|
||||
endm
|
||||
|
||||
; Now define some structures
|
||||
|
||||
Record Point
|
||||
RI X,word
|
||||
RI Y,word
|
||||
Recend
|
||||
|
||||
Record Rectangle
|
||||
RI P1,Point
|
||||
RI P2,Point
|
||||
Ri Colour,word
|
||||
Recend
|
||||
|
||||
|
||||
; now use them
|
||||
org $1000
|
||||
|
||||
Define Fred,Rectangle
|
||||
|
||||
list
|
||||
|
||||
; so I can now do
|
||||
|
||||
move.w #4,Fred_P1_X
|
||||
lea Fred_P1(pc),a0
|
||||
add.w #4,Point_X(a0)
|
||||
; and
|
||||
lea Fred,a0
|
||||
move.w #12,Rectangle_P1_X(a0)
|
||||
lea Rectangle_P1(a0),a1 ;a1 points at point 1 in fred
|
||||
move.w Point_X(a1),d0
|
||||
end
|
||||
|
||||
; I would of course prefer something like :-
|
||||
|
||||
move.w #4,Fred->P1->X
|
||||
lea Fred->P1(pc),a0
|
||||
add.w #4,Point->X(a0)
|
||||
|
||||
; any ideas on a nice syntax for these structures or does everyone hate them?
|
BIN
bin/snasm/SCSIL16.EXE
Normal file
BIN
bin/snasm/SCSIL16.EXE
Normal file
Binary file not shown.
BIN
bin/snasm/SCSIL2.EXE
Normal file
BIN
bin/snasm/SCSIL2.EXE
Normal file
Binary file not shown.
BIN
bin/snasm/SCSILINK.EXE
Normal file
BIN
bin/snasm/SCSILINK.EXE
Normal file
Binary file not shown.
BIN
bin/snasm/SN659110.EXE
Normal file
BIN
bin/snasm/SN659110.EXE
Normal file
Binary file not shown.
BIN
bin/snasm/SNASM125.EXE
Normal file
BIN
bin/snasm/SNASM125.EXE
Normal file
Binary file not shown.
BIN
bin/snasm/SNASM658.EXE
Normal file
BIN
bin/snasm/SNASM658.EXE
Normal file
Binary file not shown.
BIN
bin/snasm/SNASM659.EXE
Normal file
BIN
bin/snasm/SNASM659.EXE
Normal file
Binary file not shown.
BIN
bin/snasm/SNASMSPC.EXE
Normal file
BIN
bin/snasm/SNASMSPC.EXE
Normal file
Binary file not shown.
26
bin/snasm/SNBUG658.CF7
Normal file
26
bin/snasm/SNBUG658.CF7
Normal file
|
@ -0,0 +1,26 @@
|
|||
#readram
|
||||
00000000 00FFFFFF
|
||||
#writeram
|
||||
00000000 00FFFFFF
|
||||
#update
|
||||
00 0000
|
||||
#video
|
||||
54 84 2B
|
||||
#label level
|
||||
02 7F 7F
|
||||
#colour attributes
|
||||
1E 17 1F F1 E1 30 B1 14 1C 70 E1 1C 1A 00 00 00
|
||||
#mono attributes
|
||||
0F 07 0F 70 70 07 70 0F 09 70 01 07 0F 07 0F 0F
|
||||
#window
|
||||
01 00 00
|
||||
00 00 83 06 0A 01
|
||||
00000000
|
||||
#window
|
||||
02 00 00
|
||||
00 06 41 29 0A 07
|
||||
00008000
|
||||
#window
|
||||
83 00 00
|
||||
41 06 83 29 49 07
|
||||
00008000
|
26
bin/snasm/SNBUG658.CFG
Normal file
26
bin/snasm/SNBUG658.CFG
Normal file
|
@ -0,0 +1,26 @@
|
|||
#readram
|
||||
00000000 00FFFFFF
|
||||
#writeram
|
||||
00000000 00FFFFFF
|
||||
#update
|
||||
00 0000
|
||||
#video
|
||||
54 84 2B
|
||||
#label level
|
||||
02 7F 7F
|
||||
#colour attributes
|
||||
1E 17 1F F1 E1 30 B1 14 1C 70 E1 1C 1A 00 00 00
|
||||
#mono attributes
|
||||
0F 07 0F 70 70 07 70 0F 09 70 01 07 0F 07 0F 0F
|
||||
#window
|
||||
01 00 00
|
||||
00 00 83 06 0A 01
|
||||
00000000
|
||||
#window
|
||||
02 00 00
|
||||
00 06 41 29 0A 07
|
||||
00008000
|
||||
#window
|
||||
83 00 00
|
||||
41 06 83 29 49 07
|
||||
00008000
|
BIN
bin/snasm/SNBUG658.EXE
Normal file
BIN
bin/snasm/SNBUG658.EXE
Normal file
Binary file not shown.
BIN
bin/snasm/SNCOPY.EXE
Normal file
BIN
bin/snasm/SNCOPY.EXE
Normal file
Binary file not shown.
89
bin/snasm/SNGRAB.DOC
Normal file
89
bin/snasm/SNGRAB.DOC
Normal file
|
@ -0,0 +1,89 @@
|
|||
|
||||
SNGRAB.
|
||||
|
||||
|
||||
SnGrab is a SNASM utility designed to 'grab' the contents of memory from a
|
||||
target machine and store it in a specified file(s) on the parent PC. SnGrab
|
||||
can then download from the specified file(s) to the target machine at a
|
||||
later date.
|
||||
|
||||
SnGrab is used as follows:
|
||||
|
||||
sngrab [/t - target num] +|- inputfile
|
||||
where :
|
||||
target is the SCSI ID of the active target (default 7)
|
||||
+|- indicate the direction of data transfer - '+' = to the target
|
||||
'-' = from the target
|
||||
inputfile contains filenames to read\write and their corresponding
|
||||
memory areas
|
||||
|
||||
The following example of an 'inputfile' is designed to upload the contents
|
||||
of the lowest 512K of memory on a SNES into the files r:\demo1-16.
|
||||
|
||||
|
||||
!r:\demo1.bin
|
||||
8000 to 10000
|
||||
!r:\demo2.bin
|
||||
18000 to 20000
|
||||
!r:\demo3.bin
|
||||
28000 to 30000
|
||||
!r:\demo4.bin
|
||||
38000 to 40000
|
||||
!r:\demo5.bin
|
||||
48000 to 50000
|
||||
!r:\demo6.bin
|
||||
58000 to 60000
|
||||
!r:\demo7.bin
|
||||
68000 to 70000
|
||||
!r:\demo8.bin
|
||||
78000 to 80000
|
||||
!r:\demo9.bin
|
||||
88000 to 90000
|
||||
!r:\demo10.bin
|
||||
98000 to A0000
|
||||
!r:\demo11.bin
|
||||
A8000 to B0000
|
||||
!r:\demo12.bin
|
||||
B8000 to C0000
|
||||
!r:\demo13.bin
|
||||
C8000 to D0000
|
||||
!r:\demo14.bin
|
||||
D8000 to E0000
|
||||
!r:\demo15.bin
|
||||
E8000 to F0000
|
||||
!r:\demo16.bin
|
||||
F8000 to 100000
|
||||
|
||||
|
||||
The following would load the same memory areas into one file;demo.bin.
|
||||
|
||||
|
||||
!demo.bin
|
||||
8000 to 10000
|
||||
18000 to 20000
|
||||
28000 to 30000
|
||||
38000 to 40000
|
||||
48000 to 50000
|
||||
58000 to 60000
|
||||
68000 to 70000
|
||||
78000 to 80000
|
||||
88000 to 90000
|
||||
98000 to A0000
|
||||
A8000 to B0000
|
||||
B8000 to C0000
|
||||
C8000 to D0000
|
||||
D8000 to E0000
|
||||
E8000 to F0000
|
||||
F8000 to 100000
|
||||
|
||||
|
||||
|
||||
Assuming that the 'inputfile' is called demo.dat the following command line
|
||||
will upload the memory from the target machine
|
||||
|
||||
sngrab - demo.dat
|
||||
|
||||
and the following will download from the PC to the target
|
||||
|
||||
sngrab + demo.dat
|
||||
|
BIN
bin/snasm/SNGRAB.EXE
Normal file
BIN
bin/snasm/SNGRAB.EXE
Normal file
Binary file not shown.
BIN
bin/snasm/SNLIB.EXE
Normal file
BIN
bin/snasm/SNLIB.EXE
Normal file
Binary file not shown.
BIN
bin/snasm/SNLINK.EXE
Normal file
BIN
bin/snasm/SNLINK.EXE
Normal file
Binary file not shown.
BIN
bin/snasm/SNMAKE.EXE
Normal file
BIN
bin/snasm/SNMAKE.EXE
Normal file
Binary file not shown.
34
bin/snasm/SNRUN.DOC
Normal file
34
bin/snasm/SNRUN.DOC
Normal file
|
@ -0,0 +1,34 @@
|
|||
SNRUN temporary documentation.
|
||||
|
||||
SNRUN is used to send a cpe file to a target machine and then start execution.
|
||||
It can cope with cpe files produced by all versions of the assemblers and
|
||||
linkers and copes with all embeded register and workspace information.
|
||||
|
||||
To get command line help type 'snrun ?'.
|
||||
|
||||
To send myfile.cpe to target 7 just type -
|
||||
snrun myfile
|
||||
|
||||
To send myfile.cpe to target 6 but not start executing type -
|
||||
snrun /h /t6 myfile
|
||||
|
||||
The following can be used in your .prj file if you want to work via a cpe
|
||||
file.
|
||||
|
||||
...
|
||||
|
||||
demoag.cpe; demoag.68k
|
||||
snasm68k $! demoag.68k,demoag.cpe,demoag.sym
|
||||
!ifdef(debugstr)
|
||||
snbug68k /edemoag.cpe demoag.sym
|
||||
!else
|
||||
snrun demoag
|
||||
!endif
|
||||
|
||||
...
|
||||
|
||||
It returns error codes but I don't have a list of them yet!
|
||||
|
||||
Ian Oliver
|
||||
|
||||
|
BIN
bin/snasm/SNRUN.EXE
Normal file
BIN
bin/snasm/SNRUN.EXE
Normal file
Binary file not shown.
93
bin/snasm/SPC700.DOC
Normal file
93
bin/snasm/SPC700.DOC
Normal file
|
@ -0,0 +1,93 @@
|
|||
64K address space.
|
||||
0000-00FF Page zero
|
||||
0100-01ff Page one (used for stack as on 6502)
|
||||
|
||||
Regs
|
||||
A, X, Y PSW, (program status word), PC, SP
|
||||
|
||||
A is 8 bit. When using 16 bit instructions in is paired with Y, with Y
|
||||
being the high order byte.
|
||||
|
||||
Boolean bit operations can be performed in the memory range 0000-1fff
|
||||
|
||||
Format of PSW.
|
||||
NVP-H-ZC Negative, Overflow, Direct page, Half carry, Zero, Carry
|
||||
The direct page flag determines if DP accesses are to page 0 or page 1.
|
||||
|
||||
Addressing modes
|
||||
----------------
|
||||
|
||||
Mode Desc. Bytes
|
||||
dp Direct page 2
|
||||
dp+X X-indexed direct page 2
|
||||
dp+Y Y-indexed direct page 2
|
||||
(X) indirect 1
|
||||
(X)+ indirect auto-inc 1
|
||||
dp.dp Direct page to dp 3
|
||||
(X),(Y) Indirect page to IP 1
|
||||
dp,#imm Immediate data to dp 3
|
||||
dp.bit Direct page bit 2
|
||||
dp.bit.rel Direct page bit rel 3
|
||||
mem.bit Absolute bit 3
|
||||
!abs absolute 3
|
||||
!abs+X absolute X 3
|
||||
!abs+Y absolute Y 3
|
||||
[dp+X] X-indexed indirect 2
|
||||
[dp]+Y Indirect Y-indexed 2
|
||||
|
||||
|
||||
Latest Changes to snasmspc
|
||||
--------------------------
|
||||
|
||||
All instructions are now implemented including bbs, set1, etc.
|
||||
|
||||
|
||||
|
||||
The character between the memory location and the bit number in and1, etc.
|
||||
is now '.' rather than ',', eg.
|
||||
|
||||
and1 c,$23.2
|
||||
set1 $30.1
|
||||
|
||||
If the memory address ends in a name it will have to be bracketed to avoid
|
||||
the bit number being treated as part of the name, eg.
|
||||
|
||||
and1 c,(fred).2
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
There is an assume statement for the direct page selection flag :
|
||||
|
||||
assume dp:0 -- page 0 is direct page
|
||||
assume dp:1 -- page 1 is direct page
|
||||
|
||||
initially page 0 will be assumed to be direct page. Optimisation to
|
||||
direct page addressing will check that the operand is in the assumed
|
||||
page.
|
||||
|
||||
|
||||
|
||||
Absolute address mode can be forced by using ! as an operand prefix, eg.
|
||||
|
||||
mov !$30+y,a
|
||||
jmp !fred
|
||||
jmp [!jtab+x]
|
||||
|
||||
Direct page addressing can be forced by using < as an operand prefix, eg.
|
||||
|
||||
mov <fred,a
|
||||
|
||||
The address expression will be calculated by subtracting the currently
|
||||
assumed direct page bank number from the operand value. The result of
|
||||
this must be in the range 0-255.
|
||||
|
||||
|
||||
|
||||
The ` characters are used to enclose macro parameters (as in 65816), eg.
|
||||
|
||||
callmacro `fred < jim`
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user