1
0
mirror of https://github.com/wfjm/w11.git synced 2026-03-28 02:53:51 +00:00

tools/bin: add dasm-11, a PDP-11 disassembler [skip ci]

This commit is contained in:
wfjm
2022-09-01 08:44:23 +02:00
parent 5a28096eb6
commit 058f88b9a0
26 changed files with 4521 additions and 2 deletions

View File

@@ -37,10 +37,12 @@ The full set of tests is only run for tagged releases.
- cleanup SimH setup files (\*.scmd), use autoconfig, set disk types
- cleanup code base, use page,mmr\*,pdr,par instead of segment,ssr\*,sdr,sar
- sysid encodes now system type, allows to distingish w11,SimH,e11
- added dasm-11, a PDP-11 disassembler
### New features
- new verification codes
- tools/tcode: fast cpu verification codes
- tools/tests: test programs
- tools/bin: added dasm-11, a PDP-11 disassembler
### Changes
- tools changes
- ci.yml: define TBW_GHDL_OPTS and suppress IEEE package warnings at t=0ms

View File

@@ -5,6 +5,7 @@ This directory tree contains **many tools** and is organized in
| [asm-11](asm-11) | environment for `asm-11` assembler |
| [bin](bin) | support scripts and tools |
| [bin_xilinx_wrapper](bin_xilinx_wrapper) | wrappers for Xilinx environments |
| [dasm-11](dasm-11) | environment for `dasm-11` disassembler |
| [dox](dox) | configuration files for Doxygen |
| [exptest](exptest) | configuration files for `ostest` and other expect based tests |
| [fx2](fx2) | firmware for Cypress FX2 USB interface |

3763
tools/bin/dasm-11 Executable file

File diff suppressed because it is too large Load Diff

6
tools/dasm-11/README.md Normal file
View File

@@ -0,0 +1,6 @@
This directory tree contains the **environment for dasm-11 disassembler**
and is organized in
| Directory | Content |
| --------- | ------- |
| [lib](lib) | das library |

View File

@@ -0,0 +1,7 @@
# $Id: defs_act11.das 1286 2022-08-25 06:53:38Z mueller $
#
# defs for ACT11 hooks
#
000044 : .word* ; act11: point to header block
000046 : .code* ; act11: point to $endad
000052 : .word ; act11: hook

View File

@@ -0,0 +1,11 @@
# $Id: defs_bits.das 1286 2022-08-25 06:53:38Z mueller $
#
# definitions for generic bits names
#
.symset %bits = bit15=100000,\
bit14=040000,bit13=020000,bit12=010000,\
bit11=004000,bit10=002000,bit09=001000,\
bit08=000400,bit07=000200,bit06=000100,\
bit05=000040,bit04=000020,bit03=000010,\
bit02=000004,bit01=000002,bit00=000001
#

View File

@@ -0,0 +1,11 @@
# $Id: defs_chars.das 1286 2022-08-25 06:53:38Z mueller $
#
# definitions for ASCII control characters
#
.symset @chars = BEL=000007,\
BS=000010,\
HT=000011,\
LF=000012,\
FF=000014,\
CR=000015,\
DEL=000177

View File

@@ -0,0 +1,12 @@
# $Id: defs_chars_crlf.das 1286 2022-08-25 06:53:38Z mueller $
#
# definitions for ASCII control characters, with CRLF=200
#
.symset @chars = BEL=000007,\
BS=000010,\
HT=000011,\
LF=000012,\
FF=000014,\
CR=000015,\
DEL=000177,\
CRLF=000200

View File

@@ -0,0 +1,19 @@
# $Id: defs_cons.das 1286 2022-08-25 06:53:38Z mueller $
#
# definitions for console
#
000060 : v..tti: .vect
000064 : v..tto: .vect
#
.symbol ti.csr = 177560 use=%ti.cs
.symbol ti.buf = 177562
.symbol to.csr = 177564 use=%to.cs
.symbol to.buf = 177566
#
.symset %ti.cs = ti.rac=004000,\
ti.rdy=000200,\
ti.ie=000100,\
ti.ren=000001
.symset %to.cs = to.rdy=000200,\
to.ie=000100,\
to.mai=00004

View File

@@ -0,0 +1,29 @@
# $Id: defs_cpu.das 1286 2022-08-25 06:53:38Z mueller $
#
# definitions for cpu
#
.symbol cp.psw = 177776 use=%cp.psw
.symbol cp.dsr = 177570 use=%bits
.symbol xor.cs = 177060
#
.symset %cp.psw = cp.cms=040000:140000,\
cp.cmu=140000:140000,\
cp.pms=010000:030000,\
cp.pmu=030000:030000,\
cp.ars=004000,\
cp.pr0=000000:000340,\
cp.pr1=000040:000340,\
cp.pr2=000100:000340,\
cp.pr3=000140:000340,\
cp.pr4=000200:000340,\
cp.pr5=000240:000340,\
cp.pr6=000300:000340,\
cp.pr7=000340:000340,\
cp.t=000020,\
cp.n=000010,\
cp.z=000004,\
cp.v=000002,\
cp.c=000001
#
@defs_bits.das
#

View File

@@ -0,0 +1,11 @@
# $Id: defs_deuna.das 1286 2022-08-25 06:53:38Z mueller $
#
# definitions for DEUNA controler
#
000120 : v..deu: .vect
#
.symbol de.sr0 = 174510
.symbol de.sr1 = 174512
.symbol de.sr2 = 174514
.symbol de.sr3 = 174516
#

View File

@@ -0,0 +1,11 @@
# $Id: defs_dz.das 1286 2022-08-25 06:53:38Z mueller $
#
# definitions for DZ11 controler
#
# <float> : v..dz: .vect ... is floating
#
.symbol dz.csr = 160100
.symbol dz.rbu = 160102
.symbol dz.tcr = 160104
.symbol dz.tdr = 160106
#

View File

@@ -0,0 +1,48 @@
# $Id: defs_iist.das 1286 2022-08-25 06:53:38Z mueller $
#
# definitions for IIST controler
#
000260 : v..iis: .vect
#
.symbol ii.acr = 177500 use=%ii.acr
.symbol ii.adr = 177502
#
.symset %ii.acr = ii.clr=100000,\
ii.si1=000400:001400,\
ii.si2=001000:001400,\
ii.si3=001400:001400,\
ii.pge=000000:000017,\
ii.pgc=000001:000017,\
ii.ste=000002:000017,\
ii.stc=000003:000017,\
ii.msk=000004:000017,\
ii.pgf=000005:000017,\
ii.stf=000006:000017,\
ii.dcf=000007:000017,\
ii.exc=000010:000017,\
ii.mtc=000015:000017
#
.symset %ii.pgc = ii.err=100000,\
ii.grj=040000,\
ii.pgr=020000,\
ii.str=010000,\
ii.rdy=004000,\
ii.ip=000010,\
ii.ie=000004,\
ii.ptp=000002,\
ii.go=000001
#
.symset %ii.stc = ii.tmo=000010,\
ii.lke=000004,\
ii.stp=000002,\
ii.enb=000001
#
.symset %ii.mtc = ii.mtp=004000,\
ii.mfr=002000,\
ii.mi1=000400:001400,\
ii.mi2=001000:001400,\
ii.mi3=001400:001400,\
ii.dbt=000010,\
ii.mxd=000004,\
ii.mlp=000002,\
ii.ddr=000001

View File

@@ -0,0 +1,10 @@
# $Id: defs_kwl.das 1286 2022-08-25 06:53:38Z mueller $
#
# definitions for kw11-l (line clock)
#
000100 : v..kwl: .vect
#
.symbol kl.csr = 177546 use=%kl.cs
#
.symset %kl.cs = kl.mon=000200,\
kl.ie=000100

View File

@@ -0,0 +1,20 @@
# $Id: defs_kwp.das 1286 2022-08-25 06:53:38Z mueller $
#
# definitions for kw11-p (programmable clock)
#
000104 : v..kwp: .vect
#
.symbol kp.csr = 172540 use=%kp.cs
.symbol kp.buf = 172542
.symbol kp.cnt = 172544
#
.symset %kp.cs = kp.err=100000,\
kp.don=000200,\
kp.ie=000100,\
kp.fix=000040,\
kp.up=000020,\
kp.rep=000010,\
kp.rex=000006:000006,\
kp.rlf=000004:000006,\
kp.rtk=000002:000006,\
kp.run=000001

View File

@@ -0,0 +1,15 @@
# $Id: defs_lp.das 1286 2022-08-25 06:53:38Z mueller $
#
# definitions for lp11
#
# definition of vector excluded because it
# collides with startup code of normal xxdp diags
#
# 000200 : v..lp: .vect
#
.symbol lp.csr = 177514 use=%lp.cs
.symbol lp.buf = 177516
#
.symset %lp.cs = lp.err=100000,\
lp.don=000200,\
lp.ie=000100

View File

@@ -0,0 +1,157 @@
# $Id: defs_mmu.das 1286 2022-08-25 06:53:38Z mueller $
#
# definitions for mmu regs
#
.symbol mmr0=177572 use=%mmu.mmr0
.symbol mmr1=177574
.symbol mmr2=177576
.symbol mmr3=172516 use=%mmu.mmr3
#
000250 : v..mmu: .vect
#
# names for page descriptor & address regs a la ZKBJB0 listing
# user "I" page descriptor
.symbol uipdr0=177600 use=%mmu.pdr
.symbol uipdr1=177602 use=%mmu.pdr
.symbol uipdr2=177604 use=%mmu.pdr
.symbol uipdr3=177606 use=%mmu.pdr
.symbol uipdr4=177610 use=%mmu.pdr
.symbol uipdr5=177612 use=%mmu.pdr
.symbol uipdr6=177614 use=%mmu.pdr
.symbol uipdr7=177616 use=%mmu.pdr
# user "D" page descriptor
.symbol udpdr0=177620 use=%mmu.pdr
.symbol udpdr1=177622 use=%mmu.pdr
.symbol udpdr2=177624 use=%mmu.pdr
.symbol udpdr3=177626 use=%mmu.pdr
.symbol udpdr4=177630 use=%mmu.pdr
.symbol udpdr5=177632 use=%mmu.pdr
.symbol udpdr6=177634 use=%mmu.pdr
.symbol udpdr7=177636 use=%mmu.pdr
# user "I" page address
.symbol uipar0=177640
.symbol uipar1=177642
.symbol uipar2=177644
.symbol uipar3=177646
.symbol uipar4=177650
.symbol uipar5=177652
.symbol uipar6=177654
.symbol uipar7=177656
# user "D" page address
.symbol udpar0=177660
.symbol udpar1=177662
.symbol udpar2=177664
.symbol udpar3=177666
.symbol udpar4=177670
.symbol udpar5=177672
.symbol udpar6=177674
.symbol udpar7=177676
# supervisor "I" page descriptor
.symbol sipdr0=172200 use=%mmu.pdr
.symbol sipdr1=172202 use=%mmu.pdr
.symbol sipdr2=172204 use=%mmu.pdr
.symbol sipdr3=172206 use=%mmu.pdr
.symbol sipdr4=172210 use=%mmu.pdr
.symbol sipdr5=172212 use=%mmu.pdr
.symbol sipdr6=172214 use=%mmu.pdr
.symbol sipdr7=172216 use=%mmu.pdr
# supervisor "D" page descriptor
.symbol sdpdr0=172220 use=%mmu.pdr
.symbol sdpdr1=172222 use=%mmu.pdr
.symbol sdpdr2=172224 use=%mmu.pdr
.symbol sdpdr3=172226 use=%mmu.pdr
.symbol sdpdr4=172230 use=%mmu.pdr
.symbol sdpdr5=172232 use=%mmu.pdr
.symbol sdpdr6=172234 use=%mmu.pdr
.symbol sdpdr7=172236 use=%mmu.pdr
# supervisor "I" page address
.symbol sipar0=172240
.symbol sipar1=172242
.symbol sipar2=172244
.symbol sipar3=172246
.symbol sipar4=172250
.symbol sipar5=172252
.symbol sipar6=172254
.symbol sipar7=172256
# supervisor "D" page address
.symbol sdpar0=172260
.symbol sdpar1=172262
.symbol sdpar2=172264
.symbol sdpar3=172266
.symbol sdpar4=172270
.symbol sdpar5=172272
.symbol sdpar6=172274
.symbol sdpar7=172276
# kernel "I" page descriptor
.symbol kipdr0=172300 use=%mmu.pdr
.symbol kipdr1=172302 use=%mmu.pdr
.symbol kipdr2=172304 use=%mmu.pdr
.symbol kipdr3=172306 use=%mmu.pdr
.symbol kipdr4=172310 use=%mmu.pdr
.symbol kipdr5=172312 use=%mmu.pdr
.symbol kipdr6=172314 use=%mmu.pdr
.symbol kipdr7=172316 use=%mmu.pdr
# kernel "D" page descriptor
.symbol kdpdr0=172320 use=%mmu.pdr
.symbol kdpdr1=172322 use=%mmu.pdr
.symbol kdpdr2=172324 use=%mmu.pdr
.symbol kdpdr3=172326 use=%mmu.pdr
.symbol kdpdr4=172330 use=%mmu.pdr
.symbol kdpdr5=172332 use=%mmu.pdr
.symbol kdpdr6=172334 use=%mmu.pdr
.symbol kdpdr7=172336 use=%mmu.pdr
# kernel "I" page address
.symbol kipar0=172340
.symbol kipar1=172342
.symbol kipar2=172344
.symbol kipar3=172346
.symbol kipar4=172350
.symbol kipar5=172352
.symbol kipar6=172354
.symbol kipar7=172356
# kernel "D" page address
.symbol kdpar0=172360
.symbol kdpar1=172362
.symbol kdpar2=172364
.symbol kdpar3=172366
.symbol kdpar4=172370
.symbol kdpar5=172372
.symbol kdpar6=172374
.symbol kdpar7=172376
#
.symset %mmu.mmr0 = m0.anr=100000,\
m0.ale=040000,\
m0.ard=020000,\
m0.trp=010000,\
m0.ent=001000,\
m0.mai=000400,\
m0.ico=000200,\
m0.sum=000140:000140,\
m0.ssm=000040:000140,\
m0.dsp=000020,\
m0.sn7=000016:000016,\
m0.sn6=000014:000016,\
m0.sn5=000012:000016,\
m0.sn4=000010:000016,\
m0.sn3=000006:000016,\
m0.sn2=000004:000016,\
m0.sn1=000002:000016,\
m0.ena=000001
#
.symset %mmu.mmr3 = m3.eub=000040,\
m3.e22=000020,\
m3.dkm=000004,\
m3.dsm=000002,\
m3.dum=000001
#
.symset %mmu.pdr = md.aia=000200,\
md.aiw=000100,\
md.dwn=000010,\
md.an7=000007:000007,\
md.arw=000006:000007,\
md.atw=000005:000007,\
md.atr=000004:000007,\
md.an3=000003:000007,\
md.aro=000002:000007,\
md.art=000001:000007
#

View File

@@ -0,0 +1,20 @@
# $Id: defs_pc.das 1286 2022-08-25 06:53:38Z mueller $
#
# definitions for PC11 controller
#
000070 : v..pr: .vect
000074 : v..pp: .vect
#
.symbol pr.csr = 177550 use=%pr.cs
.symbol pr.buf = 177552
.symbol pp.csr = 177554 use=%pp.cs
.symbol pp.buf = 177556
#
.symset %pr.cs = pr.err=100000,\
pr.bsy=004000,\
pr.don=000200,\
pr.ie=000100,\
pr.ena=000001
.symset %pp.cs = pp.err=100000,\
pp.rdy=000200,\
pp.ie=000100

View File

@@ -0,0 +1,27 @@
# $Id: defs_reg70.das 1286 2022-08-25 06:53:38Z mueller $
#
# definitions for 11/70 cpu registers
#
.symbol cp.stk=177774
.symbol cp.pir=177772
.symbol cp.mbr=177770
.symbol cp.err=177766 use=%cp.err
.symbol cp.sid=177764
.symbol cp.his=177762
.symbol cp.los=177760
#
.symbol ms.hm=177752
.symbol ms.mai=177750
.symbol ms.ctl=177746
.symbol ms.err=177744
.symbol ms.ehi=177742
.symbol ms.elo=177740
#
.symbol cp.ubm=170200
#
.symset %cp.err = cp.hlt=000200,\
cp.aer=000100,\
cp.nxm=000040,\
cp.ito=000020,\
cp.ysv=000010,\
cp.rsv=000004

View File

@@ -0,0 +1,64 @@
# $Id: defs_rk.das 1286 2022-08-25 06:53:38Z mueller $
#
# definitions for RK11 controller
#
000220 : v..rk: .vect
#
.symbol rk.ds = 177400 use=%rk.ds
.symbol rk.er = 177402 use=%rk.er
.symbol rk.cs = 177404 use=%rk.cs
.symbol rk.wc = 177406 use=.
.symbol rk.ba = 177410
.symbol rk.da = 177412
.symbol rk.mr = 177414
.symbol rk.db = 177416
#
.symset %rk.cs = rk.err=100000,\
rk.he=040000,\
rk.scp=020000,\
rk.mai=010000,\
rk.iba=004000,\
rk.fmt=002000,\
rk.rwa=001000,\
rk.sse=000400,\
rk.rdy=000200,\
rk.ie=000100,\
rk.fwr=000002:000016,\
rk.frd=000004:000016,\
rk.fwc=000006:000016,\
rk.fse=000010:000016,\
rk.frc=000012:000016,\
rk.fdr=000014:000016,\
rk.fwl=000016:000016,\
rk.go=000001
#
.symset %rk.ds = rk.id1=020000:160000,\
rk.id2=040000:160000,\
rk.id3=060000:160000,\
rk.id4=100000:160000,\
rk.id5=120000:160000,\
rk.id6=140000:160000,\
rk.id7=160000:160000,\
rk.dpl=010000,\
rk.hde=004000,\
rk.dru=002000,\
rk.sin=001000,\
rk.sok=000400,\
rk.dry=000200,\
rk.ary=000100,\
rk.wps=000040,\
rk.seq=000020
#
.symset %rk.er = rk.dre=100000,\
rk.ovr=040000,\
rk.wlo=020000,\
rk.ske=010000,\
rk.pce=004000,\
rk.nxm=002000,\
rk.dlt=001000,\
rk.rte=000400,\
rk.nxd=000200,\
rk.nxc=000100,\
rk.nxs=000040,\
rk.cse=000002,\
rk.wce=000001

View File

@@ -0,0 +1,30 @@
# $Id: defs_rl.das 1286 2022-08-25 06:53:38Z mueller $
#
# definitions for RL11 controller
#
000160 : v..rl: .vect
#
.symbol rl.cs = 174400 use=%rl.cs
.symbol rl.ba = 174402
.symbol rl.da = 174404
.symbol rl.mp = 174406
#
.symset %rl.cs = rl.err=100000,\
rl.de=040000,\
rl.eoi=000001:036000,\
rl.erc=000002:036000,\
rl.ehc=000003:036000,\
rl.edl=000004:036000,\
rl.ehn=000005:036000,\
rl.enx=000010:036000,\
rl.cry=000200,\
rl.ie=000100,\
rl.fwc=000002:000016,\
rl.fgs=000004:000016,\
rl.fsk=000006:000016,\
rl.frh=000010:000016,\
rl.fwd=000012:000016,\
rl.frd=000014:000016,\
rl.frn=000016:000016,\
rl.dry=000001
#

View File

@@ -0,0 +1,55 @@
# $Id: defs_rm.das 1286 2022-08-25 06:53:38Z mueller $
#
# definitions for RH70 + RM disk controller
#
000254 : v..rm: .vect
#
.symbol rm.cs1 = 176700 use=%rm.cs1
.symbol rm.wc = 176702 use=.
.symbol rm.ba = 176704
.symbol rm.da = 176706
.symbol rm.cs2 = 176710
.symbol rm.ds = 176712
.symbol rm.er1 = 176714 use=%rm.er1
.symbol rm.as = 176716
.symbol rm.la = 176720
.symbol rm.db = 176722
.symbol rm.mr1 = 176724
.symbol rm.dt = 176726
.symbol rm.sn = 176730
.symbol rm.of = 176732
.symbol rm.dc = 176734
.symbol rm.hr = 176736
.symbol rm.mr2 = 176740
.symbol rm.er2 = 176742
.symbol rm.ec1 = 176744
.symbol rm.ec2 = 176746
.symbol rm.bae = 176750
.symbol rm.cs3 = 176752
#
# cs1 symset incomplete
.symset %rm.cs1= rm.sc=100000,\
rm.tre=040000,\
rm.dva=004000,\
rm.rdy=000200,\
rm.ie=000100,\
rm.fsk=000004:000016,\
rm.fcl=000010:000016,\
rm.go=000001
#
.symset %rm.er1= rm.dck=100000,\
rm.uns=040000,\
rm.opi=020000,\
rm.dte=010000,\
rm.wle=004000,\
rm.iae=002000,\
rm.aoe=001000,\
rm.hcr=000400,\
rm.hce=000200,\
rm.ech=000100,\
rm.wcf=000040,\
rm.fer=000020,\
rm.par=000010,\
rm.rmr=000004,\
rm.ilr=000002,\
rm.ilf=000001

View File

@@ -0,0 +1,13 @@
# $Id: defs_tm.das 1286 2022-08-25 06:53:38Z mueller $
#
# definitions for TM11 controller
#
000224 : v..tm: .vect
#
.symbol tm.mts = 172520
.symbol tm.mtc = 172522
.symbol tm.brc = 172524
.symbol tm.cma = 172526
.symbol tm.mtd = 172530
.symbol tm.rda = 172532
#

View File

@@ -0,0 +1,13 @@
# $Id: defs_vect.das 1286 2022-08-25 06:53:38Z mueller $
#
# common vectors
#
000004 : v..iit: .vect
000010 : v..rit: .vect
000014 : v..bpt: .vect
000020 : v..iot: .vect
000024 : v..pwr: .vect
000030 : v..emt: .vect
000034 : v..trp: .vect
#
000114 : v..mse: .vect

View File

@@ -1,5 +1,5 @@
.\" -*- nroff -*-
.\" $Id: asm-11.1 1264 2022-07-30 07:42:17Z mueller $
.\" $Id: asm-11.1 1286 2022-08-25 06:53:38Z mueller $
.\" SPDX-License-Identifier: GPL-3.0-or-later
.\" Copyright 2013-2022 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
.\"
@@ -99,7 +99,7 @@ no .mexit, .mdelete, .mcall support
.IP "\fB\-I\fI path\fR"
adds \fIpath\fP to the .include search path.
The default search path is '.' plus \fI$RETROBASE/tools/asm-11\fP if
\fBRETROBASE\fP is defined. Each \fB\-I\fP adds \fIpath\P after '.'.
\fBRETROBASE\fP is defined. Each \fB\-I\fP adds \fIpath\fP after '.'.
\fB\-I\fP can be given multiple times und must have a single path name.
.
.\" ----------------------------------------------

164
tools/man/man1/dasm-11.1 Normal file
View File

@@ -0,0 +1,164 @@
.\" -*- nroff -*-
.\" $Id: dasm-11.1 1286 2022-08-25 06:53:38Z mueller $
.\" SPDX-License-Identifier: GPL-3.0-or-later
.\" Copyright 2022- by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
.\"
.\" ------------------------------------------------------------------
.
.TH DASM-11 1 2022-08-25 "Retro Project" "Retro Project Manual"
.\" ------------------------------------------------------------------
.SH NAME
dasm-11 \- simple dis-assembler for PDP-11 binary code
.\" ------------------------------------------------------------------
.SH SYNOPSIS
.
.SY dasm-11
.RI [ OPTION ]...
.I FILE
.
.SY dasm-11
.B \-\-help
.YS
.
.\" ------------------------------------------------------------------
.SH DESCRIPTION
\fBdasm-11\fP is a simple disassembler for PDP-11 binary code.
It reads a core dump in \fBlsm-11\fP(5) format from \fIFILE\fP.
If \fIFILE\fP is '-' the core dump is read from \fIstdin\fP.
If \fIFILE\fP ends on '.gz' it is expanded with \fBgunzip\fP(1) on-the-fly.
The disassembled code is written in MACRO-11 format to \fIstdout\fP,
followed by a symbol table, a cross-reference table, and a statistics summary.
.SS Basic operation
In very simplified terms, \fBdasm-11\fP tries to tag each memory word as
either 'code', 'word', 'byte', or 'asciz' and represent it accordingly
in MACRO-11 format. Sequences of zero 'word' or 'byte' locations are
represented with a \fI.blkw\fP or \fI.blkb\fP directive, respectively.
The MACRO-11 output is always an exact replica of the input and contains an
equivalent representation of all memory locations defined in the input file.
In the most basic operation mode, \fBdasm-11\fP is used with the \fB\-\-start\fP
option to specify one or several start addresses.
\fBdasm-11\fP tags these addresses as 'code' and follows all possible
code execution paths and tags all instructions as 'code'. All memory
locations accessed via an absolute or PC relative address mode are
tagged 'byte' or 'word' depending on the instruction.
Without code start address via \fB\-\-start\fP, \fBdasm-11\fP can't do any
code tagging, and without any tagging, the output is simply a list of
\fI.word\fP directives, effectively a 1-to-1 dump of the input file.
.
.SS Guided operation
The basic operation with just a few code start addresses has severe functional
limitations
.RS 2
.PD 0
.IP "-" 2
code reached indirectly, e.g. via dispatch tables, is not detected
.IP "-"
strings are not detected and dumped as \fI.word\fP lists
.IP "-"
parameters following 'jsr r5' and trap instructions aren't handled
.PD
.RE
.PP
Beyond that, the output is not very human-friendly, all labels are
auto-generated with type letter and a 3-4 digit number, the immediate values
are numeric, and the whole output is flat without any annotation.
All this is addressed in guided operation. Additional information is
provided to \fBdasm-11\fP with 'diassembler steering' file, specified
via the \fB\-\-das\fP option. The steering file allows
.RS 2
.PD 0
.IP "-" 2
to declare the data type for an address: code, string, but also rad50 or float,
pointers to and arrays of any of those types.
.IP "-"
to declare argument lists for routines (e.g. called with 'jsr r5') and trap
instructions
.IP "-"
to declare symbolic names for literal values
.IP "-"
to define a telling label name for an address
.IP "-"
to add code annotation, full line or after statement comments
.IP "-"
to define interrupt vectors
.PD
.RE
.PP
.\" ------------------------------------------------------------------
.SH OPTIONS
.\" ----------------------------------------------
.IP "\fB\-I\fI path\fR"
adds \fIpath\fP to the \fIdas\fP file include search path.
The default search path is '.' plus \fI$RETROBASE/tools/dasm-11/lib\fP if
\fBRETROBASE\fP is defined. Each \fB\-I\fP adds \fIpath\fP after '.'.
\fB\-I\fP can be given multiple times und must have a single path name.
.
.\" ----------------------------------------------
.IP "\fB\-\-das=\fIfnam\fR"
if specified \fIfnam\fP will be read as steering file.
If no \fB\-\-das\fP option is given, \fBdasm-11\fP tries to locate and load
the default steering file. A '.gz' and a '.dmp' suffix is stripped from
\fIFILE\fP, a '.das' suffix is added, and if that file exists, it's loaded.
.
.\" ----------------------------------------------
.IP "\fB\-\-dmode=\fImode\fR"
default mode of untagged data. Valid values of \fImode\fP are
.RS
.PD 0
.IP \fBword\fP 7
represent untagged data with \fI.word\fP directives (the default)
.IP \fBasciz\fP
interpret untagged data as zero-terminated ASCII and represent it with
\fI.asciz\fP directives. Useful for finding strings.
.IP \fBcode\fP
interpret untagged data as code. Can be helpful to detect code sequences.
.PD
.RE
.
.\" ----------------------------------------------
.IP "\fB\-\-start=\fInn[,...]\fR"
list of code start addresses. \fInn\fP is interpreted as octal number.
Either a single value of a comma-separated list of values can be specified.
Each address is used as starting point of code tagging.
When \fBdasm-11\fP is used without a steering file and no \fB\-\-start\fP
option is given, no code tagging will be done and the output is simply a
list of \fI.word\fP directives.
.
.\" ----------------------------------------------
.IP "\fB\-help\fR"
print full help text and exit.
.
.\" ------------------------------------------------------------------
.SH OPTIONS FOR DEBUG
.
.\" ----------------------------------------------
.IP "\fB\-\-draw\fR" 8
dump raw data.
.
.\" ----------------------------------------------
.IP "\fB\-\-dtag\fR"
dump tagged data.
.
.\" ----------------------------------------------
.IP "\fB\-\-tctag\fR"
trace code tagging.
.
.\" ----------------------------------------------
.IP "\fB\-\-ttlc\fR"
trace typlabcref calls.
.
.\" ------------------------------------------------------------------
.SH "SEE ALSO"
.BR asm-11 (1),
.BR lsm-11 (5)
.\" ------------------------------------------------------------------
.SH AUTHOR
Walter F.J. Mueller <W.F.J.Mueller@gsi.de>