Mercurial > hg > Members > kono > nitros9-code
view scripts/os9.gdb @ 3210:6353bb024571
Created makefile and defsfile for NoCan RAMMER module driver and descriptor
Updated rammer.asm in the NoCan driver folder to build the NoCan version of the Driver
Updated r0.asm file to create the 6MB version of the descriptor.
The makefile creates a disk image with two sets of the required drivers for
the 6309 and 6809's in their respective module folders.
/NITROS9/6309_L2/MODULES/RBF
for the 6309 files
and
/NITROS9/6809_L2/MODULES/RBF
for the 6809 files.
This will make it easier for doing a dsave from this disk image into a
normal distro disk image so people have these drivers ready for when
new memory upgrades allow compatible usage of the NoCan registers.
author | David Ladd <drencor-xeen@users.sourceforge.net> |
---|---|
date | Wed, 20 Dec 2017 15:15:49 -0600 |
parents | e3e858889ab6 |
children | 11d87afc644a |
line wrap: on
line source
# gdb scripts for NitrOS-9 (or OS-9) # Copyright 2014 Tormod Volden define hook-stop printf "S=%04x X=%04x Y=%04x U=%04x A=%02x B=%02x CC=%02x PC=%04x ", $s, $x, $y, $u, $a, $b, $cc , $pc os9_mwhere end document hook-stop Pretty-print of registers on every halt, and updates external source code window. end define os9_mname set $mname = (char*)$arg0 + *((int*)$arg0 + 2) while 1 if (*$mname < 0x80) printf "%c", *$mname else printf "%c", *$mname-0x80 loop_break end set $mname += 1 end end document os9_mname Print name of module at given address end define os9_mident set $m = (int*)$arg0 set $msize = *($m + 1) set $mtype = *((char*) $m + 6) set $mexec = *(int*)((char*) $m + 9) printf "%04x %4x %2X ", $m, $msize, $mtype os9_mname $m if ($mtype & 0xf) printf "\t[exec %04x] ", (char*)$m + $mexec end printf "\n" end document os9_mident Print details of module at given address. end define os9_mdir printf "addr size ty name\n" set $mt = 0x300 while ($mt < 0x400) if ((int*)*$mt) os9_mident (int*)*$mt end set $mt += 4 end end document os9_mdir List all modules registered in module directory. end define os9_mwhich set $pc_reg = $arg0 set $mt = 0x300 while ($mt < 0x400) if ((int*)*$mt) set $mstart = (int*)*$mt set $mend = (char*)$mstart + *($mstart + 1) if ($pc_reg >= $mstart && $pc_reg < $mend) loop_break end end set $mt += 4 end if ($mt == 0x400) set $mstart = 0 end end document os9_mwhich (internal) Finds module at given address, sets $mstart quietly. end define os9_mwhere if ($argc == 1) set $pc_reg = $arg0 else set $pc_reg = $pc end os9_mwhich $pc_reg if ($mstart) printf "inside " os9_mname $mstart printf "\n" eval "!gvim --remote %02X%02X%02X.crc && gvim --remote-send \":set cursorline<CR>\" && gvim --remote-send \"/^%04X<CR>\"", *((char*)$mend-3), *((char*)$mend-2), *((char*)$mend-1), (char*)$pc_reg - (char*)$mstart else printf "no module\n" end end document os9_mwhere Look up source code line for given address. Requires assembly list files named by CRC in current directory and "gvim" to display listing and highlight line. end define b9 os9_mwhich $pc eval "hbreak *0x%x", (int)$mstart + $arg0 end document b9 Set breakpoint in current module, at given offset. end define ss set $steps = 0 if (*$pc == 0x103f) set $steps = 3 end if (*(char*)$pc == 0x8d) set $steps = 2 end if (*(char*)$pc == 0x17) set $steps = 3 end if ($steps != 0) thbreak *($pc + $steps) cont else stepi end end document ss Single step, but skips OS-9 SWI, bsr and lbsr. end