20030702 release
authorNick Downing <downing.nick@gmail.com>
Mon, 30 Nov 2015 15:40:42 +0000 (02:40 +1100)
committerNick Downing <downing.nick@gmail.com>
Mon, 30 Nov 2015 15:40:42 +0000 (02:40 +1100)
202 files changed:
avr.txt [new file with mode: 0644]
bin/CHECKSUM [moved from bin/checksum with 50% similarity]
bin/appinst.bat
bin/appinst.bat%
bin/banked/grlogin
bin/good/CHECKSUM [new file with mode: 0644]
bin/good/kernel.bin [new file with mode: 0644]
bin/good/uzboot.bin [new file with mode: 0644]
bin/good/uzboot.gz [new file with mode: 0644]
bin/good/uzidisk.dat [new file with mode: 0644]
bin/kernel.bin
bin/mkboot.ucp
bin/mkboot.ucp% [new file with mode: 0644]
bin/mkboot.ucp.org [new file with mode: 0644]
bin/n.ucp
bin/n.ucp% [new file with mode: 0644]
bin/n.ucp.org [new file with mode: 0644]
bin/passwd.txt
bin/passwd.txt%
bin/passwd.txt.org [new file with mode: 0644]
bin/passwd.txt.org% [new file with mode: 0644]
bin/profile.tsys.sh [new file with mode: 0644]
bin/tstsys.sh% [new file with mode: 0644]
bin/tsys.sh% [new file with mode: 0644]
bin/uzboot.bin
bin/uzboot.gz
bin/uzidisk.dat
devlog.txt [new file with mode: 0644]
lib/c0b.lst [new file with mode: 0644]
lib/c0b.rst [new file with mode: 0644]
lib/c0l.lst [new file with mode: 0644]
relnotes/20030702.txt [new file with mode: 0644]
src/avr/tsv3.lst [new file with mode: 0644]
src/avrsample.old/aaa [new file with mode: 0644]
src/avrsample.old/avr_make [new file with mode: 0644]
src/avrsample.old/avr_make% [new file with mode: 0644]
src/avrsample.old/hello.c [new file with mode: 0644]
src/avrsample.old/hello.elf [new file with mode: 0644]
src/avrsample.old/hello.h [new file with mode: 0644]
src/avrsample.old/hello.hex [new file with mode: 0644]
src/avrsample.old/hello.lst [new file with mode: 0644]
src/avrsample.old/hello.map [new file with mode: 0644]
src/avrsample.old/hello.o [new file with mode: 0644]
src/avrsample.old/hello.s [new file with mode: 0644]
src/avrsample.old/io.com [new file with mode: 0644]
src/avrsample.old/ispd.exe [new file with mode: 0644]
src/avrsample.old/libc/calloc.c [new file with mode: 0644]
src/avrsample.old/libc/calloc.s [new file with mode: 0644]
src/avrsample.old/libc/fdevopen.c [new file with mode: 0644]
src/avrsample.old/libc/fdevopen.s [new file with mode: 0644]
src/avrsample.old/libc/gcrt1.S [new file with mode: 0644]
src/avrsample.old/libc/gcrt1.i [new file with mode: 0644]
src/avrsample.old/libc/macros.inc [new file with mode: 0644]
src/avrsample.old/libc/malloc.c [new file with mode: 0644]
src/avrsample.old/libc/malloc.s [new file with mode: 0644]
src/avrsample.old/libc/memset.S [new file with mode: 0644]
src/avrsample.old/libc/memset.i [new file with mode: 0644]
src/avrsample.old/libc/stdio_private.h [new file with mode: 0644]
src/avrsample.old/makefile [new file with mode: 0644]
src/avrsample.old/makefile% [new file with mode: 0644]
src/avrsample.old/n.bat [new file with mode: 0644]
src/avrsample.old/nick [new file with mode: 0644]
src/avrsample.old/r.bat [new file with mode: 0644]
src/avrsample.old/x.bat [new file with mode: 0644]
src/avrsample/a.sh [new file with mode: 0644]
src/avrsample/a.sh% [new file with mode: 0644]
src/avrsample/a.tar [new file with mode: 0644]
src/avrsample/aaa [new file with mode: 0644]
src/avrsample/avr_make [new file with mode: 0644]
src/avrsample/avr_make% [new file with mode: 0644]
src/avrsample/hello.c [new file with mode: 0644]
src/avrsample/hello.c! [new file with mode: 0644]
src/avrsample/hello.c# [new file with mode: 0644]
src/avrsample/hello.c% [new file with mode: 0644]
src/avrsample/hello.eep [new file with mode: 0644]
src/avrsample/hello.elf [new file with mode: 0644]
src/avrsample/hello.h [new file with mode: 0644]
src/avrsample/hello.h# [new file with mode: 0644]
src/avrsample/hello.hex [new file with mode: 0644]
src/avrsample/hello.lst [new file with mode: 0644]
src/avrsample/hello.map [new file with mode: 0644]
src/avrsample/hello.o [new file with mode: 0644]
src/avrsample/hello.s [new file with mode: 0644]
src/avrsample/hello.tar.gz [new file with mode: 0644]
src/avrsample/io.com [new file with mode: 0644]
src/avrsample/ispd.exe [new file with mode: 0644]
src/avrsample/libc/calloc.c [new file with mode: 0644]
src/avrsample/libc/calloc.s [new file with mode: 0644]
src/avrsample/libc/fdevopen.c [new file with mode: 0644]
src/avrsample/libc/fdevopen.s [new file with mode: 0644]
src/avrsample/libc/gcrt1.S [new file with mode: 0644]
src/avrsample/libc/gcrt1.i [new file with mode: 0644]
src/avrsample/libc/macros.inc [new file with mode: 0644]
src/avrsample/libc/malloc.c [new file with mode: 0644]
src/avrsample/libc/malloc.s [new file with mode: 0644]
src/avrsample/libc/memset.S [new file with mode: 0644]
src/avrsample/libc/memset.i [new file with mode: 0644]
src/avrsample/libc/stdio_private.h [new file with mode: 0644]
src/avrsample/makefile [new file with mode: 0644]
src/avrsample/makefile% [new file with mode: 0644]
src/avrsample/n.bat [new file with mode: 0644]
src/avrsample/n.sh [new file with mode: 0644]
src/avrsample/nick [new file with mode: 0644]
src/avrsample/out.s [new file with mode: 0644]
src/avrsample/r.bat [new file with mode: 0644]
src/avrsample/r.sh [new file with mode: 0644]
src/avrsample/x.bat [new file with mode: 0644]
src/bin/avr_make [new file with mode: 0644]
src/bin/avr_make2 [new file with mode: 0644]
src/bin/revava.exe [new file with mode: 0644]
src/gui/grlogin.i86
src/gui/grlogin.map
src/gui/login.c
src/gui/login.c.org [new file with mode: 0644]
src/gui/login.lst
src/gui/login.rel
src/gui/login.rst
src/gui/login.s01
src/gui/wnd.rst
src/kernel/build.ban
src/kernel/build.ban.save [moved from src/kernel/build.ban% with 89% similarity]
src/kernel/cmx/escc.asm
src/kernel/cmx/escc.asm% [new file with mode: 0644]
src/kernel/cmx/escc.asm.org [new file with mode: 0644]
src/kernel/kernel.lnk
src/kernel/kernel.lnk%
src/kernel/n.bat
src/kernel/n.bat.org [new file with mode: 0644]
src/kernel/uzi/devno.h [new file with mode: 0644]
src/kernel/uzi/devtty.c.org [deleted file]
src/kernel/uzi/main.c
src/kernel/uzi/main.c.org [deleted file]
src/kernel/uzi/testsystem.c
src/kernel/uzi/testsystem.h
src/kernel/uzi/touchscreen.c
src/kernel/uzi/touchscreen.h
src/mkutil/revava-0.3/Avr.C [new file with mode: 0644]
src/mkutil/revava-0.3/Avr.h [new file with mode: 0644]
src/mkutil/revava-0.3/Avr.o [new file with mode: 0644]
src/mkutil/revava-0.3/CHANGES [new file with mode: 0644]
src/mkutil/revava-0.3/COPYING [new file with mode: 0644]
src/mkutil/revava-0.3/Error.h [new file with mode: 0644]
src/mkutil/revava-0.3/Flash.C [new file with mode: 0644]
src/mkutil/revava-0.3/Flash.h [new file with mode: 0644]
src/mkutil/revava-0.3/Flash.o [new file with mode: 0644]
src/mkutil/revava-0.3/IntelHex.C [new file with mode: 0644]
src/mkutil/revava-0.3/IntelHex.h [new file with mode: 0644]
src/mkutil/revava-0.3/IntelHex.o [new file with mode: 0644]
src/mkutil/revava-0.3/Main.C [new file with mode: 0644]
src/mkutil/revava-0.3/Main.o [new file with mode: 0644]
src/mkutil/revava-0.3/Makefile [new file with mode: 0644]
src/mkutil/revava-0.3/Object.C [new file with mode: 0644]
src/mkutil/revava-0.3/Object.h [new file with mode: 0644]
src/mkutil/revava-0.3/Object.o [new file with mode: 0644]
src/mkutil/revava-0.3/README [new file with mode: 0644]
src/mkutil/revava-0.3/Source.C [new file with mode: 0644]
src/mkutil/revava-0.3/Source.C% [new file with mode: 0644]
src/mkutil/revava-0.3/Source.h [new file with mode: 0644]
src/mkutil/revava-0.3/Source.o [new file with mode: 0644]
src/mkutil/revava-0.3/TODO [new file with mode: 0644]
src/mkutil/revava-0.3/make_labels.pl [new file with mode: 0644]
src/mkutil/revava-0.3/make_test_source.C [new file with mode: 0644]
src/mkutil/revava-0.3/make_test_source.exe [new file with mode: 0644]
src/mkutil/revava-0.3/make_test_source.o [new file with mode: 0644]
src/mkutil/revava-0.3/n.bat [new file with mode: 0644]
src/mkutil/revava-0.3/n.bat% [new file with mode: 0644]
src/mkutil/revava-0.3/revava.exe [new file with mode: 0644]
src/nicktemp/avr_make [new file with mode: 0644]
src/nicktemp/hello.c [new file with mode: 0644]
src/nicktemp/hello.eep [new file with mode: 0644]
src/nicktemp/hello.elf [new file with mode: 0644]
src/nicktemp/hello.h [new file with mode: 0644]
src/nicktemp/hello.hex [new file with mode: 0644]
src/nicktemp/hello.lst [new file with mode: 0644]
src/nicktemp/hello.map [new file with mode: 0644]
src/nicktemp/hello.o [new file with mode: 0644]
src/nicktemp/hello.s [new file with mode: 0644]
src/nicktemp/hello.tar.gz [new file with mode: 0644]
src/nicktemp/makefile [new file with mode: 0644]
src/testsystem/aap.diff [new file with mode: 0644]
src/testsystem/aap.interleave [new file with mode: 0644]
src/testsystem/cdout [new file with mode: 0644]
src/testsystem/cdout2 [new file with mode: 0644]
src/testsystem/doit [new file with mode: 0644]
src/testsystem/n.sh
src/testsystem/n.sh.org [new file with mode: 0644]
src/testsystem/prout [new file with mode: 0644]
src/testsystem/prout2 [new file with mode: 0644]
src/testsystem/rtc [new file with mode: 0644]
src/testsystem/rtc1 [new file with mode: 0644]
src/testsystem/rtcon [new file with mode: 0644]
src/testsystem/rtcrec [new file with mode: 0644]
src/testsystem/scan [new file with mode: 0644]
src/testsystem/testter.c.new1 [new file with mode: 0644]
src/testsystem/testter.c.org [moved from src/testsystem/testter.c with 100% similarity]
src/testsystem/testter.exe [new file with mode: 0644]
src/testsystem/tsout [new file with mode: 0644]
src/testsystem/tter.c [new file with mode: 0644]
src/testsystem/tter.c.save [new file with mode: 0644]
src/testsystem/tter.exe [new file with mode: 0644]
uzi.bat
uzipatch.bat

diff --git a/avr.txt b/avr.txt
new file mode 100644 (file)
index 0000000..6d65aa4
--- /dev/null
+++ b/avr.txt
@@ -0,0 +1,9 @@
+\r
+AVR files used in current config:\r
+=================================\r
+- touchscreen: 0026, HAS LP295x --> Nick's TSV3\r
+- customer display: 9850, NO LP295x --> CS64V0\r
+- printer: 9927, NO LP295x --> MT102V0\r
+- compactflash: 0233, NO LP295x --> CFLASHV1\r
+- motherboard: 0151 --> WPOV2\r
+\r
similarity index 50%
rename from bin/checksum
rename to bin/CHECKSUM
index 5dfbe49..b53d28a 100644 (file)
Binary files a/bin/checksum and b/bin/CHECKSUM differ
index 0836b57..45f1211 100644 (file)
@@ -1,2 +1,2 @@
 ucp < appinst.ucp\r
-copy uzidisk.dat f:\\r
+copy uzidisk.dat i:\\r
index 0978826..0836b57 100644 (file)
@@ -1,2 +1,2 @@
 ucp < appinst.ucp\r
-copy uzidisk.dat e:\\r
+copy uzidisk.dat f:\\r
index 6e6f53d..c55a6b2 100644 (file)
Binary files a/bin/banked/grlogin and b/bin/banked/grlogin differ
diff --git a/bin/good/CHECKSUM b/bin/good/CHECKSUM
new file mode 100644 (file)
index 0000000..b53d28a
Binary files /dev/null and b/bin/good/CHECKSUM differ
diff --git a/bin/good/kernel.bin b/bin/good/kernel.bin
new file mode 100644 (file)
index 0000000..fdb3dc9
Binary files /dev/null and b/bin/good/kernel.bin differ
diff --git a/bin/good/uzboot.bin b/bin/good/uzboot.bin
new file mode 100644 (file)
index 0000000..02bbd26
Binary files /dev/null and b/bin/good/uzboot.bin differ
diff --git a/bin/good/uzboot.gz b/bin/good/uzboot.gz
new file mode 100644 (file)
index 0000000..bda1f83
Binary files /dev/null and b/bin/good/uzboot.gz differ
diff --git a/bin/good/uzidisk.dat b/bin/good/uzidisk.dat
new file mode 100644 (file)
index 0000000..e3eb7a4
Binary files /dev/null and b/bin/good/uzidisk.dat differ
index 3ff5041..fdb3dc9 100644 (file)
Binary files a/bin/kernel.bin and b/bin/kernel.bin differ
index f8c52ec..e279c43 100644 (file)
@@ -125,6 +125,12 @@ chgrp 100 buijsr
 mkdir 90\r
 chown 11 90\r
 chgrp 101 90\r
+mkdir tsys\r
+chown 0 tsys\r
+chgrp 0 tsys\r
+cd /home/tsys\r
+get profile.tsys.sh .profile\r
+chmod 755 .profile\r
 cd /lib\r
 get liberror.txt\r
 exit\r
diff --git a/bin/mkboot.ucp% b/bin/mkboot.ucp%
new file mode 100644 (file)
index 0000000..87f3938
--- /dev/null
@@ -0,0 +1,139 @@
+root b:\r
+cd /\r
+mkdir bin\r
+mkdir boot\r
+mkdir dev\r
+mkdir etc\r
+mkdir home\r
+mkdir lib\r
+mkdir mnt\r
+mkdir root\r
+mkdir tmp\r
+mkdir usr\r
+mkdir var\r
+cd /bin\r
+bget banked\align align\r
+chmod 755 align\r
+align align\r
+bget banked\cat cat\r
+chmod 755 cat\r
+align cat\r
+bget banked\chgrp chgrp\r
+chmod 755 chgrp\r
+align chgrp\r
+bget banked\chmod chmod\r
+chmod 755 chmod\r
+align chmod\r
+bget banked\chown chown\r
+chmod 755 chown\r
+align chown\r
+bget banked\cp cp\r
+chmod 755 cp\r
+align cp\r
+bget banked\echo echo\r
+chmod 755 echo\r
+align echo\r
+bget banked\fsck fsck\r
+chmod 755 fsck\r
+align fsck\r
+bget banked\init init\r
+chmod 755 init\r
+align init\r
+sln cp ln\r
+bget banked\login login\r
+chmod 755 login\r
+align login\r
+bget banked\ls ls\r
+chmod 755 ls\r
+align ls\r
+bget banked\mkdir mkdir\r
+chmod 755 mkdir\r
+align mkdir\r
+bget banked\more more\r
+chmod 755 more\r
+align more\r
+bget banked\mount mount\r
+chmod 755 mount\r
+align mount\r
+bget banked\msh msh\r
+chmod 755 msh\r
+align msh\r
+sln cp mv\r
+bget banked\reboot reboot\r
+chmod 755 reboot\r
+align reboot\r
+sln cp rm\r
+bget banked\rmdir rmdir\r
+chmod 755 rmdir\r
+align rmdir\r
+sln msh sh\r
+bget banked\ualign ualign\r
+chmod 755 ualign\r
+align ualign\r
+bget banked\umount umount\r
+chmod 755 umount\r
+align umount\r
+cd /boot\r
+bget kernel.bin\r
+align kernel.bin\r
+cd /dev\r
+umask 000\r
+mknod hd0 60666 0 0\r
+mknod hd1 60666 0 1\r
+mknod null 20666 1 0\r
+mknod zero 20666 2 0\r
+mknod kmem 20666 3 0\r
+mknod tty 20666 4 0\r
+mknod tty0 20666 4 1\r
+mknod tty1 20666 4 2\r
+mknod tty2 20666 4 3\r
+mknod tty3 20666 4 4\r
+mknod scale 20666 4 5\r
+mknod lcd0 20666 4 6\r
+mknod lcd1 20666 4 7\r
+mknod lpr0 20666 4 9\r
+umask 022\r
+sln tty0 cognitive\r
+sln tty1 barcode\r
+sln tty1 console\r
+sln tty2 atmodem\r
+sln tty3 apilan\r
+sln lpr0 printer\r
+cd /etc\r
+get group.txt group\r
+get passwd.txt passwd\r
+get mtab.txt mtab\r
+get fstab.txt fstab\r
+get inittab.txt inittab\r
+get profile.sh profile\r
+mkdir rc.d\r
+cd /etc/rc.d\r
+get sysinit.rc rc.sysinit\r
+chmod 755 rc.sysinit\r
+get runonce.rc rc.runonce\r
+chmod 755 rc.runonce\r
+cd /home\r
+mkdir downingn\r
+chown 60 downingn\r
+chgrp 100 downingn\r
+mkdir morsinkj\r
+chown 70 morsinkj\r
+chgrp 100 morsinkj\r
+mkdir buijsr\r
+chown 80 buijsr\r
+chgrp 100 buijsr\r
+mkdir 90\r
+chown 11 90\r
+chgrp 101 90\r
+mkdir tsys\r
+chown 0 tsys\r
+chgrp 0 tsys\r
+cd /home/tsys\r
+get profile.tsys.sh .profile\r
+chmod 755 .profile\r
+bget tsys\r
+chmod 755 tsys\r
+align tsys\r
+cd /lib\r
+get liberror.txt\r
+exit\r
diff --git a/bin/mkboot.ucp.org b/bin/mkboot.ucp.org
new file mode 100644 (file)
index 0000000..f8c52ec
--- /dev/null
@@ -0,0 +1,130 @@
+root b:\r
+cd /\r
+mkdir bin\r
+mkdir boot\r
+mkdir dev\r
+mkdir etc\r
+mkdir home\r
+mkdir lib\r
+mkdir mnt\r
+mkdir root\r
+mkdir tmp\r
+mkdir usr\r
+mkdir var\r
+cd /bin\r
+bget banked\align align\r
+chmod 755 align\r
+align align\r
+bget banked\cat cat\r
+chmod 755 cat\r
+align cat\r
+bget banked\chgrp chgrp\r
+chmod 755 chgrp\r
+align chgrp\r
+bget banked\chmod chmod\r
+chmod 755 chmod\r
+align chmod\r
+bget banked\chown chown\r
+chmod 755 chown\r
+align chown\r
+bget banked\cp cp\r
+chmod 755 cp\r
+align cp\r
+bget banked\echo echo\r
+chmod 755 echo\r
+align echo\r
+bget banked\fsck fsck\r
+chmod 755 fsck\r
+align fsck\r
+bget banked\init init\r
+chmod 755 init\r
+align init\r
+sln cp ln\r
+bget banked\login login\r
+chmod 755 login\r
+align login\r
+bget banked\ls ls\r
+chmod 755 ls\r
+align ls\r
+bget banked\mkdir mkdir\r
+chmod 755 mkdir\r
+align mkdir\r
+bget banked\more more\r
+chmod 755 more\r
+align more\r
+bget banked\mount mount\r
+chmod 755 mount\r
+align mount\r
+bget banked\msh msh\r
+chmod 755 msh\r
+align msh\r
+sln cp mv\r
+bget banked\reboot reboot\r
+chmod 755 reboot\r
+align reboot\r
+sln cp rm\r
+bget banked\rmdir rmdir\r
+chmod 755 rmdir\r
+align rmdir\r
+sln msh sh\r
+bget banked\ualign ualign\r
+chmod 755 ualign\r
+align ualign\r
+bget banked\umount umount\r
+chmod 755 umount\r
+align umount\r
+cd /boot\r
+bget kernel.bin\r
+align kernel.bin\r
+cd /dev\r
+umask 000\r
+mknod hd0 60666 0 0\r
+mknod hd1 60666 0 1\r
+mknod null 20666 1 0\r
+mknod zero 20666 2 0\r
+mknod kmem 20666 3 0\r
+mknod tty 20666 4 0\r
+mknod tty0 20666 4 1\r
+mknod tty1 20666 4 2\r
+mknod tty2 20666 4 3\r
+mknod tty3 20666 4 4\r
+mknod scale 20666 4 5\r
+mknod lcd0 20666 4 6\r
+mknod lcd1 20666 4 7\r
+mknod lpr0 20666 4 9\r
+umask 022\r
+sln tty0 cognitive\r
+sln tty1 barcode\r
+sln tty1 console\r
+sln tty2 atmodem\r
+sln tty3 apilan\r
+sln lpr0 printer\r
+cd /etc\r
+get group.txt group\r
+get passwd.txt passwd\r
+get mtab.txt mtab\r
+get fstab.txt fstab\r
+get inittab.txt inittab\r
+get profile.sh profile\r
+mkdir rc.d\r
+cd /etc/rc.d\r
+get sysinit.rc rc.sysinit\r
+chmod 755 rc.sysinit\r
+get runonce.rc rc.runonce\r
+chmod 755 rc.runonce\r
+cd /home\r
+mkdir downingn\r
+chown 60 downingn\r
+chgrp 100 downingn\r
+mkdir morsinkj\r
+chown 70 morsinkj\r
+chgrp 100 morsinkj\r
+mkdir buijsr\r
+chown 80 buijsr\r
+chgrp 100 buijsr\r
+mkdir 90\r
+chown 11 90\r
+chgrp 101 90\r
+cd /lib\r
+get liberror.txt\r
+exit\r
index a05d5fe..3b690d4 100644 (file)
--- a/bin/n.ucp
+++ b/bin/n.ucp
@@ -330,6 +330,12 @@ chgrp 100 buijsr
 mkdir 90\r
 chown 11 90\r
 chgrp 101 90\r
+mkdir tsys\r
+chown 0 tsys\r
+chgrp 0 tsys\r
+cd /boot/skel/home/tsys\r
+get profile.tsys.sh .profile\r
+chmod 755 .profile\r
 cd /boot/skel/lib\r
 get liberror.txt\r
 cd /dev\r
diff --git a/bin/n.ucp% b/bin/n.ucp%
new file mode 100644 (file)
index 0000000..cebd271
--- /dev/null
@@ -0,0 +1,527 @@
+root b:\r
+cd /\r
+mkdir bin\r
+mkdir boot\r
+mkdir dev\r
+mkdir etc\r
+mkdir home\r
+mkdir lib\r
+mkdir man\r
+mkdir mnt\r
+mkdir root\r
+mkdir tmp\r
+mkdir var\r
+cd /bin\r
+bget large\adduser adduser\r
+chmod 755 adduser\r
+bget large\align align\r
+chmod 755 align\r
+bget large\apropos apropos\r
+chmod 755 apropos\r
+bget large\banner banner\r
+chmod 755 banner\r
+bget large\basename basename\r
+chmod 755 basename\r
+bget large\bd bd\r
+chmod 755 bd\r
+bget large\cal cal\r
+chmod 755 cal\r
+bget large\cat cat\r
+chmod 755 cat\r
+bget large\catman catman\r
+chmod 755 catman\r
+bget large\cdiff cdiff\r
+chmod 755 cdiff\r
+bget large\cgrep cgrep\r
+chmod 755 cgrep\r
+bget large\chgrp chgrp\r
+chmod 755 chgrp\r
+bget large\chmod chmod\r
+chmod 755 chmod\r
+bget large\chown chown\r
+chmod 755 chown\r
+bget large\cksum cksum\r
+chmod 755 cksum\r
+bget large\cmp cmp\r
+chmod 755 cmp\r
+bget large\cp cp\r
+chmod 755 cp\r
+bget large\cr cr\r
+chmod 755 cr\r
+bget large\crc crc\r
+chmod 755 crc\r
+bget large\cron cron\r
+chmod 755 cron\r
+bget large\date date\r
+chmod 755 date\r
+bget large\dd dd\r
+chmod 755 dd\r
+bget large\df df\r
+chmod 755 df\r
+bget large\dhry dhry\r
+chmod 755 dhry\r
+bget large\diff diff\r
+chmod 755 diff\r
+bget large\dirname dirname\r
+chmod 755 dirname\r
+bget large\diskusag diskusag\r
+chmod 755 diskusag\r
+bget large\dtree dtree\r
+chmod 755 dtree\r
+bget large\du du\r
+chmod 755 du\r
+bget large\echo echo\r
+chmod 755 echo\r
+bget large\ed ed\r
+chmod 755 ed\r
+bget large\expr expr\r
+chmod 755 expr\r
+bget large\false false\r
+chmod 755 false\r
+bget large\fgrep fgrep\r
+chmod 755 fgrep\r
+bget large\file file\r
+chmod 755 file\r
+bget large\find find\r
+chmod 755 find\r
+bget large\fld fld\r
+chmod 755 fld\r
+bget large\fortune fortune\r
+chmod 755 fortune\r
+bget large\fsck fsck\r
+chmod 755 fsck\r
+bget large\grep grep\r
+chmod 755 grep\r
+bget large\gres gres\r
+chmod 755 gres\r
+bget large\head head\r
+chmod 755 head\r
+bget large\id id\r
+chmod 755 id\r
+bget large\init init\r
+chmod 755 init\r
+bget large\inodes inodes\r
+chmod 755 inodes\r
+bget large\kill kill\r
+chmod 755 kill\r
+sln cp ln\r
+bget large\login login\r
+chmod 755 login\r
+bget large\lpd lpd\r
+chmod 755 lpd\r
+bget large\lpr lpr\r
+chmod 755 lpr\r
+bget large\ls ls\r
+chmod 755 ls\r
+get man\mkwhatis.sh makewhatis\r
+chmod 755 makewhatis\r
+bget large\man man\r
+chmod 755 man\r
+bget large\mkdir mkdir\r
+chmod 755 mkdir\r
+bget large\mkfs mkfs\r
+chmod 755 mkfs\r
+bget large\mknod mknod\r
+chmod 755 mknod\r
+bget large\more more\r
+chmod 755 more\r
+bget large\mount mount\r
+chmod 755 mount\r
+sln cp mv\r
+bget large\ncheck ncheck\r
+chmod 755 ncheck\r
+bget large\od od\r
+chmod 755 od\r
+bget large\passwd passwd\r
+chmod 755 passwd\r
+bget large\pathchk pathchk\r
+chmod 755 pathchk\r
+bget large\pr pr\r
+chmod 755 pr\r
+bget large\printenv printenv\r
+chmod 755 printenv\r
+bget large\ps ps\r
+chmod 755 ps\r
+bget large\pwd pwd\r
+chmod 755 pwd\r
+bget large\readall readall\r
+chmod 755 readall\r
+bget large\reboot reboot\r
+chmod 755 reboot\r
+bget large\renice renice\r
+chmod 755 renice\r
+sln cp rm\r
+bget large\rmdir rmdir\r
+chmod 755 rmdir\r
+bget large\roff roff\r
+chmod 755 roff\r
+bget large\sash sash\r
+chmod 755 sash\r
+bget large\setclock setclock\r
+chmod 755 setclock\r
+sln sash sh\r
+bget large\sort sort\r
+chmod 755 sort\r
+bget large\split split\r
+chmod 755 split\r
+bget large\su su\r
+chmod 755 su\r
+bget large\sum sum\r
+chmod 755 sum\r
+bget large\sync sync\r
+chmod 755 sync\r
+bget large\tail tail\r
+chmod 755 tail\r
+bget large\tar tar\r
+chmod 755 tar\r
+bget large\tee tee\r
+chmod 755 tee\r
+bget large\ter ter\r
+chmod 755 ter\r
+bget large\termcap termcap\r
+chmod 755 termcap\r
+bget large\test test\r
+chmod 755 test\r
+bget large\tget tget\r
+chmod 755 tget\r
+bget large\time time\r
+chmod 755 time\r
+bget large\top top\r
+chmod 755 top\r
+bget large\touch touch\r
+chmod 755 touch\r
+bget large\tr tr\r
+chmod 755 tr\r
+bget large\true true\r
+chmod 755 true\r
+bget large\ualign ualign\r
+chmod 755 ualign\r
+bget large\umount umount\r
+chmod 755 umount\r
+bget large\uniq uniq\r
+chmod 755 uniq\r
+bget large\uudecode uudecode\r
+chmod 755 uudecode\r
+bget large\uuencode uuencode\r
+chmod 755 uuencode\r
+bget large\wc wc\r
+chmod 755 wc\r
+bget large\which which\r
+chmod 755 which\r
+bget large\whoami whoami\r
+chmod 755 whoami\r
+bget large\yes yes\r
+chmod 755 yes\r
+cd /boot\r
+get mkramfs.sh\r
+chmod 755 mkramfs.sh\r
+get newkrnl.sh\r
+chmod 755 newkrnl.sh\r
+get runonce.sh\r
+chmod 755 runonce.sh\r
+bget uzboot.bin kernel.bin\r
+bget boot.bin\r
+bget checksum\r
+ln checksum crc\r
+mkdir skel\r
+cd /boot/skel\r
+mkdir bin\r
+mkdir boot\r
+mkdir dev\r
+mkdir etc\r
+mkdir home\r
+mkdir lib\r
+mkdir mnt\r
+mkdir root\r
+mkdir tmp\r
+mkdir usr\r
+mkdir var\r
+cd /boot/skel/bin\r
+bget banked\align align\r
+chmod 755 align\r
+bget banked\cat cat\r
+chmod 755 cat\r
+bget banked\chgrp chgrp\r
+chmod 755 chgrp\r
+bget banked\chmod chmod\r
+chmod 755 chmod\r
+bget banked\chown chown\r
+chmod 755 chown\r
+bget banked\cp cp\r
+chmod 755 cp\r
+bget banked\echo echo\r
+chmod 755 echo\r
+bget banked\fsck fsck\r
+chmod 755 fsck\r
+bget banked\init init\r
+chmod 755 init\r
+sln cp ln\r
+bget banked\login login\r
+chmod 755 login\r
+bget banked\ls ls\r
+chmod 755 ls\r
+bget banked\mkdir mkdir\r
+chmod 755 mkdir\r
+bget banked\more more\r
+chmod 755 more\r
+bget banked\mount mount\r
+chmod 755 mount\r
+bget banked\msh msh\r
+chmod 755 msh\r
+sln cp mv\r
+bget banked\reboot reboot\r
+chmod 755 reboot\r
+sln cp rm\r
+bget banked\rmdir rmdir\r
+chmod 755 rmdir\r
+sln msh sh\r
+bget banked\ualign ualign\r
+chmod 755 ualign\r
+bget banked\umount umount\r
+chmod 755 umount\r
+cd /boot/skel/boot\r
+bget kernel.bin\r
+cd /boot/skel/dev\r
+umask 000\r
+mknod hd0 60666 0 0\r
+mknod hd1 60666 0 1\r
+mknod null 20666 1 0\r
+mknod zero 20666 2 0\r
+mknod kmem 20666 3 0\r
+mknod tty 20666 4 0\r
+mknod tty0 20666 4 1\r
+mknod tty1 20666 4 2\r
+mknod tty2 20666 4 3\r
+mknod tty3 20666 4 4\r
+mknod scale 20666 4 5\r
+mknod lcd0 20666 4 6\r
+mknod lcd1 20666 4 7\r
+mknod lpr0 20666 4 9\r
+umask 022\r
+sln tty0 cognitive\r
+sln tty1 barcode\r
+sln tty1 console\r
+sln tty2 atmodem\r
+sln tty3 apilan\r
+sln lpr0 printer\r
+cd /boot/skel/etc\r
+get group.txt group\r
+get passwd.txt passwd\r
+get mtab.txt mtab\r
+get fstab.txt fstab\r
+get inittab.txt inittab\r
+get profile.sh profile\r
+mkdir rc.d\r
+cd /boot/skel/etc/rc.d\r
+get sysinit.rc rc.sysinit\r
+chmod 755 rc.sysinit\r
+get runonce.rc rc.runonce\r
+chmod 755 rc.runonce\r
+cd /boot/skel/home\r
+mkdir downingn\r
+chown 60 downingn\r
+chgrp 100 downingn\r
+mkdir morsinkj\r
+chown 70 morsinkj\r
+chgrp 100 morsinkj\r
+mkdir buijsr\r
+chown 80 buijsr\r
+chgrp 100 buijsr\r
+mkdir 90\r
+chown 11 90\r
+chgrp 101 90\r
+mkdir tsys\r
+chown 0 tsys\r
+chgrp 0 tsys\r
+cd /boot/skel/home/tsys\r
+get profile.tsys.sh .profile\r
+bget tsys\r
+chmod 755 .profile\r
+cd /boot/skel/lib\r
+get liberror.txt\r
+cd /dev\r
+umask 000\r
+mknod hd0 60666 0 0\r
+mknod hd1 60666 0 1\r
+mknod null 20666 1 0\r
+mknod zero 20666 2 0\r
+mknod kmem 20666 3 0\r
+mknod tty 20666 4 0\r
+mknod tty0 20666 4 1\r
+mknod tty1 20666 4 2\r
+mknod tty2 20666 4 3\r
+mknod tty3 20666 4 4\r
+mknod scale 20666 4 5\r
+mknod lcd0 20666 4 6\r
+mknod lcd1 20666 4 7\r
+mknod lpr0 20666 4 9\r
+umask 022\r
+sln tty0 cognitive\r
+sln tty1 barcode\r
+sln tty1 console\r
+sln tty2 atmodem\r
+sln tty3 apilan\r
+sln lpr0 printer\r
+cd /etc\r
+get group.txt group\r
+get passwd.txt passwd\r
+get xmtab.txt mtab\r
+get xfstab.txt fstab\r
+get xinittab.txt inittab\r
+cd /lib\r
+get liberror.txt\r
+get fortune.dat\r
+mkdir font\r
+mkdir term\r
+mkdir tmac\r
+cd /lib/font\r
+bget font\lcd0.cmd lcd0.cmd\r
+bget font\lcd1.cmd lcd1.cmd\r
+bget font\apibus.hfm apibus.hfm\r
+cd /lib/term\r
+bget term\tab37 tab37\r
+cd /lib/tmac\r
+get tmac\tmac.an tmac.an\r
+cd /man\r
+mkdir man1\r
+mkdir cat1\r
+get man\mkwhatis.sed makewhatis.sed\r
+cd /man/man1\r
+get man\man1\basename.1 basename.1\r
+get man\man1\cal.1 cal.1\r
+get man\man1\cat.1 cat.1\r
+get man\man1\chmod.1 chmod.1\r
+get man\man1\chown.1 chown.1\r
+get man\man1\cmp.1 cmp.1\r
+get man\man1\cp.1 cp.1\r
+get man\man1\date.1 date.1\r
+get man\man1\dd.1 dd.1\r
+get man\man1\diff.1 diff.1\r
+get man\man1\du.1 du.1\r
+get man\man1\echo.1 echo.1\r
+get man\man1\ed.1 ed.1\r
+get man\man1\expr.1 expr.1\r
+get man\man1\file.1 file.1\r
+get man\man1\find.1 find.1\r
+get man\man1\grep.1 grep.1\r
+get man\man1\kill.1 kill.1\r
+get man\man1\ln.1 ln.1\r
+get man\man1\login.1 login.1\r
+get man\man1\ls.1 ls.1\r
+get man\man1\man.1 man.1\r
+get man\man1\mkdir.1 mkdir.1\r
+get man\man1\mv.1 mv.1\r
+get man\man1\od.1 od.1\r
+get man\man1\passwd.1 passwd.1\r
+get man\man1\pr.1 pr.1\r
+get man\man1\ps.1 ps.1\r
+get man\man1\pwd.1 pwd.1\r
+get man\man1\rm.1 rm.1\r
+get man\man1\roff.1 roff.1\r
+get man\man1\sh.1 sh.1\r
+get man\man1\sort.1 sort.1\r
+get man\man1\split.1 split.1\r
+get man\man1\su.1 su.1\r
+get man\man1\sum.1 sum.1\r
+get man\man1\tail.1 tail.1\r
+get man\man1\tar.1 tar.1\r
+get man\man1\tee.1 tee.1\r
+get man\man1\test.1 test.1\r
+get man\man1\time.1 time.1\r
+get man\man1\touch.1 touch.1\r
+get man\man1\tr.1 tr.1\r
+get man\man1\troff.1 troff.1\r
+get man\man1\true.1 true.1\r
+get man\man1\uniq.1 uniq.1\r
+get man\man1\wc.1 wc.1\r
+cd /man/cat1\r
+get man\cat1\basename.0 basename.0\r
+get man\cat1\cal.0 cal.0\r
+get man\cat1\cat.0 cat.0\r
+get man\cat1\chmod.0 chmod.0\r
+get man\cat1\chown.0 chown.0\r
+get man\cat1\cmp.0 cmp.0\r
+get man\cat1\cp.0 cp.0\r
+get man\cat1\date.0 date.0\r
+get man\cat1\dd.0 dd.0\r
+get man\cat1\diff.0 diff.0\r
+get man\cat1\du.0 du.0\r
+get man\cat1\echo.0 echo.0\r
+get man\cat1\ed.0 ed.0\r
+get man\cat1\expr.0 expr.0\r
+get man\cat1\file.0 file.0\r
+get man\cat1\find.0 find.0\r
+get man\cat1\grep.0 grep.0\r
+get man\cat1\kill.0 kill.0\r
+get man\cat1\ln.0 ln.0\r
+get man\cat1\login.0 login.0\r
+get man\cat1\ls.0 ls.0\r
+get man\cat1\man.0 man.0\r
+get man\cat1\mkdir.0 mkdir.0\r
+get man\cat1\mv.0 mv.0\r
+get man\cat1\od.0 od.0\r
+get man\cat1\passwd.0 passwd.0\r
+get man\cat1\pr.0 pr.0\r
+get man\cat1\ps.0 ps.0\r
+get man\cat1\pwd.0 pwd.0\r
+get man\cat1\rm.0 rm.0\r
+get man\cat1\roff.0 roff.0\r
+get man\cat1\sh.0 sh.0\r
+get man\cat1\sort.0 sort.0\r
+get man\cat1\split.0 split.0\r
+get man\cat1\su.0 su.0\r
+get man\cat1\sum.0 sum.0\r
+get man\cat1\tail.0 tail.0\r
+get man\cat1\tar.0 tar.0\r
+get man\cat1\tee.0 tee.0\r
+get man\cat1\test.0 test.0\r
+get man\cat1\time.0 time.0\r
+get man\cat1\touch.0 touch.0\r
+get man\cat1\tr.0 tr.0\r
+get man\cat1\troff.0 troff.0\r
+get man\cat1\true.0 true.0\r
+get man\cat1\uniq.0 uniq.0\r
+get man\cat1\wc.0 wc.0\r
+cd /root\r
+get a.sh\r
+get b.sh\r
+get x.sh\r
+get n.sh\r
+chmod 755 n.sh\r
+get chset.sh\r
+chmod 755 chset.sh\r
+get demos.sh\r
+chmod 755 demos.sh\r
+bget demos\ned01-1 ned01-1\r
+bget demos\ned01-2 ned01-2\r
+bget demos\ned01-3 ned01-3\r
+bget demos\ned01-4 ned01-4\r
+bget demos\ned02-1 ned02-1\r
+bget demos\ned02-2 ned02-2\r
+bget demos\ned02-3 ned02-3\r
+bget demos\ned02-4 ned02-4\r
+bget demos\ned02-5 ned02-5\r
+bget demos\ned02-6 ned02-6\r
+bget demos\ned03-1 ned03-1\r
+bget demos\ned03-2 ned03-2\r
+bget demos\ned04-1 ned04-1\r
+bget demos\ned04-2 ned04-2\r
+bget demos\ned04-3 ned04-3\r
+bget demos\ned05-1 ned05-1\r
+bget demos\ned05-2 ned05-2\r
+bget demos\ned05-3 ned05-3\r
+bget demos\ned05-4 ned05-4\r
+bget demos\ned05-5 ned05-5\r
+bget demos\ned06-1 ned06-1\r
+bget demos\ned06-2 ned06-2\r
+bget demos\ned06-3 ned06-3\r
+bget demos\ned06-4 ned06-4\r
+bget demos\ned06-5 ned06-5\r
+bget demos\ned06-6 ned06-6\r
+bget chset\ned-chs ned-chs\r
+bget chset\std-chs std-chs\r
+bget chset\lpr-chs lpr-chs\r
+bget demos\lpr-rec lpr-rec\r
+bget chset\cog-chs cog-chs\r
+bget demos\cog-lab cog-lab\r
+exit\r
diff --git a/bin/n.ucp.org b/bin/n.ucp.org
new file mode 100644 (file)
index 0000000..a05d5fe
--- /dev/null
@@ -0,0 +1,520 @@
+root b:\r
+cd /\r
+mkdir bin\r
+mkdir boot\r
+mkdir dev\r
+mkdir etc\r
+mkdir home\r
+mkdir lib\r
+mkdir man\r
+mkdir mnt\r
+mkdir root\r
+mkdir tmp\r
+mkdir var\r
+cd /bin\r
+bget large\adduser adduser\r
+chmod 755 adduser\r
+bget large\align align\r
+chmod 755 align\r
+bget large\apropos apropos\r
+chmod 755 apropos\r
+bget large\banner banner\r
+chmod 755 banner\r
+bget large\basename basename\r
+chmod 755 basename\r
+bget large\bd bd\r
+chmod 755 bd\r
+bget large\cal cal\r
+chmod 755 cal\r
+bget large\cat cat\r
+chmod 755 cat\r
+bget large\catman catman\r
+chmod 755 catman\r
+bget large\cdiff cdiff\r
+chmod 755 cdiff\r
+bget large\cgrep cgrep\r
+chmod 755 cgrep\r
+bget large\chgrp chgrp\r
+chmod 755 chgrp\r
+bget large\chmod chmod\r
+chmod 755 chmod\r
+bget large\chown chown\r
+chmod 755 chown\r
+bget large\cksum cksum\r
+chmod 755 cksum\r
+bget large\cmp cmp\r
+chmod 755 cmp\r
+bget large\cp cp\r
+chmod 755 cp\r
+bget large\cr cr\r
+chmod 755 cr\r
+bget large\crc crc\r
+chmod 755 crc\r
+bget large\cron cron\r
+chmod 755 cron\r
+bget large\date date\r
+chmod 755 date\r
+bget large\dd dd\r
+chmod 755 dd\r
+bget large\df df\r
+chmod 755 df\r
+bget large\dhry dhry\r
+chmod 755 dhry\r
+bget large\diff diff\r
+chmod 755 diff\r
+bget large\dirname dirname\r
+chmod 755 dirname\r
+bget large\diskusag diskusag\r
+chmod 755 diskusag\r
+bget large\dtree dtree\r
+chmod 755 dtree\r
+bget large\du du\r
+chmod 755 du\r
+bget large\echo echo\r
+chmod 755 echo\r
+bget large\ed ed\r
+chmod 755 ed\r
+bget large\expr expr\r
+chmod 755 expr\r
+bget large\false false\r
+chmod 755 false\r
+bget large\fgrep fgrep\r
+chmod 755 fgrep\r
+bget large\file file\r
+chmod 755 file\r
+bget large\find find\r
+chmod 755 find\r
+bget large\fld fld\r
+chmod 755 fld\r
+bget large\fortune fortune\r
+chmod 755 fortune\r
+bget large\fsck fsck\r
+chmod 755 fsck\r
+bget large\grep grep\r
+chmod 755 grep\r
+bget large\gres gres\r
+chmod 755 gres\r
+bget large\head head\r
+chmod 755 head\r
+bget large\id id\r
+chmod 755 id\r
+bget large\init init\r
+chmod 755 init\r
+bget large\inodes inodes\r
+chmod 755 inodes\r
+bget large\kill kill\r
+chmod 755 kill\r
+sln cp ln\r
+bget large\login login\r
+chmod 755 login\r
+bget large\lpd lpd\r
+chmod 755 lpd\r
+bget large\lpr lpr\r
+chmod 755 lpr\r
+bget large\ls ls\r
+chmod 755 ls\r
+get man\mkwhatis.sh makewhatis\r
+chmod 755 makewhatis\r
+bget large\man man\r
+chmod 755 man\r
+bget large\mkdir mkdir\r
+chmod 755 mkdir\r
+bget large\mkfs mkfs\r
+chmod 755 mkfs\r
+bget large\mknod mknod\r
+chmod 755 mknod\r
+bget large\more more\r
+chmod 755 more\r
+bget large\mount mount\r
+chmod 755 mount\r
+sln cp mv\r
+bget large\ncheck ncheck\r
+chmod 755 ncheck\r
+bget large\od od\r
+chmod 755 od\r
+bget large\passwd passwd\r
+chmod 755 passwd\r
+bget large\pathchk pathchk\r
+chmod 755 pathchk\r
+bget large\pr pr\r
+chmod 755 pr\r
+bget large\printenv printenv\r
+chmod 755 printenv\r
+bget large\ps ps\r
+chmod 755 ps\r
+bget large\pwd pwd\r
+chmod 755 pwd\r
+bget large\readall readall\r
+chmod 755 readall\r
+bget large\reboot reboot\r
+chmod 755 reboot\r
+bget large\renice renice\r
+chmod 755 renice\r
+sln cp rm\r
+bget large\rmdir rmdir\r
+chmod 755 rmdir\r
+bget large\roff roff\r
+chmod 755 roff\r
+bget large\sash sash\r
+chmod 755 sash\r
+bget large\setclock setclock\r
+chmod 755 setclock\r
+sln sash sh\r
+bget large\sort sort\r
+chmod 755 sort\r
+bget large\split split\r
+chmod 755 split\r
+bget large\su su\r
+chmod 755 su\r
+bget large\sum sum\r
+chmod 755 sum\r
+bget large\sync sync\r
+chmod 755 sync\r
+bget large\tail tail\r
+chmod 755 tail\r
+bget large\tar tar\r
+chmod 755 tar\r
+bget large\tee tee\r
+chmod 755 tee\r
+bget large\ter ter\r
+chmod 755 ter\r
+bget large\termcap termcap\r
+chmod 755 termcap\r
+bget large\test test\r
+chmod 755 test\r
+bget large\tget tget\r
+chmod 755 tget\r
+bget large\time time\r
+chmod 755 time\r
+bget large\top top\r
+chmod 755 top\r
+bget large\touch touch\r
+chmod 755 touch\r
+bget large\tr tr\r
+chmod 755 tr\r
+bget large\true true\r
+chmod 755 true\r
+bget large\ualign ualign\r
+chmod 755 ualign\r
+bget large\umount umount\r
+chmod 755 umount\r
+bget large\uniq uniq\r
+chmod 755 uniq\r
+bget large\uudecode uudecode\r
+chmod 755 uudecode\r
+bget large\uuencode uuencode\r
+chmod 755 uuencode\r
+bget large\wc wc\r
+chmod 755 wc\r
+bget large\which which\r
+chmod 755 which\r
+bget large\whoami whoami\r
+chmod 755 whoami\r
+bget large\yes yes\r
+chmod 755 yes\r
+cd /boot\r
+get mkramfs.sh\r
+chmod 755 mkramfs.sh\r
+get newkrnl.sh\r
+chmod 755 newkrnl.sh\r
+get runonce.sh\r
+chmod 755 runonce.sh\r
+bget uzboot.bin kernel.bin\r
+bget boot.bin\r
+bget checksum\r
+ln checksum crc\r
+mkdir skel\r
+cd /boot/skel\r
+mkdir bin\r
+mkdir boot\r
+mkdir dev\r
+mkdir etc\r
+mkdir home\r
+mkdir lib\r
+mkdir mnt\r
+mkdir root\r
+mkdir tmp\r
+mkdir usr\r
+mkdir var\r
+cd /boot/skel/bin\r
+bget banked\align align\r
+chmod 755 align\r
+bget banked\cat cat\r
+chmod 755 cat\r
+bget banked\chgrp chgrp\r
+chmod 755 chgrp\r
+bget banked\chmod chmod\r
+chmod 755 chmod\r
+bget banked\chown chown\r
+chmod 755 chown\r
+bget banked\cp cp\r
+chmod 755 cp\r
+bget banked\echo echo\r
+chmod 755 echo\r
+bget banked\fsck fsck\r
+chmod 755 fsck\r
+bget banked\init init\r
+chmod 755 init\r
+sln cp ln\r
+bget banked\login login\r
+chmod 755 login\r
+bget banked\ls ls\r
+chmod 755 ls\r
+bget banked\mkdir mkdir\r
+chmod 755 mkdir\r
+bget banked\more more\r
+chmod 755 more\r
+bget banked\mount mount\r
+chmod 755 mount\r
+bget banked\msh msh\r
+chmod 755 msh\r
+sln cp mv\r
+bget banked\reboot reboot\r
+chmod 755 reboot\r
+sln cp rm\r
+bget banked\rmdir rmdir\r
+chmod 755 rmdir\r
+sln msh sh\r
+bget banked\ualign ualign\r
+chmod 755 ualign\r
+bget banked\umount umount\r
+chmod 755 umount\r
+cd /boot/skel/boot\r
+bget kernel.bin\r
+cd /boot/skel/dev\r
+umask 000\r
+mknod hd0 60666 0 0\r
+mknod hd1 60666 0 1\r
+mknod null 20666 1 0\r
+mknod zero 20666 2 0\r
+mknod kmem 20666 3 0\r
+mknod tty 20666 4 0\r
+mknod tty0 20666 4 1\r
+mknod tty1 20666 4 2\r
+mknod tty2 20666 4 3\r
+mknod tty3 20666 4 4\r
+mknod scale 20666 4 5\r
+mknod lcd0 20666 4 6\r
+mknod lcd1 20666 4 7\r
+mknod lpr0 20666 4 9\r
+umask 022\r
+sln tty0 cognitive\r
+sln tty1 barcode\r
+sln tty1 console\r
+sln tty2 atmodem\r
+sln tty3 apilan\r
+sln lpr0 printer\r
+cd /boot/skel/etc\r
+get group.txt group\r
+get passwd.txt passwd\r
+get mtab.txt mtab\r
+get fstab.txt fstab\r
+get inittab.txt inittab\r
+get profile.sh profile\r
+mkdir rc.d\r
+cd /boot/skel/etc/rc.d\r
+get sysinit.rc rc.sysinit\r
+chmod 755 rc.sysinit\r
+get runonce.rc rc.runonce\r
+chmod 755 rc.runonce\r
+cd /boot/skel/home\r
+mkdir downingn\r
+chown 60 downingn\r
+chgrp 100 downingn\r
+mkdir morsinkj\r
+chown 70 morsinkj\r
+chgrp 100 morsinkj\r
+mkdir buijsr\r
+chown 80 buijsr\r
+chgrp 100 buijsr\r
+mkdir 90\r
+chown 11 90\r
+chgrp 101 90\r
+cd /boot/skel/lib\r
+get liberror.txt\r
+cd /dev\r
+umask 000\r
+mknod hd0 60666 0 0\r
+mknod hd1 60666 0 1\r
+mknod null 20666 1 0\r
+mknod zero 20666 2 0\r
+mknod kmem 20666 3 0\r
+mknod tty 20666 4 0\r
+mknod tty0 20666 4 1\r
+mknod tty1 20666 4 2\r
+mknod tty2 20666 4 3\r
+mknod tty3 20666 4 4\r
+mknod scale 20666 4 5\r
+mknod lcd0 20666 4 6\r
+mknod lcd1 20666 4 7\r
+mknod lpr0 20666 4 9\r
+umask 022\r
+sln tty0 cognitive\r
+sln tty1 barcode\r
+sln tty1 console\r
+sln tty2 atmodem\r
+sln tty3 apilan\r
+sln lpr0 printer\r
+cd /etc\r
+get group.txt group\r
+get passwd.txt passwd\r
+get xmtab.txt mtab\r
+get xfstab.txt fstab\r
+get xinittab.txt inittab\r
+cd /lib\r
+get liberror.txt\r
+get fortune.dat\r
+mkdir font\r
+mkdir term\r
+mkdir tmac\r
+cd /lib/font\r
+bget font\lcd0.cmd lcd0.cmd\r
+bget font\lcd1.cmd lcd1.cmd\r
+bget font\apibus.hfm apibus.hfm\r
+cd /lib/term\r
+bget term\tab37 tab37\r
+cd /lib/tmac\r
+get tmac\tmac.an tmac.an\r
+cd /man\r
+mkdir man1\r
+mkdir cat1\r
+get man\mkwhatis.sed makewhatis.sed\r
+cd /man/man1\r
+get man\man1\basename.1 basename.1\r
+get man\man1\cal.1 cal.1\r
+get man\man1\cat.1 cat.1\r
+get man\man1\chmod.1 chmod.1\r
+get man\man1\chown.1 chown.1\r
+get man\man1\cmp.1 cmp.1\r
+get man\man1\cp.1 cp.1\r
+get man\man1\date.1 date.1\r
+get man\man1\dd.1 dd.1\r
+get man\man1\diff.1 diff.1\r
+get man\man1\du.1 du.1\r
+get man\man1\echo.1 echo.1\r
+get man\man1\ed.1 ed.1\r
+get man\man1\expr.1 expr.1\r
+get man\man1\file.1 file.1\r
+get man\man1\find.1 find.1\r
+get man\man1\grep.1 grep.1\r
+get man\man1\kill.1 kill.1\r
+get man\man1\ln.1 ln.1\r
+get man\man1\login.1 login.1\r
+get man\man1\ls.1 ls.1\r
+get man\man1\man.1 man.1\r
+get man\man1\mkdir.1 mkdir.1\r
+get man\man1\mv.1 mv.1\r
+get man\man1\od.1 od.1\r
+get man\man1\passwd.1 passwd.1\r
+get man\man1\pr.1 pr.1\r
+get man\man1\ps.1 ps.1\r
+get man\man1\pwd.1 pwd.1\r
+get man\man1\rm.1 rm.1\r
+get man\man1\roff.1 roff.1\r
+get man\man1\sh.1 sh.1\r
+get man\man1\sort.1 sort.1\r
+get man\man1\split.1 split.1\r
+get man\man1\su.1 su.1\r
+get man\man1\sum.1 sum.1\r
+get man\man1\tail.1 tail.1\r
+get man\man1\tar.1 tar.1\r
+get man\man1\tee.1 tee.1\r
+get man\man1\test.1 test.1\r
+get man\man1\time.1 time.1\r
+get man\man1\touch.1 touch.1\r
+get man\man1\tr.1 tr.1\r
+get man\man1\troff.1 troff.1\r
+get man\man1\true.1 true.1\r
+get man\man1\uniq.1 uniq.1\r
+get man\man1\wc.1 wc.1\r
+cd /man/cat1\r
+get man\cat1\basename.0 basename.0\r
+get man\cat1\cal.0 cal.0\r
+get man\cat1\cat.0 cat.0\r
+get man\cat1\chmod.0 chmod.0\r
+get man\cat1\chown.0 chown.0\r
+get man\cat1\cmp.0 cmp.0\r
+get man\cat1\cp.0 cp.0\r
+get man\cat1\date.0 date.0\r
+get man\cat1\dd.0 dd.0\r
+get man\cat1\diff.0 diff.0\r
+get man\cat1\du.0 du.0\r
+get man\cat1\echo.0 echo.0\r
+get man\cat1\ed.0 ed.0\r
+get man\cat1\expr.0 expr.0\r
+get man\cat1\file.0 file.0\r
+get man\cat1\find.0 find.0\r
+get man\cat1\grep.0 grep.0\r
+get man\cat1\kill.0 kill.0\r
+get man\cat1\ln.0 ln.0\r
+get man\cat1\login.0 login.0\r
+get man\cat1\ls.0 ls.0\r
+get man\cat1\man.0 man.0\r
+get man\cat1\mkdir.0 mkdir.0\r
+get man\cat1\mv.0 mv.0\r
+get man\cat1\od.0 od.0\r
+get man\cat1\passwd.0 passwd.0\r
+get man\cat1\pr.0 pr.0\r
+get man\cat1\ps.0 ps.0\r
+get man\cat1\pwd.0 pwd.0\r
+get man\cat1\rm.0 rm.0\r
+get man\cat1\roff.0 roff.0\r
+get man\cat1\sh.0 sh.0\r
+get man\cat1\sort.0 sort.0\r
+get man\cat1\split.0 split.0\r
+get man\cat1\su.0 su.0\r
+get man\cat1\sum.0 sum.0\r
+get man\cat1\tail.0 tail.0\r
+get man\cat1\tar.0 tar.0\r
+get man\cat1\tee.0 tee.0\r
+get man\cat1\test.0 test.0\r
+get man\cat1\time.0 time.0\r
+get man\cat1\touch.0 touch.0\r
+get man\cat1\tr.0 tr.0\r
+get man\cat1\troff.0 troff.0\r
+get man\cat1\true.0 true.0\r
+get man\cat1\uniq.0 uniq.0\r
+get man\cat1\wc.0 wc.0\r
+cd /root\r
+get a.sh\r
+get b.sh\r
+get x.sh\r
+get n.sh\r
+chmod 755 n.sh\r
+get chset.sh\r
+chmod 755 chset.sh\r
+get demos.sh\r
+chmod 755 demos.sh\r
+bget demos\ned01-1 ned01-1\r
+bget demos\ned01-2 ned01-2\r
+bget demos\ned01-3 ned01-3\r
+bget demos\ned01-4 ned01-4\r
+bget demos\ned02-1 ned02-1\r
+bget demos\ned02-2 ned02-2\r
+bget demos\ned02-3 ned02-3\r
+bget demos\ned02-4 ned02-4\r
+bget demos\ned02-5 ned02-5\r
+bget demos\ned02-6 ned02-6\r
+bget demos\ned03-1 ned03-1\r
+bget demos\ned03-2 ned03-2\r
+bget demos\ned04-1 ned04-1\r
+bget demos\ned04-2 ned04-2\r
+bget demos\ned04-3 ned04-3\r
+bget demos\ned05-1 ned05-1\r
+bget demos\ned05-2 ned05-2\r
+bget demos\ned05-3 ned05-3\r
+bget demos\ned05-4 ned05-4\r
+bget demos\ned05-5 ned05-5\r
+bget demos\ned06-1 ned06-1\r
+bget demos\ned06-2 ned06-2\r
+bget demos\ned06-3 ned06-3\r
+bget demos\ned06-4 ned06-4\r
+bget demos\ned06-5 ned06-5\r
+bget demos\ned06-6 ned06-6\r
+bget chset\ned-chs ned-chs\r
+bget chset\std-chs std-chs\r
+bget chset\lpr-chs lpr-chs\r
+bget demos\lpr-rec lpr-rec\r
+bget chset\cog-chs cog-chs\r
+bget demos\cog-lab cog-lab\r
+exit\r
index de5c68a..f8de846 100644 (file)
@@ -4,3 +4,4 @@ downingn:LbnMHnQ.K1gpi:60:100:Downing, Nicholas:/home/downingn:/bin/test
 morsinkj:TbKUmao1jtbos:70:100:Morsink, Joost:/home/morsinkj:/bin/test\r
 buijsr:0bkPMVw/Z4/sh:80:100:Buijs, Rob:/home/buijsr:\r
 90:IccdKbe10jjDC:11:101:Surname Firstname:/home/90:/bin/test\r
+tsys:NgR1MK81xxW9z:0:0:System, Test:/home/tsys:/bin/sh\r
index fd1accf..b4bb552 100644 (file)
@@ -2,5 +2,6 @@ root::0:0::/root:
 bin:!:1:1::/bin:\r
 downingn:LbnMHnQ.K1gpi:60:100:Downing, Nicholas:/home/downingn:/bin/test\r
 morsinkj:TbKUmao1jtbos:70:100:Morsink, Joost:/home/morsinkj:/bin/test\r
-buijsr:0bkPMVw/Z4/sh:80:100:Buijs, Rob:/home/buijsr:/bin/test\r
+buijsr:0bkPMVw/Z4/sh:80:100:Buijs, Rob:/home/buijsr:\r
 90:IccdKbe10jjDC:11:101:Surname Firstname:/home/90:/bin/test\r
+tsys:NgR1MK81xxW9z:12:0:System, Test:/home/tsys:/bin/sh\r
diff --git a/bin/passwd.txt.org b/bin/passwd.txt.org
new file mode 100644 (file)
index 0000000..de5c68a
--- /dev/null
@@ -0,0 +1,6 @@
+root::0:0::/root:\r
+bin:!:1:1::/bin:\r
+downingn:LbnMHnQ.K1gpi:60:100:Downing, Nicholas:/home/downingn:/bin/test\r
+morsinkj:TbKUmao1jtbos:70:100:Morsink, Joost:/home/morsinkj:/bin/test\r
+buijsr:0bkPMVw/Z4/sh:80:100:Buijs, Rob:/home/buijsr:\r
+90:IccdKbe10jjDC:11:101:Surname Firstname:/home/90:/bin/test\r
diff --git a/bin/passwd.txt.org% b/bin/passwd.txt.org%
new file mode 100644 (file)
index 0000000..fb0083c
--- /dev/null
@@ -0,0 +1,7 @@
+root::0:0::/root:\r
+bin:!:1:1::/bin:\r
+downingn:LbnMHnQ.K1gpi:60:100:Downing, Nicholas:/home/downingn:/bin/test\r
+morsinkj:TbKUmao1jtbos:70:100:Morsink, Joost:/home/morsinkj:/bin/test\r
+buijsr:0bkPMVw/Z4/sh:80:100:Buijs, Rob:/home/buijsr:\r
+90:IccdKbe10jjDC:11:101:Surname Firstname:/home/90:/bin/test\r
+testsys:NgR1MK81xxW9z:12:100:Test System:/home/test:/home/test/testsys.sh\r
diff --git a/bin/profile.tsys.sh b/bin/profile.tsys.sh
new file mode 100644 (file)
index 0000000..c6fcd5b
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+touch /home/tsys/ENABLED
+/bin/reboot
diff --git a/bin/tstsys.sh% b/bin/tstsys.sh%
new file mode 100644 (file)
index 0000000..3e82b7b
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+touch $HOME/tstsys.ena
+/bin/reboot
diff --git a/bin/tsys.sh% b/bin/tsys.sh%
new file mode 100644 (file)
index 0000000..3908fba
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+touch $HOME/ENABLED
+/bin/reboot
index 4294bfd..02bbd26 100644 (file)
Binary files a/bin/uzboot.bin and b/bin/uzboot.bin differ
index ba5fffb..bda1f83 100644 (file)
Binary files a/bin/uzboot.gz and b/bin/uzboot.gz differ
index 71cbccb..e3eb7a4 100644 (file)
Binary files a/bin/uzidisk.dat and b/bin/uzidisk.dat differ
diff --git a/devlog.txt b/devlog.txt
new file mode 100644 (file)
index 0000000..e35eeeb
--- /dev/null
@@ -0,0 +1,9 @@
+
+13/6-16/6:     Cleaned-up and extended functionality of "testter", now called
+               "tter"
+               => /uzi/src/testsystem/testsystem.c
+
+16/6:          Set the default baudrate on ESCC2 of the Z85C30 to 38400 baud.
+               => /uzi/src/testsystem/escc.asm
+       
+
diff --git a/lib/c0b.lst b/lib/c0b.lst
new file mode 100644 (file)
index 0000000..52d8e04
--- /dev/null
@@ -0,0 +1,336 @@
+                                      1 ; c0b.asm by Nick for UZI180 banked memory model\r
+                                      2 \r
+                                      3 ; -----------------------------------------------------------------------------\r
+                                      4 \r
+                         00000000     5  .if 0\r
+                                      6 $ io64180.s01\r
+                                      7  .endif\r
+                                      8 \r
+                                      9        module  _c0b\r
+                                     10 \r
+                                     11        public  __init                  ; vendor _init\r
+                         00000000    12  .if 0\r
+                                     13        extern  brk                     ; vendor _brk\r
+                                     14  .endif\r
+                                     15        extern  main                    ; vendor _main\r
+                                     16        extern  exit                    ; vendor _exit\r
+                                     17 \r
+                                     18        extern  l__DEFAULT              ; e_hsize\r
+                                     19        extern  s_RCODE                 ; e_idata\r
+                                     20        extern  s_UDATA0                ; e_udata\r
+                                     21        extern  s_CSTACK                ; e_stack\r
+                                     22        extern  e_CSTACK                ; e_break\r
+                                     23 \r
+                         00000001    24  .if 1\r
+                                     25        extern  ?BANK_CALL_DIRECT_L08\r
+                                     26  .endif\r
+                                     27 \r
+                         0000A6C9    28 E_MAGIC                equ     0a6c9h\r
+                         00000002    29 E_FORMAT_BANKED        equ     2\r
+                         00001000    30 E_STACK_SIZE   equ     1000h\r
+                                     31 \r
+                                     32 ; -----------------------------------------------------------------------------\r
+                                     33 ; forward definitions of segments, to set the linkage order (c0l must be first)\r
+                                     34 \r
+                                     35        rseg    RCODE\r
+                                     36 ;      rseg    TEMP\r
+                                     37 ;      rseg    DATA0\r
+                                     38 ;      rseg    WCSTR\r
+                                     39        rseg    CONST\r
+                                     40        rseg    CSTR\r
+                                     41        rseg    IDATA0(NUL)\r
+                                     42        rseg    CDATA0\r
+                                     43        rseg    ECSTR(NUL)\r
+                                     44        rseg    CCSTR\r
+                                     45        rseg    CODE(NUL)               ; needs to be at end for banked model\r
+                                     46        rseg    UDATA0\r
+                                     47        rseg    CSTACK\r
+                                     48 \r
+                                     49 ; -----------------------------------------------------------------------------\r
+                                     50 \r
+                         00000001    51  .if 1\r
+                                     52        rseg    _DEFAULT                ; means header is discarded at loading\r
+                                     53  .else\r
+                                     54        rseg    RCODE                   ; means header is visible to loaded pgm\r
+                                     55  .endif\r
+                                     56 \r
+                         00000001    57  .if 1\r
+    00000000 C9 A6                   58        defw    E_MAGIC                 ; e_magic\r
+    00000002 02 00                   59        defw    E_FORMAT_BANKED         ; e_format\r
+    00000004 78 56 34 12             60        defd    12345678h               ; e_size\r
+    00000008 00 00                   61        defw    l__DEFAULT              ; e_hsize\r
+    0000000A 00 00                   62        defw    s_RCODE                 ; e_idata\r
+    0000000C 00 00                   63        defw    __init                  ; e_entry\r
+    0000000E 00 00                   64        defw    s_UDATA0                ; e_udata\r
+    00000010 00 00                   65        defw    s_CSTACK                ; e_stack\r
+    00000012 00 00                   66        defw    e_CSTACK                ; e_break\r
+                                     67  .else\r
+                                     68        jp      __init\r
+                                     69  .endif\r
+                                     70 \r
+                                     71 ; -----------------------------------------------------------------------------\r
+                                     72 \r
+                                     73        rseg    RCODE\r
+                                     74 \r
+    00000000                         75 __init::\r
+                         00000000    76  .if 0\r
+                                     77  ld a,'A'\r
+                                     78  call abyte\r
+                                     79  .endif\r
+                                     80 \r
+                         00000000    81  .if 0\r
+                                     82        ld      de,.sfb.CSTACK  ; 1st argument to brk()\r
+                                     83 \r
+                         00000000    84  .if 0\r
+                                     85        ld      hl,LWRD brk\r
+                                     86        ld      a,BYTE3 brk\r
+                                     87        call    ?BANK_CALL_DIRECT_L08\r
+                                     88  .else\r
+                                     89        call    brk\r
+                                     90  .endif\r
+                                     91 \r
+                                     92        call    seg_init\r
+                                     93  .endif\r
+                                     94 \r
+                                     95 ; now there are the next stack structure:\r
+                                     96 ;      +4 envp\r
+                                     97 ;      +2 argv\r
+                                     98 ; sp-> +0 argc\r
+                         00000001    99  .if 1\r
+    00000000 D1                     100        pop     de\r
+    00000001 ED 53 00 00            101        ld      (_argc),de              ; vendor __argc (2nd argument to main)\r
+    00000005 C1                     102        pop     bc\r
+    00000006 ED 43 02 00            103        ld      (_argv),bc              ; vendor __argv (1st argument to main)\r
+    0000000A E1                     104        pop     hl\r
+    0000000B 22 04 00               105        ld      (environ),hl            ; vendor _environ\r
+                                    106  .else\r
+                                    107        ld      ix,0\r
+                                    108        add     ix,sp\r
+                                    109        ld      l,(ix+4)\r
+                                    110        ld      h,(ix+5)\r
+                                    111        ld      (environ),hl            ; vendor _environ\r
+                                    112        ld      c,(ix+2)\r
+                                    113        ld      b,(ix+3)\r
+                                    114        ld      (_argv),bc              ; vendor __argv (1st argument to main)\r
+                                    115        ld      e,(ix+0)\r
+                                    116        ld      d,(ix+1)\r
+                                    117        ld      (_argc),de              ; vendor __argc (2nd argument to main)\r
+                                    118  .endif\r
+                                    119 \r
+                         00000001   120  .if 1\r
+    0000000E 21 00 00               121        ld      HL,LWRD main            ; banked call to _main()\r
+    00000011 3E 00                  122        ld      A,BYTE3 main\r
+    00000013 CD 00 00               123        call    ?BANK_CALL_DIRECT_L08\r
+                                    124  .else\r
+                                    125        call    main ; vendor _main     ; non-banked call to _main()\r
+                                    126  .endif\r
+                                    127 \r
+    00000016 EB                     128        ex      de,hl                   ; de = exitcode (1st argument to exit)\r
+                                    129 \r
+                         00000001   130  .if 1\r
+    00000017 21 00 00               131        ld      HL,LWRD exit            ; banked call to _exit()\r
+    0000001A 3E 00                  132        ld      A,BYTE3 exit\r
+    0000001C C3 00 00               133        jp      ?BANK_CALL_DIRECT_L08\r
+                                    134  .else\r
+                                    135        jp      exit ; vendor _exit     ; non-banked call to _exit()\r
+                                    136  .endif\r
+                                    137 \r
+                                    138 ; -----------------------------------------------------------------------------\r
+                                    139 \r
+                         00000000   140  .if 0\r
+                                    141 seg_init:\r
+                                    142        ld      HL,.sfe.UDATA0\r
+                                    143        ld      DE,.sfb.UDATA0\r
+                                    144        call    zero_mem\r
+                                    145 \r
+                                    146        ld      DE,.sfb.IDATA0          ; destination address\r
+                                    147        ld      HL,.sfe.CDATA0 ;+4000h  ; really 8:0000 + .sfe.CDATA0\r
+                                    148        ld      BC,.sfb.CDATA0 ;+4000h  ; really 8:0000 + .sfb.CDATA0\r
+                                    149        call    copy_mem\r
+                                    150 \r
+                                    151        ld      DE,.sfb.ECSTR                   ; destination address\r
+                                    152        ld      HL,.sfe.CCSTR ;+4000h           ; really 8:0000 + .sfe.CCSTR\r
+                                    153        ld      BC,.sfb.CCSTR ;+4000h           ; really 8:0000 + .sfb.CCSTR\r
+                                    154 \r
+                                    155        ; Just fall in to the copy_mem function\r
+                                    156 \r
+                                    157 copy_mem:\r
+                                    158        XOR     A\r
+                                    159        SBC     HL,BC\r
+                                    160        PUSH    BC\r
+                                    161        LD      C,L\r
+                                    162        LD      B,H                             ; BC - that many bytes\r
+                                    163        POP     HL                              ; source address\r
+                                    164        RET     Z                               ; If block size = 0 return now\r
+                                    165        LDIR\r
+                                    166        RET\r
+                                    167 \r
+                                    168 zero_mem:\r
+                                    169        XOR     A\r
+                                    170 again: PUSH    HL\r
+                                    171        SBC     HL,DE\r
+                                    172        POP     HL\r
+                                    173        RET     Z\r
+                                    174        LD      (DE),A\r
+                                    175        INC     DE\r
+                                    176        JR      again\r
+                                    177  .endif\r
+                                    178 \r
+                                    179 ; -----------------------------------------------------------------------------\r
+                                    180 \r
+                         00000000   181  .if 0\r
+                                    182        public  _abyte\r
+                                    183 \r
+                                    184 _abyte::\r
+                         00000000   185  .if 0 ; SDCC\r
+                                    186        ld      hl,2\r
+                                    187        add     hl,sp\r
+                                    188        ld      a,(hl)\r
+                                    189  .else ; IAR\r
+                                    190        ld      a,e\r
+                                    191  .endif\r
+                                    192 \r
+                                    193        public  abyte\r
+                                    194 \r
+                                    195 abyte::\r
+                         00000000   196  .if 0\r
+                                    197  ret\r
+                                    198  .else\r
+                                    199        push    af\r
+                                    200  .endif\r
+                                    201 \r
+                                    202 L1$:   in0     a,(STAT1)\r
+                                    203        and     10b\r
+                                    204        jr      z,L1$\r
+                                    205 \r
+                                    206        pop     af\r
+                                    207        out0    (TDR1),a\r
+                                    208 \r
+                         00000000   209  .if 0\r
+                                    210  di\r
+                                    211  .endif\r
+                         00000000   212  .if 0\r
+                                    213  ei\r
+                                    214  .endif\r
+                                    215        ret\r
+                                    216 \r
+                                    217        public  _acrlf\r
+                                    218 \r
+                                    219 _acrlf::\r
+                                    220 \r
+                                    221        public  acrlf\r
+                                    222 \r
+                                    223 acrlf::\r
+                                    224        ld      a,0dh\r
+                                    225        call    abyte\r
+                                    226        ld      a,0ah\r
+                                    227        jr      abyte\r
+                                    228 \r
+                                    229        public  _ahexw\r
+                                    230 \r
+                                    231 _ahexw::\r
+                         00000000   232  .if 0 ; SDCC\r
+                                    233        ld      hl,2\r
+                                    234        add     hl,sp\r
+                                    235        ld      e,(hl)\r
+                                    236        inc     hl\r
+                                    237        ld      d,(hl)\r
+                                    238  .endif\r
+                                    239        ex      de,hl\r
+                                    240 \r
+                                    241        public  ahexw\r
+                                    242 \r
+                                    243 ahexw::\r
+                                    244        ld      a,h\r
+                                    245        call    ahexb\r
+                                    246        ld      a,l\r
+                                    247 \r
+                                    248        public  ahexb\r
+                                    249 \r
+                                    250 ahexb::\r
+                                    251        push    af\r
+                                    252        rrca\r
+                                    253        rrca\r
+                                    254        rrca\r
+                                    255        rrca\r
+                                    256        call    ahexn\r
+                                    257        pop     af\r
+                                    258 \r
+                                    259        public  ahexn\r
+                                    260 \r
+                                    261 ahexn::\r
+                                    262        and     0fh\r
+                                    263        add     a,90h\r
+                                    264        daa\r
+                                    265        adc     a,40h\r
+                                    266        daa\r
+                                    267        jr      abyte\r
+                                    268 \r
+                                    269        public  amess\r
+                                    270 \r
+                                    271 amess::\r
+                                    272        ex      (sp),hl\r
+                                    273        push    af\r
+                                    274 \r
+                                    275 L01$:  ld      a,(hl)\r
+                                    276        inc     hl\r
+                                    277        or      a\r
+                                    278        jr      z,L02$\r
+                                    279 \r
+                                    280        call    abyte\r
+                                    281        jr      L01$\r
+                                    282 \r
+                                    283 L02$:  pop     af\r
+                                    284        ex      (sp),hl\r
+                                    285        ret\r
+                                    286  .endif\r
+                                    287 \r
+                                    288 ; -----------------------------------------------------------------------------\r
+                                    289 \r
+                                    290                public  _argc, _argv, environ, errno, __cleanup\r
+                                    291                ;public __argc, __argv, _environ, _errno, ___cleanup\r
+                                    292 \r
+                                    293                rseg    UDATA0\r
+    00000000                        294 _argc:         defs    2               ; vendor __argc\r
+    00000002                        295 _argv:         defs    2               ; vendor __argv\r
+    00000004                        296 environ:       defs    2               ; vendor _environ\r
+    00000006                        297 errno:         defs    2               ; vendor _errno\r
+    00000008                        298 __cleanup:     defs    3 ; oopsy 2     ; vendor ___cleanup\r
+                                    299 \r
+                                    300                rseg    CSTACK\r
+    00000000                        301                defs    E_STACK_SIZE\r
+                                    302 \r
+                                    303 ; -----------------------------------------------------------------------------\r
+                                    304 \r
+    00001000                        305        END\r
+\fASxxxx Assembler V03.11  (Zilog Z80 / Hitachi HD64180), page 1.\r
+Hexadecimal [32-Bits]\r
+\r
+Symbol Table\r
+\r
+    .__.ABS.       =    00000000 G   |     ?BANK_CALL_DIR      ******** GX\r
+    E_FORMAT_BANKE =    00000002     |     E_MAGIC        =    0000A6C9 \r
+    E_STACK_SIZE   =    00001000     |   9 __cleanup           00000008 GR\r
+  1 __init              00000000 GR  |   9 _argc               00000000 GR\r
+  9 _argv               00000002 GR  |     e_CSTACK            ******** GX\r
+  9 environ             00000004 GR  |   9 errno               00000006 GR\r
+    exit                ******** GX  |     l__DEFAULT          ******** GX\r
+    main                ******** GX  |     s_CSTACK            ******** GX\r
+    s_RCODE             ******** GX  |     s_UDATA0            ******** GX\r
+\r
+\fASxxxx Assembler V03.11  (Zilog Z80 / Hitachi HD64180), page 2.\r
+Hexadecimal [32-Bits]\r
+\r
+Area Table\r
+\r
+   0 _DEFAULT         size       14   flags   0\r
+   1 RCODE            size       1F   flags   0\r
+   2 CONST            size        0   flags   0\r
+   3 CSTR             size        0   flags   0\r
+   4 IDATA0           size        0   flags   1\r
+   5 CDATA0           size        0   flags   0\r
+   6 ECSTR            size        0   flags   1\r
+   7 CCSTR            size        0   flags   0\r
+   8 CODE             size        0   flags   1\r
+   9 UDATA0           size        B   flags   0\r
+   A CSTACK           size     1000   flags   0\r
diff --git a/lib/c0b.rst b/lib/c0b.rst
new file mode 100644 (file)
index 0000000..10fed4b
--- /dev/null
@@ -0,0 +1,336 @@
+                                      1 ; c0b.asm by Nick for UZI180 banked memory model\r
+                                      2 \r
+                                      3 ; -----------------------------------------------------------------------------\r
+                                      4 \r
+                         00000000     5  .if 0\r
+                                      6 $ io64180.s01\r
+                                      7  .endif\r
+                                      8 \r
+                                      9        module  _c0b\r
+                                     10 \r
+                                     11        public  __init                  ; vendor _init\r
+                         00000000    12  .if 0\r
+                                     13        extern  brk                     ; vendor _brk\r
+                                     14  .endif\r
+                                     15        extern  main                    ; vendor _main\r
+                                     16        extern  exit                    ; vendor _exit\r
+                                     17 \r
+                                     18        extern  l__DEFAULT              ; e_hsize\r
+                                     19        extern  s_RCODE                 ; e_idata\r
+                                     20        extern  s_UDATA0                ; e_udata\r
+                                     21        extern  s_CSTACK                ; e_stack\r
+                                     22        extern  e_CSTACK                ; e_break\r
+                                     23 \r
+                         00000001    24  .if 1\r
+                                     25        extern  ?BANK_CALL_DIRECT_L08\r
+                                     26  .endif\r
+                                     27 \r
+                         0000A6C9    28 E_MAGIC                equ     0a6c9h\r
+                         00000002    29 E_FORMAT_BANKED        equ     2\r
+                         00001000    30 E_STACK_SIZE   equ     1000h\r
+                                     31 \r
+                                     32 ; -----------------------------------------------------------------------------\r
+                                     33 ; forward definitions of segments, to set the linkage order (c0l must be first)\r
+                                     34 \r
+                                     35        rseg    RCODE\r
+                                     36 ;      rseg    TEMP\r
+                                     37 ;      rseg    DATA0\r
+                                     38 ;      rseg    WCSTR\r
+                                     39        rseg    CONST\r
+                                     40        rseg    CSTR\r
+                                     41        rseg    IDATA0(NUL)\r
+                                     42        rseg    CDATA0\r
+                                     43        rseg    ECSTR(NUL)\r
+                                     44        rseg    CCSTR\r
+                                     45        rseg    CODE(NUL)               ; needs to be at end for banked model\r
+                                     46        rseg    UDATA0\r
+                                     47        rseg    CSTACK\r
+                                     48 \r
+                                     49 ; -----------------------------------------------------------------------------\r
+                                     50 \r
+                         00000001    51  .if 1\r
+                                     52        rseg    _DEFAULT                ; means header is discarded at loading\r
+                                     53  .else\r
+                                     54        rseg    RCODE                   ; means header is visible to loaded pgm\r
+                                     55  .endif\r
+                                     56 \r
+                         00000001    57  .if 1\r
+    00000000 C9 A6                   58        defw    E_MAGIC                 ; e_magic\r
+    00000002 02 00                   59        defw    E_FORMAT_BANKED         ; e_format\r
+    00000004 78 56 34 12             60        defd    12345678h               ; e_size\r
+    00000008 14 00                   61        defw    l__DEFAULT              ; e_hsize\r
+    0000000A 00 81                   62        defw    s_RCODE                 ; e_idata\r
+    0000000C 00 81                   63        defw    __init                  ; e_entry\r
+    0000000E 5A 81                   64        defw    s_UDATA0                ; e_udata\r
+    00000010 65 81                   65        defw    s_CSTACK                ; e_stack\r
+    00000012 65 91                   66        defw    e_CSTACK                ; e_break\r
+                                     67  .else\r
+                                     68        jp      __init\r
+                                     69  .endif\r
+                                     70 \r
+                                     71 ; -----------------------------------------------------------------------------\r
+                                     72 \r
+                                     73        rseg    RCODE\r
+                                     74 \r
+    00008100                         75 __init::\r
+                         00000000    76  .if 0\r
+                                     77  ld a,'A'\r
+                                     78  call abyte\r
+                                     79  .endif\r
+                                     80 \r
+                         00000000    81  .if 0\r
+                                     82        ld      de,.sfb.CSTACK  ; 1st argument to brk()\r
+                                     83 \r
+                         00000000    84  .if 0\r
+                                     85        ld      hl,LWRD brk\r
+                                     86        ld      a,BYTE3 brk\r
+                                     87        call    ?BANK_CALL_DIRECT_L08\r
+                                     88  .else\r
+                                     89        call    brk\r
+                                     90  .endif\r
+                                     91 \r
+                                     92        call    seg_init\r
+                                     93  .endif\r
+                                     94 \r
+                                     95 ; now there are the next stack structure:\r
+                                     96 ;      +4 envp\r
+                                     97 ;      +2 argv\r
+                                     98 ; sp-> +0 argc\r
+                         00000001    99  .if 1\r
+    00008100 D1                     100        pop     de\r
+    00008101 ED 53 5A 81            101        ld      (_argc),de              ; vendor __argc (2nd argument to main)\r
+    00008105 C1                     102        pop     bc\r
+    00008106 ED 43 5C 81            103        ld      (_argv),bc              ; vendor __argv (1st argument to main)\r
+    0000810A E1                     104        pop     hl\r
+    0000810B 22 5E 81               105        ld      (environ),hl            ; vendor _environ\r
+                                    106  .else\r
+                                    107        ld      ix,0\r
+                                    108        add     ix,sp\r
+                                    109        ld      l,(ix+4)\r
+                                    110        ld      h,(ix+5)\r
+                                    111        ld      (environ),hl            ; vendor _environ\r
+                                    112        ld      c,(ix+2)\r
+                                    113        ld      b,(ix+3)\r
+                                    114        ld      (_argv),bc              ; vendor __argv (1st argument to main)\r
+                                    115        ld      e,(ix+0)\r
+                                    116        ld      d,(ix+1)\r
+                                    117        ld      (_argc),de              ; vendor __argc (2nd argument to main)\r
+                                    118  .endif\r
+                                    119 \r
+                         00000001   120  .if 1\r
+    0000810E 21 6E 40               121        ld      HL,LWRD main            ; banked call to _main()\r
+    00008111 3E 00                  122        ld      A,BYTE3 main\r
+    00008113 CD 36 81               123        call    ?BANK_CALL_DIRECT_L08\r
+                                    124  .else\r
+                                    125        call    main ; vendor _main     ; non-banked call to _main()\r
+                                    126  .endif\r
+                                    127 \r
+    00008116 EB                     128        ex      de,hl                   ; de = exitcode (1st argument to exit)\r
+                                    129 \r
+                         00000001   130  .if 1\r
+    00008117 21 F7 40               131        ld      HL,LWRD exit            ; banked call to _exit()\r
+    0000811A 3E 00                  132        ld      A,BYTE3 exit\r
+    0000811C C3 36 81               133        jp      ?BANK_CALL_DIRECT_L08\r
+                                    134  .else\r
+                                    135        jp      exit ; vendor _exit     ; non-banked call to _exit()\r
+                                    136  .endif\r
+                                    137 \r
+                                    138 ; -----------------------------------------------------------------------------\r
+                                    139 \r
+                         00000000   140  .if 0\r
+                                    141 seg_init:\r
+                                    142        ld      HL,.sfe.UDATA0\r
+                                    143        ld      DE,.sfb.UDATA0\r
+                                    144        call    zero_mem\r
+                                    145 \r
+                                    146        ld      DE,.sfb.IDATA0          ; destination address\r
+                                    147        ld      HL,.sfe.CDATA0 ;+4000h  ; really 8:0000 + .sfe.CDATA0\r
+                                    148        ld      BC,.sfb.CDATA0 ;+4000h  ; really 8:0000 + .sfb.CDATA0\r
+                                    149        call    copy_mem\r
+                                    150 \r
+                                    151        ld      DE,.sfb.ECSTR                   ; destination address\r
+                                    152        ld      HL,.sfe.CCSTR ;+4000h           ; really 8:0000 + .sfe.CCSTR\r
+                                    153        ld      BC,.sfb.CCSTR ;+4000h           ; really 8:0000 + .sfb.CCSTR\r
+                                    154 \r
+                                    155        ; Just fall in to the copy_mem function\r
+                                    156 \r
+                                    157 copy_mem:\r
+                                    158        XOR     A\r
+                                    159        SBC     HL,BC\r
+                                    160        PUSH    BC\r
+                                    161        LD      C,L\r
+                                    162        LD      B,H                             ; BC - that many bytes\r
+                                    163        POP     HL                              ; source address\r
+                                    164        RET     Z                               ; If block size = 0 return now\r
+                                    165        LDIR\r
+                                    166        RET\r
+                                    167 \r
+                                    168 zero_mem:\r
+                                    169        XOR     A\r
+                                    170 again: PUSH    HL\r
+                                    171        SBC     HL,DE\r
+                                    172        POP     HL\r
+                                    173        RET     Z\r
+                                    174        LD      (DE),A\r
+                                    175        INC     DE\r
+                                    176        JR      again\r
+                                    177  .endif\r
+                                    178 \r
+                                    179 ; -----------------------------------------------------------------------------\r
+                                    180 \r
+                         00000000   181  .if 0\r
+                                    182        public  _abyte\r
+                                    183 \r
+                                    184 _abyte::\r
+                         00000000   185  .if 0 ; SDCC\r
+                                    186        ld      hl,2\r
+                                    187        add     hl,sp\r
+                                    188        ld      a,(hl)\r
+                                    189  .else ; IAR\r
+                                    190        ld      a,e\r
+                                    191  .endif\r
+                                    192 \r
+                                    193        public  abyte\r
+                                    194 \r
+                                    195 abyte::\r
+                         00000000   196  .if 0\r
+                                    197  ret\r
+                                    198  .else\r
+                                    199        push    af\r
+                                    200  .endif\r
+                                    201 \r
+                                    202 L1$:   in0     a,(STAT1)\r
+                                    203        and     10b\r
+                                    204        jr      z,L1$\r
+                                    205 \r
+                                    206        pop     af\r
+                                    207        out0    (TDR1),a\r
+                                    208 \r
+                         00000000   209  .if 0\r
+                                    210  di\r
+                                    211  .endif\r
+                         00000000   212  .if 0\r
+                                    213  ei\r
+                                    214  .endif\r
+                                    215        ret\r
+                                    216 \r
+                                    217        public  _acrlf\r
+                                    218 \r
+                                    219 _acrlf::\r
+                                    220 \r
+                                    221        public  acrlf\r
+                                    222 \r
+                                    223 acrlf::\r
+                                    224        ld      a,0dh\r
+                                    225        call    abyte\r
+                                    226        ld      a,0ah\r
+                                    227        jr      abyte\r
+                                    228 \r
+                                    229        public  _ahexw\r
+                                    230 \r
+                                    231 _ahexw::\r
+                         00000000   232  .if 0 ; SDCC\r
+                                    233        ld      hl,2\r
+                                    234        add     hl,sp\r
+                                    235        ld      e,(hl)\r
+                                    236        inc     hl\r
+                                    237        ld      d,(hl)\r
+                                    238  .endif\r
+                                    239        ex      de,hl\r
+                                    240 \r
+                                    241        public  ahexw\r
+                                    242 \r
+                                    243 ahexw::\r
+                                    244        ld      a,h\r
+                                    245        call    ahexb\r
+                                    246        ld      a,l\r
+                                    247 \r
+                                    248        public  ahexb\r
+                                    249 \r
+                                    250 ahexb::\r
+                                    251        push    af\r
+                                    252        rrca\r
+                                    253        rrca\r
+                                    254        rrca\r
+                                    255        rrca\r
+                                    256        call    ahexn\r
+                                    257        pop     af\r
+                                    258 \r
+                                    259        public  ahexn\r
+                                    260 \r
+                                    261 ahexn::\r
+                                    262        and     0fh\r
+                                    263        add     a,90h\r
+                                    264        daa\r
+                                    265        adc     a,40h\r
+                                    266        daa\r
+                                    267        jr      abyte\r
+                                    268 \r
+                                    269        public  amess\r
+                                    270 \r
+                                    271 amess::\r
+                                    272        ex      (sp),hl\r
+                                    273        push    af\r
+                                    274 \r
+                                    275 L01$:  ld      a,(hl)\r
+                                    276        inc     hl\r
+                                    277        or      a\r
+                                    278        jr      z,L02$\r
+                                    279 \r
+                                    280        call    abyte\r
+                                    281        jr      L01$\r
+                                    282 \r
+                                    283 L02$:  pop     af\r
+                                    284        ex      (sp),hl\r
+                                    285        ret\r
+                                    286  .endif\r
+                                    287 \r
+                                    288 ; -----------------------------------------------------------------------------\r
+                                    289 \r
+                                    290                public  _argc, _argv, environ, errno, __cleanup\r
+                                    291                ;public __argc, __argv, _environ, _errno, ___cleanup\r
+                                    292 \r
+                                    293                rseg    UDATA0\r
+    0000815A                        294 _argc:         defs    2               ; vendor __argc\r
+    0000815C                        295 _argv:         defs    2               ; vendor __argv\r
+    0000815E                        296 environ:       defs    2               ; vendor _environ\r
+    00008160                        297 errno:         defs    2               ; vendor _errno\r
+    00008162                        298 __cleanup:     defs    3 ; oopsy 2     ; vendor ___cleanup\r
+                                    299 \r
+                                    300                rseg    CSTACK\r
+    00008165                        301                defs    E_STACK_SIZE\r
+                                    302 \r
+                                    303 ; -----------------------------------------------------------------------------\r
+                                    304 \r
+    00001000                        305        END\r
+\fASxxxx Assembler V03.11  (Zilog Z80 / Hitachi HD64180), page 1.\r
+Hexadecimal [32-Bits]\r
+\r
+Symbol Table\r
+\r
+    .__.ABS.       =    00000000 G   |     ?BANK_CALL_DIR      ******** GX\r
+    E_FORMAT_BANKE =    00000002     |     E_MAGIC        =    0000A6C9 \r
+    E_STACK_SIZE   =    00001000     |   9 __cleanup           00000008 GR\r
+  1 __init              00000000 GR  |   9 _argc               00000000 GR\r
+  9 _argv               00000002 GR  |     e_CSTACK            ******** GX\r
+  9 environ             00000004 GR  |   9 errno               00000006 GR\r
+    exit                ******** GX  |     l__DEFAULT          ******** GX\r
+    main                ******** GX  |     s_CSTACK            ******** GX\r
+    s_RCODE             ******** GX  |     s_UDATA0            ******** GX\r
+\r
+\fASxxxx Assembler V03.11  (Zilog Z80 / Hitachi HD64180), page 2.\r
+Hexadecimal [32-Bits]\r
+\r
+Area Table\r
+\r
+   0 _DEFAULT         size       14   flags   0\r
+   1 RCODE            size       1F   flags   0\r
+   2 CONST            size        0   flags   0\r
+   3 CSTR             size        0   flags   0\r
+   4 IDATA0           size        0   flags   1\r
+   5 CDATA0           size        0   flags   0\r
+   6 ECSTR            size        0   flags   1\r
+   7 CCSTR            size        0   flags   0\r
+   8 CODE             size        0   flags   1\r
+   9 UDATA0           size        B   flags   0\r
+   A CSTACK           size     1000   flags   0\r
diff --git a/lib/c0l.lst b/lib/c0l.lst
new file mode 100644 (file)
index 0000000..0695ad6
--- /dev/null
@@ -0,0 +1,335 @@
+                                      1 ; c0l.asm by Nick for UZI180 large memory model\r
+                                      2 \r
+                                      3 ; -----------------------------------------------------------------------------\r
+                                      4 \r
+                         00000000     5  .if 0\r
+                                      6 $ io64180.s01\r
+                                      7  .endif\r
+                                      8 \r
+                                      9        module  _c0l\r
+                                     10 \r
+                                     11        public  __init                  ; vendor _init\r
+                         00000000    12  .if 0\r
+                                     13        extern  brk                     ; vendor _brk\r
+                                     14  .endif\r
+                                     15        extern  main                    ; vendor _main\r
+                                     16        extern  exit                    ; vendor _exit\r
+                                     17 \r
+                                     18        extern  l__DEFAULT              ; e_hsize\r
+                                     19        extern  s_RCODE                 ; e_idata\r
+                                     20        extern  s_UDATA0                ; e_udata\r
+                                     21        extern  s_CSTACK                ; e_stack\r
+                                     22        extern  e_CSTACK                ; e_break\r
+                                     23 \r
+                         00000000    24  .if 0\r
+                                     25        extern  ?BANK_CALL_DIRECT_L08\r
+                                     26  .endif\r
+                                     27 \r
+                         0000A6C9    28 E_MAGIC                equ     0a6c9h\r
+                         00000001    29 E_FORMAT_LARGE equ     1\r
+                         00001000    30 E_STACK_SIZE   equ     1000h\r
+                                     31 \r
+                                     32 ; -----------------------------------------------------------------------------\r
+                                     33 ; forward definitions of segments, to set the linkage order (c0l must be first)\r
+                                     34 \r
+                                     35        rseg    RCODE\r
+                                     36        rseg    CODE                    ; needs to be at start for large model\r
+                                     37 ;      rseg    TEMP\r
+                                     38 ;      rseg    DATA0\r
+                                     39 ;      rseg    WCSTR\r
+                                     40        rseg    CONST\r
+                                     41        rseg    CSTR\r
+                                     42        rseg    IDATA0(NUL)\r
+                                     43        rseg    CDATA0\r
+                                     44        rseg    ECSTR(NUL)\r
+                                     45        rseg    CCSTR\r
+                                     46        rseg    UDATA0\r
+                                     47        rseg    CSTACK\r
+                                     48 \r
+                                     49 ; -----------------------------------------------------------------------------\r
+                                     50 \r
+                         00000001    51  .if 1\r
+                                     52        rseg    _DEFAULT                ; means header is discarded at loading\r
+                                     53  .else\r
+                                     54        rseg    RCODE                   ; means header is visible to loaded pgm\r
+                                     55  .endif\r
+                                     56 \r
+                         00000001    57  .if 1\r
+    00000000 C9 A6                   58        defw    E_MAGIC                 ; e_magic\r
+    00000002 01 00                   59        defw    E_FORMAT_LARGE          ; e_format\r
+    00000004 78 56 34 12             60        defd    12345678h               ; e_size\r
+    00000008 00 00                   61        defw    l__DEFAULT              ; e_hsize\r
+    0000000A 00 00                   62        defw    s_RCODE                 ; e_idata\r
+    0000000C 00 00                   63        defw    __init                  ; e_entry\r
+    0000000E 00 00                   64        defw    s_UDATA0                ; e_udata\r
+    00000010 00 00                   65        defw    s_CSTACK                ; e_stack\r
+    00000012 00 00                   66        defw    e_CSTACK                ; e_break\r
+                                     67  .else\r
+                                     68        jp      __init\r
+                                     69  .endif\r
+                                     70 \r
+                                     71 ; -----------------------------------------------------------------------------\r
+                                     72 \r
+                                     73        rseg    RCODE\r
+                                     74 \r
+    00000000                         75 __init::\r
+                         00000000    76  .if 0\r
+                                     77  ld a,'A'\r
+                                     78  call abyte\r
+                                     79  .endif\r
+                                     80 \r
+                         00000000    81  .if 0\r
+                                     82        ld      de,.sfb.CSTACK  ; 1st argument to brk()\r
+                                     83 \r
+                         00000000    84  .if 0\r
+                                     85        ld      hl,LWRD brk\r
+                                     86        ld      a,BYTE3 brk\r
+                                     87        call    ?BANK_CALL_DIRECT_L08\r
+                                     88  .else\r
+                                     89        call    brk\r
+                                     90  .endif\r
+                                     91 \r
+                                     92        call    seg_init\r
+                                     93  .endif\r
+                                     94 \r
+                                     95 ; now there are the next stack structure:\r
+                                     96 ;      +4 envp\r
+                                     97 ;      +2 argv\r
+                                     98 ; sp-> +0 argc\r
+                         00000001    99  .if 1\r
+    00000000 D1                     100        pop     de\r
+    00000001 ED 53 00 00            101        ld      (_argc),de              ; vendor __argc (2nd argument to main)\r
+    00000005 C1                     102        pop     bc\r
+    00000006 ED 43 02 00            103        ld      (_argv),bc              ; vendor __argv (1st argument to main)\r
+    0000000A E1                     104        pop     hl\r
+    0000000B 22 04 00               105        ld      (environ),hl            ; vendor _environ\r
+                                    106  .else\r
+                                    107        ld      ix,0\r
+                                    108        add     ix,sp\r
+                                    109        ld      l,(ix+4)\r
+                                    110        ld      h,(ix+5)\r
+                                    111        ld      (environ),hl            ; vendor _environ\r
+                                    112        ld      c,(ix+2)\r
+                                    113        ld      b,(ix+3)\r
+                                    114        ld      (_argv),bc              ; vendor __argv (1st argument to main)\r
+                                    115        ld      e,(ix+0)\r
+                                    116        ld      d,(ix+1)\r
+                                    117        ld      (_argc),de              ; vendor __argc (2nd argument to main)\r
+                                    118  .endif\r
+                                    119 \r
+                         00000000   120  .if 0\r
+                                    121        ld      HL,LWRD main            ; banked call to _main()\r
+                                    122        ld      A,BYTE3 main\r
+                                    123        call    ?BANK_CALL_DIRECT_L08\r
+                                    124  .else\r
+    0000000E CD 00 00               125        call    main ; vendor _main     ; non-banked call to _main()\r
+                                    126  .endif\r
+                                    127 \r
+    00000011 EB                     128        ex      de,hl                   ; de = exitcode (1st argument to exit)\r
+                                    129 \r
+                         00000000   130  .if 0\r
+                                    131        ld      HL,LWRD exit            ; banked call to _exit()\r
+                                    132        ld      A,BYTE3 exit\r
+                                    133        jp      ?BANK_CALL_DIRECT_L08\r
+                                    134  .else\r
+    00000012 C3 00 00               135        jp      exit ; vendor _exit     ; non-banked call to _exit()\r
+                                    136  .endif\r
+                                    137 \r
+                                    138 ; -----------------------------------------------------------------------------\r
+                                    139 \r
+                         00000000   140  .if 0\r
+                                    141 seg_init:\r
+                                    142        ld      HL,.sfe.UDATA0\r
+                                    143        ld      DE,.sfb.UDATA0\r
+                                    144        call    zero_mem\r
+                                    145 \r
+                                    146        ld      DE,.sfb.IDATA0          ; destination address\r
+                                    147        ld      HL,.sfe.CDATA0 ;+4000h  ; really 8:0000 + .sfe.CDATA0\r
+                                    148        ld      BC,.sfb.CDATA0 ;+4000h  ; really 8:0000 + .sfb.CDATA0\r
+                                    149        call    copy_mem\r
+                                    150 \r
+                                    151        ld      DE,.sfb.ECSTR                   ; destination address\r
+                                    152        ld      HL,.sfe.CCSTR ;+4000h           ; really 8:0000 + .sfe.CCSTR\r
+                                    153        ld      BC,.sfb.CCSTR ;+4000h           ; really 8:0000 + .sfb.CCSTR\r
+                                    154 \r
+                                    155        ; Just fall in to the copy_mem function\r
+                                    156 \r
+                                    157 copy_mem:\r
+                                    158        XOR     A\r
+                                    159        SBC     HL,BC\r
+                                    160        PUSH    BC\r
+                                    161        LD      C,L\r
+                                    162        LD      B,H                             ; BC - that many bytes\r
+                                    163        POP     HL                              ; source address\r
+                                    164        RET     Z                               ; If block size = 0 return now\r
+                                    165        LDIR\r
+                                    166        RET\r
+                                    167 \r
+                                    168 zero_mem:\r
+                                    169        XOR     A\r
+                                    170 again: PUSH    HL\r
+                                    171        SBC     HL,DE\r
+                                    172        POP     HL\r
+                                    173        RET     Z\r
+                                    174        LD      (DE),A\r
+                                    175        INC     DE\r
+                                    176        JR      again\r
+                                    177  .endif\r
+                                    178 \r
+                                    179 ; -----------------------------------------------------------------------------\r
+                                    180 \r
+                         00000000   181  .if 0\r
+                                    182        public  _abyte\r
+                                    183 \r
+                                    184 _abyte::\r
+                         00000000   185  .if 0 ; SDCC\r
+                                    186        ld      hl,2\r
+                                    187        add     hl,sp\r
+                                    188        ld      a,(hl)\r
+                                    189  .else ; IAR\r
+                                    190        ld      a,e\r
+                                    191  .endif\r
+                                    192 \r
+                                    193        public  abyte\r
+                                    194 \r
+                                    195 abyte::\r
+                         00000000   196  .if 0\r
+                                    197  ret\r
+                                    198  .else\r
+                                    199        push    af\r
+                                    200  .endif\r
+                                    201 \r
+                                    202 L1$:   in0     a,(STAT1)\r
+                                    203        and     10b\r
+                                    204        jr      z,L1$\r
+                                    205 \r
+                                    206        pop     af\r
+                                    207        out0    (TDR1),a\r
+                                    208 \r
+                         00000000   209  .if 0\r
+                                    210  di\r
+                                    211  .endif\r
+                         00000000   212  .if 0\r
+                                    213  ei\r
+                                    214  .endif\r
+                                    215        ret\r
+                                    216 \r
+                                    217        public  _acrlf\r
+                                    218 \r
+                                    219 _acrlf::\r
+                                    220 \r
+                                    221        public  acrlf\r
+                                    222 \r
+                                    223 acrlf::\r
+                                    224        ld      a,0dh\r
+                                    225        call    abyte\r
+                                    226        ld      a,0ah\r
+                                    227        jr      abyte\r
+                                    228 \r
+                                    229        public  _ahexw\r
+                                    230 \r
+                                    231 _ahexw::\r
+                         00000000   232  .if 0 ; SDCC\r
+                                    233        ld      hl,2\r
+                                    234        add     hl,sp\r
+                                    235        ld      e,(hl)\r
+                                    236        inc     hl\r
+                                    237        ld      d,(hl)\r
+                                    238  .endif\r
+                                    239        ex      de,hl\r
+                                    240 \r
+                                    241        public  ahexw\r
+                                    242 \r
+                                    243 ahexw::\r
+                                    244        ld      a,h\r
+                                    245        call    ahexb\r
+                                    246        ld      a,l\r
+                                    247 \r
+                                    248        public  ahexb\r
+                                    249 \r
+                                    250 ahexb::\r
+                                    251        push    af\r
+                                    252        rrca\r
+                                    253        rrca\r
+                                    254        rrca\r
+                                    255        rrca\r
+                                    256        call    ahexn\r
+                                    257        pop     af\r
+                                    258 \r
+                                    259        public  ahexn\r
+                                    260 \r
+                                    261 ahexn::\r
+                                    262        and     0fh\r
+                                    263        add     a,90h\r
+                                    264        daa\r
+                                    265        adc     a,40h\r
+                                    266        daa\r
+                                    267        jr      abyte\r
+                                    268 \r
+                                    269        public  amess\r
+                                    270 \r
+                                    271 amess::\r
+                                    272        ex      (sp),hl\r
+                                    273        push    af\r
+                                    274 \r
+                                    275 L01$:  ld      a,(hl)\r
+                                    276        inc     hl\r
+                                    277        or      a\r
+                                    278        jr      z,L02$\r
+                                    279 \r
+                                    280        call    abyte\r
+                                    281        jr      L01$\r
+                                    282 \r
+                                    283 L02$:  pop     af\r
+                                    284        ex      (sp),hl\r
+                                    285        ret\r
+                                    286  .endif\r
+                                    287 \r
+                                    288 ; -----------------------------------------------------------------------------\r
+                                    289 \r
+                                    290                public  _argc, _argv, environ, errno, __cleanup\r
+                                    291                ;public __argc, __argv, _environ, _errno, ___cleanup\r
+                                    292 \r
+                                    293                rseg    UDATA0\r
+    00000000                        294 _argc:         defs    2               ; vendor __argc\r
+    00000002                        295 _argv:         defs    2               ; vendor __argv\r
+    00000004                        296 environ:       defs    2               ; vendor _environ\r
+    00000006                        297 errno:         defs    2               ; vendor _errno\r
+    00000008                        298 __cleanup:     defs    2               ; vendor ___cleanup\r
+                                    299 \r
+                                    300                rseg    CSTACK\r
+    00000000                        301                defs    E_STACK_SIZE\r
+                                    302 \r
+                                    303 ; -----------------------------------------------------------------------------\r
+                                    304 \r
+    00001000                        305        END\r
+\fASxxxx Assembler V03.11  (Zilog Z80 / Hitachi HD64180), page 1.\r
+Hexadecimal [32-Bits]\r
+\r
+Symbol Table\r
+\r
+    .__.ABS.       =    00000000 G   |     E_FORMAT_LARGE =    00000001 \r
+    E_MAGIC        =    0000A6C9     |     E_STACK_SIZE   =    00001000 \r
+  9 __cleanup           00000008 GR  |   1 __init              00000000 GR\r
+  9 _argc               00000000 GR  |   9 _argv               00000002 GR\r
+    e_CSTACK            ******** GX  |   9 environ             00000004 GR\r
+  9 errno               00000006 GR  |     exit                ******** GX\r
+    l__DEFAULT          ******** GX  |     main                ******** GX\r
+    s_CSTACK            ******** GX  |     s_RCODE             ******** GX\r
+    s_UDATA0            ******** GX\r
+\fASxxxx Assembler V03.11  (Zilog Z80 / Hitachi HD64180), page 2.\r
+Hexadecimal [32-Bits]\r
+\r
+Area Table\r
+\r
+   0 _DEFAULT         size       14   flags   0\r
+   1 RCODE            size       15   flags   0\r
+   2 CODE             size        0   flags   0\r
+   3 CONST            size        0   flags   0\r
+   4 CSTR             size        0   flags   0\r
+   5 IDATA0           size        0   flags   1\r
+   6 CDATA0           size        0   flags   0\r
+   7 ECSTR            size        0   flags   1\r
+   8 CCSTR            size        0   flags   0\r
+   9 UDATA0           size        A   flags   0\r
+   A CSTACK           size     1000   flags   0\r
diff --git a/relnotes/20030702.txt b/relnotes/20030702.txt
new file mode 100644 (file)
index 0000000..be7e24d
--- /dev/null
@@ -0,0 +1,60 @@
+
+This is a full uzi build.
+
+It is basically a further development of the 030528 release
+where the major differences are in changes and additions to the
+testsystem.
+
+/uzi/src/testsystem/tter
+
+This program runs in a UNIX environment (Cygwin is OK too)
+and controls the recording and playback of the terminal,
+see tter -? for more. The baudrate is current default at 38400
+
+/uzi/src/kernel/uzi
+
+Here are the changes to the kernel regarding the testsystem.
+Files:
+testsystem.c
+testsystem.h
+touchscreen.c
+touchscreen.h
+devno.h
+
+
+The testsystem is hardcoded to record/playback on Serial 3
+
+The kernel currently comes alive with the testsystem enabled. This
+is for now hardcoded and will be changed in the future to be enabled
+or disabled at will.
+
+This means that currently all device output is redirected to Serial 3
+out and if "tter -r" is listening, is recorded. The recorded data is
+tagged with the device id (UZI minor device number) of its source.
+Format: ESC <minor dev id>
+
+Playback with "tter -p" will redirect the input received on Serial 3
+as if received from the devices concerned.
+
+Commands currently supported via Serial 3 input:
+ESC R  Toggles RTC of terminal between internal source (defaulr) or
+       external source
+ESC r  Toggles on/off internal source RTC to be routed to Serial 3 
+       output in order to be recorded
+
+Note that ESC in the to be recorded data stream is always escaped
+(ESC becomes ESC ESC)
+
+Known problems:
+- <backspace> on the keyboard of the hyperterminal causes an interrupt
+  interference with the testsystem_rx_handler on Serial 3 input. Symptom:
+  hyperterminal shows: testsystem_rx_handler: ERROR port = .., c = ..
+- The testsystem is quite slow during playback. One of the reasons is
+  that each byte during recording is taggged with the device id, thus
+  causes the amount of data to be processed to be trippled. The reason
+  this is that "remembering" the currently active device and tag the
+  data only when it changes, causes conflicts between multiple interrupts
+  happening at the same time. In fact some mutex needs to be used
+  to protect critical data in testsystem_rx_hook. This will be implemented
+  in the next release.
+
diff --git a/src/avr/tsv3.lst b/src/avr/tsv3.lst
new file mode 100644 (file)
index 0000000..4e99835
--- /dev/null
@@ -0,0 +1,5765 @@
+Toms AVR macro assembler version 1.18 (May  9 2003)\r
+Copyright (C) 2000 - Tom Mortensen\r
+E-mail: tom@tavrasm.org  WWW: http://www.tavrasm.org\r
+\r
++------------------+-----------------------------------------------------------+\r
+| Value            | Text                                                      |\r
+|------------------|-----------------------------------------------------------|\r
+|                  | ;       TSV3.ASM\r
+|                  | \r
+|                  | ;       19FEB02 REVISE FOR GREATER CONTRAST VOLTAGE FOR ALBERT'S 2ND BATCH -15V\r
+|                  | ;       01FEB02 REVISE FOR 7.3728MHz XTAL (SEE !!!)\r
+|                  | \r
+|                  | ;       22JUN01 REVISE -VE VOLTAGE GENERATION\r
+|                  | ;               TO WORK WITH REV E PARTS\r
+|                  | ;               ;!! INDICATES CHANGES\r
+|                  | \r
+|                  | ;**     INDICATES CHANGES FOR LOW VCC AVR MOD\r
+|                  | \r
+|                  | .INCLUDE "8535DEF.INC"\r
+|                  | ;***************************************************************************\r
+|                  | ;* A P P L I C A T I O N   N O T E   F O R   T H E   A V R   F A M I L Y\r
+|                  | ;* \r
+|                  | ;* Number               :AVR000\r
+|                  | ;* File Name            :"8535def.inc"\r
+|                  | ;* Title                :Register/Bit Definitions for the AT90S8535\r
+|                  | ;* Date                 :98.05.22\r
+|                  | ;* Version              :1.22\r
+|                  | ;* Support telephone    :+47 72 88 43 88 (ATMEL Norway)\r
+|                  | ;* Support fax          :+47 72 88 43 99 (ATMEL Norway)\r
+|                  | ;* Support E-mail       :avr@atmel.com\r
+|                  | ;* Target MCU           :AT90S8535\r
+|                  | ;*\r
+|                  | ;* DESCRIPTION\r
+|                  | ;* When including this file in the assembly program file, all I/O register      \r
+|                  | ;* names and I/O register bit names appearing in the data book can be used.\r
+|                  | ;* In addition, the six registers forming the three data pointers X, Y and\r
+|                  | ;* Z have been assigned names XL - ZH. Highest RAM address for Internal \r
+|                  | ;* SRAM is also defined \r
+|                  | ;*\r
+|                  | ;* The Register names are represented by their hexadecimal address.\r
+|                  | ;* \r
+|                  | ;* The Register Bit names are represented by their bit number (0-7).\r
+|                  | ;* \r
+|                  | ;* Please observe the difference in using the bit names with instructions\r
+|                  | ;* such as "sbr"/"cbr" (set/clear bit in register) and "sbrs"/"sbrc" \r
+|                  | ;* (skip if bit in register set/cleared). The following example illustrates\r
+|                  | ;* this:\r
+|                  | ;* \r
+|                  | ;* in   r16,PORTB               ;read PORTB latch\r
+|                  | ;* sbr  r16,(1<<PB6)+(1<<PB5)   ;set PB6 and PB5 (use masks, not bit#)\r
+|                  | ;* out  PORTB,r16               ;output to PORTB\r
+|                  | ;*\r
+|                  | ;* in   r16,TIFR                ;read the Timer Interrupt Flag Register\r
+|                  | ;* sbrc r16,TOV0                ;test the overflow flag (use bit#)\r
+|                  | ;* rjmp TOV0_is_set             ;jump if set\r
+|                  | ;* ...                          ;otherwise do something else\r
+|                  | ;***************************************************************************\r
+|                  | \r
+|                  | ;***** Specify Device\r
+|                  | .device AT90S8535\r
+|                  | \r
+|                  | ;***** I/O Register Definitions\r
+|                  | .equ    SREG    =$3f\r
+|                  | .equ    SPH     =$3e\r
+|                  | .equ    SPL     =$3d\r
+|                  | .equ    GIMSK   =$3b\r
+|                  | .equ    GIFR    =$3a\r
+|                  | .equ    TIMSK   =$39\r
+|                  | .equ    TIFR    =$38\r
+|                  | \r
+|                  | .equ    MCUCR   =$35\r
+|                  | .equ    MCUSR   =$34\r
+|                  | \r
+|                  | .equ    TCCR0   =$33\r
+|                  | .equ    TCNT0   =$32\r
+|                  | \r
+|                  | .equ    TCCR1A  =$2f\r
+|                  | .equ    TCCR1B  =$2e\r
+|                  | .equ    TCNT1H  =$2d\r
+|                  | .equ    TCNT1L  =$2c\r
+|                  | .equ    OCR1AH  =$2b\r
+|                  | .equ    OCR1AL  =$2a\r
+|                  | .equ    OCR1BH  =$29\r
+|                  | .equ    OCR1BL  =$28\r
+|                  | .equ    ICR1H   =$27\r
+|                  | .equ    ICR1L   =$26\r
+|                  | \r
+|                  | .equ    TCCR2   =$25\r
+|                  | .equ    TCNT2   =$24\r
+|                  | .equ    OCR2    =$23\r
+|                  | .equ    ASSR    =$22\r
+|                  | \r
+|                  | .equ    WDTCR   =$21\r
+|                  | .equ    EEARH   =$1f\r
+|                  | .equ    EEARL   =$1e\r
+|                  | .equ    EEDR    =$1d\r
+|                  | .equ    EECR    =$1c\r
+|                  | .equ    PORTA   =$1b\r
+|                  | .equ    DDRA    =$1a\r
+|                  | .equ    PINA    =$19\r
+|                  | .equ    PORTB   =$18\r
+|                  | .equ    DDRB    =$17\r
+|                  | .equ    PINB    =$16\r
+|                  | .equ    PORTC   =$15\r
+|                  | .equ    DDRC    =$14\r
+|                  | .equ    PINC    =$13\r
+|                  | .equ    PORTD   =$12\r
+|                  | .equ    DDRD    =$11\r
+|                  | .equ    PIND    =$10\r
+|                  | .equ    SPDR    =$0f\r
+|                  | .equ    SPSR    =$0e\r
+|                  | .equ    SPCR    =$0d\r
+|                  | .equ    UDR     =$0c\r
+|                  | .equ    USR     =$0b\r
+|                  | .equ    UCR     =$0a\r
+|                  | .equ    UBRR    =$09\r
+|                  | .equ    ACSR    =$08\r
+|                  | .equ    ADMUX   =$07\r
+|                  | .equ    ADCSR   =$06\r
+|                  | .equ    ADCH    =$05\r
+|                  | .equ    ADCL    =$04\r
+|                  | \r
+|                  | \r
+|                  | ;***** Bit Definitions\r
+|                  | \r
+|                  | .equ    EXTRF   =1\r
+|                  | .equ    PORF    =0\r
+|                  | \r
+|                  | .equ    INT1    =7\r
+|                  | .equ    INT0    =6\r
+|                  | \r
+|                  | .equ    INTF1   =7\r
+|                  | .equ    INTF0   =6\r
+|                  | \r
+|                  | .equ    OCIE2   =7\r
+|                  | .equ    TOIE2   =6\r
+|                  | .equ    TICIE1  =5\r
+|                  | .equ    OCIE1A  =4\r
+|                  | .equ    OCIE1B  =3\r
+|                  | .equ    TOIE1   =2\r
+|                  | .equ    TOIE0   =0\r
+|                  | \r
+|                  | .equ    OCF2    =7\r
+|                  | .equ    TOV2    =6\r
+|                  | .equ    ICF1    =5\r
+|                  | .equ    OCF1A   =4\r
+|                  | .equ    OCF1B   =3\r
+|                  | .equ    TOV1    =2\r
+|                  | .equ    TOV0    =0\r
+|                  | \r
+|                  | .equ    SE      =6\r
+|                  | .equ    SM1     =5\r
+|                  | .equ    SM0     =4\r
+|                  | .equ    ISC11   =3\r
+|                  | .equ    ISC10   =2\r
+|                  | .equ    ISC01   =1\r
+|                  | .equ    ISC00   =0\r
+|                  | \r
+|                  | .equ    CS02    =2\r
+|                  | .equ    CS01    =1\r
+|                  | .equ    CS00    =0\r
+|                  | \r
+|                  | .equ    COM1A1  =7\r
+|                  | .equ    COM1A0  =6\r
+|                  | .equ    COM1B1  =5\r
+|                  | .equ    COM1B0  =4\r
+|                  | .equ    PWM11   =1\r
+|                  | .equ    PWM10   =0\r
+|                  | \r
+|                  | .equ    ICNC1   =7\r
+|                  | .equ    ICES1   =6\r
+|                  | .equ    CTC1    =3\r
+|                  | .equ    CS12    =2\r
+|                  | .equ    CS11    =1\r
+|                  | .equ    CS10    =0\r
+|                  | \r
+|                  | .equ    PWM2    =6\r
+|                  | .equ    COM21   =5\r
+|                  | .equ    COM20   =4\r
+|                  | .equ    CTC2    =3\r
+|                  | .equ    CS22    =2\r
+|                  | .equ    CS21    =1\r
+|                  | .equ    CS20    =0\r
+|                  | \r
+|                  | .equ    AS2     =3\r
+|                  | .equ    TCN2UB  =2\r
+|                  | .equ    OCR2UB  =1\r
+|                  | .equ    TCR2UB  =0\r
+|                  | \r
+|                  | .equ    WDDE    =4\r
+|                  | .equ    WDE     =3\r
+|                  | .equ    WDP2    =2\r
+|                  | .equ    WDP1    =1\r
+|                  | .equ    WDP0    =0\r
+|                  | \r
+|                  | .equ    EERIE   =3\r
+|                  | .equ    EEMWE   =2\r
+|                  | .equ    EEWE    =1\r
+|                  | .equ    EERE    =0\r
+|                  | \r
+|                  | .equ    PA7     =7\r
+|                  | .equ    PA6     =6\r
+|                  | .equ    PA5     =5\r
+|                  | .equ    PA4     =4\r
+|                  | .equ    PA3     =3\r
+|                  | .equ    PA2     =2\r
+|                  | .equ    PA1     =1\r
+|                  | .equ    PA0     =0\r
+|                  | \r
+|                  | .equ    DDA7    =7\r
+|                  | .equ    DDA6    =6\r
+|                  | .equ    DDA5    =5\r
+|                  | .equ    DDA4    =4\r
+|                  | .equ    DDA3    =3\r
+|                  | .equ    DDA2    =2\r
+|                  | .equ    DDA1    =1\r
+|                  | .equ    DDA0    =0\r
+|                  | \r
+|                  | .equ    PINA7   =7\r
+|                  | .equ    PINA6   =6\r
+|                  | .equ    PINA5   =5\r
+|                  | .equ    PINA4   =4\r
+|                  | .equ    PINA3   =3\r
+|                  | .equ    PINA2   =2\r
+|                  | .equ    PINA1   =1\r
+|                  | .equ    PINA0   =0\r
+|                  | \r
+|                  | .equ    PB7     =7\r
+|                  | .equ    PB6     =6\r
+|                  | .equ    PB5     =5\r
+|                  | .equ    PB4     =4\r
+|                  | .equ    PB3     =3\r
+|                  | .equ    PB2     =2\r
+|                  | .equ    PB1     =1\r
+|                  | .equ    PB0     =0\r
+|                  | \r
+|                  | .equ    DDB7    =7\r
+|                  | .equ    DDB6    =6\r
+|                  | .equ    DDB5    =5\r
+|                  | .equ    DDB4    =4\r
+|                  | .equ    DDB3    =3\r
+|                  | .equ    DDB2    =2\r
+|                  | .equ    DDB1    =1\r
+|                  | .equ    DDB0    =0\r
+|                  | \r
+|                  | .equ    PINB7   =7\r
+|                  | .equ    PINB6   =6\r
+|                  | .equ    PINB5   =5\r
+|                  | .equ    PINB4   =4\r
+|                  | .equ    PINB3   =3\r
+|                  | .equ    PINB2   =2\r
+|                  | .equ    PINB1   =1\r
+|                  | .equ    PINB0   =0\r
+|                  | \r
+|                  | .equ    PC7     =7\r
+|                  | .equ    PC6     =6\r
+|                  | .equ    PC5     =5\r
+|                  | .equ    PC4     =4\r
+|                  | .equ    PC3     =3\r
+|                  | .equ    PC2     =2\r
+|                  | .equ    PC1     =1\r
+|                  | .equ    PC0     =0\r
+|                  | \r
+|                  | .equ    DDC7    =7\r
+|                  | .equ    DDC6    =6\r
+|                  | .equ    DDC5    =5\r
+|                  | .equ    DDC4    =4\r
+|                  | .equ    DDC3    =3\r
+|                  | .equ    DDC2    =2\r
+|                  | .equ    DDC1    =1\r
+|                  | .equ    DDC0    =0\r
+|                  | \r
+|                  | .equ    PINC7   =7\r
+|                  | .equ    PINC6   =6\r
+|                  | .equ    PINC5   =5\r
+|                  | .equ    PINC4   =4\r
+|                  | .equ    PINC3   =3\r
+|                  | .equ    PINC2   =2\r
+|                  | .equ    PINC1   =1\r
+|                  | .equ    PINC0   =0\r
+|                  | \r
+|                  | .equ    PD7     =7\r
+|                  | .equ    PD6     =6\r
+|                  | .equ    PD5     =5\r
+|                  | .equ    PD4     =4\r
+|                  | .equ    PD3     =3\r
+|                  | .equ    PD2     =2\r
+|                  | .equ    PD1     =1\r
+|                  | .equ    PD0     =0\r
+|                  | \r
+|                  | .equ    DDD7    =7\r
+|                  | .equ    DDD6    =6\r
+|                  | .equ    DDD5    =5\r
+|                  | .equ    DDD4    =4\r
+|                  | .equ    DDD3    =3\r
+|                  | .equ    DDD2    =2\r
+|                  | .equ    DDD1    =1\r
+|                  | .equ    DDD0    =0\r
+|                  | \r
+|                  | .equ    PIND7   =7\r
+|                  | .equ    PIND6   =6\r
+|                  | .equ    PIND5   =5\r
+|                  | .equ    PIND4   =4\r
+|                  | .equ    PIND3   =3\r
+|                  | .equ    PIND2   =2\r
+|                  | .equ    PIND1   =1\r
+|                  | .equ    PIND0   =0\r
+|                  | \r
+|                  | .equ    SPIE    =7\r
+|                  | .equ    SPE     =6\r
+|                  | .equ    DORD    =5\r
+|                  | .equ    MSTR    =4\r
+|                  | .equ    CPOL    =3\r
+|                  | .equ    CPHA    =2\r
+|                  | .equ    SPR1    =1\r
+|                  | .equ    SPR0    =0\r
+|                  | \r
+|                  | .equ    SPIF    =7\r
+|                  | .equ    WCOL    =6\r
+|                  | \r
+|                  | .equ    RXC     =7\r
+|                  | .equ    TXC     =6\r
+|                  | .equ    UDRE    =5\r
+|                  | .equ    FE      =4\r
+|                  | ; removed for AVRA / TAVRASM:\r
+|                  | ;.equ   OR      =3\r
+|                  | \r
+|                  | .equ    RXCIE   =7\r
+|                  | .equ    TXCIE   =6\r
+|                  | .equ    UDRIE   =5\r
+|                  | .equ    RXEN    =4\r
+|                  | .equ    TXEN    =3\r
+|                  | .equ    CHR9    =2\r
+|                  | .equ    RXB8    =1\r
+|                  | .equ    TXB8    =0\r
+|                  | \r
+|                  | .equ    ACD     =7\r
+|                  | .equ    ACO     =5\r
+|                  | .equ    ACI     =4\r
+|                  | .equ    ACIE    =3\r
+|                  | .equ    ACIC    =2\r
+|                  | .equ    ACIS1   =1\r
+|                  | .equ    ACIS0   =0\r
+|                  | \r
+|                  | .equ    MUX2    =2\r
+|                  | .equ    MUX1    =1\r
+|                  | .equ    MUX0    =0\r
+|                  | \r
+|                  | .equ    ADEN    =7\r
+|                  | .equ    ADSC    =6\r
+|                  | .equ    ADFR    =5\r
+|                  | .equ    ADIF    =4\r
+|                  | .equ    ADIE    =3\r
+|                  | .equ    ADPS2   =2\r
+|                  | .equ    ADPS1   =1\r
+|                  | .equ    ADPS0   =0\r
+|                  | \r
+|                  | .def    XL      =r26\r
+|                  | .def    XH      =r27\r
+|                  | .def    YL      =r28\r
+|                  | .def    YH      =r29\r
+|                  | .def    ZL      =r30\r
+|                  | .def    ZH      =r31\r
+|                  | \r
+|                  | .equ    RAMEND  =$25F   ;Last On-Chip SRAM location\r
+|                  | .equ    XRAMEND =$25F\r
+|                  | .equ    E2END   =$1FF\r
+|                  | .equ    FLASHEND=$FFF\r
+|                  | \r
+|                  | .equ    INT0addr=$001   ;External Interrupt0 Vector Address\r
+|                  | .equ    INT1addr=$002   ;External Interrupt1 Vector Address\r
+|                  | .equ    OC2addr =$003   ;Timer2 compare match Vector Address\r
+|                  | .equ    OVF2addr=$004   ;Timer2 overflow Vector Address\r
+|                  | .equ    ICP1addr=$005   ;Timer1 Input Capture Vector Address\r
+|                  | .equ    OC1Aaddr=$006   ;Timer1 Output Compare A Interrupt Vector Address\r
+|                  | .equ    OC1Baddr=$007   ;Timer1 Output Compare B Interrupt Vector Address\r
+|                  | .equ    OVF1addr=$008   ;Overflow1 Interrupt Vector Address\r
+|                  | .equ    OVF0addr=$009   ;Overflow0 Interrupt Vector Address\r
+|                  | .equ    SPIaddr =$00A   ;SPI Interrupt Vector Address\r
+|                  | .equ    URXCaddr=$00B   ;UART Receive Complete Interrupt Vector Address\r
+|                  | .equ    UDREaddr=$00C   ;UART Data Register Empty Interrupt Vector Address\r
+|                  | .equ    UTXCaddr=$00D   ;UART Transmit Complete Interrupt Vector Address\r
+|                  | .equ    ADCCaddr=$00E   ;ADC Conversion Complete Interrupt Vector Address\r
+|                  | .equ    ERDYaddr=$00F   ;EEPROM Write Complete Interrupt Vector Address\r
+|                  | .equ    ACIaddr =$010   ;Analog Comparator Interrupt Vector Address\r
+|                  | .INCLUDE "MAC.INC"\r
+|                  | ;       MAC.INC\r
+|                  | ;       MACROS FOR THE AVR PROCESSOR\r
+|                  | \r
+|                  | .MACRO  RJEQ\r
+|                  |         BRNE    LOCAL\r
+|                  |         RJMP    @0\r
+|                  | LOCAL:\r
+|                  | .endMACRO\r
+|                  | \r
+|                  | .MACRO  RJNE\r
+|                  |         BREQ    LOCAL\r
+|                  |         RJMP    @0\r
+|                  | LOCAL:\r
+|                  | .endMACRO\r
+|                  | \r
+|                  | .MACRO OUTI @0,@1\r
+|                  |         LDI     A,@1            ; OUT IMMEDIATE TO PORT\r
+|                  |         OUT     @0,A\r
+|                  | .endMACRO\r
+|                  | \r
+|                  | .MACRO ADDI @0,@1\r
+|                  |         SUBI    @0,-@1          ; ADD IMMEDIATE\r
+|                  | .endMACRO\r
+|                  | \r
+|                  | .MACRO EORI @0,@1\r
+|                  |         LDI     A,@1            ; EOR IMMEDIATE\r
+|                  |         EOR     @0,A\r
+|                  | .endMACRO\r
+|                  | \r
+|                  | .MACRO STI @0,@1\r
+|                  |         LDI     A,@1            ; STORE IMMEDIATE\r
+|                  |         ST      @0,A\r
+|                  | .endMACRO\r
+|                  | \r
+|                  | .MACRO ADDIL @0,@1\r
+|                  |         LDI     A,@1            ; ADD IMMEDIATE LOWER REGISTER SET\r
+|                  |         ADD     @0,A\r
+|                  | .endMACRO\r
+|                  | \r
+|                  | .MACRO SUBIL @0,@1\r
+|                  |         LDI     A,@1            ; ADD IMMEDIATE LOWER REGISTER SET\r
+|                  |         SUB     @0,A\r
+|                  | .endMACRO\r
+|                  | \r
+|                  | .MACRO  ANDIL @0,@1\r
+|                  |         LDI     A,@1            ; AND IMMEDIATE LOWER REGISTER SET\r
+|                  |         AND     @0,A\r
+|                  | .endMACRO\r
+|                  | \r
+|                  | .MACRO  LDIL @0,@1\r
+|                  |         LDI     A,@1            ; LOAD IMMEDIATE LOWER REGISTER SET\r
+|                  |         MOV     @0,A\r
+|                  | .endMACRO\r
+|                  | \r
+|                  | .MACRO  LDIX @0                 ; LOAD IMMEDIATE XL, XH WITH FLASH ADDRESS\r
+|                  |         LDI     XL,LOW((@0)*2)  ; USE AS BYTE COUNTER\r
+|                  |         LDI     XH,HIGH((@0)*2) ; EXTRA BRACKETS NEEDED IF @0=EXPRESSION\r
+|                  | .endMACRO\r
+|                  | \r
+|                  | .MACRO  LDIZ @0                 ; LOAD IMMEDIATE ZL, ZH WITH FLASH ADDRESS\r
+|                  |         LDI     ZL,LOW((@0)*2)  ; USE PRIOR TO LPM INSTRUCTION\r
+|                  |         LDI     ZH,HIGH((@0)*2) ; EXTRA BRACKETS NEEDED IF @0=EXPRESSION\r
+|                  | .endMACRO\r
+|                  | \r
+|                  | .MACRO  LDE @0,@1               ; LOAD REGISTER FROM EEPROM\r
+|                  |         RCALL   LDE1\r
+|                  |         LDI     @0,LOW(@1*2)    ; POINT TO EEPROM CONSTANT\r
+|                  |         OUT     EEAR,@0         ; SET UP ADDRESS\r
+|                  |         SBI     EECR,EERE       ; ASSERT READ STROBE\r
+|                  |         IN      @0,EEDR\r
+|                  | .endMACRO\r
+|                  | \r
+|                  | .MACRO  LDFL @0,@1              ; LOAD REGISTER FROM FLASH LOW BYTE\r
+|                  |         LDI     ZL,LOW(@1*2)\r
+|                  |         LDI     ZH,HIGH(@1*2)\r
+|                  |         LPM\r
+|                  |         MOV     @0,R0\r
+|                  | .endMACRO\r
+|                  | \r
+|                  | .MACRO  LDFH @0,@1              ; LOAD REGISTER FROM FLASH HIGH BYTE\r
+|                  |         LDI     ZL,LOW(@1*2+1)\r
+|                  |         LDI     ZH,HIGH(@1*2+1)\r
+|                  |         LPM\r
+|                  |         MOV     @0,R0\r
+|                  | .endMACRO\r
+|                  | \r
+|                  | ;.MACRO LDF @0,@1               ; LOAD REGISTER FROM FLASH\r
+|                  | ;       LDI     ZL,@1           ; POINT TO FLASH CONSTANT\r
+|                  | ;       LPM\r
+|                  | ;       MOV     @0,R0\r
+|                  | ;.ENDMACRO\r
+|                  | \r
+|                  | ;------------------------------------------------------------------------------\r
+|                  | \r
+|                  | .MACRO  FLD @0                  ; LOAD FA REGISTER FROM SRAM ARGUMENT\r
+|                  |         LDI     YL,LOW(@0)      ; POINT TO SRAM ARGUMENT\r
+|                  |         RCALL   LDS_FA\r
+|                  | .endMACRO\r
+|                  | \r
+|                  | .MACRO  FLDF @0                 ; LOAD FA REGISTER FROM FLASH CONSTANT\r
+|                  |         LDI     ZL,LOW(@0*2)    ; POINT TO FLASH CONSTANT\r
+|                  |         LDI     ZH,HIGH(@0*2)\r
+|                  |         RCALL   LDF_FA\r
+|                  | .endMACRO\r
+|                  | \r
+|                  | .MACRO  FLDE @0                 ; LOAD FA REGISTER FROM EEPROM CONSTANT\r
+|                  |         LDI     ZL,LOW(@0*2)    ; POINT TO EEPROM CONSTANT\r
+|                  |         RCALL   LDE_FA\r
+|                  | .endMACRO\r
+|                  | \r
+|                  | .MACRO  FLD3 @0                 ; LOAD FA REGISTER WITH 3 BYTE SRAM INTEGER\r
+|                  |         LDI     YL,LOW(@0)      ; POINT TO SOURCE\r
+|                  |         RCALL   LDS3_FA         ; CONVERT TO INTERNAL FP FORMAT\r
+|                  | .endMACRO\r
+|                  | \r
+|                  | .MACRO  FLD2 @0                 ; LOAD FA REGISTER WITH 2 BYTE SRAM INTEGER\r
+|                  |         LDI     YL,LOW(@0)      ; POINT TO SOURCE\r
+|                  |         RCALL   LDS2_FA         ; CONVERT TO INTERNAL FP FORMAT\r
+|                  | .endMACRO\r
+|                  | \r
+|                  | .MACRO  FST @0                  ; STORE FP REGISTER TO FP ARGUMENT\r
+|                  |         LDI     YL,LOW(@0)      ; POINT TO SRAM ARGUMENT\r
+|                  |         RCALL   STS_FA\r
+|                  | .endMACRO\r
+|                  | \r
+|                  | .MACRO  FCHS @0                 ; CHANGE SIGN OF SRAM ARGUMENT\r
+|                  |         LDI     YL,LOW(@0)\r
+|                  |         RCALL   CHSS\r
+|                  | .endMACRO\r
+|                  | \r
+|                  | .MACRO  FAD @0                  ; ADD SRAM ARGUMENT TO FA REGISTER\r
+|                  |         LDI     YL,LOW(@0)      ; POINT TO SRAM ARGUMENT\r
+|                  |         RCALL   ADD_FA\r
+|                  | .endMACRO\r
+|                  | \r
+|                  | .MACRO  FADF @0                 ; ADD FLASH CONSTANT TO FA REGISTER\r
+|                  |         LDI     ZL,LOW(@0*2)    ; POINT TO FLASH CONSTANT\r
+|                  |         LDI     ZH,HIGH(@0*2)\r
+|                  |         RCALL   ADDF_FA\r
+|                  | .endMACRO\r
+|                  | \r
+|                  | .MACRO  FADE @0                 ; ADD EEPROM CONSTANT TO FA REGISTER\r
+|                  |         LDI     ZL,LOW(@0*2)    ; POINT TO EEPROM CONSTANT\r
+|                  |         RCALL   ADDE_FA\r
+|                  | .endMACRO\r
+|                  | \r
+|                  | .MACRO  FSB @0                  ; SUBTRACT SRAM ARGUMENT FROM FA REGISTER\r
+|                  |         LDI     YL,LOW(@0)      ; POINT TO SRAM ARGUMENT\r
+|                  |         RCALL   SUB_FA\r
+|                  | .endMACRO\r
+|                  | \r
+|                  | .MACRO  FSBF @0                 ; SUBTRACT FLASH CONSTANT FROM FA REGISTER\r
+|                  |         LDI     ZL,LOW(@0*2)    ; POINT TO FLASH CONSTANT\r
+|                  |         LDI     ZH,HIGH(@0*2)\r
+|                  |         RCALL   SUBF_FA\r
+|                  | .endMACRO\r
+|                  | \r
+|                  | .MACRO  FML @0                  ; MULTIPLY FA REGISTER BY SRAM ARGUMENT\r
+|                  |         LDI     YL,LOW(@0)      ; POINT TO SRAM ARGUMENT\r
+|                  |         RCALL   MUL_FA\r
+|                  | .endMACRO\r
+|                  | \r
+|                  | .MACRO  FMLF @0                 ; MULTIPLY FA REGISTER BY FLASH CONSTANT\r
+|                  |         LDI     ZL,LOW(@0*2)    ; POINT TO FLASH CONSTANT\r
+|                  |         LDI     ZH,HIGH(@0*2)\r
+|                  |         RCALL   MULF_FA\r
+|                  | .endMACRO\r
+|                  | \r
+|                  | .MACRO  FDV @0                  ; DIVIDE FA REGISTER BY SRAM ARGUMENT\r
+|                  |         LDI     YL,LOW(@0)      ; POINT TO SRAM ARGUMENT\r
+|                  |         RCALL   DIV_FA\r
+|                  | .endMACRO\r
+|                  | \r
+|                  | .MACRO  FDVF @0                 ; DIVIDE FA REGISTER BY FLASH CONSTANT\r
+|                  |         LDI     ZL,LOW(@0*2)    ; POINT TO FLASH CONSTANT\r
+|                  |         LDI     ZH,HIGH(@0*2)\r
+|                  |         RCALL   DIVF_FA\r
+|                  | .endMACRO\r
+|                  | \r
+|                  | .MACRO  FCP @0                  ; COMPARE FA REGISTER WITH SRAM ARGUMENT\r
+|                  |         LDI     YL,LOW(@0)      ; POINT TO SRAM ARGUMENT\r
+|                  |         RCALL   CP_FA\r
+|                  | .endMACRO\r
+|                  | \r
+|                  | .MACRO  FCPF @0                 ; COMPARE FA REGISTER WITH FLASH CONSTANT\r
+|                  |         LDI     ZL,LOW(@0*2)    ; POINT TO FLASH CONSTANT\r
+|                  |         LDI     ZH,HIGH(@0*2)\r
+|                  |         RCALL   CPF_FA\r
+|                  | .endMACRO\r
+|                  | \r
+|                  | .MACRO  FCPE @0                 ; COMPARE FA REGISTER WITH EEPROM CONSTANT\r
+|                  |         LDI     ZL,LOW(@0*2)    ; POINT TO FLASH CONSTANT\r
+|                  |         RCALL   CPE_FA\r
+|                  | .endMACRO\r
+|                  | \r
+|                  | \r
+|                  | .INCLUDE "APITS.INC" ; NOT API.INC BECAUSE APITS.INC ALSO HAS TURNON COMMAND\r
+|                  | ; APITS.INC\r
+|                  | \r
+|                  | ; -----------------------------------------------------------------------------\r
+|                  | ; API BUS FOREGROUND TASK\r
+|                  | \r
+|                  | .MACRO INT_HANDLERS\r
+|                  |         RJMP    RX_COMPLETE             ; UART RX COMPLETE HANDLER\r
+|                  |         RJMP    TX_EMPTY                ; UART DATA REGISTER EMPTY HANDLER\r
+|                  |         RJMP    TX_COMPLETE             ; UART TX COMPLETE HANDLER\r
+|                  | .endMACRO\r
+|                  | \r
+|                  | .MACRO INIT_API_BUS\r
+|                  |         LDI     A,API_RATE_SLOW         ; 4800 BPS\r
+|                  |         OUT     UBRR,A                  ; SET UART RATE\r
+|                  | \r
+|                  |         LDI     A,$90                   ; ENABLE RX WITH INTERRUPTS\r
+|                  |         OUT     UCR,A\r
+|                  |         ;SBI    UCR,TXEN                ; TX ENABLE\r
+|                  | \r
+|                  |         CLR     TX_PTR\r
+|                  |         CLR     TX_COUNT\r
+|                  | \r
+|                  |         CLR     RX_PTR\r
+|                  |         CLR     RX_COUNT\r
+|                  | \r
+|                  |         CLR     API_STATE\r
+|                  |         CLR     API_REMAIN\r
+|                  |         CLR     API_WATCHDOG\r
+|                  | .endMACRO\r
+|                  | \r
+|                  | .MACRO MRX_WAIT\r
+|                  |         TST     RX_COUNT\r
+|                  |         BREQ    RX_WAIT\r
+|                  | .endMACRO\r
+|                  | \r
+|                  | .MACRO MRX_CHAR\r
+|                  |         PUSH    YL\r
+|                  |         PUSH    YH\r
+|                  | \r
+|                  |         MOV     YL,RX_PTR\r
+|                  |         SUBI    YL,-RX_BUF\r
+|                  |         CLR     YH\r
+|                  |         LD      A,Y\r
+|                  | \r
+|                  |         CLI\r
+|                  |         DEC     RX_COUNT\r
+|                  |         INC     RX_PTR\r
+|                  |         LDI     YL,RX_SIZE-1\r
+|                  |         AND     RX_PTR,YL\r
+|                  |         SEI\r
+|                  | \r
+|                  |         POP     YH\r
+|                  |         POP     YL\r
+|                  |         RET\r
+|                  | ; FALL INTO MTX_WAIT FOR LOOPBACK TEST\r
+|                  | .endMACRO\r
+|                  | \r
+|                  | .MACRO MTX_WAIT\r
+|                  |         PUSH    A\r
+|                  | TX_WAIT_LOOP:\r
+|                  |         WDR ; 10OCT02 ALTHOUGH IT USUALLY DOESN'T MATTER (HANDY FOR LOOPBACK)\r
+|                  |         MOV     A,TX_COUNT\r
+|                  |         CPI     A,TX_SIZE\r
+|                  |         BRSH    TX_WAIT_LOOP\r
+|                  |         POP     A\r
+|                  | .endMACRO\r
+|                  | \r
+|                  | .MACRO MTX_CHAR\r
+|                  |         PUSH    YL\r
+|                  |         PUSH    YH\r
+|                  |  IN YH,SREG\r
+|                  |         CLI\r
+|                  |         MOV     YL,TX_COUNT\r
+|                  |         ADD     YL,TX_PTR\r
+|                  |  OUT SREG,YH    ;SEI\r
+|                  |         ANDI    YL,TX_SIZE-1\r
+|                  |         SUBI    YL,-TX_BUF\r
+|                  |         CLR     YH\r
+|                  |         ST      Y,A\r
+|                  | \r
+|                  |         INC     TX_COUNT\r
+|                  | \r
+|                  |         POP     YH\r
+|                  |         POP     YL\r
+|                  |         RET\r
+|                  | .endMACRO\r
+|                  | \r
+|                  | ; -----------------------------------------------------------------------------\r
+|                  | ; API BUS BACKGROUND TASK\r
+|                  | \r
+|                  | .MACRO MTX_EMPTY\r
+|                  |         IN      SR,SREG\r
+|                  |         PUSH    F\r
+|                  | \r
+|                  |         LDI     F,-API_TIMEOUT          ; FEED TX/RX WATCHDOG\r
+|                  |         MOV     API_WATCHDOG,F\r
+|                  | \r
+|                  |         PUSH    ZL\r
+|                  |         PUSH    ZH\r
+|                  |         MOV     ZL,TX_PTR\r
+|                  |         SUBI    ZL,-TX_BUF\r
+|                  |         CLR     ZH\r
+|                  |         LD      F,Z                     ; GET CHARACTER FROM TX BUFFER\r
+|                  |         POP     ZH\r
+|                  |         POP     ZL\r
+|                  | \r
+|                  |         OUT     UDR,F\r
+|                  | \r
+|                  |         DEC     TX_COUNT\r
+|                  |         INC     TX_PTR\r
+|                  |         LDI     F,TX_SIZE-1\r
+|                  |         AND     TX_PTR,F\r
+|                  | \r
+|                  |         DEC     API_REMAIN              ; MORE TO SEND?\r
+|                  |         BRMI    GO_API_DONE1            ; YES, AWAIT NEXT TX EMPTY INTERRUPT\r
+|                  |         RJMP    API_REINIT              ; NO, AWAIT NEXT DATA SIZE COMMAND\r
+|                  | GO_API_DONE1:\r
+|                  |         RJMP    API_DONE\r
+|                  | .endMACRO\r
+|                  | \r
+|                  | .MACRO MRX_COMPLETE\r
+|                  |         IN      SR,SREG\r
+|                  |         PUSH    F\r
+|                  | \r
+|                  |         LDI     F,-API_TIMEOUT          ; FEED TX/RX WATCHDOG\r
+|                  |         MOV     API_WATCHDOG,F\r
+|                  | \r
+|                  |         IN      F,UDR\r
+|                  |         SBIC    USR,FE                  ; BREAK DETECTED?\r
+|                  |         RJMP    API_FRAMING_ERROR\r
+|                  | \r
+|                  |         SBRC    API_STATE,APIDATA\r
+|                  |         RJMP    API_RX_DATA             ; WITH F = CHARACTER\r
+|                  |         SBRC    API_STATE,APISIZE\r
+|                  |         RJMP    API_DATA_SIZE           ; WITH F = CHARACTER\r
+|                  | \r
+|                  |         ; RECEIVED 4800 BPS ADDRESS COMMAND\r
+|                  |         CPI     F,API_ADDRESS           ; CHARACTER = MY ADDRESS?\r
+|                  |         BRNE    API_ADDRESS_DONE\r
+|                  | \r
+|                  |         LDI     F,API_RATE_FAST         ; 115200 BPS\r
+|                  |         OUT     UBRR,F                  ; SET UART RATE\r
+|                  | \r
+|                  |         SBI     UCR,TXEN                ; ENABLE UART TX AND TXD PIN\r
+|                  | \r
+|                  |         LDI     F,1<<APISIZE\r
+|                  |         OR      API_STATE,F             ; SAY WE ARE EXPECTING DATA SIZE CMD\r
+|                  |         RJMP    API_DONE\r
+|                  | \r
+|                  | API_ADDRESS_DONE:\r
+|                  |         CPI     F,$AA                   ; CHARACTER = TURNON COMMAND?\r
+|                  |         BRNE    API_TURNON_DONE\r
+|                  |         LDI     F,0\r
+|                  |         STS     TURNON_COUNT,F          ; REQUEST IMMEDIATE TURNON\r
+|                  | API_TURNON_DONE:\r
+|                  | ; 18DEC01 RESTORED IT TO NORMAL FOR HYT1500 RELEASE\r
+|                  | ;       CPI     F,9                     ; REALLY A VALID ADDRESS COMMAND?\r
+|                  | ;       BRLO    API_BAD_DONE            ; YES, ALL IS OK (IT WAS SOMEONE ELSE)\r
+|                  | ;       PUSH    ZL                      ; NO, WARN THAT THE BUS HAS ERRORS\r
+|                  | ;       PUSH    ZH\r
+|                  | ;       MOV     ZL,RX_COUNT\r
+|                  | ;       CPI     ZL,RX_SIZE\r
+|                  | ;       BRSH    API_BAD_SKIP\r
+|                  | ;       ADD     ZL,RX_PTR\r
+|                  | ;       ANDI    ZL,RX_SIZE-1\r
+|                  | ;       SUBI    ZL,-RX_BUF\r
+|                  | ;       CLR     ZH\r
+|                  | ;       LDI     F,'*'                   ; DIAGNOSTIC INDICATOR FOR BAD COMMAND\r
+|                  | ;       ST      Z,F                     ; SAVE CHARACTER IN RX BUFFER\r
+|                  | ;       INC     RX_COUNT\r
+|                  | ;API_BAD_SKIP:\r
+|                  | ;       POP     ZH\r
+|                  | ;       POP     ZL\r
+|                  | ;API_BAD_DONE:\r
+|                  |         RJMP    API_DONE\r
+|                  | \r
+|                  | API_DATA_SIZE:\r
+|                  |         ; RECEIVED DATA SIZE COMMAND\r
+|                  |         MOV     API_REMAIN,F\r
+|                  | \r
+|                  |         LDI     F,RX_SIZE\r
+|                  |         SUB     F,RX_COUNT              ; F = AVAILABLE RX BUFFER\r
+|                  |         BRPL    RX_RESPOND_F\r
+|                  |         LDI     F,$7F                   ; F = MAXIMUM POSSIBLE TRANSFER COUNT\r
+|                  | \r
+|                  | RX_RESPOND_F:\r
+|                  |         TST     API_REMAIN              ; TEST TRANSFER DIRECTION\r
+|                  |         BRPL    RX_RESPOND              ; USE F IF WE NEED TO RECEIVE\r
+|                  | \r
+|                  |         MOV     F,TX_COUNT\r
+|                  |         ORI     F,$80                   ; F = QUEUED TX CHARACTERS\r
+|                  | \r
+|                  | RX_RESPOND:\r
+|                  |         ; SEND DATA SIZE RESPONSE\r
+|                  |         ; API_REMAIN = HOST MAX, F = OUR MAX\r
+|                  |         OUT     UDR,F                   ; SEND DATA SIZE RESPONSE\r
+|                  | \r
+|                  |         CP      F,API_REMAIN\r
+|                  |         BRSH    RX_RESPOND_OK\r
+|                  |         MOV     API_REMAIN,F            ; API_REMAIN = LESSER OUR / HOST MAX\r
+|                  | \r
+|                  | RX_RESPOND_OK:\r
+|                  |         MOV     F,API_REMAIN\r
+|                  |         ANDI    F,$7F                   ; NULL REQUEST?\r
+|                  |         BREQ    API_NULL                ; YES, REVERT TO 4800 WHEN TX COMPLETE\r
+|                  |                                         ; NO, AWAIT RX COMPLETE / TX EMPTY INT\r
+|                  |         LDI     F,1<<APIDATA | 1<<APISIZE\r
+|                  |         OR      API_STATE,F             ; WE ARE EXPECTING TO TRANSFER DATA\r
+|                  | \r
+|                  |         DEC     API_REMAIN              ; NUDGE FOR BRPL / BRMI ALGORITHM\r
+|                  |         BRPL    API_DONE                ; WE WILL RECEIVE, NO FURTHER ACTION\r
+|                  | \r
+|                  |         CBI     UCR,RXCIE               ; DISABLE UART RX COMPLETE INTERRUPT\r
+|                  |         SBI     UCR,UDRIE               ; ENABLE UART DATA REGISTER EMPTY INT\r
+|                  |         RJMP    API_DONE\r
+|                  | \r
+|                  | API_NULL:\r
+|                  |         LDI     F,~(1<<APISIZE)\r
+|                  |         AND     API_STATE,F             ; IN CASE NO DATA TRANSFERRED\r
+|                  | \r
+|                  |         SBI     UCR,TXCIE               ; ENABLE UART TX COMPLETE INTERRUPT\r
+|                  |         SBI     USR,TXC                 ; CLEAR UART TX COMPLETE PENDING BIT\r
+|                  |         RJMP    API_DONE\r
+|                  | \r
+|                  | API_RX_DATA:\r
+|                  |         ; RECEIVED DATA BYTE, SAVE IT\r
+|                  | ; OUT UDR,API_REMAIN\r
+|                  | \r
+|                  |         PUSH    ZL\r
+|                  |         PUSH    ZH\r
+|                  |         MOV     ZL,RX_COUNT\r
+|                  |         ADD     ZL,RX_PTR\r
+|                  |         ANDI    ZL,RX_SIZE-1\r
+|                  |         SUBI    ZL,-RX_BUF\r
+|                  |         CLR     ZH\r
+|                  |         ST      Z,F                     ; SAVE CHARACTER IN RX BUFFER\r
+|                  |         POP     ZH\r
+|                  |         POP     ZL\r
+|                  | \r
+|                  |         INC     RX_COUNT\r
+|                  | \r
+|                  |         DEC     API_REMAIN              ; MORE TO RECEIVE?\r
+|                  |         BRPL    API_DONE                ; YES, AWAIT NEXT RX COMPLETE INTERRUPT\r
+|                  |         RJMP    API_REVERT              ; NO, AWAIT NEXT DATA SIZE COMMAND\r
+|                  | .endMACRO\r
+|                  | \r
+|                  | .MACRO MTX_COMPLETE\r
+|                  |         IN      SR,SREG\r
+|                  | .endMACRO\r
+|                  | \r
+|                  | .MACRO MAPI_TIMEOUT_ERROR\r
+|                  |         PUSH    F\r
+|                  | .endMACRO\r
+|                  | \r
+|                  | .MACRO MAPI_FRAMING_ERROR\r
+|                  |         CBI     UCR,TXEN                ; DISABLE UART TX AND TXD PIN\r
+|                  |         LDI     F,API_RATE_SLOW         ; 4800 BPS IF EXPECTING ADDRESS COMMAND\r
+|                  |         OUT     UBRR,F                  ; SET UART RATE\r
+|                  | \r
+|                  |         LDI     F,~(1<<APISIZE)\r
+|                  |         AND     API_STATE,F             ; EXPECTING ADDRESS COMMAND\r
+|                  |         CLR     API_WATCHDOG            ; NO ACTION, JUST WAIT TO RECEIVE ADDR\r
+|                  | .endMACRO\r
+|                  | \r
+|                  | .MACRO MAPI_REINIT\r
+|                  |         CBI     UCR,UDRIE               ; DISABLE UART TX EMPTY INTERRUPT\r
+|                  |         CBI     UCR,TXCIE               ; DISABLE UART TX COMPLETE INTERRRUPT\r
+|                  |         SBI     UCR,RXCIE               ; ENABLE UART RX COMPLETE INTERRUPT\r
+|                  |         IN      F,UDR                   ; CLEAR UART RX COMPLETE PENDING BIT\r
+|                  | .endMACRO\r
+|                  | \r
+|                  | .MACRO MAPI_REVERT\r
+|                  |         LDI     F,~(1<<APIDATA)\r
+|                  |         AND     API_STATE,F             ; EXPECTING ADDRESS / DATA SIZE COMMAND\r
+|                  | .endMACRO\r
+|                  | \r
+|                  | .MACRO MAPI_DONE\r
+|                  |         POP     F\r
+|                  |         OUT     SREG,SR\r
+|                  |         RETI\r
+|                  | .endMACRO\r
+|                  | \r
+|                  | ; -----------------------------------------------------------------------------\r
+|                  | ; API BUS TIMER INTERRUPT\r
+|                  | \r
+|                  | .MACRO MAPI_TIMER\r
+|                  |         TST     API_WATCHDOG\r
+|                  |         BREQ    API_OKAY\r
+|                  |         INC     API_WATCHDOG            ; SEE IF API BUS WAS LEFT HANGING\r
+|                  |         BRNE    API_OKAY\r
+|                  |         RJMP    API_TIMEOUT_ERROR       ; IF SO THEN RESET TO GET NEXT COMMAND\r
+|                  | API_OKAY:                               ; OTHERWISE RETURN FROM INTERRUPT\r
+|                  | .endMACRO\r
+|                  | \r
+|                  | ; -----------------------------------------------------------------------------\r
+|                  | \r
+|                  | \r
+|                  | ;.INCLUDE "TERTS.INC" ; NOT TER.INC BECAUSE FLAGS IN LOWER HALF OF REGISTER SET\r
+|                  | \r
+|                  | .LISTMAC\r
+|                  | .MACRO  LDIYADR                         ; POINT Y TO DSPRAM ADDR\r
+|                  |         LDI     YH,HIGH(@0>>6)\r
+|                  |         STS     XPAGE,YH\r
+|                  |         RCALL   ADRYP                   ; AND SET XPAGE\r
+|                  |         LDI     YH,HIGH(@0<<2)\r
+|                  |         LDI     YL,(LOW(@0) & $3F) | (HIGH(@0) & $C0)\r
+|                  | .endMACRO\r
+|                  | \r
+|                  | .MACRO  ADRL\r
+|                  |         OUT     PORTC,@0                ; SET L ADDRESS FOR DSPRAM\r
+|                  | .endMACRO\r
+|                  | \r
+|                  | .MACRO  ADRH\r
+|                  |         OUT     PORTA,@0                ; SET H ADDRESS FOR DSPRAM\r
+|                  |         SBI     PORTB,3\r
+|                  |         CBI     PORTB,3\r
+|                  |         STS     LATCH11_SAV,@0          ; IS THIS NEEDED?\r
+|                  | .endMACRO\r
+|                  | \r
+|                  | ;.MACRO ADRINC\r
+|                  | ;       INC     @0                      ; INC LOW ORDER DSPRAM ADDRESS\r
+|                  | ;       SBRC    @0,6                    ; ROLLS OVER IF BIT 6 SET\r
+|                  | ;;      RCALL   INCADRY                 ; INC HIGH ORDER DSPRAM ADDRESS\r
+|                  | ;.ENDMACRO                              ; (RCALL IS IN MAINLINE CODE)\r
+|                  | \r
+|                  | .MACRO  A0_A13\r
+|                  |         MOV     R19,@0\r
+|                  |         ANDI    R19,$3F\r
+|                  |         OUT     PORTC,R19\r
+|                  | \r
+|                  |         MOV     R19,@1\r
+|                  |         LSL     R19\r
+|                  |         LSL     R19\r
+|                  |         BST     @0,7                    ; A7\r
+|                  |         BLD     R19,1\r
+|                  |         BST     @0,6                    ; A6\r
+|                  |         BLD     R19,0\r
+|                  |         OUT     PORTA,R19\r
+|                  |         CLI\r
+|                  |         SBI     PORTB,3\r
+|                  |         CBI     PORTB,3\r
+|                  |         SEI\r
+|                  |         STS     LATCH11_SAV,R19\r
+|                  | .endMACRO\r
+|                  | \r
+|                  | .MACRO  A14_A18\r
+|                  |         CLI\r
+|                  |         LDS     R19,LATCH10_SAV         ; AND THIS\r
+|                  |         EOR     R19,@0\r
+|                  |         ANDI    R19,$E0\r
+|                  |         EOR     R19,@0\r
+|                  |         OUT     PORTA,R19\r
+|                  |         SBI     PORTB,4\r
+|                  |         CBI     PORTB,4\r
+|                  |         SEI\r
+|                  |         STS     LATCH10_SAV,R19         ; MUST BE ATOMIC DUE TO TOGGLING M\r
+|                  | .endMACRO\r
+|                  | \r
+|                  | .MACRO  A0_A15\r
+|                  |         PUSH    R19\r
+|                  | \r
+|                  |         MOV     R19,@0\r
+|                  |         ANDI    R19,$3F\r
+|                  |         OUT     PORTC,R19\r
+|                  | \r
+|                  |         MOV     R19,@1\r
+|                  |         LSL     R19\r
+|                  |         LSL     R19\r
+|                  |         BST     @0,7                    ; A7\r
+|                  |         BLD     R19,1\r
+|                  |         BST     @0,6                    ; A6\r
+|                  |         BLD     R19,0\r
+|                  |         OUT     PORTA,R19\r
+|                  |         SBI     PORTB,3\r
+|                  |         CBI     PORTB,3\r
+|                  |         STS     LATCH11_SAV,@1\r
+|                  | \r
+|                  |         LDS     R19,LATCH10_SAV         ; AND THIS\r
+|                  |         BST     @1,7                    ; A15\r
+|                  |         BLD     R19,1\r
+|                  |         BST     @1,6                    ; A14\r
+|                  |         BLD     R19,0\r
+|                  |         OUT     PORTA,R19\r
+|                  |         SBI     PORTB,4\r
+|                  |         CBI     PORTB,4\r
+|                  |         STS     LATCH10_SAV,R19\r
+|                  | \r
+|                  |         POP     R19\r
+|                  | .endMACRO\r
+|                  | \r
+|                  | .MACRO  RAMWR\r
+|                  |         OUT     PORTA,@0\r
+|                  |         CLI\r
+|                  |         CBI     PORTB,1\r
+|                  |         CBI     PORTB,0\r
+|                  |         NOP\r
+|                  |         SBI     PORTB,0\r
+|                  |         SEI\r
+|                  |         SBI     PORTB,1\r
+|                  | .endMACRO\r
+|                  | \r
+|                  | .MACRO  RAMWRX\r
+|                  |         OUT     PORTA,@0\r
+|                  |         CBI     PORTB,1\r
+|                  |         CBI     PORTB,0\r
+|                  |         NOP\r
+|                  |         SBI     PORTB,0\r
+|                  |         SBI     PORTB,1\r
+|                  | .endMACRO\r
+|                  | \r
+|                  | .MACRO  RAMRXW\r
+|                  |         CLR     @1\r
+|                  |         OUT     DDRA,@1\r
+|                  |         CLI\r
+|                  |         CBI     PORTB,0\r
+|                  |         NOP\r
+|                  |         CBI     PORTB,1\r
+|                  |         IN      @1,PINA\r
+|                  |         EOR     @0,@1\r
+|                  |         SBRC    FLAGS,0\r
+|                  |         OR      @0,@1\r
+|                  |         LDI     @1,$FF\r
+|                  |         OUT     DDRA,@1\r
+|                  |         OUT     PORTA,@0\r
+|                  |         NOP\r
+|                  |         SBI     PORTB,0\r
+|                  |         SEI\r
+|                  |         SBI     PORTB,1\r
+|                  | .endMACRO\r
+|                  | \r
+|                  | .MACRO  RAMRD\r
+|                  |         CLR     F\r
+|                  |         OUT     DDRA,F                  ; PORTA INPUT\r
+|                  |         CLI\r
+|                  |         CBI     PORTB,0                 ; CS_ON\r
+|                  |         NOP\r
+|                  |         SBI     PORTB,0                 ; CS_OFF\r
+|                  |         IN      @0,PINA                 ; READ DATA\r
+|                  |         SEI\r
+|                  |         LDI     F,$FF\r
+|                  |         OUT     DDRA,F                  ; PORTA OUTPUT\r
+|                  | .endMACRO\r
+|                  | \r
+|                  | .MACRO  RAMRDX\r
+|                  |         CLR     F\r
+|                  |         OUT     DDRA,F                  ; PORTA INPUT\r
+|                  |         CBI     PORTB,0                 ; CS_ON\r
+|                  |         NOP\r
+|                  |         SBI     PORTB,0                 ; CS_OFF\r
+|                  |         IN      @0,PINA                 ; READ DATA\r
+|                  |         LDI     F,$FF\r
+|                  |         OUT     DDRA,F                  ; PORTA OUTPUT\r
+|                  | .endMACRO\r
+|                  | \r
+|                  | .MACRO  PHOTO\r
+|                  |         OUT     PORTA,@0                ; SELECT PHOTODIODE CHANNEL\r
+|                  |         LDS     @0,LATCH12_SAV\r
+|                  |         OUT     PORTC,@0\r
+|                  |         SBI     PORTC,0\r
+|                  |         SBI     PORTB,2                 ; THIS WILL PROVIDE LE=1\r
+|                  |         CBI     PORTB,2                 ; THIS WILL PROVIDE G=0\r
+|                  |         CBI     PORTC,0\r
+|                  |         SBI     PORTB,2                 ; THIS WILL PROVIDE LE=1\r
+|                  |         CBI     PORTB,2                 ; THIS WILL PROVIDE G=0\r
+|                  | .endMACRO\r
+|                  | \r
+|                  | .MACRO  LED\r
+|                  |         OUT     PORTA,@0                ; MAIN LED DRIVE PORT\r
+|                  |         LDS     @0,LATCH12_SAV\r
+|                  |         OUT     PORTC,@0\r
+|                  |         SBI     PORTC,1\r
+|                  |         SBI     PORTB,2                 ; THIS WILL PROVIDE LE=1\r
+|                  |         CBI     PORTB,2                 ; THIS WILL PROVIDE G=0\r
+|                  |         CBI     PORTC,1\r
+|                  |         SBI     PORTB,2                 ; THIS WILL PROVIDE LE=1\r
+|                  |         CBI     PORTB,2                 ; THIS WILL PROVIDE G=0\r
+|                  | .endMACRO\r
+|                  | \r
+|                  | .MACRO  LEDLO\r
+|                  |         LDS     D,LATCH12_SAV           ; DRIVE LED COMMON LO\r
+|                  |         CBR     D,1<<4\r
+|                  |         OUT     PORTC,D\r
+|                  |         SBI     PORTB,2\r
+|                  |         CBI     PORTB,2\r
+|                  |         STS     LATCH12_SAV,D\r
+|                  | .endMACRO\r
+|                  | \r
+|                  | .MACRO  LEDHI\r
+|                  |         LDS     D,LATCH12_SAV           ; DRIVE LED COMMON HI\r
+|                  |         SBR     D,1<<4\r
+|                  |         OUT     PORTC,D\r
+|                  |         SBI     PORTB,2\r
+|                  |         CBI     PORTB,2\r
+|                  |         STS     LATCH12_SAV,D\r
+|                  | .endMACRO\r
+|                  | \r
+|                  | .MACRO  SPKHI\r
+|                  |         LDS     D,LATCH12_SAV           ; DRIVE SPEAKER HI\r
+|                  |         SBR     D,1<<3\r
+|                  |         CBR     D,1<<2\r
+|                  |         OUT     PORTC,D\r
+|                  |         SBI     PORTB,2\r
+|                  |         CBI     PORTB,2\r
+|                  |         STS     LATCH12_SAV,D\r
+|                  | .endMACRO\r
+|                  | \r
+|                  | .MACRO  SPKLO\r
+|                  |         LDS     D,LATCH12_SAV           ; DRIVE SPEAKER LO\r
+|                  |         CBR     D,1<<3\r
+|                  |         SBR     D,1<<2\r
+|                  |         OUT     PORTC,D\r
+|                  |         SBI     PORTB,2\r
+|                  |         CBI     PORTB,2\r
+|                  |         STS     LATCH12_SAV,D\r
+|                  | .endMACRO\r
+|                  | \r
+|                  | .MACRO  SPKOFF\r
+|                  |         LDS     D,LATCH12_SAV           ; DRIVE SPEAKER OFF\r
+|                  |         CBR     D,1<<3\r
+|                  |         CBR     D,1<<2\r
+|                  |         OUT     PORTC,D\r
+|                  |         SBI     PORTB,2\r
+|                  |         CBI     PORTB,2\r
+|                  |         STS     LATCH12_SAV,D\r
+|                  | .endMACRO\r
+|                  | \r
+|                  | .EQU    T1_INIT         =-818 ;$FB35\r
+|                  | .EQU    T1_FULL_SCALE   =-716 ;50.0HZ   ; SETS LCD FRAME RATE TEMPORARY TO STOP FLIKER\r
+|                  | ;.EQU   T1_FULL_SCALE   =-651 ;53.5HZ   ; SETS LCD FRAME RATE\r
+|                  | ;.EQU   T1_FULL_SCALE   =-600 ;54.8HZ   ; SETS LCD FRAME RATE\r
+|                  | \r
+|                  | .EQU    CONTRAST_LONG   =-340           ; ALL LONG PULSES IS FULLY DARK (DON'T SATURATE)\r
+|                  | ;.EQU   CONTRAST_LONG   =-250           ; ALL LONG PULSES IS FULLY DARK (DON'T SATURATE)\r
+|                  | .EQU    CONTRAST_MID    =-200\r
+|                  | .EQU    CONTRAST_SHORT  = -43           ; ALL SHORT PULSES IS FULLY LIGHT\r
+|                  | \r
+|                  | .EQU    VCC_NOMINAL     =-552 ;$FCC4\r
+|                  | \r
+|                  | .EQU    VEE_MIN         =-710           ; MIN IS FULLY DARK\r
+|                  | .EQU    VEE_INIT        =-340\r
+|                  | .EQU    VEE_MAX         = -43           ; MAX IS FULLY LIGHT\r
+|                  | \r
+|                  | ; WHEN VCC = $FCC4 FOR 6.0V:\r
+|                  | .EQU    CONTRAST_MIN    =-710           ; MIN IS FULLY DARK\r
+|                  | .EQU    CONTRAST_INIT   =-640\r
+|                  | .EQU    CONTRAST_MAX    =-580           ; MAX IS FULLY LIGHT\r
+|                  | \r
+|                  | ; GENEROUS LIMITS FOR EXPERIMENTATION:\r
+|                  | ;.EQU   CONTRAST_MIN    =$FC80          ; MIN IS FULLY DARK\r
+|                  | ;.EQU   CONTRAST_MAX    =$FF80          ; MAX IS FULLY LIGHT\r
+|                  | ;.EQU   CONTRAST_INIT   =$FE10\r
+|                  | \r
+|                  | .EQU    CONTRAST_STEP   =4\r
+|                  | \r
+|                  | .EQU    DISP_DSPRAM     =$60000         ; DISPLAY BUFFER\r
+|                  | .EQU    DRAW_DSPRAM     =$62000         ; DRAWING BUFFER\r
+|                  | .EQU    CHSET_DSPRAM    =$64000         ; START OF CHARACTER SETS\r
+|                  | .EQU    RTN_DSPRAM      =$6E000         ; KEYBOARD RETURN CODE TABLE\r
+|                  | .EQU    DISPLAY_LINES   =$80\r
+|                  | .EQU    CHARACTER_SETS  =10\r
+|                  | .EQU    RAM             =$60            ; START OF SRAM\r
+|                  | .EQU    TX_SIZE         =$20\r
+|                  | .EQU    RX_SIZE         =$80\r
+|                  | \r
+|                  | .EQU    TK_LED_PULSE    =14             ; 18US ?? CLOCKS OF /8\r
+|                  | .EQU    TK_DELAY_0      =19             ; ??US DELAY TILL START OF LED PULSE (/8)\r
+|                  | ;.EQU   TK_DELAY_0      =$20 ;$38       ; ??US DELAY TILL START OF LED PULSE\r
+|                  | ;.EQU   TK_DELAY_0      =$25 ;$38       ; 54US ?? CLOCKS OF /8\r
+|                  | .EQU    TK_DELAY_1      =$10 ;$28       ; CLOCKS OF /64, CHANNEL SELECT DELAY\r
+|                  | .EQU    TK_DELAY_2      =$00            ; CLOCKS OF /1024, VDD POWER ON DELAY\r
+|                  |                                         ; $D0 IS TOO SHORT, $E0 SEEMS TO WORK\r
+|                  | \r
+|                  | .EQU    API_ADDRESS     =$02            ; TOUCHSCREEN ADDRESS\r
+|                  | .EQU    API_TIMEOUT     =33 ;50         ; 50 * 100 uSEC = APPROX 5mSEC\r
+|                  | .EQU    API_RATE_SLOW   =$5F ;$8F       ; DIVISOR FOR 4800 BPS\r
+|                  | .EQU    API_RATE_FAST   =$03 ;$05       ; DIVISOR FOR 115200 BPS\r
+|                  | .EQU    EEWR_ENABLE     =5              ; SET BY FG WHILE OK TO WRITE EEPROM\r
+|                  | .EQU    APISIZE         =6              ; SET IF EXPECTING API DATA SIZE CMD\r
+|                  | .EQU    APIDATA         =7              ; SET IF TRANSFERRING API DATA TX/RX\r
+|                  | \r
+|                  | .DEF    PATTERN         =R0             ; FOR HALFTONE_RECT ROUTINE\r
+|                  | .DEF    SR              =R1\r
+|                  | .DEF    RX_PTR          =R2\r
+|                  | .DEF    RX_COUNT        =R3\r
+|                  | .DEF    TX_PTR          =R4\r
+|                  | .DEF    TX_COUNT        =R5\r
+|                  | .DEF    API_REMAIN      =R6\r
+|                  | .DEF    API_WATCHDOG    =R12\r
+|                  | \r
+|                  | .DEF    Y_SIZE          =R7\r
+|                  | .DEF    X_SIZE          =R8\r
+|                  | .DEF    LINE_CNT        =R9\r
+|                  | .DEF    XBYTE           =R10\r
+|                  | .DEF    FLAGS           =R11\r
+|                  | ; FLAGS BIT 0   0=XOR MODE                      1=OR MODE\r
+|                  | ;       BIT 1   0=FILL RECT                     1=CLEAR RECT\r
+|                  | ;       BIT 2   0=OPEN ZEROS                    1=CROSSED ZEROS\r
+|                  | ;       BIT 3   0=TEXT MODE                     1=GRAPHICS MODE\r
+|                  | ;       BIT 4   0=FIXED                         1=PROPORTIONAL\r
+|                  | ;       BIT 5   0=DISPLAY DISABLED              1=DISPLAY ENABLED\r
+|                  | ;       BIT 6   0=TURNED OFF VIA TRANSIT SW     1=TURNED OFF VIA COMMAND\r
+|                  | ;       BIT 7   USED TO CONTROL LED PULSING FOR TOUCHSCREEN EVERY 2ND CYCLE\r
+|                  | .DEF    SCAN            =R13\r
+|                  | .DEF    API_STATE       =R14\r
+|                  | \r
+|                  | .DEF    W               =R15\r
+|                  | .DEF    F               =R16                    ; FG\r
+|                  | .DEF    A               =R17                    ; FG\r
+|                  | .DEF    B               =R18                    ; FG\r
+|                  | .DEF    C               =R20                    ; INT\r
+|                  | .DEF    D               =R21                    ; INT\r
+|                  | .DEF    E               =R25                    ; INT\r
+|                  | ;.DEF   ?               =R19                    ; INT\r
+|                  | \r
+|                  | .DEF    XPIXEL          =R22\r
+|                  | .DEF    CURSORX         =R23\r
+|                  | .DEF    CURSORY         =R24\r
+|                  | \r
+|                  | ; for AVRA / TAVRASM:\r
+|                  | ;.def   XL              =R26\r
+|                  | ;.def   XH              =R27\r
+|                  | ;.def   YL              =R28\r
+|                  | ;.def   YH              =R29\r
+|                  | ;.def   ZL              =R30\r
+|                  | ;.def   ZH              =R31\r
+|                  | \r
+|                  | .DSEG\r
+|                  | .ORG    RAM\r
+|                  | \r
+| 000060    -DATA- | TX_BUF:         .BYTE   TX_SIZE\r
+| 000080    -DATA- | RX_BUF:         .BYTE   RX_SIZE\r
+|                  | \r
+| 000100    -DATA- | XBYTE_SAV:      .BYTE   1       ; 063\r
+| 000101    -DATA- | X_SIZE_SAV:     .BYTE   1       ; 066\r
+| 000102    -DATA- | XPIXEL_SAV:     .BYTE   1       ; 067\r
+| 000103    -DATA- | PTR:            .BYTE   3       ; 068\r
+| 000106    -DATA- | PORT_STATE:     .BYTE   1       ; 0FA\r
+| 000107    -DATA- | ACTIVE_ZONE:    .BYTE   1       ; 0FB\r
+|                  | \r
+| 000108    -DATA- | TMPL:           .BYTE   1       ; 0FE\r
+| 000109    -DATA- | TMPH:           .BYTE   1       ; 0FF\r
+| 00010A    -DATA- | VCCL:           .BYTE   1       ; 100\r
+| 00010B    -DATA- | VCCH:           .BYTE   1       ; 101\r
+| 00010C    -DATA- | VEEL:           .BYTE   1       ; 102\r
+| 00010D    -DATA- | VEEH:           .BYTE   1       ; 103\r
+| 00010E    -DATA- | CONTRASTL:      .BYTE   1       ; 104\r
+| 00010F    -DATA- | CONTRASTH:      .BYTE   1       ; 105\r
+|                  | \r
+| 000110    -DATA- | BUZZ_TIME:      .BYTE   1       ; 10B\r
+| 000111    -DATA- | BUZZ_PERIOD:    .BYTE   1\r
+| 000112    -DATA- | TEMP:           .BYTE   1       ; 10C\r
+|                  | \r
+| 000113    -DATA- | DEBOUNCE:       .BYTE   1\r
+| 000114    -DATA- | ROW_INDEX:      .BYTE   1\r
+| 000115    -DATA- | ROW_BITMAP:     .BYTE   2\r
+| 000117    -DATA- | LATCH10_SAV:    .BYTE   1\r
+| 000118    -DATA- | LATCH11_SAV:    .BYTE   1\r
+| 000119    -DATA- | LATCH12_SAV:    .BYTE   1\r
+| 00011A    -DATA- | XPAGE:          .BYTE   1\r
+| 00011B    -DATA- | ROWBUF:         .BYTE   32      ; BUFFER FOR DSPRAM BLOCK READ/WRITE\r
+|                  | \r
+| 00013B    -DATA- | LINE_COUNT:     .BYTE   1       ; CURRENT POSITION TO TEST LINE_FLAGS\r
+| 00013C    -DATA- | LINE_FLAGS:     .BYTE   16      ; BUFFER 1 BIT PER LINE FOR COPY REQUIRED\r
+|                  | \r
+| 00014C    -DATA- | CLOCKING_PTR:   .BYTE   2\r
+|                  | \r
+| 00014E    -DATA- | CHAR_X:         .BYTE   1\r
+| 00014F    -DATA- | CHAR_Y:         .BYTE   1\r
+| 000150    -DATA- | CHAR_PTR:       .BYTE   2\r
+|                  | \r
+| 000152    -DATA- | RECT_X:         .BYTE   1\r
+| 000153    -DATA- | RECT_Y:         .BYTE   1\r
+| 000154    -DATA- | RECT_XX:        .BYTE   1\r
+| 000155    -DATA- | RECT_YY:        .BYTE   1\r
+|                  | \r
+| 000156    -DATA- | RECTNC_X:       .BYTE   1\r
+| 000157    -DATA- | RECTNC_Y:       .BYTE   1\r
+| 000158    -DATA- | RECTNC_XX:      .BYTE   1\r
+| 000159    -DATA- | RECTNC_YY:      .BYTE   1\r
+|                  | \r
+| 00015A    -DATA- | TOUCH_KEY:      .BYTE   1\r
+| 00015B    -DATA- | TOUCH_X:        .BYTE   1\r
+| 00015C    -DATA- | TOUCH_Y:        .BYTE   1\r
+| 00015D    -DATA- | TOUCH_XX:       .BYTE   1\r
+| 00015E    -DATA- | TOUCH_YY:       .BYTE   1\r
+|                  | \r
+| 00015F    -DATA- | TIME_HSEC_64K:  .BYTE   1\r
+| 000160    -DATA- | TIME_HSEC_256:  .BYTE   1\r
+| 000161    -DATA- | TIME_HSEC:      .BYTE   1\r
+| 000162    -DATA- | TIME_SECOND:    .BYTE   1\r
+| 000163    -DATA- | TIME_MINUTE:    .BYTE   1\r
+| 000164    -DATA- | TIME_HOUR:      .BYTE   1\r
+| 000165    -DATA- | DATE_DAY:       .BYTE   1\r
+| 000166    -DATA- | DATE_MONTH:     .BYTE   1\r
+| 000167    -DATA- | DATE_YEAR:      .BYTE   1\r
+|                  | \r
+| 000168    -DATA- | SCAN_STATE:     .BYTE   1\r
+| 000169    -DATA- | LATCH5_SAV:     .BYTE   1\r
+| 00016A    -DATA- | TURNON_COUNT:   .BYTE   1\r
+| 00016B    -DATA- | BREAK_COUNT:    .BYTE   1\r
+|                  | \r
+| 00016C    -DATA- | CURSORX_SAVE:   .BYTE   1\r
+| 00016D    -DATA- | CURSORY_SAVE:   .BYTE   1\r
+| 00016E    -DATA- | FLAGS_SAVE:     .BYTE   1\r
+| 00016F    -DATA- | PTR_SAVE:       .BYTE   3\r
+|                  | \r
+| 000172    -DATA- | SCROLL_COUNT:   .BYTE   1\r
+| 000173    -DATA- | SCROLL_X:       .BYTE   1\r
+| 000174    -DATA- | SCROLL_Y:       .BYTE   1\r
+| 000175    -DATA- | SCROLL_XX:      .BYTE   1\r
+| 000176    -DATA- | SCROLL_YY:      .BYTE   1\r
+|                  | \r
+|                  | .ESEG\r
+|                  | .ORG    $000\r
+|                  | \r
+| 000000 00 EEPROM |                 .DB     $00,$00         ; DON'T USE ADDR $000\r
+| 000001 00 EEPROM |\r
+| 000002 00 EEPROM | EE_CONTRAST:    .DB     $00,$00         ; RELY ON CONTRAST_INIT TO INITIALISE\r
+| 000003 00 EEPROM |\r
+|                  | \r
+|                  | .CSEG\r
+|                  | .ORG    $0000\r
+|                  | \r
+| 000000 C00D      |         RJMP    RESET_ENTRY\r
+| 000001 C606      |         RJMP    GO_EXT_INT0\r
+| 000002 C606      |         RJMP    GO_EXT_INT1\r
+| 000003 9518      |         RETI                            ; TIM2_CMP\r
+| 000004 C605      |         RJMP    GO_TIM2_OVF             ; TIM2_OVF\r
+| 000005 9518      |         RETI                            ; TIM1_CAPT\r
+| 000006 9518      |         RETI                            ; TIM1_COMPA\r
+| 000007 9518      |         RETI                            ; TIM1_COMPB\r
+| 000008 C602      |         RJMP    GO_T1_OVERFLOW\r
+| 000009 C602      |         RJMP    GO_T0_OVERFLOW\r
+| 00000A 9518      |         RETI                            ; SPI_STC\r
+| 00000B           >         INT_HANDLERS                    ; API BUS\r
+| 00000B C6ED      >         RJMP    RX_COMPLETE             ; UART RX COMPLETE HANDLER\r
+| 00000C C6D7      >         RJMP    TX_EMPTY                ; UART DATA REGISTER EMPTY HANDLER\r
+| 00000D C72E      >         RJMP    TX_COMPLETE             ; UART TX COMPLETE HANDLER\r
+|                  | \r
+|                  | RESET_ENTRY:\r
+| 00000E E002      |         LDI     F,HIGH(RAMEND)          ; INIT STACK POINTER\r
+| 00000F BF0E      |         OUT     SPH,F\r
+| 000010 E50F      |         LDI     F,LOW(RAMEND)\r
+| 000011 BF0D      |         OUT     SPL,F\r
+| 000012 E810      |         LDI     A,$80\r
+| 000013 B918      |         OUT     ACSR,A                  ; POWER DOWN ANALOG COMPARATOR\r
+|                  | \r
+| 000014 95A8      |         WDR                             ; RESET WATCHDOG\r
+| 000015 E01F      |         LDI     A,$0F                   ; ENABLE WATCHDOG WITH 3 SEC TIMEOUT\r
+| 000016 BD11      |         OUT     WDTCR,A\r
+|                  | \r
+| 000017 E000      |         LDI     F,0\r
+| 000018 9300 015F |         STS     TIME_HSEC_64K,F\r
+| 00001A 9300 0160 |         STS     TIME_HSEC_256,F\r
+| 00001C 9300 0161 |         STS     TIME_HSEC,F\r
+| 00001E 9300 0162 |         STS     TIME_SECOND,F\r
+| 000020 9300 0163 |         STS     TIME_MINUTE,F\r
+| 000022 9300 0164 |         STS     TIME_HOUR,F\r
+| 000024 E001      |         LDI     F,1\r
+| 000025 9300 0165 |         STS     DATE_DAY,F\r
+| 000027 9300 0166 |         STS     DATE_MONTH,F\r
+| 000029 E104      |         LDI     F,20\r
+| 00002A 9300 0167 |         STS     DATE_YEAR,F\r
+|                  | \r
+|                  | RESTART_ENTRY:\r
+|                  | ;**:\r
+| 00002C E008      |         LDI     F,8                     ; TIMER 2 CLOCKED BY 32 KHZ\r
+|                  | ;**     LDI     F,0                     ; TIMER 2 CLOCKED BY 11 MHZ\r
+| 00002D BD02      |         OUT     ASSR,F\r
+|                  | ;**:\r
+|                  |         ; MUST MATCH SET_TIME ROUTINE %\r
+| 00002E E003      |         LDI     F,3                     ; TIMER 2 DIVIDE BY 32 (4 HZ)\r
+|                  | ;!!     LDI     F,$11                   ; DIVIDE BY 2, TOGGLE OC2 (PIN 21)\r
+|                  |                                         ; (RTC DIAGNOSTIC)\r
+|                  | ;**     LDI     F,6                     ; TIMER 2 DIVIDE BY 256\r
+| 00002F BD05      |         OUT     TCCR2,F\r
+|                  |         ; %\r
+| 000030 E400      |         LDI     F,$40\r
+| 000031 BF09      |         OUT     TIMSK,F                 ; TIMER 2 OVERFLOW INTERRUPTS ENABLED\r
+| 000032 E000      |         LDI     F,$00\r
+| 000033 BF0B      |         OUT     GIMSK,F\r
+|                  | \r
+| 000034 EB08      |         LDI     F,$B8                   ; INIT_PORTS\r
+| 000035 BB01      |         OUT     DDRD,F\r
+| 000036 BB02      |         OUT     PORTD,F                 ; D2 = TRI-STATE, VSWT ON\r
+| 000037 E10F      |         LDI     F,$1F\r
+| 000038 BB07      |         OUT     DDRB,F\r
+| 000039 EF0F      |         LDI     F,$FF\r
+| 00003A BB0A      |         OUT     DDRA,F\r
+| 00003B BB04      |         OUT     DDRC,F\r
+|                  | \r
+| 00003C 2700      |         CLR     F\r
+| 00003D BB0B      |         OUT     PORTA,F\r
+|                  | \r
+| 00003E E003      |         LDI     F,$03                   ; CS, WE HI, LEs ALL LO\r
+| 00003F BB08      |         OUT     PORTB,F\r
+|                  | \r
+| 000040 E100      |         LDI     F,$10                   ; LED COMMON OFF, SPEAKER OFF\r
+| 000041 BB05      |         OUT     PORTC,F\r
+| 000042 9AC2      |         SBI     PORTB,2\r
+| 000043 98C2      |         CBI     PORTB,2\r
+| 000044 9300 0119 |         STS     LATCH12_SAV,F\r
+|                  | \r
+| 000046 E200      |         LDI     F,$20\r
+| 000047 2EB0      |         MOV     FLAGS,F                 ; START WITH DISPLAY ENABLED\r
+|                  | \r
+| 000048           >         INIT_API_BUS\r
+| 000048 E51F      >         LDI     A,API_RATE_SLOW         ; 4800 BPS\r
+| 000049 B919      >         OUT     UBRR,A                  ; SET UART RATE\r
+|                  > \r
+| 00004A E910      >         LDI     A,$90                   ; ENABLE RX WITH INTERRUPTS\r
+| 00004B B91A      >         OUT     UCR,A\r
+|                  >         ;SBI    UCR,TXEN                ; TX ENABLE\r
+|                  > \r
+| 00004C 2444      >         CLR     TX_PTR\r
+| 00004D 2455      >         CLR     TX_COUNT\r
+|                  > \r
+| 00004E 2422      >         CLR     RX_PTR\r
+| 00004F 2433      >         CLR     RX_COUNT\r
+|                  > \r
+| 000050 24EE      >         CLR     API_STATE\r
+| 000051 2466      >         CLR     API_REMAIN\r
+| 000052 24CC      >         CLR     API_WATCHDOG\r
+|                  | \r
+| 000053 E158      |         LDI     D,$18                   ; A18|A17|A16|A15|A14=11000\r
+| 000054 BB5B      |         OUT     PORTA,D                 ; CL1=M=FLM=0\r
+| 000055 9AC4      |         SBI     PORTB,4\r
+| 000056 98C4      |         CBI     PORTB,4\r
+| 000057 9350 0117 |         STS     LATCH10_SAV,D\r
+|                  | \r
+| 000059 2755      |         CLR     D\r
+| 00005A 9350 0118 |         STS     LATCH11_SAV,D\r
+| 00005C 9350 013B |         STS     LINE_COUNT,D            ; START UPDATE AT TOP OF SCREEN\r
+| 00005E 9350 016A |         STS     TURNON_COUNT,D          ; REDUNDANTLY REQUEST TURNON\r
+| 000060 9350 016B |         STS     BREAK_COUNT,D           ; SET LONGEST POSSIBLE BREAK TIMEOUT\r
+| 000062 9350 0110 |         STS     BUZZ_TIME,D             ; NOT BUZZING (SHORT BEEP COMES LATER)\r
+|                  | \r
+| 000064 24DD      |         CLR     SCAN\r
+| 000065 92D0 0114 |         STS     ROW_INDEX,SCAN\r
+| 000067 92D0 0115 |         STS     ROW_BITMAP,SCAN\r
+| 000069 92D0 0116 |         STS     ROW_BITMAP+1,SCAN\r
+|                  | \r
+| 00006B EF54      |         LDI     D,$F4                   ; BIT 6 = 1 VDD ON, BIT 7 = 1 LCD ON\r
+| 00006C 9350 0169 |         STS     LATCH5_SAV,D\r
+| 00006E           >         PHOTO   D\r
+| 00006E BB5B      >         OUT     PORTA,D         ; SELECT PHOTODIODE CHANNEL\r
+| 00006F 9150 0119 >         LDS     D,LATCH12_SAV\r
+| 000071 BB55      >         OUT     PORTC,D\r
+| 000072 9AA8      >         SBI     PORTC,0\r
+| 000073 9AC2      >         SBI     PORTB,2                 ; THIS WILL PROVIDE LE=1\r
+| 000074 98C2      >         CBI     PORTB,2                 ; THIS WILL PROVIDE G=0\r
+| 000075 98A8      >         CBI     PORTC,0\r
+| 000076 9AC2      >         SBI     PORTB,2                 ; THIS WILL PROVIDE LE=1\r
+| 000077 98C2      >         CBI     PORTB,2                 ; THIS WILL PROVIDE G=0\r
+|                  | \r
+|                  |         ; NEED THIS FOR RTC\r
+| 000078 9478      |         SEI                             ; ALLOW TIMER 2 INTERRUPTS ONLY\r
+|                  | \r
+|                  |         ; INITIALISE ACTIVE KEYS\r
+|                  | RTNCDE: ;LDIZ   RTN_CODE                ; POINT Z TO FLASH\r
+| 000079 E0E2      |         LDI     ZL,LOW((RTN_CODE)*2)    ; USE PRIOR TO LPM INSTRUCTION\r
+| 00007A E1F9      |         LDI     ZH,HIGH((RTN_CODE)*2)   ; EXTRA BRACKETS NEEDED IF @0=EXPRESSION\r
+|                  | \r
+|                  |         ;LDIX   RTN_CODE_END-RTN_CODE   ; BYTE COUNTER\r
+| 00007B EEA2      |         LDI     XL,LOW((RTN_CODE_END-RTN_CODE)*2)       ; USE AS BYTE COUNTER\r
+| 00007C E0B0      |         LDI     XH,HIGH((RTN_CODE_END-RTN_CODE)*2)      ; EXTRA BRACKETS NEEDED IF @0=EXPRESSION\r
+|                  | \r
+| 00007D           >         LDIYADR RTN_DSPRAM              ; POINT Y TO DSPRAM & SET XPAGE\r
+| 00007D E1DB      >         LDI     YH,HIGH(RTN_DSPRAM>>6)\r
+| 00007E 93D0 011A >         STS     XPAGE,YH\r
+| 000080 D108      >         RCALL   ADRYP                   ; AND SET XPAGE\r
+| 000081 E8D0      >         LDI     YH,HIGH(RTN_DSPRAM<<2)\r
+| 000082 ECC0      >         LDI     YL,(LOW(RTN_DSPRAM) & $3F) | (HIGH(RTN_DSPRAM) & $C0)\r
+| 000083           > CDE0:   ADRH    YH                      ; SET ADDRESS H FOR DSPRAM\r
+| 000083 BBDB      >         OUT     PORTA,YH                ; SET H ADDRESS FOR DSPRAM\r
+| 000084 9AC3      >         SBI     PORTB,3\r
+| 000085 98C3      >         CBI     PORTB,3\r
+| 000086 93D0 0118 >         STS     LATCH11_SAV,YH          ; IS THIS NEEDED?\r
+| 000088           > CDE1:   ADRL    YL                      ; SET ADDRESS L FOR DSPRAM\r
+| 000088 BBC5      >         OUT     PORTC,YL                ; SET L ADDRESS FOR DSPRAM\r
+| 000089 95C8      |         LPM                             ; GET DATA FROM FLASH\r
+| 00008A 2400      |  CLR R0 ; TEMPORARY CLEAR KB\r
+| 00008B           >         RAMWRX  R0                      ; WRITE DATA TO DSPRAM\r
+| 00008B BA0B      >         OUT     PORTA,R0\r
+| 00008C 98C1      >         CBI     PORTB,1\r
+| 00008D 98C0      >         CBI     PORTB,0\r
+| 00008E 0000      >         NOP\r
+| 00008F 9AC0      >         SBI     PORTB,0\r
+| 000090 9AC1      >         SBI     PORTB,1\r
+| 000091 95AA      |         DEC     XL\r
+| 000092 F041      |         BREQ    RTNCDE_END              ; CHECK IF ALL DONE\r
+| 000093 9631      |         ADIW    ZL,$01                  ; INC FLASH ADDRESS\r
+| 000094 95C3      |         INC     YL                      ; INC ADDRESS L FOR DSPRAM\r
+| 000095 2F1C      |         MOV     A,YL ;\r
+| 000096 731F      |         ANDI    A,$3F ;YL,$3F\r
+| 000097 F781      |         BRNE    CDE1\r
+| 000098 54C0      |         SUBI    YL,$40 ;\r
+| 000099 95D3      |         INC     YH                      ; INC ADDRESS H (ON L ROLLOVER)\r
+| 00009A CFE8      |         RJMP    CDE0\r
+|                  | RTNCDE_END:\r
+|                  | \r
+|                  |         ; INITIALISE DEFAULT CHARACTER SET\r
+| 00009B E310      |         LDI     A,'0'\r
+| 00009C D2D9      |         RCALL   CHARACTER_SET_FIND      ; B:Y -> CHARACTER SET\r
+| 00009D 93CF      |         PUSH    YL\r
+| 00009E 93DF      |         PUSH    YH\r
+| 00009F D2E4      |         RCALL   CHARACTER_SET_CRC       ; Y = CALCULATED CRC WORD\r
+| 0000A0 91BF      |         POP     XH\r
+| 0000A1 91AF      |         POP     XL\r
+|                  | \r
+| 0000A2 D55F      |         RCALL   GO_READ_BYTE\r
+| 0000A3 2F21      |         MOV     B,A\r
+| 0000A4 2F1D      |         MOV     A,YH\r
+| 0000A5 9512      |         SWAP    A\r
+| 0000A6 D333      |         RCALL   HEX_NIBBLE\r
+| 0000A7 1712      |         CP      A,B\r
+| 0000A8 F4B1      |         BRNE    CHARACTER_SET_INIT\r
+| 0000A9 9611      |         ADIW    XL,1\r
+|                  | \r
+| 0000AA D557      |         RCALL   GO_READ_BYTE\r
+| 0000AB 2F21      |         MOV     B,A\r
+| 0000AC 2F1D      |         MOV     A,YH\r
+| 0000AD D32C      |         RCALL   HEX_NIBBLE\r
+| 0000AE 1712      |         CP      A,B\r
+| 0000AF F479      |         BRNE    CHARACTER_SET_INIT\r
+| 0000B0 9611      |         ADIW    XL,1\r
+|                  | \r
+| 0000B1 D550      |         RCALL   GO_READ_BYTE\r
+| 0000B2 2F21      |         MOV     B,A\r
+| 0000B3 2F1C      |         MOV     A,YL\r
+| 0000B4 9512      |         SWAP    A\r
+| 0000B5 D324      |         RCALL   HEX_NIBBLE\r
+| 0000B6 1712      |         CP      A,B\r
+| 0000B7 F439      |         BRNE    CHARACTER_SET_INIT\r
+| 0000B8 9611      |         ADIW    XL,1\r
+|                  | \r
+| 0000B9 D548      |         RCALL   GO_READ_BYTE\r
+| 0000BA 2F21      |         MOV     B,A\r
+| 0000BB 2F1C      |         MOV     A,YL\r
+| 0000BC D31D      |         RCALL   HEX_NIBBLE\r
+| 0000BD 1712      |         CP      A,B\r
+| 0000BE F109      |         BREQ    CHARACTER_SET_INIT_DONE\r
+|                  | \r
+|                  | CHARACTER_SET_INIT:\r
+|                  |         ;LDIZ   CHSET00                 ; POINT Z TO FLASH\r
+| 0000BF EEE4      |         LDI     ZL,LOW((CHSET00)*2)     ; USE PRIOR TO LPM INSTRUCTION\r
+| 0000C0 E1F9      |         LDI     ZH,HIGH((CHSET00)*2)    ; EXTRA BRACKETS NEEDED IF @0=EXPRESSION\r
+|                  | \r
+|                  |         ;LDIX   CHSET00_END-CHSET00     ; BYTE COUNTER\r
+| 0000C1 E6A6      |         LDI     XL,LOW((CHSET00_END-CHSET00)*2) ; USE AS BYTE COUNTER\r
+| 0000C2 E0B3      |         LDI     XH,HIGH((CHSET00_END-CHSET00)*2)        ; EXTRA BRACKETS NEEDED IF @0=EXPRESSION\r
+|                  | \r
+| 0000C3           >         LDIYADR CHSET_DSPRAM            ; POINT Y TO DSPRAM & SET XPAGE\r
+| 0000C3 E1D9      >         LDI     YH,HIGH(CHSET_DSPRAM>>6)\r
+| 0000C4 93D0 011A >         STS     XPAGE,YH\r
+| 0000C6 D0C2      >         RCALL   ADRYP                   ; AND SET XPAGE\r
+| 0000C7 E0D0      >         LDI     YH,HIGH(CHSET_DSPRAM<<2)\r
+| 0000C8 E4C0      >         LDI     YL,(LOW(CHSET_DSPRAM) & $3F) | (HIGH(CHSET_DSPRAM) & $C0)\r
+| 0000C9           > CHST0:  ADRH    YH                      ; SET ADDRESS H FOR DSPRAM\r
+| 0000C9 BBDB      >         OUT     PORTA,YH                ; SET H ADDRESS FOR DSPRAM\r
+| 0000CA 9AC3      >         SBI     PORTB,3\r
+| 0000CB 98C3      >         CBI     PORTB,3\r
+| 0000CC 93D0 0118 >         STS     LATCH11_SAV,YH          ; IS THIS NEEDED?\r
+| 0000CE           > CHST1:  ADRL    YL                      ; SET ADDRESS L FOR DSPRAM\r
+| 0000CE BBC5      >         OUT     PORTC,YL                ; SET L ADDRESS FOR DSPRAM\r
+| 0000CF 95C8      |         LPM                             ; GET DATA FROM FLASH\r
+| 0000D0           >         RAMWRX  R0                      ; WRITE DATA TO DSPRAM\r
+| 0000D0 BA0B      >         OUT     PORTA,R0\r
+| 0000D1 98C1      >         CBI     PORTB,1\r
+| 0000D2 98C0      >         CBI     PORTB,0\r
+| 0000D3 0000      >         NOP\r
+| 0000D4 9AC0      >         SBI     PORTB,0\r
+| 0000D5 9AC1      >         SBI     PORTB,1\r
+| 0000D6 9711      |         SBIW    XL,1\r
+| 0000D7 F041      |         BREQ    CHARACTER_SET_INIT_DONE ; CHECK IF ALL DONE\r
+| 0000D8 9631      |         ADIW    ZL,$01                  ; INC FLASH ADDRESS\r
+| 0000D9 95C3      |         INC     YL                      ; INC ADDRESS L FOR DSPRAM\r
+| 0000DA 2F1C      |         MOV     A,YL ;\r
+| 0000DB 731F      |         ANDI    A,$3F ;YL,$3F\r
+| 0000DC F789      |         BRNE    CHST1\r
+| 0000DD 54C0      |         SUBI    YL,$40 ;\r
+| 0000DE 95D3      |         INC     YH                      ; INC ADDRESS H (ON L ROLLOVER)\r
+| 0000DF CFE9      |         RJMP    CHST0\r
+|                  | \r
+|                  | CHARACTER_SET_INIT_DONE:\r
+| 0000E0 E120      |         LDI     B,LOW(CHSET_DSPRAM+$10) ; SET POINTER TO HEADER\r
+| 0000E1 9320 0103 |         STS     PTR,B\r
+| 0000E3 E420      |         LDI     B,HIGH(CHSET_DSPRAM+$10) ;<<2\r
+| 0000E4 9320 0104 |         STS     PTR+1,B\r
+| 0000E6 E129      |         LDI     B,HIGH((CHSET_DSPRAM+$10)>>6)\r
+| 0000E7 9320 0105 |         STS     PTR+2,B\r
+|                  | \r
+|                  |         ; CLEAR REFRESH BUFFER TO AVOID A BRIEF FLICKER\r
+| 0000E9 E0C0      |         LDI     YL,LOW(DRAW_DSPRAM)\r
+| 0000EA E2D0      |         LDI     YH,HIGH(DRAW_DSPRAM)\r
+| 0000EB E118      |         LDI     A,HIGH(DRAW_DSPRAM>>6)\r
+| 0000EC D518      |         RCALL   GO_SELECT_XPAGE\r
+|                  | \r
+| 0000ED E820      |         LDI     B,DISPLAY_LINES         ; B = LINES TO CLEAR\r
+|                  | \r
+|                  | CLEAR_REFRESH:\r
+| 0000EE 932F      |         PUSH    B\r
+| 0000EF 93CF      |         PUSH    YL\r
+| 0000F0 93DF      |         PUSH    YH\r
+|                  | \r
+| 0000F1 E220      |         LDI     B,32\r
+| 0000F2 D511      |         RCALL   GO_CLEAR_BYTES          ; 240 PIXELS, PLUS 16 FOR SAMSUNG\r
+|                  | \r
+| 0000F3 9626      |         ADIW    YL,6\r
+| 0000F4 E022      |         LDI     B,2\r
+| 0000F5 D50E      |         RCALL   GO_CLEAR_BYTES          ; REPEAT FINAL 16 PIXELS FOR HYUNDAI\r
+|                  | \r
+| 0000F6 91DF      |         POP     YH\r
+| 0000F7 91CF      |         POP     YL\r
+| 0000F8 912F      |         POP     B\r
+| 0000F9 5CC0      |         SUBI    YL,LOW(-$40)\r
+| 0000FA 4FDF      |         SBCI    YH,HIGH(-$40)\r
+|                  | \r
+| 0000FB 952A      |         DEC     B\r
+| 0000FC F789      |         BRNE    CLEAR_REFRESH\r
+|                  | \r
+| 0000FD D6B4      |         RCALL   CLEAR_DISPLAY           ; CLEARS DISPLAY AND HOMES CURSOR\r
+|                  | \r
+| 0000FE E010      |         LDI     A,0\r
+| 0000FF 9310 0111 |         STS     BUZZ_PERIOD,A           ; HIGHEST FREQUENCY\r
+| 000101 E316      |         LDI     A,54 ;$40\r
+| 000102 9310 0110 |         STS     BUZZ_TIME,A             ; SHORT BEEP ON STARTUP\r
+|                  | \r
+| 000104 E010      |         LDI     A,0\r
+| 000105 9310 0168 |         STS     SCAN_STATE,A            ; START ON FIRST LED / PHOTODIODE PAIR\r
+|                  | \r
+| 000107 E010      |         LDI     A,0\r
+| 000108 9310 014C |         STS     CLOCKING_PTR,A\r
+| 00010A 9310 014D |         STS     CLOCKING_PTR+1,A        ; INITIALISE CURRENT LINE FOR CLOCKING\r
+|                  | \r
+| 00010C EF1E      |         LDI     A,HIGH(VEE_INIT)\r
+| 00010D 9310 010D |         STS     VEEH,A\r
+| 00010F EA1C      |         LDI     A,LOW(VEE_INIT)\r
+| 000110 9310 010C |         STS     VEEL,A                  ; INIT MEASURED VEE\r
+|                  | \r
+| 000112 E022      |         LDI     B,EE_CONTRAST ; 20mar03 tavrasm *2\r
+| 000113 D220      |         RCALL   EE_READ\r
+| 000114 7F1C      |         ANDI    A,~(CONTRAST_STEP-1)\r
+| 000115 9310 010E |         STS     CONTRASTL,A\r
+| 000117 E023      |         LDI     B,EE_CONTRAST+1 ; 20mar03 tavrasm *2+1\r
+| 000118 D21B      |         RCALL   EE_READ\r
+| 000119 9310 010F |         STS     CONTRASTH,A\r
+|                  | \r
+| 00011B 9110 010E |         LDS     A,CONTRASTL\r
+| 00011D 9120 010F |         LDS     B,CONTRASTH\r
+|                  | \r
+| 00011F 331A      |         CPI     A,LOW(CONTRAST_MIN)\r
+| 000120 EF0D      |         LDI     F,HIGH(CONTRAST_MIN)\r
+| 000121 0720      |         CPC     B,F\r
+| 000122 F020      |         BRLO    CONTRAST_RESET\r
+|                  | \r
+| 000123 3B1C      |         CPI     A,LOW(CONTRAST_MAX)\r
+| 000124 EF0D      |         LDI     F,HIGH(CONTRAST_MAX)\r
+| 000125 0720      |         CPC     B,F\r
+| 000126 F030      |         BRLO    CONTRAST_PRESERVE\r
+|                  | \r
+|                  | CONTRAST_RESET:\r
+| 000127 EF1D      |         LDI     A,HIGH(CONTRAST_INIT)\r
+| 000128 9310 010F |         STS     CONTRASTH,A\r
+| 00012A E810      |         LDI     A,LOW(CONTRAST_INIT)\r
+| 00012B 9310 010E |         STS     CONTRASTL,A             ; INIT REQUESTED CONTRAST\r
+|                  | \r
+|                  | CONTRAST_PRESERVE:\r
+| 00012D EF1F      |         LDI     A,HIGH(CONTRAST_MID)\r
+| 00012E BD19      |         OUT     OCR1BH,A\r
+| 00012F E318      |         LDI     A,LOW(CONTRAST_MID)\r
+| 000130 BD18      |         OUT     OCR1BL,A                ; INIT GENERATOR PULSE WIDTH\r
+|                  | \r
+| 000131 EF1C      |         LDI     A,HIGH(T1_INIT)\r
+| 000132 BD1D      |         OUT     TCNT1H,A\r
+| 000133 EC1E      |         LDI     A,LOW(T1_INIT)\r
+| 000134 BD1C      |         OUT     TCNT1L,A\r
+|                  | \r
+| 000135 E510      |         LDI     A,$50\r
+| 000136 BD1F      |         OUT     TCCR1A,A                ; TIMER 1 TOGGLE ON COMPARE MATCH\r
+| 000137 E011      |         LDI     A,$01\r
+| 000138 BD1E      |         OUT     TCCR1B,A                ; TIMER 1 RUNNING\r
+|                  | \r
+| 000139 E000      |         LDI     F,$00\r
+| 00013A BF03      |         OUT     TCCR0,F                 ; TIMER 0 NOT RUNNING YET\r
+|                  | \r
+| 00013B E005      |         LDI     F,$05\r
+| 00013C BF08      |         OUT     TIFR,F                  ; RESET TIMER 0, 1 INTERRUPT FLAGS\r
+| 00013D E405      |         LDI     F,$45\r
+| 00013E BF09      |         OUT     TIMSK,F                 ; TURN ON TIMER 0, 1, 2 INTERRUPTS\r
+|                  | \r
+| 00013F E00A      |         LDI     F,$0A\r
+| 000140 BF05      |         OUT     MCUCR,F                 ; SET EXTERNAL INTERRUPT 0, 1 SENSE\r
+| 000141 EC00      |         LDI     F,$C0\r
+| 000142 BF0A      |         OUT     GIFR,F                  ; RESET EXTERNAL INTERRUPT 0, 1 FLAGS\r
+| 000143 BF0B      |         OUT     GIMSK,F                 ; TURN ON EXTERNAL INTERRUPT 0, 1\r
+|                  | \r
+|                  |         ;RCALL  HELLO_DISPLAY           ; SHOW EXAMPLE DISPLAY\r
+|                  | \r
+|                  |         ;RCALL  CLEAR_DISPLAY           ; CLEARS DISPLAY AND HOMES CURSOR\r
+| 000144 C29E      |         RJMP    SAVE_ENTRY              ; IN CASE STATE INADVERTENTLY RESTORED\r
+|                  | \r
+|                  | ; -----------------------------------------------------------------------------\r
+|                  | \r
+|                  | SLEEP_ENTRY:\r
+| 000145 E002      |         LDI     F,HIGH(RAMEND)          ; INIT STACK POINTER\r
+| 000146 BF0E      |         OUT     SPH,F\r
+| 000147 E50F      |         LDI     F,LOW(RAMEND)\r
+| 000148 BF0D      |         OUT     SPL,F\r
+|                  | \r
+| 000149 E050      |         LDI     D,$00\r
+| 00014A BD5F      |         OUT     TCCR1A,D                ; DISCONNECT PWM FROM OC1A, OC1B\r
+|                  |         ;SBRS   FLAGS,6                 ; IF WE TURNED OFF VIA BREAK DETECT,\r
+| 00014B BD5E      |         OUT     TCCR1B,D                ; STOP TIMER 1 ALTOGETHER\r
+|                  | \r
+| 00014C 9A94      |         SBI     PORTD,4                 ; TURN TRANSISTOR OFF\r
+| 00014D 9895      |         CBI     PORTD,5                 ; DROP CL2\r
+|                  | \r
+| 00014E 9150 0117 |         LDS     D,LATCH10_SAV\r
+| 000150 7B5F      |         ANDI    D,$BF                   ; DROP M\r
+| 000151 BB5B      |         OUT     PORTA,D\r
+| 000152 9AC4      |         SBI     PORTB,4\r
+| 000153 98C4      |         CBI     PORTB,4\r
+| 000154 9350 0117 |         STS     LATCH10_SAV,D\r
+|                  | \r
+| 000156 E754      |         LDI     D,$74                   ; BIT 6 = 1 VDD ON, BIT 7 = 0 LCD OFF\r
+| 000157 FEB6      |         SBRS    FLAGS,6                 ; IF WE TURNED OFF VIA BREAK DETECT,\r
+| 000158 E354      |         LDI     D,$34                   ; BIT 6 = 0 VDD OFF, BIT 7 = 0 LCD OFF\r
+| 000159 9350 0169 |         STS     LATCH5_SAV,D\r
+| 00015B           >         PHOTO   D\r
+| 00015B BB5B      >         OUT     PORTA,D         ; SELECT PHOTODIODE CHANNEL\r
+| 00015C 9150 0119 >         LDS     D,LATCH12_SAV\r
+| 00015E BB55      >         OUT     PORTC,D\r
+| 00015F 9AA8      >         SBI     PORTC,0\r
+| 000160 9AC2      >         SBI     PORTB,2                 ; THIS WILL PROVIDE LE=1\r
+| 000161 98C2      >         CBI     PORTB,2                 ; THIS WILL PROVIDE G=0\r
+| 000162 98A8      >         CBI     PORTC,0\r
+| 000163 9AC2      >         SBI     PORTB,2                 ; THIS WILL PROVIDE LE=1\r
+| 000164 98C2      >         CBI     PORTB,2                 ; THIS WILL PROVIDE G=0\r
+|                  | \r
+| 000165 E451      |         LDI     D,$41\r
+| 000166 BF59      |         OUT     TIMSK,D                 ; DISABLE TIMER 1 INTERRUPTS\r
+|                  | \r
+| 000167 E050      |         LDI     D,0\r
+| 000168 BF53      |         OUT     TCCR0,D                 ; DISABLE TIMER 0 TEMPORARILY ONLY\r
+| 000169 BF5B      |         OUT     GIMSK,D                 ; DISABLE THERMISTOR INTERRUPTS\r
+|                  | \r
+| 00016A E004      |         LDI     F,4\r
+| 00016B 9300 016A |         STS     TURNON_COUNT,F          ; .25 SEC TO BREAK, .75 SEC TO MAKE\r
+|                  | \r
+| 00016D           >         INIT_API_BUS                    ; RESET UART TO RECEIVE TURNON COMMAND\r
+| 00016D E51F      >         LDI     A,API_RATE_SLOW         ; 4800 BPS\r
+| 00016E B919      >         OUT     UBRR,A                  ; SET UART RATE\r
+|                  > \r
+| 00016F E910      >         LDI     A,$90                   ; ENABLE RX WITH INTERRUPTS\r
+| 000170 B91A      >         OUT     UCR,A\r
+|                  >         ;SBI    UCR,TXEN                ; TX ENABLE\r
+|                  > \r
+| 000171 2444      >         CLR     TX_PTR\r
+| 000172 2455      >         CLR     TX_COUNT\r
+|                  > \r
+| 000173 2422      >         CLR     RX_PTR\r
+| 000174 2433      >         CLR     RX_COUNT\r
+|                  > \r
+| 000175 24EE      >         CLR     API_STATE\r
+| 000176 2466      >         CLR     API_REMAIN\r
+| 000177 24CC      >         CLR     API_WATCHDOG\r
+|                  | \r
+|                  | SLEEP_LOOP:\r
+| 000178 94F8      |         CLI\r
+| 000179 B703      |         IN      F,TCCR0\r
+| 00017A 2300      |         TST     F\r
+| 00017B E40A      |         LDI     F,$4A                   ; SE=1 SM1:SM0=00 FOR IDLE MODE\r
+| 00017C F411      |         BRNE    SLEEP_SETUP             ; TIMER 0 RUNNING, STAY IN IDLE MODE\r
+| 00017D 9B80      |         SBIS    PIND,0                  ; BREAK OFF, UART ACTIVE, STAY IN IDLE\r
+| 00017E E70A      |         LDI     F,$7A                   ; SE=1 SM1:SM0=11 FOR POWER SAVE MODE\r
+|                  | SLEEP_SETUP:\r
+| 00017F BF05      |         OUT     MCUCR,F\r
+| 000180 9478      |         SEI\r
+| 000181 9588      |         SLEEP\r
+|                  | \r
+|                  |         ; FORMERLY DONE IN TIMER 2 OVERFLOW INTERRUPT\r
+| 000182 95A8      |         WDR\r
+|                  | \r
+| 000183 9100 016A |         LDS     F,TURNON_COUNT\r
+| 000185 2300      |         TST     F                       ; HAD TOUCHSCREEN ACTIVITY FOR TIMEOUT?\r
+|                  |         ;SBRS   FLAGS,6                 ; IF WE TURNED OFF VIA BREAK DETECT,\r
+|                  |         ;SBIS   PIND,0                  ; AND BREAK HAS DISAPPEARED, WAKE UP\r
+| 000186 F789      |         BRNE    SLEEP_LOOP              ; NO, GO BACK TO SLEEP\r
+|                  | \r
+| 000187 94F8      |         CLI\r
+| 000188 CEA3      |         RJMP    RESTART_ENTRY           ; GO AND CLEAR DISPLAY ETC\r
+|                  | \r
+|                  | ; -----------------------------------------------------------------------------\r
+|                  | \r
+| 000189 91D0 011A | ADRYP:  LDS     YH,XPAGE                        ; SET XPAGE ADDRESS FOR DSPRAM\r
+| 00018B 91C0 0117 |         LDS     YL,LATCH10_SAV\r
+| 00018D 7EC0      |         ANDI    YL,$E0\r
+| 00018E 2BDC      |         OR      YH,YL\r
+| 00018F BBDB      |         OUT     PORTA,YH\r
+| 000190 9AC4      |         SBI     PORTB,4\r
+| 000191 98C4      |         CBI     PORTB,4\r
+| 000192 93D0 0117 |         STS     LATCH10_SAV,YH\r
+| 000194 9508      |         RET\r
+|                  | \r
+|                  | ;INCADRY:\r
+|                  | ;       CLR     YL\r
+|                  | ;       INC     YH\r
+|                  | ;       BRNE    INCRET\r
+|                  | ;       LDS     YH,XPAGE\r
+|                  | ;       INC     YH\r
+|                  | ;       ANDI    YH,$1F\r
+|                  | ;       STS     XPAGE,YH\r
+|                  | ;       CLR     YH\r
+|                  | ;INCRET:        RET\r
+|                  | \r
+|                  | ; -----------------------------------------------------------------------------\r
+|                  | \r
+|                  | ;HELLO_DISPLAY:\r
+|                  | ;       LDI     A,0\r
+|                  | ;       STS     RECTNC_X,A\r
+|                  | ;       STS     RECTNC_Y,A\r
+|                  | ;       STS     RECTNC_XX,A\r
+|                  | ;       LDI     A,$80\r
+|                  | ;       STS     RECTNC_YY,A\r
+|                  | ;       RCALL   DRAW_RECTNC\r
+|                  | ;\r
+|                  | ;       LDI     A,16\r
+|                  | ;       STS     CHAR_X,A\r
+|                  | ;       STS     CHAR_Y,A\r
+|                  | ;       LDI     B,5\r
+|                  | ;       LDI     ZL,LOW(HELLO_MESSAGE*2)\r
+|                  | ;       LDI     ZH,HIGH(HELLO_MESSAGE*2)\r
+|                  | ;       RCALL   STRING_DRAW\r
+|                  | ;\r
+|                  | ;       LDI     A,240\r
+|                  | ;       STS     CHAR_X,A\r
+|                  | ;       LDI     B,5\r
+|                  | ;       LDI     ZL,LOW(HELLO_MESSAGE*2)\r
+|                  | ;       LDI     ZH,HIGH(HELLO_MESSAGE*2)\r
+|                  | ;\r
+|                  | ;STRING_RIGHT_JUST:\r
+|                  | ;       PUSH    B\r
+|                  | ;       PUSH    ZL\r
+|                  | ;       PUSH    ZH\r
+|                  | ;       RCALL   STRING_WIDTH\r
+|                  | ;       POP     ZH\r
+|                  | ;       POP     ZL\r
+|                  | ;       POP     B\r
+|                  | ;       LDS     A,CHAR_X\r
+|                  | ;       SUB     A,R0\r
+|                  | ;       STS     CHAR_X,A\r
+|                  | ;\r
+|                  | ;STRING_DRAW:\r
+|                  | ;       PUSH    B\r
+|                  | ;       LPM\r
+|                  | ;       MOV     A,R0\r
+|                  | ;       ADIW    ZL,1\r
+|                  | ;       PUSH    ZL\r
+|                  | ;       PUSH    ZH\r
+|                  | ;       RCALL   FIND_CHAR\r
+|                  | ;       RCALL   CHAR_WIDTH\r
+|                  | ;       PUSH    R0\r
+|                  | ;       RCALL   DRAW_CHAR\r
+|                  | ;       POP     R0\r
+|                  | ;       POP     ZH\r
+|                  | ;       POP     ZL\r
+|                  | ;       LDS     A,CHAR_X\r
+|                  | ;       ADD     A,R0\r
+|                  | ;       STS     CHAR_X,A\r
+|                  | ;       POP     B\r
+|                  | ;       DEC     B\r
+|                  | ;       BRNE    STRING_DRAW\r
+|                  | ;       RET\r
+|                  | ;\r
+|                  | ;STRING_WIDTH:\r
+|                  | ;       CLR     R0\r
+|                  | ;STRING_WIDTH_LOOP:\r
+|                  | ;       PUSH    B\r
+|                  | ;       PUSH    R0\r
+|                  | ;       LPM\r
+|                  | ;       MOV     A,R0\r
+|                  | ;       ADIW    ZL,1\r
+|                  | ;       PUSH    ZL\r
+|                  | ;       PUSH    ZH\r
+|                  | ;       RCALL   FIND_CHAR\r
+|                  | ;       RCALL   CHAR_WIDTH\r
+|                  | ;       POP     ZH\r
+|                  | ;       POP     ZL\r
+|                  | ;       POP     A\r
+|                  | ;       ADD     R0,A\r
+|                  | ;       POP     B\r
+|                  | ;       DEC     B\r
+|                  | ;       BRNE    STRING_WIDTH_LOOP\r
+|                  | ;       RET\r
+|                  | ;\r
+|                  | ;HELLO_MESSAGE: .DB     'H','E','L','L','O',0\r
+|                  | \r
+|                  | ; -----------------------------------------------------------------------------\r
+|                  | \r
+|                  | MAIN_LOOP:\r
+| 000195 9478      |         SEI                             ; SHOULD BE BEFORE MAIN_LOOP\r
+|                  | \r
+| 000196 ED1F      |         LDI     A,~(1<<EEWR_ENABLE)\r
+| 000197 22E1      |         AND     API_STATE,A             ; DISABLE WRITE ACCESS TO EEPROM\r
+|                  | \r
+| 000198 E010      |         LDI     A,0\r
+| 000199 BB1E      |         OUT     EEARL,A                 ; RESET EEPROM ADDRESS REG WHILE IDLE\r
+| 00019A BB1F      |         OUT     EEARH,A\r
+|                  | \r
+| 00019B D2E2      |         RCALL   RX_WAIT\r
+|                  | \r
+| 00019C 311B      |         CPI     A,$1B\r
+| 00019D F159      |         BREQ    ESC_SEQUENCE\r
+|                  | \r
+| 00019E FCB3      |         SBRC    FLAGS,3\r
+| 00019F C00D      |         RJMP    REGULAR_CHAR\r
+| 0001A0 3210      |         CPI     A,$20\r
+| 0001A1 F458      |         BRSH    REGULAR_CHAR\r
+|                  | \r
+| 0001A2 3018      |         CPI     A,$08\r
+| 0001A3           >         RJEQ    BACK_SPACE\r
+| 0001A3 F409      >         BRNE    LOCAL\r
+| 0001A4 C107      >         RJMP    BACK_SPACE\r
+|                  > LOCAL:\r
+|                  | ;L0132:\r
+| 0001A5 301D      |         CPI     A,$0D\r
+| 0001A6           >         RJEQ    CR\r
+| 0001A6 F409      >         BRNE    LOCAL\r
+| 0001A7 C11C      >         RJMP    CR\r
+|                  > LOCAL:\r
+|                  | ;L0135:\r
+| 0001A8 301A      |         CPI     A,$0A\r
+| 0001A9 F409      |         BRNE    TEST_BELL\r
+| 0001AA C0C0      |         RJMP    LF\r
+|                  | TEST_BELL:\r
+| 0001AB 3017      |         CPI     A,7\r
+| 0001AC F741      |         BRNE    MAIN_LOOP\r
+|                  | \r
+|                  | REGULAR_CHAR:\r
+| 0001AD FCB2      |         SBRC    FLAGS,2                 ; CROSSED ZEROS ON?\r
+| 0001AE C018      |         RJMP    L013B                   ; YES, DON'T BOTHER TESTING FOR ZERO\r
+| 0001AF 3310      |         CPI     A,'0'\r
+| 0001B0 F4B1      |         BRNE    L013B\r
+| 0001B1 91C0 0103 |         LDS     YL,PTR\r
+| 0001B3 91D0 0104 |         LDS     YH,PTR+1\r
+| 0001B5 9120 0105 |         LDS     B,PTR+2\r
+| 0001B7 5FCC      |         SUBI    YL,LOW(-$204)\r
+| 0001B8 4FDD      |         SBCI    YH,HIGH(-$204)\r
+| 0001B9           >         A14_A18 B\r
+| 0001B9 94F8      >         CLI\r
+| 0001BA 9130 0117 >         LDS     R19,LATCH10_SAV         ; AND THIS\r
+| 0001BC 2732      >         EOR     R19,B\r
+| 0001BD 7E30      >         ANDI    R19,$E0\r
+| 0001BE 2732      >         EOR     R19,B\r
+| 0001BF BB3B      >         OUT     PORTA,R19\r
+| 0001C0 9AC4      >         SBI     PORTB,4\r
+| 0001C1 98C4      >         CBI     PORTB,4\r
+| 0001C2 9478      >         SEI\r
+| 0001C3 9330 0117 >         STS     LATCH10_SAV,R19         ; MUST BE ATOMIC DUE TO TOGGLING M\r
+| 0001C5 D593      |         RCALL   LPMS\r
+| 0001C6 2D10      |         MOV     A,R0\r
+| 0001C7 D2EC      | L013B:  RCALL   DRAW_CHAR_TTY\r
+| 0001C8 CFCC      |         RJMP    MAIN_LOOP\r
+|                  | \r
+|                  | ESC_SEQUENCE:\r
+| 0001C9 D2B4      |         RCALL   RX_WAIT\r
+| 0001CA 311B      |         CPI     A,$1B\r
+| 0001CB F309      |         BREQ    REGULAR_CHAR\r
+| 0001CC 321E      |         CPI     A,'.'\r
+| 0001CD           >         RJEQ    CHARACTER_SET_DOWNLOAD\r
+| 0001CD F409      >         BRNE    LOCAL\r
+| 0001CE C17C      >         RJMP    CHARACTER_SET_DOWNLOAD\r
+|                  > LOCAL:\r
+| 0001CF 321F      |         CPI     A,'/'\r
+| 0001D0           >         RJEQ    CROSSED_ZEROS\r
+| 0001D0 F409      >         BRNE    LOCAL\r
+| 0001D1 C052      >         RJMP    CROSSED_ZEROS\r
+|                  > LOCAL:\r
+| 0001D2 331F      |         CPI     A,'?'\r
+| 0001D3           >         RJEQ    CHARACTER_SET_QUERY\r
+| 0001D3 F409      >         BRNE    LOCAL\r
+| 0001D4 C191      >         RJMP    CHARACTER_SET_QUERY\r
+|                  > LOCAL:\r
+| 0001D5 3412      |         CPI     A,'B'\r
+| 0001D6           >         RJEQ    BUZZER\r
+| 0001D6 F409      >         BRNE    LOCAL\r
+| 0001D7 C05E      >         RJMP    BUZZER\r
+|                  > LOCAL:\r
+| 0001D8 3612      |         CPI     A,'b'\r
+| 0001D9           >         RJEQ    BUZZ_AT_FREQ\r
+| 0001D9 F409      >         BRNE    LOCAL\r
+| 0001DA C05F      >         RJMP    BUZZ_AT_FREQ\r
+|                  > LOCAL:\r
+| 0001DB 3413      |         CPI     A,'C'\r
+| 0001DC           >         RJEQ    CLEAR_RECTANGLE\r
+| 0001DC F409      >         BRNE    LOCAL\r
+| 0001DD C10B      >         RJMP    CLEAR_RECTANGLE\r
+|                  > LOCAL:\r
+| 0001DE 3613      |         CPI     A,'c'\r
+| 0001DF           >         RJEQ    GET_CLEAR_FRAME_RECT_SIZE\r
+| 0001DF F409      >         BRNE    LOCAL\r
+| 0001E0 CCC4      >         RJMP    GET_CLEAR_FRAME_RECT_SIZE\r
+|                  > LOCAL:\r
+| 0001E1 3414      |         CPI     A,'D'\r
+| 0001E2           >         RJEQ    DRAW_MODE\r
+| 0001E2 F409      >         BRNE    LOCAL\r
+| 0001E3 C0F2      >         RJMP    DRAW_MODE\r
+|                  > LOCAL:\r
+| 0001E4 3415      |         CPI     A,'E'\r
+| 0001E5           >         RJEQ    ENABLE_CNTRL\r
+| 0001E5 F409      >         BRNE    LOCAL\r
+| 0001E6 C0DF      >         RJMP    ENABLE_CNTRL\r
+|                  > LOCAL:\r
+| 0001E7 3416      |         CPI     A,'F'\r
+| 0001E8           >         RJEQ    GET_FILLED_RECTNC_SIZE\r
+| 0001E8 F409      >         BRNE    LOCAL\r
+| 0001E9 C10F      >         RJMP    GET_FILLED_RECTNC_SIZE\r
+|                  > LOCAL:\r
+| 0001EA 3616      |         CPI     A,'f'\r
+| 0001EB           >         RJEQ    GET_FRAME_RECT_SIZE\r
+| 0001EB F409      >         BRNE    LOCAL\r
+| 0001EC CCC4      >         RJMP    GET_FRAME_RECT_SIZE\r
+|                  > LOCAL:\r
+| 0001ED 3417      |         CPI     A,'G'\r
+| 0001EE           >         RJEQ    INTERPRET_MODE\r
+| 0001EE F409      >         BRNE    LOCAL\r
+| 0001EF C0A1      >         RJMP    INTERPRET_MODE\r
+|                  > LOCAL:\r
+| 0001F0 3418      |         CPI     A,'H'\r
+| 0001F1           >         RJEQ    GET_HALFTONE_RECT_SIZE\r
+| 0001F1 F409      >         BRNE    LOCAL\r
+| 0001F2 CCD6      >         RJMP    GET_HALFTONE_RECT_SIZE\r
+|                  > LOCAL:\r
+| 0001F3 3618      |         CPI     A,'h'\r
+| 0001F4           >         RJEQ    GET_CLEAR_HALFTONE_RECT_SIZE\r
+| 0001F4 F409      >         BRNE    LOCAL\r
+| 0001F5 CCC7      >         RJMP    GET_CLEAR_HALFTONE_RECT_SIZE\r
+|                  > LOCAL:\r
+| 0001F6 341B      |         CPI     A,'K'\r
+| 0001F7           >         RJEQ    CLR_DISP\r
+| 0001F7 F409      >         BRNE    LOCAL\r
+| 0001F8 C096      >         RJMP    CLR_DISP\r
+|                  > LOCAL:\r
+| 0001F9 341C      |         CPI     A,'L'\r
+| 0001FA           >         RJEQ    GO_SCROLL_REGION\r
+| 0001FA F409      >         BRNE    LOCAL\r
+| 0001FB C40A      >         RJMP    GO_SCROLL_REGION\r
+|                  > LOCAL:\r
+| 0001FC 341D      |         CPI     A,'M'\r
+| 0001FD           >         RJEQ    MOSFET_CONTROL\r
+| 0001FD F409      >         BRNE    LOCAL\r
+| 0001FE C02E      >         RJMP    MOSFET_CONTROL\r
+|                  > LOCAL:\r
+| 0001FF 341E      |         CPI     A,'N'\r
+| 000200           >         RJEQ    GET_RECTNC_SIZE\r
+| 000200 F409      >         BRNE    LOCAL\r
+| 000201 C103      >         RJMP    GET_RECTNC_SIZE\r
+|                  > LOCAL:\r
+| 000202 3510      |         CPI     A,'P'\r
+| 000203           >         RJEQ    PROP_FIXED_MODE\r
+| 000203 F409      >         BRNE    LOCAL\r
+| 000204 C09A      >         RJMP    PROP_FIXED_MODE\r
+|                  > LOCAL:\r
+| 000205 3512      |         CPI     A,'R'\r
+| 000206           >         RJEQ    GET_RECT_SIZE\r
+| 000206 F409      >         BRNE    LOCAL\r
+| 000207 C0E3      >         RJMP    GET_RECT_SIZE\r
+|                  > LOCAL:\r
+| 000208 3513      |         CPI     A,'S'\r
+| 000209           >         RJEQ    SET_CURSOR\r
+| 000209 F409      >         BRNE    LOCAL\r
+| 00020A C0D9      >         RJMP    SET_CURSOR\r
+|                  > LOCAL:\r
+| 00020B 3514      |         CPI     A,'T'\r
+| 00020C           >         RJEQ    SET_TIME\r
+| 00020C F409      >         BRNE    LOCAL\r
+| 00020D C040      >         RJMP    SET_TIME\r
+|                  > LOCAL:\r
+| 00020E 3515      |         CPI     A,'U'\r
+| 00020F           >         RJEQ    NULLSUB\r
+| 00020F F409      >         BRNE    LOCAL\r
+| 000210 C26B      >         RJMP    NULLSUB\r
+|                  > LOCAL:\r
+| 000211 3516      |         CPI     A,'V'\r
+| 000212 F419      |         BRNE    CONTRAST_CONTROL_SKIP\r
+| 000213 E210      |         LDI     A,1<<EEWR_ENABLE\r
+| 000214 2AE1      |         OR      API_STATE,A             ; ENABLE WRITE ACCESS TO EEPROM\r
+| 000215 C0FB      |         RJMP    CONTRAST_CONTROL\r
+|                  | CONTRAST_CONTROL_SKIP:\r
+| 000216 3517      |         CPI     A,'W'\r
+| 000217           >         RJEQ    NULLSUB\r
+| 000217 F409      >         BRNE    LOCAL\r
+| 000218 C263      >         RJMP    NULLSUB\r
+|                  > LOCAL:\r
+| 000219 3518      |         CPI     A,'X'\r
+| 00021A           >         RJEQ    SAVE_STATE\r
+| 00021A F409      >         BRNE    LOCAL\r
+| 00021B C1C4      >         RJMP    SAVE_STATE\r
+|                  > LOCAL:\r
+| 00021C 351A      |         CPI     A,'Z'\r
+| 00021D           >         RJEQ    TOUCH_ZONE\r
+| 00021D F409      >         BRNE    LOCAL\r
+| 00021E C1EE      >         RJMP    TOUCH_ZONE\r
+|                  > LOCAL:\r
+| 00021F 3310      |         CPI     A,'0'\r
+| 000220 F010      |         BRLO    ESC_SEQUENCE_ABORT\r
+| 000221 331A      |         CPI     A,'9'+1\r
+| 000222 F110      |         BRLO    SET_CHSET_A\r
+|                  | ESC_SEQUENCE_ABORT:\r
+| 000223 CF71      |         RJMP    MAIN_LOOP\r
+|                  | \r
+|                  | CROSSED_ZEROS:\r
+| 000224 D259      |         RCALL   RX_WAIT\r
+| 000225 FF10      |         SBRS    A,0\r
+| 000226 C003      |         RJMP    CROSSED_ZEROS_OFF\r
+| 000227 E014      |         LDI     A,1<<2\r
+| 000228 2AB1      |         OR      FLAGS,A\r
+| 000229 CF6B      |         RJMP    MAIN_LOOP\r
+|                  | CROSSED_ZEROS_OFF:\r
+| 00022A EF1B      |         LDI     A,~(1<<2)\r
+| 00022B 22B1      |         AND     FLAGS,A\r
+| 00022C CF68      |         RJMP    MAIN_LOOP\r
+|                  | \r
+|                  | MOSFET_CONTROL:\r
+| 00022D D250      |         RCALL   RX_WAIT\r
+| 00022E 3310      |         CPI     A,$30                   ; DO NOT TURN OFF BY ACCIDENT\r
+| 00022F F429      |         BRNE    MOSFET_CONTROL_DONE\r
+| 000230 94F8      |         CLI\r
+| 000231 E400      |         LDI     F,1<<6\r
+| 000232 2AB0      |         OR      FLAGS,F                 ; SAY WE TURNED OFF VIA COMMAND\r
+| 000233 9A8A      |         SBI     DDRD,2                  ; D2 = LOW, VSWT OFF\r
+| 000234 CF10      |         RJMP    SLEEP_ENTRY             ; GO AND SHUT DOWN DISPLAY\r
+|                  | MOSFET_CONTROL_DONE:\r
+| 000235 CF5F      |         RJMP    MAIN_LOOP\r
+|                  | \r
+| 000236 D247      | BUZZER: RCALL   RX_WAIT\r
+| 000237 931F      |         PUSH    A\r
+| 000238 E010      |         LDI     A,0                     ; HIGHEST FREQUENCY\r
+| 000239 C004      |         RJMP    BUZZ_AT_FREQ_A\r
+|                  | \r
+|                  | BUZZ_AT_FREQ:\r
+| 00023A D243      |         RCALL   RX_WAIT\r
+| 00023B 931F      |         PUSH    A\r
+| 00023C D241      |         RCALL   RX_WAIT\r
+| 00023D 701F      |         ANDI    A,$0F\r
+|                  | BUZZ_AT_FREQ_A:\r
+| 00023E 9310 0111 |         STS     BUZZ_PERIOD,A           ; SAVE REQUESTED PERIOD\r
+| 000240 911F      |         POP     A\r
+| 000241 9310 0110 |         STS     BUZZ_TIME,A             ; SAVE REQUESTED DURATION\r
+| 000243 CF51      |         RJMP    MAIN_LOOP\r
+|                  | \r
+|                  | SET_CHSET:\r
+| 000244 D239      |         RCALL   RX_WAIT\r
+|                  | SET_CHSET_A:\r
+| 000245 D130      |         RCALL   CHARACTER_SET_FIND      ; B:Y -> CHARACTER SET\r
+| 000246 E1C0      |         LDI     YL,$10\r
+| 000247 93C0 0103 |         STS     PTR,YL\r
+| 000249 93D0 0104 |         STS     PTR+1,YH\r
+| 00024B 9320 0105 |         STS     PTR+2,B\r
+| 00024D CF47      |         RJMP    MAIN_LOOP\r
+|                  | \r
+|                  | SET_TIME:\r
+| 00024E E010      |         LDI     A,0\r
+| 00024F BD15      |         OUT     TCCR2,A                 ; STOP COUNTING WHILE SETTING CLOCK\r
+| 000250 9310 015F |         STS     TIME_HSEC_64K,A\r
+| 000252 9310 0160 |         STS     TIME_HSEC_256,A\r
+| 000254 9310 0161 |         STS     TIME_HSEC,A\r
+| 000256 D227      |         RCALL   RX_WAIT\r
+| 000257 9310 0164 |         STS     TIME_HOUR,A\r
+| 000259 D224      |         RCALL   RX_WAIT\r
+| 00025A 9310 0163 |         STS     TIME_MINUTE,A\r
+| 00025C D221      |         RCALL   RX_WAIT\r
+| 00025D 9310 0162 |         STS     TIME_SECOND,A\r
+| 00025F D21E      |         RCALL   RX_WAIT\r
+| 000260 9310 0166 |         STS     DATE_MONTH,A\r
+| 000262 D21B      |         RCALL   RX_WAIT\r
+| 000263 9310 0165 |         STS     DATE_DAY,A\r
+| 000265 D218      |         RCALL   RX_WAIT\r
+| 000266 9310 0167 |         STS     DATE_YEAR,A\r
+| 000268 E013      |         LDI     A,3                     ; TIMER 2 DIVIDE BY 32 (4 HZ)\r
+|                  | ;**     LDI     A,6                     ; TIMER 2 DIVIDE BY 256\r
+| 000269 BD15      |         OUT     TCCR2,A\r
+| 00026A CF2A      |         RJMP    MAIN_LOOP\r
+|                  | \r
+| 00026B D001      | LF:     RCALL   LINE_FEED\r
+| 00026C CF28      |         RJMP    MAIN_LOOP\r
+|                  | \r
+|                  | LINE_FEED:\r
+| 00026D 920F      |         PUSH    R0\r
+| 00026E 91C0 0103 |         LDS     YL,PTR\r
+| 000270 91D0 0104 |         LDS     YH,PTR+1\r
+| 000272 9120 0105 |         LDS     B,PTR+2\r
+| 000274 5FDE      |         SUBI    YH,$FE\r
+| 000275 95C3      |         INC     YL\r
+| 000276           >         A14_A18 B\r
+| 000276 94F8      >         CLI\r
+| 000277 9130 0117 >         LDS     R19,LATCH10_SAV         ; AND THIS\r
+| 000279 2732      >         EOR     R19,B\r
+| 00027A 7E30      >         ANDI    R19,$E0\r
+| 00027B 2732      >         EOR     R19,B\r
+| 00027C BB3B      >         OUT     PORTA,R19\r
+| 00027D 9AC4      >         SBI     PORTB,4\r
+| 00027E 98C4      >         CBI     PORTB,4\r
+| 00027F 9478      >         SEI\r
+| 000280 9330 0117 >         STS     LATCH10_SAV,R19         ; MUST BE ATOMIC DUE TO TOGGLING M\r
+| 000282 D4D6      |         RCALL   LPMS\r
+| 000283 2F18      |         MOV     A,CURSORY\r
+| 000284 0D10      |         ADD     A,R0\r
+| 000285 0D10      |         ADD     A,R0\r
+| 000286 951A      |         DEC     A\r
+| 000287 3810      |         CPI     A,DISPLAY_LINES\r
+| 000288 F018      |         BRLO    INC_CURSORY\r
+| 000289 D0C0      |         RCALL   GO_SCROLL\r
+| 00028A 900F      |         POP     R0\r
+| 00028B 9508      |         RET\r
+|                  | \r
+|                  | INC_CURSORY:\r
+| 00028C 0D80      |         ADD     CURSORY,R0\r
+| 00028D 900F      |         POP     R0\r
+| 00028E 9508      |         RET\r
+|                  | \r
+|                  | CLR_DISP:\r
+| 00028F D522      |         RCALL   CLEAR_DISPLAY           ; CLEARS DISPLAY AND HOMES CURSOR\r
+| 000290 CF04      |         RJMP    MAIN_LOOP\r
+|                  | \r
+|                  | INTERPRET_MODE:\r
+| 000291 D1EC      |         RCALL   RX_WAIT\r
+| 000292 3310      |         CPI     A,$30\r
+| 000293 F409      |         BRNE    TEXT_MODE\r
+| 000294 C004      |         RJMP    L01A4\r
+|                  | TEXT_MODE:\r
+| 000295 3311      |         CPI     A,$31\r
+| 000296           >         RJEQ    GRAPHICS_MODE\r
+| 000296 F409      >         BRNE    LOCAL\r
+| 000297 C004      >         RJMP    GRAPHICS_MODE\r
+|                  > LOCAL:\r
+|                  | ;L01A3:\r
+| 000298 CEFC      |         RJMP    MAIN_LOOP\r
+|                  | \r
+| 000299 EF07      | L01A4:  LDI     F,$F7\r
+| 00029A 22B0      |         AND     FLAGS,F\r
+| 00029B CEF9      |         RJMP    MAIN_LOOP\r
+|                  | \r
+|                  | GRAPHICS_MODE:\r
+| 00029C E008      |         LDI     F,$08\r
+| 00029D 2AB0      |         OR      FLAGS,F\r
+| 00029E CEF6      |         RJMP    MAIN_LOOP\r
+|                  | \r
+|                  | PROP_FIXED_MODE:\r
+| 00029F D1DE      |         RCALL   RX_WAIT\r
+| 0002A0 3310      |         CPI     A,$30\r
+| 0002A1           >         RJEQ    FIXED\r
+| 0002A1 F409      >         BRNE    LOCAL\r
+| 0002A2 C003      >         RJMP    FIXED\r
+|                  > LOCAL:\r
+|                  | ;L01AE:\r
+| 0002A3 3311      |         CPI     A,$31\r
+| 0002A4           >         RJEQ    PROPORTIONAL\r
+| 0002A4 F409      >         BRNE    LOCAL\r
+| 0002A5 C003      >         RJMP    PROPORTIONAL\r
+|                  > LOCAL:\r
+|                  | L01B1:\r
+|                  | ;       RJMP    MAIN_LOOP\r
+|                  | \r
+| 0002A6 EE0F      | FIXED:  LDI     F,$EF\r
+| 0002A7 22B0      |         AND     FLAGS,F\r
+| 0002A8 CEEC      |         RJMP    MAIN_LOOP\r
+|                  | \r
+|                  | PROPORTIONAL:\r
+| 0002A9 E100      |         LDI     F,$10\r
+| 0002AA 2AB0      |         OR      FLAGS,F\r
+| 0002AB CEE9      |         RJMP    MAIN_LOOP\r
+|                  | \r
+|                  | BACK_SPACE:\r
+| 0002AC 91C0 0103 |         LDS     YL,PTR\r
+| 0002AE 91D0 0104 |         LDS     YH,PTR+1\r
+| 0002B0 9120 0105 |         LDS     B,PTR+2\r
+| 0002B2 5FDE      |         SUBI    YH,$FE\r
+| 0002B3           >         A14_A18 B\r
+| 0002B3 94F8      >         CLI\r
+| 0002B4 9130 0117 >         LDS     R19,LATCH10_SAV         ; AND THIS\r
+| 0002B6 2732      >         EOR     R19,B\r
+| 0002B7 7E30      >         ANDI    R19,$E0\r
+| 0002B8 2732      >         EOR     R19,B\r
+| 0002B9 BB3B      >         OUT     PORTA,R19\r
+| 0002BA 9AC4      >         SBI     PORTB,4\r
+| 0002BB 98C4      >         CBI     PORTB,4\r
+| 0002BC 9478      >         SEI\r
+| 0002BD 9330 0117 >         STS     LATCH10_SAV,R19         ; MUST BE ATOMIC DUE TO TOGGLING M\r
+| 0002BF D499      |         RCALL   LPMS\r
+| 0002C0 1970      |         SUB     CURSORX,R0\r
+| 0002C1 B71F      |         IN      A,SREG\r
+| 0002C2 FF12      |         SBRS    A,2\r
+| 0002C3 CED1      |         RJMP    MAIN_LOOP\r
+|                  | \r
+| 0002C4 2777      | CR:     CLR     CURSORX\r
+| 0002C5 CECF      |         RJMP    MAIN_LOOP\r
+|                  | \r
+|                  | ENABLE_CNTRL:\r
+| 0002C6 D1B7      |         RCALL   RX_WAIT\r
+| 0002C7 FD11      |         SBRC    A,1\r
+| 0002C8 C007      |         RJMP    ENABLE_UPDATE\r
+| 0002C9 FD10      |         SBRC    A,0\r
+| 0002CA C003      |         RJMP    ENABLE_ON\r
+|                  | ;ENABLE_OFF:\r
+| 0002CB ED0F      |         LDI     F,$DF\r
+| 0002CC 22B0      |         AND     FLAGS,F\r
+| 0002CD CEC7      |         RJMP    MAIN_LOOP\r
+|                  | ENABLE_ON:\r
+| 0002CE E200      |         LDI     F,$20\r
+| 0002CF 2AB0      |         OR      FLAGS,F\r
+|                  | ENABLE_UPDATE:\r
+| 0002D0 2700      |         CLR     F\r
+| 0002D1 9300 013B |         STS     LINE_COUNT,F            ; START UPDATE AT TOP OF SCREEN\r
+|                  | ENABLE_LOOP:\r
+| 0002D3 D2EA      |         RCALL   NICK_SUB2               ; IMMEDIATE UPDATE OF ENTIRE SCREEN\r
+| 0002D4 F7F1      |         BRNE    ENABLE_LOOP\r
+| 0002D5 CEBF      |         RJMP    MAIN_LOOP\r
+|                  | \r
+|                  | DRAW_MODE:\r
+| 0002D6 D1A7      |         RCALL   RX_WAIT\r
+| 0002D7 3310      |         CPI     A,$30\r
+| 0002D8           >         RJEQ    XOR_MODE\r
+| 0002D8 F409      >         BRNE    LOCAL\r
+| 0002D9 C004      >         RJMP    XOR_MODE\r
+|                  > LOCAL:\r
+|                  | ;L01D3:\r
+| 0002DA 3311      |         CPI     A,$31\r
+| 0002DB           >         RJEQ    OR_MODE\r
+| 0002DB F409      >         BRNE    LOCAL\r
+| 0002DC C004      >         RJMP    OR_MODE\r
+|                  > LOCAL:\r
+|                  | ;L01D6:\r
+| 0002DD CEB7      |         RJMP    MAIN_LOOP\r
+|                  | \r
+|                  | XOR_MODE:\r
+| 0002DE EF0E      |         LDI     F,$FE\r
+| 0002DF 22B0      |         AND     FLAGS,F\r
+| 0002E0 CEB4      |         RJMP    MAIN_LOOP\r
+|                  | \r
+|                  | OR_MODE:\r
+| 0002E1 E001      |         LDI     F,$01\r
+| 0002E2 2AB0      |         OR      FLAGS,F\r
+| 0002E3 CEB1      |         RJMP    MAIN_LOOP\r
+|                  | \r
+|                  | SET_CURSOR:\r
+| 0002E4 D199      |         RCALL   RX_WAIT\r
+| 0002E5 2F71      |         MOV     CURSORX,A\r
+| 0002E6 D197      | GET_Y:  RCALL   RX_WAIT\r
+| 0002E7 2F81      |         MOV     CURSORY,A\r
+| 0002E8 CEAC      |         RJMP    MAIN_LOOP\r
+|                  | \r
+|                  | CLEAR_RECTANGLE:\r
+| 0002E9 E002      |         LDI     F,$02\r
+| 0002EA 2AB0      |         OR      FLAGS,F\r
+|                  | \r
+|                  | GET_RECT_SIZE:\r
+| 0002EB 9370 0152 |         STS     RECT_X,CURSORX\r
+| 0002ED 9380 0153 |         STS     RECT_Y,CURSORY\r
+| 0002EF D18E      |         RCALL   RX_WAIT\r
+| 0002F0 9310 0154 |         STS     RECT_XX,A\r
+| 0002F2 D18B      |         RCALL   RX_WAIT\r
+| 0002F3 9310 0155 |         STS     RECT_YY,A\r
+| 0002F5 D317      |         RCALL   DRAW_RECT\r
+| 0002F6 EF0D      |         LDI     F,$FD\r
+| 0002F7 22B0      |         AND     FLAGS,F\r
+| 0002F8 CE9C      |         RJMP    MAIN_LOOP\r
+|                  | \r
+|                  | GET_FILLED_RECTNC_SIZE:\r
+| 0002F9 9370 0156 |         STS     RECTNC_X,CURSORX\r
+| 0002FB 9380 0157 |         STS     RECTNC_Y,CURSORY\r
+| 0002FD D180      |         RCALL   RX_WAIT\r
+| 0002FE 9310 0158 |         STS     RECTNC_XX,A\r
+| 000300 D17D      |         RCALL   RX_WAIT\r
+| 000301 9310 0159 |         STS     RECTNC_YY,A\r
+| 000303 D35E      |         RCALL   FILLED_RECTNC\r
+| 000304 CE90      |         RJMP    MAIN_LOOP\r
+|                  | \r
+|                  | GET_RECTNC_SIZE:\r
+| 000305 9370 0156 |         STS     RECTNC_X,CURSORX\r
+| 000307 9380 0157 |         STS     RECTNC_Y,CURSORY\r
+| 000309 D174      |         RCALL   RX_WAIT\r
+| 00030A 9310 0158 |         STS     RECTNC_XX,A\r
+| 00030C D171      |         RCALL   RX_WAIT\r
+| 00030D 9310 0159 |         STS     RECTNC_YY,A\r
+| 00030F D377      |         RCALL   DRAW_RECTNC\r
+| 000310 CE84      |         RJMP    MAIN_LOOP\r
+|                  | \r
+|                  | CONTRAST_CONTROL:\r
+| 000311 D16C      |         RCALL   RX_WAIT\r
+|                  | \r
+| 000312 FF10      |         SBRS    A,0\r
+| 000313 C00B      |         RJMP    CONTRAST_DARKER\r
+|                  | \r
+|                  | ;CONTRAST_LIGHTER:\r
+| 000314 9110 010E |         LDS     A,CONTRASTL\r
+| 000316 9120 010F |         LDS     B,CONTRASTH\r
+| 000318 5F1C      |         SUBI    A,LOW(-CONTRAST_STEP)\r
+| 000319 4F2F      |         SBCI    B,HIGH(-CONTRAST_STEP)\r
+|                  | \r
+| 00031A 3B1C      |         CPI     A,LOW(CONTRAST_MAX)\r
+| 00031B EF0D      |         LDI     F,HIGH(CONTRAST_MAX)\r
+| 00031C 0720      |         CPC     B,F\r
+| 00031D F4A8      |         BRSH    CONTRAST_DONE\r
+| 00031E C00A      |         RJMP    CONTRAST_WRITE\r
+|                  | \r
+|                  | CONTRAST_DARKER:\r
+| 00031F 9110 010E |         LDS     A,CONTRASTL\r
+| 000321 9120 010F |         LDS     B,CONTRASTH\r
+| 000323 5014      |         SUBI    A,LOW(CONTRAST_STEP)\r
+| 000324 4020      |         SBCI    B,HIGH(CONTRAST_STEP)\r
+|                  | \r
+| 000325 331A      |         CPI     A,LOW(CONTRAST_MIN)\r
+| 000326 EF0D      |         LDI     F,HIGH(CONTRAST_MIN)\r
+| 000327 0720      |         CPC     B,F\r
+| 000328 F050      |         BRLO    CONTRAST_DONE\r
+|                  | \r
+|                  | CONTRAST_WRITE:\r
+| 000329 9310 010E |         STS     CONTRASTL,A\r
+| 00032B 9320 010F |         STS     CONTRASTH,B\r
+|                  | \r
+| 00032D E022      |         LDI     B,EE_CONTRAST ; 20mar03 tavrasm *2\r
+| 00032E D00D      |         RCALL   EE_WRITE\r
+| 00032F 9110 010F |         LDS     A,CONTRASTH\r
+| 000331 E023      |         LDI     B,EE_CONTRAST+1 ; 20mar03 tavrasm *2+1\r
+| 000332 D009      |         RCALL   EE_WRITE\r
+|                  | \r
+|                  | CONTRAST_DONE:\r
+| 000333 CE61      |         RJMP    MAIN_LOOP\r
+|                  | \r
+|                  | EE_READ:\r
+| 000334 99E1      |         SBIC    EECR,EEWE\r
+| 000335 CFFE      |         RJMP    EE_READ                 ; WAIT UNTIL EEPROM BECOMES READY\r
+|                  | \r
+| 000336 BB2E      |         OUT     EEARL,B\r
+| 000337 2722      |         CLR     B\r
+| 000338 BB2F      |         OUT     EEARH,B                 ; ASSUME EEPROM ADDRESSES < $100\r
+| 000339 9AE0      |         SBI     EECR,EERE               ; READ DATA BYTE\r
+| 00033A B31D      |         IN      A,EEDR                  ; GET LATCHED DATA BYTE\r
+| 00033B 9508      |         RET\r
+|                  | \r
+|                  | EE_WRITE:\r
+| 00033C 99E1      |         SBIC    EECR,EEWE\r
+| 00033D CFFE      |         RJMP    EE_WRITE                ; WAIT FOR EEPROM TO BECOME READY\r
+|                  | \r
+| 00033E FEE5      |         SBRS    API_STATE,EEWR_ENABLE\r
+|                  | EE_WRITE_HALT0:\r
+| 00033F CFFF      |         RJMP    EE_WRITE_HALT0          ; HALT PROCESSOR IF EE WRITING DISABLED\r
+|                  | \r
+| 000340 BB2E      |         OUT     EEARL,B\r
+| 000341 2722      |         CLR     B\r
+| 000342 BB2F      |         OUT     EEARH,B                 ; ASSUME EEPROM ADDRESSES < $100\r
+| 000343 BB1D      |         OUT     EEDR,A                  ; LATCH NEW VALUE\r
+|                  | \r
+| 000344 94F8      |         CLI\r
+| 000345 FEE5      |         SBRS    API_STATE,EEWR_ENABLE\r
+|                  | EE_WRITE_HALT1:\r
+| 000346 CFFF      |         RJMP    EE_WRITE_HALT1          ; HALT PROCESSOR IF EE WRITING DISABLED\r
+|                  | \r
+| 000347 9AE2      |         SBI     EECR,EEMWE              ; MASTER WRITE ENABLE\r
+| 000348 9AE1      |         SBI     EECR,EEWE               ; START WRITING NEW VALUE\r
+| 000349 9518      |         RETI\r
+|                  | \r
+|                  | GO_SCROLL:\r
+| 00034A C736      |         RJMP    SCROLL\r
+|                  | \r
+|                  | CHARACTER_SET_DOWNLOAD:\r
+| 00034B D132      |         RCALL   RX_WAIT\r
+| 00034C D029      |         RCALL   CHARACTER_SET_FIND      ; B:Y -> CHARACTER SET\r
+|                  | \r
+| 00034D D130      |         RCALL   RX_WAIT\r
+| 00034E 2FA1      |         MOV     XL,A\r
+| 00034F D12E      |         RCALL   RX_WAIT\r
+| 000350 2FB1      |         MOV     XH,A\r
+|                  | \r
+|                  | CHARACTER_SET_DOWNLOAD_LOOP:\r
+| 000351 D12C      |         RCALL   RX_WAIT\r
+|                  | \r
+| 000352           >         A14_A18 B\r
+| 000352 94F8      >         CLI\r
+| 000353 9130 0117 >         LDS     R19,LATCH10_SAV         ; AND THIS\r
+| 000355 2732      >         EOR     R19,B\r
+| 000356 7E30      >         ANDI    R19,$E0\r
+| 000357 2732      >         EOR     R19,B\r
+| 000358 BB3B      >         OUT     PORTA,R19\r
+| 000359 9AC4      >         SBI     PORTB,4\r
+| 00035A 98C4      >         CBI     PORTB,4\r
+| 00035B 9478      >         SEI\r
+| 00035C 9330 0117 >         STS     LATCH10_SAV,R19         ; MUST BE ATOMIC DUE TO TOGGLING M\r
+| 00035E D2A4      |         RCALL   GO_WRITE_BYTE\r
+|                  | \r
+| 00035F 9621      |         ADIW    YL,1\r
+| 000360 9711      |         SBIW    XL,1\r
+| 000361 2F1A      |         MOV     A,XL\r
+| 000362 2B1B      |         OR      A,XH\r
+| 000363           >         RJNE    CHARACTER_SET_DOWNLOAD_LOOP ; BRNE ??\r
+| 000363 F009      >         BREQ    LOCAL\r
+| 000364 CFEC      >         RJMP    CHARACTER_SET_DOWNLOAD_LOOP\r
+|                  > LOCAL:\r
+| 000365 CE2F      |         RJMP    MAIN_LOOP\r
+|                  | \r
+|                  | CHARACTER_SET_QUERY:\r
+| 000366 D117      |         RCALL   RX_WAIT\r
+| 000367 D00E      |         RCALL   CHARACTER_SET_FIND      ; B:Y -> CHARACTER SET\r
+|                  | \r
+| 000368 931F      |         PUSH    A\r
+| 000369 D01A      |         RCALL   CHARACTER_SET_CRC\r
+|                  | \r
+| 00036A E11B      |         LDI     A,$1B\r
+| 00036B D133      |         RCALL   TX_WAIT\r
+| 00036C E31F      |         LDI     A,'?'\r
+| 00036D D131      |         RCALL   TX_WAIT\r
+| 00036E 911F      |         POP     A\r
+| 00036F 5D10      |         SUBI    A,-'0'\r
+| 000370 D12E      |         RCALL   TX_WAIT\r
+|                  | \r
+| 000371 2F1D      |         MOV     A,YH\r
+| 000372 D060      |         RCALL   TX_HEX_BYTE\r
+| 000373 2F1C      |         MOV     A,YL\r
+| 000374 D05E      |         RCALL   TX_HEX_BYTE\r
+| 000375 CE1F      |         RJMP    MAIN_LOOP\r
+|                  | \r
+|                  | CHARACTER_SET_FIND:\r
+| 000376 E0C0      |         LDI     YL,LOW(CHSET_DSPRAM)\r
+tsv3.asm:1414: Warning : Constant 0x400 out of range (0x00-0xFF)\r
+| 000377 E0D0      |         LDI     YH,HIGH(CHSET_DSPRAM)<<4\r
+| 000378 E624      |         LDI     B,HIGH(CHSET_DSPRAM>>4)\r
+|                  | \r
+| 000379 701F      |         ANDI    A,$0F\r
+| 00037A 301A      |         CPI     A,CHARACTER_SETS\r
+| 00037B F408      |         BRSH    CHARACTER_SET_FIND_DONE ; DEFAULT TO SET 0\r
+|                  | \r
+| 00037C 0F21      |         ADD     B,A\r
+|                  | \r
+|                  | CHARACTER_SET_FIND_DONE:\r
+| 00037D 9526      |         LSR     B\r
+| 00037E 95D7      |         ROR     YH\r
+| 00037F 9526      |         LSR     B\r
+| 000380 95D7      |         ROR     YH\r
+| 000381 95D6      |         LSR     YH\r
+| 000382 95D6      |         LSR     YH\r
+| 000383 9508      |         RET\r
+|                  | \r
+|                  | CHARACTER_SET_CRC:\r
+| 000384 E1A6      |         LDI     XL,LOW($216)\r
+| 000385 E0B2      |         LDI     XH,HIGH($216)           ; PAST CRC, INDEX, CELL SIZES\r
+| 000386 0FAC      |         ADD     XL,YL\r
+| 000387 1FBD      |         ADC     XH,YH                   ; B:X -> LENGTH WORD IN CHARACTER SET\r
+| 000388           >         A14_A18 B\r
+| 000388 94F8      >         CLI\r
+| 000389 9130 0117 >         LDS     R19,LATCH10_SAV         ; AND THIS\r
+| 00038B 2732      >         EOR     R19,B\r
+| 00038C 7E30      >         ANDI    R19,$E0\r
+| 00038D 2732      >         EOR     R19,B\r
+| 00038E BB3B      >         OUT     PORTA,R19\r
+| 00038F 9AC4      >         SBI     PORTB,4\r
+| 000390 98C4      >         CBI     PORTB,4\r
+| 000391 9478      >         SEI\r
+| 000392 9330 0117 >         STS     LATCH10_SAV,R19         ; MUST BE ATOMIC DUE TO TOGGLING M\r
+| 000394 D26D      |         RCALL   GO_READ_BYTE\r
+| 000395 2FE1      |         MOV     ZL,A\r
+| 000396 9611      |         ADIW    XL,1\r
+| 000397 D26A      |         RCALL   GO_READ_BYTE\r
+| 000398 2FF1      |         MOV     ZH,A                    ; Z = LENGTH OF DATA INCLUDING CRC\r
+|                  | \r
+| 000399 2FAC      |         MOV     XL,YL\r
+| 00039A 2FBD      |         MOV     XH,YH\r
+| 00039B 9614      |         ADIW    XL,4                    ; B:X -> DATA BLOCK EXCLUDING CRC\r
+|                  | \r
+| 00039C EFCF      |         LDI     YL,$FF\r
+| 00039D EFDF      |         LDI     YH,$FF                  ; Y = SEED FOR CRC CALCULATION\r
+|                  | \r
+| 00039E 9731      |         SBIW    ZL,1\r
+| 00039F 70FF      |         ANDI    ZH,$0F\r
+| 0003A0 9734      |         SBIW    ZL,4                    ; Z = LENGTH OF DATA-1 EXCLUDING CRC\r
+| 0003A1 F180      |         BRLO    CHARACTER_SET_CRC_DONE\r
+| 0003A2 9631      |         ADIW    ZL,1\r
+|                  | \r
+|                  | CHARACTER_SET_CRC_BYTE:\r
+| 0003A3 D25E      |         RCALL   GO_READ_BYTE\r
+| 0003A4 9611      |         ADIW    XL,1\r
+|                  | \r
+| 0003A5 E201      |         LDI     F,$21\r
+| 0003A6 E120      |         LDI     B,$10                   ; B:F = CRC POLYNOMIAL\r
+| 0003A7 27D1      |         EOR     YH,A                    ; Y = CRC REGISTER WITH NEW DATA BYTE\r
+|                  | \r
+| 0003A8 0FCC      |         LSL     YL\r
+| 0003A9 1FDD      |         ROL     YH\r
+| 0003AA F410      |         BRCC    CHARACTER_SET_CRC_BIT0\r
+| 0003AB 27C0      |         EOR     YL,F\r
+| 0003AC 27D2      |         EOR     YH,B\r
+|                  | CHARACTER_SET_CRC_BIT0:\r
+| 0003AD 0FCC      |         LSL     YL\r
+| 0003AE 1FDD      |         ROL     YH\r
+| 0003AF F410      |         BRCC    CHARACTER_SET_CRC_BIT1\r
+| 0003B0 27C0      |         EOR     YL,F\r
+| 0003B1 27D2      |         EOR     YH,B\r
+|                  | CHARACTER_SET_CRC_BIT1:\r
+| 0003B2 0FCC      |         LSL     YL\r
+| 0003B3 1FDD      |         ROL     YH\r
+| 0003B4 F410      |         BRCC    CHARACTER_SET_CRC_BIT2\r
+| 0003B5 27C0      |         EOR     YL,F\r
+| 0003B6 27D2      |         EOR     YH,B\r
+|                  | CHARACTER_SET_CRC_BIT2:\r
+| 0003B7 0FCC      |         LSL     YL\r
+| 0003B8 1FDD      |         ROL     YH\r
+| 0003B9 F410      |         BRCC    CHARACTER_SET_CRC_BIT3\r
+| 0003BA 27C0      |         EOR     YL,F\r
+| 0003BB 27D2      |         EOR     YH,B\r
+|                  | CHARACTER_SET_CRC_BIT3:\r
+| 0003BC 0FCC      |         LSL     YL\r
+| 0003BD 1FDD      |         ROL     YH\r
+| 0003BE F410      |         BRCC    CHARACTER_SET_CRC_BIT4\r
+| 0003BF 27C0      |         EOR     YL,F\r
+| 0003C0 27D2      |         EOR     YH,B\r
+|                  | CHARACTER_SET_CRC_BIT4:\r
+| 0003C1 0FCC      |         LSL     YL\r
+| 0003C2 1FDD      |         ROL     YH\r
+| 0003C3 F410      |         BRCC    CHARACTER_SET_CRC_BIT5\r
+| 0003C4 27C0      |         EOR     YL,F\r
+| 0003C5 27D2      |         EOR     YH,B\r
+|                  | CHARACTER_SET_CRC_BIT5:\r
+| 0003C6 0FCC      |         LSL     YL\r
+| 0003C7 1FDD      |         ROL     YH\r
+| 0003C8 F410      |         BRCC    CHARACTER_SET_CRC_BIT6\r
+| 0003C9 27C0      |         EOR     YL,F\r
+| 0003CA 27D2      |         EOR     YH,B\r
+|                  | CHARACTER_SET_CRC_BIT6:\r
+| 0003CB 0FCC      |         LSL     YL\r
+| 0003CC 1FDD      |         ROL     YH\r
+| 0003CD F410      |         BRCC    CHARACTER_SET_CRC_BIT7\r
+| 0003CE 27C0      |         EOR     YL,F\r
+| 0003CF 27D2      |         EOR     YH,B\r
+|                  | CHARACTER_SET_CRC_BIT7:\r
+|                  | \r
+| 0003D0 9731      |         SBIW    ZL,1\r
+| 0003D1 F689      |         BRNE    CHARACTER_SET_CRC_BYTE\r
+|                  | \r
+|                  | CHARACTER_SET_CRC_DONE:\r
+| 0003D2 9508      |         RET\r
+|                  | \r
+|                  | TX_HEX_BYTE:\r
+| 0003D3 931F      |         PUSH    A\r
+| 0003D4 9512      |         SWAP    A\r
+| 0003D5 D004      |         RCALL   HEX_NIBBLE\r
+| 0003D6 D0C8      |         RCALL   TX_WAIT\r
+| 0003D7 911F      |         POP     A\r
+| 0003D8 D001      |         RCALL   HEX_NIBBLE\r
+| 0003D9 C0C5      |         RJMP    TX_WAIT\r
+|                  | \r
+|                  | HEX_NIBBLE:\r
+| 0003DA 701F      |         ANDI    A,$0F\r
+| 0003DB 6310      |         ORI     A,$30\r
+| 0003DC 331A      |         CPI     A,$3A\r
+| 0003DD F008      |         BRLO    HEX_NIBBLE_DONE\r
+| 0003DE 5F19      |         SUBI    A,-7\r
+|                  | HEX_NIBBLE_DONE:\r
+| 0003DF 9508      |         RET\r
+|                  | \r
+|                  | SAVE_STATE:\r
+| 0003E0 D09D      |         RCALL   RX_WAIT\r
+| 0003E1 FD10      |         SBRC    A,0\r
+| 0003E2 C013      |         RJMP    RESTORE_STATE\r
+|                  | \r
+|                  | SAVE_ENTRY:\r
+| 0003E3 9370 016C |         STS     CURSORX_SAVE,CURSORX\r
+| 0003E5 9380 016D |         STS     CURSORY_SAVE,CURSORY\r
+| 0003E7 92B0 016E |         STS     FLAGS_SAVE,FLAGS\r
+| 0003E9 9110 0103 |         LDS     A,PTR\r
+| 0003EB 9310 016F |         STS     PTR_SAVE,A\r
+| 0003ED 9110 0104 |         LDS     A,PTR+1\r
+| 0003EF 9310 0170 |         STS     PTR_SAVE+1,A\r
+| 0003F1 9110 0105 |         LDS     A,PTR+2\r
+| 0003F3 9310 0171 |         STS     PTR_SAVE+2,A\r
+| 0003F5 CD9F      |         RJMP    MAIN_LOOP\r
+|                  | \r
+|                  | RESTORE_STATE:\r
+| 0003F6 9170 016C |         LDS     CURSORX,CURSORX_SAVE\r
+| 0003F8 9180 016D |         LDS     CURSORY,CURSORY_SAVE\r
+| 0003FA EC10      |         LDI     A,$C0\r
+| 0003FB 22B1      |         AND     FLAGS,A\r
+| 0003FC 9110 016E |         LDS     A,FLAGS_SAVE\r
+| 0003FE 731F      |         ANDI    A,$3F\r
+| 0003FF 2AB1      |         OR      FLAGS,A\r
+| 000400 9110 016F |         LDS     A,PTR_SAVE\r
+| 000402 9310 0103 |         STS     PTR,A\r
+| 000404 9110 0170 |         LDS     A,PTR_SAVE+1\r
+| 000406 9310 0104 |         STS     PTR+1,A\r
+| 000408 9110 0171 |         LDS     A,PTR_SAVE+2\r
+| 00040A 9310 0105 |         STS     PTR+2,A\r
+| 00040C CD88      |         RJMP    MAIN_LOOP\r
+|                  | \r
+|                  | TOUCH_ZONE:\r
+| 00040D D070      |         RCALL   RX_WAIT\r
+| 00040E 9310 015A |         STS     TOUCH_KEY,A\r
+|                  | \r
+| 000410 D06D      |         RCALL   RX_WAIT\r
+| 000411 2FC1      |         MOV     YL,A\r
+| 000412 5F17      |         SUBI    A,-9\r
+| 000413 D05D      |         RCALL   DIVIDE_10\r
+| 000414 9320 015B |         STS     TOUCH_X,B\r
+|                  | \r
+| 000416 D067      |         RCALL   RX_WAIT\r
+| 000417 2FD1      |         MOV     YH,A\r
+| 000418 5F1C      |         SUBI    A,-4\r
+| 000419 D05C      |         RCALL   DIVIDE_13\r
+| 00041A 9320 015C |         STS     TOUCH_Y,B\r
+|                  | \r
+| 00041C D061      |         RCALL   RX_WAIT\r
+| 00041D 0F1C      |         ADD     A,YL\r
+| 00041E 501F      |         SUBI    A,15\r
+| 00041F D051      |         RCALL   DIVIDE_10\r
+| 000420 9320 015D |         STS     TOUCH_XX,B\r
+|                  | \r
+| 000422 D05B      |         RCALL   RX_WAIT\r
+| 000423 0F1D      |         ADD     A,YH\r
+| 000424 5111      |         SUBI    A,17\r
+| 000425 D050      |         RCALL   DIVIDE_13\r
+| 000426 9320 015E |         STS     TOUCH_YY,B\r
+|                  | \r
+| 000428 91D0 015C |         LDS     YH,TOUCH_Y\r
+|                  | TOUCH_ZONE_Y:\r
+| 00042A 9110 015E |         LDS     A,TOUCH_YY\r
+| 00042C 1B1D      |         SUB     A,YH\r
+| 00042D F408      |         BRSH    TOUCH_ZONE_Y_CONT\r
+| 00042E C041      |         RJMP    TOUCH_ZONE_Y_END\r
+|                  | TOUCH_ZONE_Y_CONT:\r
+|                  | \r
+| 00042F 91C0 015B |         LDS     YL,TOUCH_X\r
+| 000431 2F1C      |         MOV     A,YL\r
+| 000432 0F1D      |         ADD     A,YH\r
+| 000433 2F2D      |         MOV     B,YH\r
+| 000434 0F22      |         LSL     B\r
+| 000435 0F22      |         LSL     B\r
+| 000436 0F22      |         LSL     B\r
+| 000437 0F12      |         ADD     A,B\r
+| 000438 0F22      |         LSL     B\r
+| 000439 0F12      |         ADD     A,B\r
+|                  | \r
+| 00043A E0A0      |         LDI     XL,LOW(RTN_DSPRAM)\r
+| 00043B EEB0      |         LDI     XH,HIGH(RTN_DSPRAM) ;<<2\r
+| 00043C E020      |         LDI     B,0\r
+| 00043D 0FA1      |         ADD     XL,A\r
+| 00043E 1FB2      |         ADC     XH,B\r
+|                  | \r
+| 00043F E12B      |         LDI     B,HIGH(RTN_DSPRAM>>6)   ; B:X -> RETURN CODE TABLE\r
+| 000440           >         A14_A18 B\r
+| 000440 94F8      >         CLI\r
+| 000441 9130 0117 >         LDS     R19,LATCH10_SAV         ; AND THIS\r
+| 000443 2732      >         EOR     R19,B\r
+| 000444 7E30      >         ANDI    R19,$E0\r
+| 000445 2732      >         EOR     R19,B\r
+| 000446 BB3B      >         OUT     PORTA,R19\r
+| 000447 9AC4      >         SBI     PORTB,4\r
+| 000448 98C4      >         CBI     PORTB,4\r
+| 000449 9478      >         SEI\r
+| 00044A 9330 0117 >         STS     LATCH10_SAV,R19         ; MUST BE ATOMIC DUE TO TOGGLING M\r
+|                  | \r
+|                  | TOUCH_ZONE_X:\r
+| 00044C 9110 015D |         LDS     A,TOUCH_XX\r
+| 00044E 1B1C      |         SUB     A,YL\r
+| 00044F F0F0      |         BRLO    TOUCH_ZONE_X_END\r
+|                  | \r
+| 000450           >         A0_A13  XL,XH\r
+| 000450 2F3A      >         MOV     R19,XL\r
+| 000451 733F      >         ANDI    R19,$3F\r
+| 000452 BB35      >         OUT     PORTC,R19\r
+|                  > \r
+| 000453 2F3B      >         MOV     R19,XH\r
+| 000454 0F33      >         LSL     R19\r
+| 000455 0F33      >         LSL     R19\r
+| 000456 FBA7      >         BST     XL,7                    ; A7\r
+| 000457 F931      >         BLD     R19,1\r
+| 000458 FBA6      >         BST     XL,6                    ; A6\r
+| 000459 F930      >         BLD     R19,0\r
+| 00045A BB3B      >         OUT     PORTA,R19\r
+| 00045B 94F8      >         CLI\r
+| 00045C 9AC3      >         SBI     PORTB,3\r
+| 00045D 98C3      >         CBI     PORTB,3\r
+| 00045E 9478      >         SEI\r
+| 00045F 9330 0118 >         STS     LATCH11_SAV,R19\r
+| 000461 9110 015A |         LDS     A,TOUCH_KEY\r
+| 000463           >         RAMWR   A                       ; WRITE DATA TO DSPRAM\r
+| 000463 BB1B      >         OUT     PORTA,A\r
+| 000464 94F8      >         CLI\r
+| 000465 98C1      >         CBI     PORTB,1\r
+| 000466 98C0      >         CBI     PORTB,0\r
+| 000467 0000      >         NOP\r
+| 000468 9AC0      >         SBI     PORTB,0\r
+| 000469 9478      >         SEI\r
+| 00046A 9AC1      >         SBI     PORTB,1\r
+|                  | \r
+| 00046B 9611      |         ADIW    XL,1\r
+| 00046C 95C3      |         INC     YL\r
+| 00046D CFDE      |         RJMP    TOUCH_ZONE_X\r
+|                  | \r
+|                  | TOUCH_ZONE_X_END:\r
+| 00046E 95D3      |         INC     YH\r
+| 00046F CFBA      |         RJMP    TOUCH_ZONE_Y\r
+|                  | \r
+|                  | TOUCH_ZONE_Y_END:\r
+| 000470 CD24      |         RJMP    MAIN_LOOP\r
+|                  | \r
+|                  | DIVIDE_10:\r
+| 000471 EF2F      |         LDI     B,-1\r
+|                  | DIVIDE_10_LOOP:\r
+| 000472 9523      |         INC     B\r
+| 000473 501A      |         SUBI    A,10\r
+| 000474 F7E8      |         BRCC    DIVIDE_10_LOOP\r
+| 000475 9508      |         RET\r
+|                  | \r
+|                  | DIVIDE_13:\r
+| 000476 EF2F      |         LDI     B,-1\r
+|                  | DIVIDE_13_LOOP:\r
+| 000477 9523      |         INC     B\r
+| 000478 501D      |         SUBI    A,13\r
+| 000479 F7E8      |         BRCC    DIVIDE_13_LOOP\r
+| 00047A 9508      |         RET\r
+|                  | \r
+|                  | NULLSUB2:\r
+| 00047B D002      |         RCALL   RX_WAIT\r
+|                  | \r
+|                  | NULLSUB:\r
+| 00047C D001      |         RCALL   RX_WAIT\r
+| 00047D CD17      |         RJMP    MAIN_LOOP\r
+|                  | \r
+|                  | RX_WAIT:\r
+| 00047E EC10      |         LDI     A,-$40\r
+| 00047F 9310 016B |         STS     BREAK_COUNT,A           ; SET VERY SHORT BREAK TIMEOUT\r
+|                  | \r
+|                  | RX_WAIT_LOOP:\r
+|                  |         ; FORMERLY DONE IN TIMER 2 OVERFLOW INTERRUPT\r
+| 000481 95A8      |         WDR\r
+|                  | \r
+| 000482 E010      |         LDI     A,0\r
+| 000483 BB1E      |         OUT     EEARL,A                 ; RESET EEPROM ADDRESS REG WHILE IDLE\r
+| 000484 BB1F      |         OUT     EEARH,A\r
+|                  | \r
+| 000485 EC10      |         LDI     A,-$40\r
+| 000486 9980      |         SBIC    PIND,0                  ; RXD HIGH?\r
+| 000487 9310 016B |         STS     BREAK_COUNT,A           ; YES, TOP UP VERY SHORT BREAK TIMEOUT\r
+|                  | \r
+| 000489 FCB5      |         SBRC    FLAGS,5                 ; DISPLAY ENABLED?\r
+| 00048A D133      |         RCALL   NICK_SUB2               ; IF SO, COPY 1 LINE ACCORDING TO FLAGS\r
+|                  | \r
+| 00048B 2033      |         TST     RX_COUNT\r
+| 00048C F3A1      |         BREQ    RX_WAIT_LOOP\r
+|                  | \r
+| 00048D E010      |         LDI     A,0                     ; SET LONGEST POSSIBLE BREAK TIMEOUT\r
+| 00048E 9310 016B |         STS     BREAK_COUNT,A           ; WHILE PROCESSING CHARACTER\r
+|                  | \r
+|                  | RX_CHAR:\r
+| 000490           >         MRX_CHAR\r
+| 000490 93CF      >         PUSH    YL\r
+| 000491 93DF      >         PUSH    YH\r
+|                  > \r
+| 000492 2DC2      >         MOV     YL,RX_PTR\r
+| 000493 58C0      >         SUBI    YL,-RX_BUF\r
+| 000494 27DD      >         CLR     YH\r
+| 000495 8118      >         LD      A,Y\r
+|                  > \r
+| 000496 94F8      >         CLI\r
+| 000497 943A      >         DEC     RX_COUNT\r
+| 000498 9423      >         INC     RX_PTR\r
+| 000499 E7CF      >         LDI     YL,RX_SIZE-1\r
+| 00049A 222C      >         AND     RX_PTR,YL\r
+| 00049B 9478      >         SEI\r
+|                  > \r
+| 00049C 91DF      >         POP     YH\r
+| 00049D 91CF      >         POP     YL\r
+| 00049E 9508      >         RET\r
+|                  > ; FALL INTO MTX_WAIT FOR LOOPBACK TEST\r
+|                  | TX_WAIT:\r
+| 00049F           >         MTX_WAIT\r
+| 00049F 931F      >         PUSH    A\r
+|                  > TX_WAIT_LOOP:\r
+| 0004A0 95A8      >         WDR ; 10OCT02 ALTHOUGH IT USUALLY DOESN'T MATTER (HANDY FOR LOOPBACK)\r
+| 0004A1 2D15      >         MOV     A,TX_COUNT\r
+| 0004A2 3210      >         CPI     A,TX_SIZE\r
+| 0004A3 F7E0      >         BRSH    TX_WAIT_LOOP\r
+| 0004A4 911F      >         POP     A\r
+|                  | TX_CHAR:\r
+| 0004A5           >         MTX_CHAR\r
+| 0004A5 93CF      >         PUSH    YL\r
+| 0004A6 93DF      >         PUSH    YH\r
+| 0004A7 B7DF      >  IN YH,SREG\r
+| 0004A8 94F8      >         CLI\r
+| 0004A9 2DC5      >         MOV     YL,TX_COUNT\r
+| 0004AA 0DC4      >         ADD     YL,TX_PTR\r
+| 0004AB BFDF      >  OUT SREG,YH    ;SEI\r
+| 0004AC 71CF      >         ANDI    YL,TX_SIZE-1\r
+| 0004AD 5AC0      >         SUBI    YL,-TX_BUF\r
+| 0004AE 27DD      >         CLR     YH\r
+| 0004AF 8318      >         ST      Y,A\r
+|                  > \r
+| 0004B0 9453      >         INC     TX_COUNT\r
+|                  > \r
+| 0004B1 91DF      >         POP     YH\r
+| 0004B2 91CF      >         POP     YL\r
+| 0004B3 9508      >         RET\r
+|                  | \r
+|                  | DRAW_CHAR_TTY:\r
+| 0004B4 D0D2      |         RCALL   FIND_CHAR               ; SET UP CHAR_PTR FROM A = CHAR\r
+| 0004B5 D0EF      |         RCALL   CHAR_WIDTH              ; SET UP R0 = PROP WIDTH FROM CHAR PTR\r
+|                  | \r
+| 0004B6 2700      |         CLR     F\r
+| 0004B7 9300 0112 |         STS     TEMP,F                  ; NUDGE FOR FIXED SPACING MODE\r
+|                  | \r
+| 0004B9 FCB4      |         SBRC    FLAGS,4\r
+| 0004BA C00F      |         RJMP    PROP_MODE               ; FORCED TO FIXED SPACING MODE?\r
+|                  | \r
+| 0004BB 91C0 0103 |         LDS     YL,PTR\r
+| 0004BD 91D0 0104 |         LDS     YH,PTR+1\r
+| 0004BF 5FDE      |         SUBI    YH,$FE\r
+| 0004C0 2CF0      |         MOV     W,R0\r
+| 0004C1 D297      |         RCALL   LPMS                    ; GET R0 = CELL WIDTH FOR CHARACTER SET\r
+| 0004C2 920F      |         PUSH    R0\r
+| 0004C3 180F      |         SUB     R0,W\r
+| 0004C4 F408      |         BRCC    NUDGE_OK\r
+| 0004C5 2400      |         CLR     R0                      ; NO NEGATIVE CENTRING\r
+|                  | NUDGE_OK:\r
+| 0004C6 9406      |         LSR     R0\r
+| 0004C7 9200 0112 |         STS     TEMP,R0\r
+| 0004C9 900F      |         POP     R0                      ; RESTORE R0 = FIXED CELL WIDTH\r
+|                  | \r
+|                  | PROP_MODE:\r
+| 0004CA FCB3      |         SBRC    FLAGS,3\r
+| 0004CB C008      |         RJMP    OK_LINE                 ; FORCED TO GRAPHICS MODE?\r
+|                  | \r
+| 0004CC 2F07      |         MOV     F,CURSORX\r
+| 0004CD 0D00      |         ADD     F,R0                    ; CHECK IF CHAR WILL FIT ON THIS LINE\r
+| 0004CE F428      |         BRCC    OK_LINE\r
+|                  | \r
+| 0004CF 2777      |         CLR     CURSORX\r
+| 0004D0 DD9C      |         RCALL   LINE_FEED               ; NO, WRAP CURSOR PRIOR TO DRAWING CHAR\r
+|                  | \r
+| 0004D1 9110 0105 |         LDS     A,PTR+2\r
+| 0004D3 D6B9      |         RCALL   SELECT_XPAGE            ; IN CASE WE SCROLLED THE DISPLAY\r
+|                  | \r
+|                  | OK_LINE:\r
+| 0004D4 9100 0112 |         LDS     F,TEMP\r
+| 0004D6 0F07      |         ADD     F,CURSORX\r
+| 0004D7 9300 014E |         STS     CHAR_X,F\r
+| 0004D9 9380 014F |         STS     CHAR_Y,CURSORY          ; SET UP TOP LEFT COORDINATES\r
+|                  | \r
+| 0004DB 0D70      |         ADD     CURSORX,R0              ; ADVANCE CURSOR\r
+|                  | \r
+|                  | DRAW_CHAR:\r
+| 0004DC 9160 014E |         LDS     XPIXEL,CHAR_X\r
+| 0004DE 9090 014F |         LDS     LINE_CNT,CHAR_Y\r
+|                  | \r
+| 0004E0 FE86      |         SBRS    X_SIZE,6\r
+| 0004E1 C007      |         RJMP    Y_OFFSET_DONE           ; Y OFFSET FOUND?\r
+|                  | \r
+| 0004E2 91C0 0150 |         LDS     YL,CHAR_PTR\r
+| 0004E4 91D0 0151 |         LDS     YH,CHAR_PTR+1\r
+| 0004E6 9722      |         SBIW    YL,$02\r
+| 0004E7 D271      |         RCALL   LPMS\r
+| 0004E8 0C90      |         ADD     LINE_CNT,R0\r
+|                  | \r
+|                  | Y_OFFSET_DONE:\r
+| 0004E9 FE87      |         SBRS    X_SIZE,7\r
+| 0004EA C007      |         RJMP    X_OFFSET_DONE           ; X OFFSET FOUND?\r
+|                  | \r
+| 0004EB 91C0 0150 |         LDS     YL,CHAR_PTR\r
+| 0004ED 91D0 0151 |         LDS     YH,CHAR_PTR+1\r
+| 0004EF 9723      |         SBIW    YL,$03\r
+| 0004F0 D268      |         RCALL   LPMS\r
+| 0004F1 0D60      |         ADD     XPIXEL,R0\r
+|                  | \r
+|                  | X_OFFSET_DONE:\r
+| 0004F2 D25A      |         RCALL   CALCULATE_XBYTE\r
+| 0004F3 9360 0102 |         STS     XPIXEL_SAV,XPIXEL\r
+| 0004F5 92A0 0100 |         STS     XBYTE_SAV,XBYTE\r
+|                  | \r
+| 0004F7 91C0 0150 |         LDS     YL,CHAR_PTR\r
+| 0004F9 91D0 0151 |         LDS     YH,CHAR_PTR+1\r
+| 0004FB 9621      |         ADIW    YL,$01\r
+| 0004FC D25C      |         RCALL   LPMS                    ; GET R0 = Y LINES FOR CHARACTER\r
+| 0004FD 2C70      |         MOV     Y_SIZE,R0\r
+|                  | \r
+| 0004FE EF0F      |         LDI     F,$FF\r
+| 0004FF BB0A      |         OUT     DDRA,F\r
+| 000500 9AC0      |         SBI     PORTB,0                 ; REMOVE_CS\r
+| 000501 E10F      |         LDI     F,$1F\r
+| 000502 2280      |         AND     X_SIZE,F\r
+| 000503 9280 0101 |         STS     X_SIZE_SAV,X_SIZE\r
+| 000505 2700      |         CLR     F\r
+| 000506 1280      |         CPSE    X_SIZE,F\r
+| 000507 C001      |         RJMP    DRAW_IT\r
+| 000508 C07D      |         RJMP    DONE\r
+|                  | \r
+|                  | DRAW_IT:\r
+| 000509 27AA      |         CLR     XL\r
+| 00050A 2DB9      |         MOV     XH,LINE_CNT\r
+| 00050B 95B6      |         LSR     XH\r
+| 00050C 95A7      |         ROR     XL\r
+| 00050D 95B6      |         LSR     XH\r
+| 00050E 95A7      |         ROR     XL\r
+| 00050F 5EB0      |         SUBI    XH,HIGH(-DRAW_DSPRAM)           ; DRAW INTO DRAWING BUFFER\r
+| 000510 C007      |         RJMP    FIRSTT\r
+|                  | \r
+| 000511 9493      | MORE_Y: INC     LINE_CNT\r
+| 000512 5CA0      |         SUBI    XL,LOW(-$40)\r
+| 000513 4FBF      |         SBCI    XH,HIGH(-$40)\r
+|                  | \r
+| 000514 9080 0101 |         LDS     X_SIZE,X_SIZE_SAV\r
+| 000516 90A0 0100 |         LDS     XBYTE,XBYTE_SAV\r
+|                  | \r
+| 000518 2AAA      | FIRSTT: OR      XBYTE,XL\r
+| 000519 2722      |         CLR     B                       ; RESIDUAL\r
+|                  | \r
+| 00051A 9621      | MORE_X: ADIW    YL,$01\r
+| 00051B 9110 0105 |         LDS     A,PTR+2\r
+| 00051D D66F      |         RCALL   SELECT_XPAGE\r
+| 00051E D23A      |         RCALL   LPMS\r
+|                  | \r
+| 00051F 2711      |         CLR     A\r
+| 000520 9160 0102 |         LDS     XPIXEL,XPIXEL_SAV\r
+| 000522 2366      |         TST     XPIXEL\r
+| 000523 F039      |         BREQ    OUT_DATA\r
+|                  | \r
+| 000524 9488      |         CLC\r
+|                  | SHIFT_AGAIN:\r
+| 000525 9407      |         ROR     R0\r
+| 000526 9517      |         ROR     A\r
+| 000527 956A      |         DEC     XPIXEL\r
+| 000528 F7E1      |         BRNE    SHIFT_AGAIN\r
+|                  | \r
+| 000529 2A02      |         OR      R0,B\r
+| 00052A 2F21      |         MOV     B,A\r
+|                  | \r
+|                  | OUT_DATA:\r
+| 00052B E108      |         LDI     F,HIGH(DRAW_DSPRAM>>6)\r
+| 00052C           >         A14_A18 F\r
+| 00052C 94F8      >         CLI\r
+| 00052D 9130 0117 >         LDS     R19,LATCH10_SAV         ; AND THIS\r
+| 00052F 2730      >         EOR     R19,F\r
+| 000530 7E30      >         ANDI    R19,$E0\r
+| 000531 2730      >         EOR     R19,F\r
+| 000532 BB3B      >         OUT     PORTA,R19\r
+| 000533 9AC4      >         SBI     PORTB,4\r
+| 000534 98C4      >         CBI     PORTB,4\r
+| 000535 9478      >         SEI\r
+| 000536 9330 0117 >         STS     LATCH10_SAV,R19         ; MUST BE ATOMIC DUE TO TOGGLING M\r
+| 000538           >         A0_A13  XBYTE,XH\r
+| 000538 2D3A      >         MOV     R19,XBYTE\r
+| 000539 733F      >         ANDI    R19,$3F\r
+| 00053A BB35      >         OUT     PORTC,R19\r
+|                  > \r
+| 00053B 2F3B      >         MOV     R19,XH\r
+| 00053C 0F33      >         LSL     R19\r
+| 00053D 0F33      >         LSL     R19\r
+| 00053E FAA7      >         BST     XBYTE,7                 ; A7\r
+| 00053F F931      >         BLD     R19,1\r
+| 000540 FAA6      >         BST     XBYTE,6                 ; A6\r
+| 000541 F930      >         BLD     R19,0\r
+| 000542 BB3B      >         OUT     PORTA,R19\r
+| 000543 94F8      >         CLI\r
+| 000544 9AC3      >         SBI     PORTB,3\r
+| 000545 98C3      >         CBI     PORTB,3\r
+| 000546 9478      >         SEI\r
+| 000547 9330 0118 >         STS     LATCH11_SAV,R19\r
+| 000549           >         RAMRXW  R0,F\r
+| 000549 2700      >         CLR     F\r
+| 00054A BB0A      >         OUT     DDRA,F\r
+| 00054B 94F8      >         CLI\r
+| 00054C 98C0      >         CBI     PORTB,0\r
+| 00054D 0000      >         NOP\r
+| 00054E 98C1      >         CBI     PORTB,1\r
+| 00054F B309      >         IN      F,PINA\r
+| 000550 2600      >         EOR     R0,F\r
+| 000551 FCB0      >         SBRC    FLAGS,0\r
+| 000552 2A00      >         OR      R0,F\r
+| 000553 EF0F      >         LDI     F,$FF\r
+| 000554 BB0A      >         OUT     DDRA,F\r
+| 000555 BA0B      >         OUT     PORTA,R0\r
+| 000556 0000      >         NOP\r
+| 000557 9AC0      >         SBI     PORTB,0\r
+| 000558 9478      >         SEI\r
+| 000559 9AC1      >         SBI     PORTB,1\r
+|                  | \r
+| 00055A 94A3      |         INC     XBYTE\r
+| 00055B 948A      |         DEC     X_SIZE\r
+| 00055C           >         RJNE    MORE_X\r
+| 00055C F009      >         BREQ    LOCAL\r
+| 00055D CFBC      >         RJMP    MORE_X\r
+|                  > LOCAL:\r
+|                  | \r
+| 00055E 2322      |         TST     B\r
+| 00055F F111      |         BREQ    SKIP_FINAL\r
+| 000560           >         A0_A13  XBYTE,XH\r
+| 000560 2D3A      >         MOV     R19,XBYTE\r
+| 000561 733F      >         ANDI    R19,$3F\r
+| 000562 BB35      >         OUT     PORTC,R19\r
+|                  > \r
+| 000563 2F3B      >         MOV     R19,XH\r
+| 000564 0F33      >         LSL     R19\r
+| 000565 0F33      >         LSL     R19\r
+| 000566 FAA7      >         BST     XBYTE,7                 ; A7\r
+| 000567 F931      >         BLD     R19,1\r
+| 000568 FAA6      >         BST     XBYTE,6                 ; A6\r
+| 000569 F930      >         BLD     R19,0\r
+| 00056A BB3B      >         OUT     PORTA,R19\r
+| 00056B 94F8      >         CLI\r
+| 00056C 9AC3      >         SBI     PORTB,3\r
+| 00056D 98C3      >         CBI     PORTB,3\r
+| 00056E 9478      >         SEI\r
+| 00056F 9330 0118 >         STS     LATCH11_SAV,R19\r
+| 000571           >         RAMRXW  B,F\r
+| 000571 2700      >         CLR     F\r
+| 000572 BB0A      >         OUT     DDRA,F\r
+| 000573 94F8      >         CLI\r
+| 000574 98C0      >         CBI     PORTB,0\r
+| 000575 0000      >         NOP\r
+| 000576 98C1      >         CBI     PORTB,1\r
+| 000577 B309      >         IN      F,PINA\r
+| 000578 2720      >         EOR     B,F\r
+| 000579 FCB0      >         SBRC    FLAGS,0\r
+| 00057A 2B20      >         OR      B,F\r
+| 00057B EF0F      >         LDI     F,$FF\r
+| 00057C BB0A      >         OUT     DDRA,F\r
+| 00057D BB2B      >         OUT     PORTA,B\r
+| 00057E 0000      >         NOP\r
+| 00057F 9AC0      >         SBI     PORTB,0\r
+| 000580 9478      >         SEI\r
+| 000581 9AC1      >         SBI     PORTB,1\r
+|                  | \r
+|                  | SKIP_FINAL:\r
+| 000582 D031      |         RCALL   NICK_SUB1\r
+| 000583 947A      |         DEC     Y_SIZE\r
+| 000584           >         RJNE    MORE_Y\r
+| 000584 F009      >         BREQ    LOCAL\r
+| 000585 CF8B      >         RJMP    MORE_Y\r
+|                  > LOCAL:\r
+|                  | \r
+| 000586 9508      | DONE:   RET\r
+|                  | \r
+|                  | FIND_CHAR:\r
+| 000587 2FC1      |         MOV     YL,A\r
+| 000588 27DD      |         CLR     YH\r
+| 000589 0FCC      |         LSL     YL\r
+| 00058A 1FDD      |         ROL     YH\r
+| 00058B 9110 0103 |         LDS     A,PTR\r
+| 00058D 0FC1      |         ADD     YL,A\r
+| 00058E 9110 0104 |         LDS     A,PTR+1\r
+| 000590 1FD1      |         ADC     YH,A\r
+| 000591 9110 0105 |         LDS     A,PTR+2\r
+| 000593 D5F9      |         RCALL   SELECT_XPAGE\r
+| 000594 D1C4      |         RCALL   LPMS\r
+| 000595 9621      |         ADIW    YL,$01\r
+| 000596 2CF0      |         MOV     W,R0\r
+| 000597 D1C1      |         RCALL   LPMS\r
+| 000598 2DCF      |         MOV     YL,W\r
+| 000599 2DD0      |         MOV     YH,R0\r
+| 00059A 9110 0103 |         LDS     A,PTR\r
+| 00059C 0FC1      |         ADD     YL,A\r
+| 00059D 9110 0104 |         LDS     A,PTR+1\r
+| 00059F 1FD1      |         ADC     YH,A\r
+| 0005A0 93C0 0150 |         STS     CHAR_PTR,YL\r
+| 0005A2 93D0 0151 |         STS     CHAR_PTR+1,YH\r
+| 0005A4 9508      |         RET\r
+|                  | \r
+|                  | CHAR_WIDTH:\r
+| 0005A5 91C0 0150 |         LDS     YL,CHAR_PTR\r
+| 0005A7 91D0 0151 |         LDS     YH,CHAR_PTR+1\r
+| 0005A9 D1AF      |         RCALL   LPMS\r
+| 0005AA 2C80      |         MOV     X_SIZE,R0\r
+| 0005AB 9721      |         SBIW    YL,$01\r
+| 0005AC FC85      |         SBRC    X_SIZE,5\r
+| 0005AD C1AB      |         RJMP    LPMS                    ; PROPORTIONAL WIDTH IS PRESENT\r
+| 0005AE 91C0 0103 |         LDS     YL,PTR\r
+| 0005B0 91D0 0104 |         LDS     YH,PTR+1\r
+| 0005B2 5FDE      |         SUBI    YH,$FE\r
+| 0005B3 C1A5      |         RJMP    LPMS                    ; NO PROPORTIONAL WIDTH, USE CELL WIDTH\r
+|                  | \r
+|                  | NICK_SUB1:                              ; SET FLAG FOR COPY, LINE_CNT\r
+| 0005B4 93CF      |         PUSH    YL\r
+| 0005B5 93DF      |         PUSH    YH\r
+|                  | \r
+| 0005B6 2D19      |         MOV     A,LINE_CNT\r
+| 0005B7 D039      |         RCALL   FIND_BIT\r
+| 0005B8 8118      |         LD      A,Y\r
+| 0005B9 2B12      |         OR      A,B\r
+| 0005BA 8318      |         ST      Y,A\r
+|                  | \r
+| 0005BB 91DF      |         POP     YH\r
+| 0005BC 91CF      |         POP     YL\r
+| 0005BD 9508      |         RET\r
+|                  | \r
+|                  | NICK_SUB2:                              ; TEST FLAG AND COPY, LINE_COUNT\r
+| 0005BE 932F      |         PUSH    B\r
+| 0005BF 93CF      |         PUSH    YL\r
+| 0005C0 93DF      |         PUSH    YH\r
+|                  | \r
+| 0005C1 9110 013B |         LDS     A,LINE_COUNT\r
+| 0005C3 D02D      |         RCALL   FIND_BIT\r
+| 0005C4 8118      |         LD      A,Y\r
+| 0005C5 2312      |         AND     A,B\r
+| 0005C6           >         RJEQ    NICK_SUB2_DONE\r
+| 0005C6 F409      >         BRNE    LOCAL\r
+| 0005C7 C01F      >         RJMP    NICK_SUB2_DONE\r
+|                  > LOCAL:\r
+|                  | \r
+| 0005C8 8128      |         LD      B,Y\r
+| 0005C9 2721      |         EOR     B,A\r
+| 0005CA 8328      |         ST      Y,B\r
+|                  | \r
+|                  |         ; LET'S BE SAFE\r
+| 0005CB E010      |         LDI     A,0                     ; SET LONGEST POSSIBLE BREAK TIMEOUT\r
+| 0005CC 9310 016B |         STS     BREAK_COUNT,A           ; WHILE COPYING TO DISPLAY BUFFER\r
+|                  | \r
+| 0005CE 93AF      |         PUSH    XL\r
+| 0005CF 93BF      |         PUSH    XH\r
+|                  | \r
+| 0005D0 27CC      |         CLR     YL\r
+| 0005D1 91D0 013B |         LDS     YH,LINE_COUNT\r
+| 0005D3 95D6      |         LSR     YH\r
+| 0005D4 95C7      |         ROR     YL\r
+| 0005D5 95D6      |         LSR     YH\r
+| 0005D6 95C7      |         ROR     YL                      ; Y -> DISPLAY BUFFER\r
+|                  | \r
+| 0005D7 2FAC      |         MOV     XL,YL\r
+| 0005D8 2FBD      |         MOV     XH,YH\r
+| 0005D9 5EB0      |         SUBI    XH,HIGH(-DRAW_DSPRAM)   ; X -> DRAWING BUFFER\r
+|                  | \r
+| 0005DA E118      |         LDI     A,HIGH(DRAW_DSPRAM>>6)\r
+| 0005DB D5B1      |         RCALL   SELECT_XPAGE\r
+|                  | \r
+| 0005DC E220      |         LDI     B,32\r
+| 0005DD D56C      |         RCALL   COPY_BYTES              ; 240 PIXELS, PLUS 16 FOR SAMSUNG\r
+|                  | \r
+| 0005DE 9712      |         SBIW    XL,2\r
+| 0005DF 9626      |         ADIW    YL,6\r
+| 0005E0 E022      |         LDI     B,2\r
+| 0005E1 D568      |         RCALL   COPY_BYTES              ; REPEAT FINAL 16 PIXELS FOR HYUNDAI\r
+|                  | \r
+| 0005E2 91BF      |         POP     XH\r
+| 0005E3 91AF      |         POP     XL\r
+|                  | \r
+| 0005E4 EC10      |         LDI     A,-$40\r
+| 0005E5 9310 016B |         STS     BREAK_COUNT,A           ; SET VERY SHORT BREAK TIMEOUT\r
+|                  | \r
+|                  | NICK_SUB2_DONE:\r
+| 0005E7 9110 013B |         LDS     A,LINE_COUNT\r
+| 0005E9 9513      |         INC     A\r
+| 0005EA 771F      |         ANDI    A,DISPLAY_LINES-1\r
+| 0005EB 9310 013B |         STS     LINE_COUNT,A\r
+|                  | \r
+| 0005ED 91DF      |         POP     YH\r
+| 0005EE 91CF      |         POP     YL\r
+| 0005EF 912F      |         POP     B\r
+| 0005F0 9508      |         RET\r
+|                  | \r
+|                  | ; NEW CODE: (NOT WORKING YET)\r
+|                  | ; WE HAVE JUST DRAWN INTO THE DRAWING BUFFER AT $62000,\r
+|                  | ; AND NOW WANT TO COPY THE DOT ROW CONCERNED\r
+|                  | ; TO THE THE DISPLAY BUFFER AT $60000\r
+|                  | ;       CLI\r
+|                  | ;\r
+|                  | ;       PUSH    YL\r
+|                  | ;       PUSH    XL\r
+|                  | ;       PUSH    XH\r
+|                  | ;\r
+|                  | ;       A0_A13  YL,YH\r
+|                  | ;\r
+|                  | ;       LDI     XL,LOW(ROWBUF)          ; SRAM BUFFER FOR BLOCK READ\r
+|                  | ;       LDI     XH,HIGH(ROWBUF)\r
+|                  | ;       CLR     A\r
+|                  | ;       OUT     DDRA,A                  ; PORTA INPUT\r
+|                  | ;       CBI     PORTB,0                 ; CS ON\r
+|                  | ;       IN      YL,PORTC\r
+|                  | ;       ANDI    YL,$C0                  ; POINT TO START OF ROW\r
+|                  | ;       LDI     B,$20                   ; COPYING 32 BYTES\r
+|                  | ;NSUB0: OUT     PORTC,YL                ; SET ADDRESS\r
+|                  | ;       INC     YL                      ; NEED SOME DELAY HERE\r
+|                  | ;       DEC     B\r
+|                  | ;       IN      A,PINA                  ; READ DATA\r
+|                  | ;       ST      X+,A                    ; SAVE IN ROW BUFFER\r
+|                  | ;       BRNE    NSUB0\r
+|                  | ;       SBI     PORTB,0                 ; CS OFF\r
+|                  | ;       SER     A\r
+|                  | ;       OUT     DDRA,A                  ; PORTA OUTPUT\r
+|                  | ;\r
+|                  | ;       LDI     XL,LOW(ROWBUF)          ; SRAM BUFFER FOR BLOCK READ\r
+|                  | ;       LDI     XH,HIGH(ROWBUF)\r
+|                  | ;\r
+|                  | ;       LDI     A,LATCH11_SAV\r
+|                  | ;       ANDI    A,$7F                   ; POINT TO $2000 LOWER\r
+|                  | ;       OUT     PORTA,A\r
+|                  | ;       SBI     PORTB,3\r
+|                  | ;       CBI     PORTB,3\r
+|                  | ;\r
+|                  | ;       IN      YL,PORTC\r
+|                  | ;       ANDI    YL,$C0                  ; POINT TO START OF ROW\r
+|                  | ;       LDI     B,$20                   ; COPYING 32 BYTES\r
+|                  | ;       CBI     PORTB,1                 ; WE ON\r
+|                  | ;NSUB1: OUT     PORTC,YL                ; SET ADDRESS\r
+|                  | ;       LD      A,X+                    ; GET DATA FROM ROW BUFFER\r
+|                  | ;       OUT     PORTA,A\r
+|                  | ;       INC     YL                      ; MAY AS WELL DELAY HERE\r
+|                  | ;       DEC     B\r
+|                  | ;       CBI     PORTB,0                 ; CS ON\r
+|                  | ;       SBI     PORTB,0                 ; CS OFF\r
+|                  | ;       BRNE    NSUB1\r
+|                  | ;\r
+|                  | ;       ADDI    YL,7                    ; SHIFT LAST 2 BYTES FOR HYUNDAI\r
+|                  | ;       OUT     PORTC,YL                ; SET ADDRESS\r
+|                  | ;       CBI     PORTB,0                 ; CS ON\r
+|                  | ;       SBI     PORTB,0                 ; CS OFF\r
+|                  | ;       DEC     YL\r
+|                  | ;       OUT     PORTC,YL                ; SET ADDRESS\r
+|                  | ;       SBIW    XL,2\r
+|                  | ;       LD      A,X\r
+|                  | ;       OUT     PORTA,A\r
+|                  | ;       CBI     PORTB,0                 ; CS ON\r
+|                  | ;       SBI     PORTB,0                 ; CS OFF\r
+|                  | ;\r
+|                  | ;       SBI     PORTB,1                 ; WE OFF\r
+|                  | ;       LDI     A,LATCH11_SAV           ; RESTORE H ADDRESS\r
+|                  | ;       OUT     PORTA,A\r
+|                  | ;       SBI     PORTB,3\r
+|                  | ;       CBI     PORTB,3\r
+|                  | ;\r
+|                  | ;       POP     XH\r
+|                  | ;       POP     XL\r
+|                  | ;       POP     YL\r
+|                  | ;       SEI\r
+|                  | ;       RET\r
+|                  | \r
+|                  | FIND_BIT:\r
+| 0005F1 E3CC      |         LDI     YL,LOW(LINE_FLAGS)\r
+| 0005F2 E0D1      |         LDI     YH,HIGH(LINE_FLAGS)\r
+|                  |  ; LET'S BE SAFE\r
+| 0005F3 771F      |  ANDI A,$7F\r
+| 0005F4 2F21      |         MOV     B,A\r
+| 0005F5 9526      |         LSR     B\r
+| 0005F6 9526      |         LSR     B\r
+| 0005F7 9526      |         LSR     B\r
+| 0005F8 0FC2      |         ADD     YL,B\r
+| 0005F9 E020      |         LDI     B,0\r
+| 0005FA 1FD2      |         ADC     YH,B\r
+| 0005FB E021      |         LDI     B,1\r
+| 0005FC 7017      |         ANDI    A,7\r
+| 0005FD F019      |         BREQ    FIND_BIT_RET\r
+|                  | FIND_BIT_LOOP:\r
+| 0005FE 0F22      |         LSL     B\r
+| 0005FF 951A      |         DEC     A\r
+| 000600 F7E9      |         BRNE    FIND_BIT_LOOP\r
+|                  | FIND_BIT_RET:\r
+| 000601 9508      |         RET\r
+|                  | \r
+|                  | GO_READ_BYTE:\r
+| 000602 C554      |         RJMP    READ_BYTE\r
+|                  | \r
+|                  | GO_WRITE_BYTE:\r
+| 000603 C56F      |         RJMP    WRITE_BYTE\r
+|                  | \r
+|                  | GO_CLEAR_BYTES:\r
+| 000604 C54C      |         RJMP    CLEAR_BYTES\r
+|                  | \r
+|                  | GO_SELECT_XPAGE:\r
+| 000605 C587      |         RJMP    SELECT_XPAGE\r
+|                  | \r
+|                  | GO_SCROLL_REGION:\r
+| 000606 C497      |         RJMP    SCROLL_REGION\r
+|                  | \r
+|                  | GO_MAIN_LOOP:\r
+| 000607 CB8D      |         RJMP    MAIN_LOOP\r
+|                  | \r
+|                  | GO_EXT_INT0:\r
+| 000608 C1DF      |         RJMP    EXT_INT0\r
+|                  | \r
+|                  | GO_EXT_INT1:\r
+| 000609 C1DF      |         RJMP    EXT_INT1\r
+|                  | \r
+|                  | GO_TIM2_OVF:\r
+| 00060A C58F      |         RJMP    TIM2_OVF\r
+|                  | \r
+|                  | GO_T1_OVERFLOW:\r
+| 00060B C1E6      |         RJMP    T1_OVERFLOW\r
+|                  | \r
+|                  | GO_T0_OVERFLOW:\r
+| 00060C C2C6      |         RJMP    T0_OVERFLOW\r
+|                  | \r
+|                  | DRAW_RECT:\r
+| 00060D 9478      |         SEI\r
+| 00060E 9090 0153 |         LDS     LINE_CNT,RECT_Y\r
+| 000610 9160 0152 |         LDS     XPIXEL,RECT_X\r
+| 000612 D13A      |         RCALL   CALCULATE_XBYTE\r
+| 000613 9360 0102 |         STS     XPIXEL_SAV,XPIXEL\r
+| 000615 92A0 0100 |         STS     XBYTE_SAV,XBYTE\r
+| 000617 9070 0155 |         LDS     Y_SIZE,RECT_YY\r
+| 000619 27CC      |         CLR     YL\r
+| 00061A 2DD9      |         MOV     YH,LINE_CNT\r
+| 00061B 95D6      |         LSR     YH\r
+| 00061C 95C7      |         ROR     YL\r
+| 00061D 95D6      |         LSR     YH\r
+| 00061E 95C7      |         ROR     YL\r
+| 00061F 5ED0      |         SUBI    YH,HIGH(-DRAW_DSPRAM)   ; DRAW INTO DRAWING BUFFER\r
+| 000620 E118      |         LDI     A,HIGH(DRAW_DSPRAM>>6)\r
+| 000621 D56B      |         RCALL   SELECT_XPAGE\r
+| 000622 C007      |         RJMP    L03A3\r
+| 000623 5CC0      | L039A:  SUBI    YL,LOW(-$40)\r
+| 000624 4FDF      |         SBCI    YH,HIGH(-$40)\r
+| 000625 9493      |         INC     LINE_CNT\r
+| 000626 9160 0102 |         LDS     XPIXEL,XPIXEL_SAV\r
+| 000628 90A0 0100 |         LDS     XBYTE,XBYTE_SAV\r
+| 00062A 2AAC      | L03A3:  OR      XBYTE,YL\r
+| 00062B EF1F      |         LDI     A,$FF\r
+| 00062C 9080 0154 |         LDS     X_SIZE,RECT_XX\r
+| 00062E E000      |         LDI     F,$00\r
+| 00062F 1680      |         CP      X_SIZE,F\r
+| 000630 F041      |         BREQ    L03B0\r
+| 000631 E008      |         LDI     F,$08\r
+| 000632 1680      |         CP      X_SIZE,F\r
+| 000633 F0B8      |         BRLO    L03C2\r
+| 000634 2366      |         TST     XPIXEL\r
+| 000635 F019      |         BREQ    L03B0\r
+| 000636 9516      | L03AD:  LSR     A\r
+| 000637 956A      |         DEC     XPIXEL\r
+| 000638 F7E9      |         BRNE    L03AD\r
+| 000639 D13B      | L03B0:  RCALL   WR_DISP_MEM\r
+| 00063A E008      |         LDI     F,$08\r
+| 00063B 9110 0102 |         LDS     A,XPIXEL_SAV\r
+| 00063D 1B01      |         SUB     F,A\r
+| 00063E 1A80      |         SUB     X_SIZE,F\r
+| 00063F 94A3      |         INC     XBYTE\r
+| 000640 EF1F      |         LDI     A,$FF\r
+| 000641 E008      | L03B8:  LDI     F,$08\r
+| 000642 1680      |         CP      X_SIZE,F\r
+| 000643 F038      |         BRLO    L03C2\r
+| 000644 F0B1      |         BREQ    L03D2\r
+| 000645 D12F      |         RCALL   WR_DISP_MEM\r
+| 000646 EF1F      |         LDI     A,$FF\r
+| 000647 E008      |         LDI     F,$08\r
+| 000648 1A80      |         SUB     X_SIZE,F\r
+| 000649 94A3      |         INC     XBYTE\r
+| 00064A CFF6      |         RJMP    L03B8\r
+| 00064B 2088      | L03C2:  TST     X_SIZE\r
+| 00064C F079      |         BREQ    L03D3\r
+| 00064D 9516      | L03C4:  LSR     A\r
+| 00064E 948A      |         DEC     X_SIZE\r
+| 00064F F7E9      |         BRNE    L03C4\r
+| 000650 9510      |         COM     A\r
+| 000651 2366      |         TST     XPIXEL\r
+| 000652 F041      |         BREQ    L03D2\r
+| 000653 2722      |         CLR     B\r
+| 000654 9516      | L03CB:  LSR     A\r
+| 000655 9527      |         ROR     B\r
+| 000656 956A      |         DEC     XPIXEL\r
+| 000657 F7E1      |         BRNE    L03CB\r
+| 000658 D11C      |         RCALL   WR_DISP_MEM\r
+| 000659 94A3      |         INC     XBYTE\r
+| 00065A 2F12      |         MOV     A,B\r
+| 00065B D119      | L03D2:  RCALL   WR_DISP_MEM\r
+| 00065C DF57      | L03D3:  RCALL   NICK_SUB1\r
+| 00065D 947A      |         DEC     Y_SIZE\r
+| 00065E 2700      |         CLR     F\r
+| 00065F 1270      |         CPSE    Y_SIZE,F\r
+| 000660 CFC2      |         RJMP    L039A\r
+| 000661 9508      | NO_GO:  RET\r
+|                  | \r
+|                  | FILLED_RECTNC:\r
+| 000662 9100 0158 |         LDS     F,RECTNC_XX\r
+| 000664 950A      |         DEC     F\r
+| 000665 3002      |         CPI     F,2\r
+| 000666 F3D0      |         BRLO    NO_GO\r
+| 000667 9100 0159 |         LDS     F,RECTNC_YY\r
+| 000669 3003      |         CPI     F,3\r
+| 00066A F3B0      |         BRLO    NO_GO\r
+|                  | \r
+| 00066B 9100 0156 |         LDS     F,RECTNC_X\r
+| 00066D 9503      |         INC     F\r
+| 00066E 9300 0152 |         STS     RECT_X,F\r
+| 000670 9100 0157 |         LDS     F,RECTNC_Y\r
+| 000672 9300 0153 |         STS     RECT_Y,F\r
+| 000674 9080 0158 |         LDS     X_SIZE,RECTNC_XX\r
+| 000676 948A      |         DEC     X_SIZE\r
+| 000677 948A      |         DEC     X_SIZE\r
+| 000678 9280 0154 |         STS     RECT_XX,X_SIZE\r
+| 00067A E001      |         LDI     F,$01\r
+| 00067B 9300 0155 |         STS     RECT_YY,F\r
+| 00067D DF8F      |         RCALL   DRAW_RECT\r
+|                  | \r
+| 00067E 9100 0156 |         LDS     F,RECTNC_X\r
+| 000680 9300 0152 |         STS     RECT_X,F\r
+| 000682 9080 0158 |         LDS     X_SIZE,RECTNC_XX\r
+| 000684 9280 0154 |         STS     RECT_XX,X_SIZE\r
+| 000686 C03A      |         RJMP    FILLED_RECTNC_ENTRY\r
+|                  | \r
+|                  | DRAW_RECTNC:\r
+| 000687 9100 0158 |         LDS     F,RECTNC_XX\r
+| 000689 950A      |         DEC     F\r
+| 00068A 3002      |         CPI     F,2\r
+| 00068B F2A8      |         BRLO    NO_GO\r
+| 00068C 9100 0159 |         LDS     F,RECTNC_YY\r
+| 00068E 3003      |         CPI     F,3\r
+| 00068F F288      |         BRLO    NO_GO\r
+|                  | \r
+| 000690 9100 0156 |         LDS     F,RECTNC_X\r
+| 000692 9503      |         INC     F\r
+| 000693 9300 0152 |         STS     RECT_X,F\r
+| 000695 9100 0157 |         LDS     F,RECTNC_Y\r
+| 000697 9300 0153 |         STS     RECT_Y,F\r
+| 000699 9080 0158 |         LDS     X_SIZE,RECTNC_XX\r
+| 00069B 948A      |         DEC     X_SIZE\r
+| 00069C 948A      |         DEC     X_SIZE\r
+| 00069D 9280 0154 |         STS     RECT_XX,X_SIZE\r
+| 00069F E001      |         LDI     F,$01\r
+| 0006A0 9300 0155 |         STS     RECT_YY,F\r
+| 0006A2 DF6A      |         RCALL   DRAW_RECT\r
+|                  | \r
+| 0006A3 9100 0156 |         LDS     F,RECTNC_X\r
+| 0006A5 9300 0152 |         STS     RECT_X,F\r
+| 0006A7 9100 0157 |         LDS     F,RECTNC_Y\r
+| 0006A9 9503      |         INC     F\r
+| 0006AA 9300 0153 |         STS     RECT_Y,F\r
+| 0006AC 9070 0159 |         LDS     Y_SIZE,RECTNC_YY\r
+| 0006AE 947A      |         DEC     Y_SIZE\r
+| 0006AF 947A      |         DEC     Y_SIZE\r
+| 0006B0 9270 0155 |         STS     RECT_YY,Y_SIZE\r
+| 0006B2 E001      |         LDI     F,$01\r
+| 0006B3 9300 0154 |         STS     RECT_XX,F\r
+| 0006B5 DF57      |         RCALL   DRAW_RECT\r
+|                  | \r
+| 0006B6 9080 0158 |         LDS     X_SIZE,RECTNC_XX\r
+| 0006B8 9100 0156 |         LDS     F,RECTNC_X\r
+| 0006BA 0D08      |         ADD     F,X_SIZE\r
+| 0006BB 950A      |         DEC     F\r
+| 0006BC 9300 0152 |         STS     RECT_X,F\r
+| 0006BE E001      |         LDI     F,$01\r
+| 0006BF 9300 0154 |         STS     RECT_XX,F\r
+|                  | FILLED_RECTNC_ENTRY:\r
+| 0006C1 9100 0157 |         LDS     F,RECTNC_Y\r
+| 0006C3 9503      |         INC     F\r
+| 0006C4 9300 0153 |         STS     RECT_Y,F\r
+| 0006C6 9070 0159 |         LDS     Y_SIZE,RECTNC_YY\r
+| 0006C8 947A      |         DEC     Y_SIZE\r
+| 0006C9 947A      |         DEC     Y_SIZE\r
+| 0006CA 9270 0155 |         STS     RECT_YY,Y_SIZE\r
+| 0006CC DF40      |         RCALL   DRAW_RECT\r
+|                  | \r
+| 0006CD 9100 0156 |         LDS     F,RECTNC_X\r
+| 0006CF 9503      |         INC     F\r
+| 0006D0 9300 0152 |         STS     RECT_X,F\r
+| 0006D2 9080 0158 |         LDS     X_SIZE,RECTNC_XX\r
+| 0006D4 948A      |         DEC     X_SIZE\r
+| 0006D5 948A      |         DEC     X_SIZE\r
+| 0006D6 9280 0154 |         STS     RECT_XX,X_SIZE\r
+| 0006D8 9070 0159 |         LDS     Y_SIZE,RECTNC_YY\r
+| 0006DA 9100 0157 |         LDS     F,RECTNC_Y\r
+| 0006DC 0D07      |         ADD     F,Y_SIZE\r
+| 0006DD 950A      |         DEC     F\r
+| 0006DE 9300 0153 |         STS     RECT_Y,F\r
+| 0006E0 E001      |         LDI     F,$01\r
+| 0006E1 9300 0155 |         STS     RECT_YY,F\r
+| 0006E3 CF29      |         RJMP    DRAW_RECT\r
+|                  | \r
+|                  | ; -----------------------------------------------------------------------------\r
+|                  | \r
+|                  | TX_EMPTY:\r
+| 0006E4           >         MTX_EMPTY\r
+| 0006E4 B61F      >         IN      SR,SREG\r
+| 0006E5 930F      >         PUSH    F\r
+|                  > \r
+| 0006E6 ED0F      >         LDI     F,-API_TIMEOUT          ; FEED TX/RX WATCHDOG\r
+| 0006E7 2EC0      >         MOV     API_WATCHDOG,F\r
+|                  > \r
+| 0006E8 93EF      >         PUSH    ZL\r
+| 0006E9 93FF      >         PUSH    ZH\r
+| 0006EA 2DE4      >         MOV     ZL,TX_PTR\r
+| 0006EB 5AE0      >         SUBI    ZL,-TX_BUF\r
+| 0006EC 27FF      >         CLR     ZH\r
+| 0006ED 8100      >         LD      F,Z                     ; GET CHARACTER FROM TX BUFFER\r
+| 0006EE 91FF      >         POP     ZH\r
+| 0006EF 91EF      >         POP     ZL\r
+|                  > \r
+| 0006F0 B90C      >         OUT     UDR,F\r
+|                  > \r
+| 0006F1 945A      >         DEC     TX_COUNT\r
+| 0006F2 9443      >         INC     TX_PTR\r
+| 0006F3 E10F      >         LDI     F,TX_SIZE-1\r
+| 0006F4 2240      >         AND     TX_PTR,F\r
+|                  > \r
+| 0006F5 946A      >         DEC     API_REMAIN              ; MORE TO SEND?\r
+| 0006F6 F00A      >         BRMI    GO_API_DONE1            ; YES, AWAIT NEXT TX EMPTY INTERRUPT\r
+| 0006F7 C04C      >         RJMP    API_REINIT              ; NO, AWAIT NEXT DATA SIZE COMMAND\r
+|                  > GO_API_DONE1:\r
+| 0006F8 C051      >         RJMP    API_DONE\r
+|                  | RX_COMPLETE:\r
+| 0006F9           >         MRX_COMPLETE\r
+| 0006F9 B61F      >         IN      SR,SREG\r
+| 0006FA 930F      >         PUSH    F\r
+|                  > \r
+| 0006FB ED0F      >         LDI     F,-API_TIMEOUT          ; FEED TX/RX WATCHDOG\r
+| 0006FC 2EC0      >         MOV     API_WATCHDOG,F\r
+|                  > \r
+| 0006FD B10C      >         IN      F,UDR\r
+| 0006FE 995C      >         SBIC    USR,FE                  ; BREAK DETECTED?\r
+| 0006FF C03E      >         RJMP    API_FRAMING_ERROR\r
+|                  > \r
+| 000700 FCE7      >         SBRC    API_STATE,APIDATA\r
+| 000701 C02C      >         RJMP    API_RX_DATA             ; WITH F = CHARACTER\r
+| 000702 FCE6      >         SBRC    API_STATE,APISIZE\r
+| 000703 C00E      >         RJMP    API_DATA_SIZE           ; WITH F = CHARACTER\r
+|                  > \r
+|                  >         ; RECEIVED 4800 BPS ADDRESS COMMAND\r
+| 000704 3002      >         CPI     F,API_ADDRESS           ; CHARACTER = MY ADDRESS?\r
+| 000705 F431      >         BRNE    API_ADDRESS_DONE\r
+|                  > \r
+| 000706 E003      >         LDI     F,API_RATE_FAST         ; 115200 BPS\r
+| 000707 B909      >         OUT     UBRR,F                  ; SET UART RATE\r
+|                  > \r
+| 000708 9A53      >         SBI     UCR,TXEN                ; ENABLE UART TX AND TXD PIN\r
+|                  > \r
+| 000709 E400      >         LDI     F,1<<APISIZE\r
+| 00070A 2AE0      >         OR      API_STATE,F             ; SAY WE ARE EXPECTING DATA SIZE CMD\r
+| 00070B C03E      >         RJMP    API_DONE\r
+|                  > \r
+|                  > API_ADDRESS_DONE:\r
+| 00070C 3A0A      >         CPI     F,$AA                   ; CHARACTER = TURNON COMMAND?\r
+| 00070D F419      >         BRNE    API_TURNON_DONE\r
+| 00070E E000      >         LDI     F,0\r
+| 00070F 9300 016A >         STS     TURNON_COUNT,F          ; REQUEST IMMEDIATE TURNON\r
+|                  > API_TURNON_DONE:\r
+|                  > ; 18DEC01 RESTORED IT TO NORMAL FOR HYT1500 RELEASE\r
+|                  > ;       CPI     F,9                     ; REALLY A VALID ADDRESS COMMAND?\r
+|                  > ;       BRLO    API_BAD_DONE            ; YES, ALL IS OK (IT WAS SOMEONE ELSE)\r
+|                  > ;       PUSH    ZL                      ; NO, WARN THAT THE BUS HAS ERRORS\r
+|                  > ;       PUSH    ZH\r
+|                  > ;       MOV     ZL,RX_COUNT\r
+|                  > ;       CPI     ZL,RX_SIZE\r
+|                  > ;       BRSH    API_BAD_SKIP\r
+|                  > ;       ADD     ZL,RX_PTR\r
+|                  > ;       ANDI    ZL,RX_SIZE-1\r
+|                  > ;       SUBI    ZL,-RX_BUF\r
+|                  > ;       CLR     ZH\r
+|                  > ;       LDI     F,'*'                   ; DIAGNOSTIC INDICATOR FOR BAD COMMAND\r
+|                  > ;       ST      Z,F                     ; SAVE CHARACTER IN RX BUFFER\r
+|                  > ;       INC     RX_COUNT\r
+|                  > ;API_BAD_SKIP:\r
+|                  > ;       POP     ZH\r
+|                  > ;       POP     ZL\r
+|                  > ;API_BAD_DONE:\r
+| 000711 C038      >         RJMP    API_DONE\r
+|                  > \r
+|                  > API_DATA_SIZE:\r
+|                  >         ; RECEIVED DATA SIZE COMMAND\r
+| 000712 2E60      >         MOV     API_REMAIN,F\r
+|                  > \r
+| 000713 E800      >         LDI     F,RX_SIZE\r
+| 000714 1903      >         SUB     F,RX_COUNT              ; F = AVAILABLE RX BUFFER\r
+| 000715 F40A      >         BRPL    RX_RESPOND_F\r
+| 000716 E70F      >         LDI     F,$7F                   ; F = MAXIMUM POSSIBLE TRANSFER COUNT\r
+|                  > \r
+|                  > RX_RESPOND_F:\r
+| 000717 2066      >         TST     API_REMAIN              ; TEST TRANSFER DIRECTION\r
+| 000718 F412      >         BRPL    RX_RESPOND              ; USE F IF WE NEED TO RECEIVE\r
+|                  > \r
+| 000719 2D05      >         MOV     F,TX_COUNT\r
+| 00071A 6800      >         ORI     F,$80                   ; F = QUEUED TX CHARACTERS\r
+|                  > \r
+|                  > RX_RESPOND:\r
+|                  >         ; SEND DATA SIZE RESPONSE\r
+|                  >         ; API_REMAIN = HOST MAX, F = OUR MAX\r
+| 00071B B90C      >         OUT     UDR,F                   ; SEND DATA SIZE RESPONSE\r
+|                  > \r
+| 00071C 1506      >         CP      F,API_REMAIN\r
+| 00071D F408      >         BRSH    RX_RESPOND_OK\r
+| 00071E 2E60      >         MOV     API_REMAIN,F            ; API_REMAIN = LESSER OUR / HOST MAX\r
+|                  > \r
+|                  > RX_RESPOND_OK:\r
+| 00071F 2D06      >         MOV     F,API_REMAIN\r
+| 000720 770F      >         ANDI    F,$7F                   ; NULL REQUEST?\r
+| 000721 F039      >         BREQ    API_NULL                ; YES, REVERT TO 4800 WHEN TX COMPLETE\r
+|                  >                                         ; NO, AWAIT RX COMPLETE / TX EMPTY INT\r
+| 000722 EC00      >         LDI     F,1<<APIDATA | 1<<APISIZE\r
+| 000723 2AE0      >         OR      API_STATE,F             ; WE ARE EXPECTING TO TRANSFER DATA\r
+|                  > \r
+| 000724 946A      >         DEC     API_REMAIN              ; NUDGE FOR BRPL / BRMI ALGORITHM\r
+| 000725 F522      >         BRPL    API_DONE                ; WE WILL RECEIVE, NO FURTHER ACTION\r
+|                  > \r
+| 000726 9857      >         CBI     UCR,RXCIE               ; DISABLE UART RX COMPLETE INTERRUPT\r
+| 000727 9A55      >         SBI     UCR,UDRIE               ; ENABLE UART DATA REGISTER EMPTY INT\r
+| 000728 C021      >         RJMP    API_DONE\r
+|                  > \r
+|                  > API_NULL:\r
+| 000729 EB0F      >         LDI     F,~(1<<APISIZE)\r
+| 00072A 22E0      >         AND     API_STATE,F             ; IN CASE NO DATA TRANSFERRED\r
+|                  > \r
+| 00072B 9A56      >         SBI     UCR,TXCIE               ; ENABLE UART TX COMPLETE INTERRUPT\r
+| 00072C 9A5E      >         SBI     USR,TXC                 ; CLEAR UART TX COMPLETE PENDING BIT\r
+| 00072D C01C      >         RJMP    API_DONE\r
+|                  > \r
+|                  > API_RX_DATA:\r
+|                  >         ; RECEIVED DATA BYTE, SAVE IT\r
+|                  > ; OUT UDR,API_REMAIN\r
+|                  > \r
+| 00072E 93EF      >         PUSH    ZL\r
+| 00072F 93FF      >         PUSH    ZH\r
+| 000730 2DE3      >         MOV     ZL,RX_COUNT\r
+| 000731 0DE2      >         ADD     ZL,RX_PTR\r
+| 000732 77EF      >         ANDI    ZL,RX_SIZE-1\r
+| 000733 58E0      >         SUBI    ZL,-RX_BUF\r
+| 000734 27FF      >         CLR     ZH\r
+| 000735 8300      >         ST      Z,F                     ; SAVE CHARACTER IN RX BUFFER\r
+| 000736 91FF      >         POP     ZH\r
+| 000737 91EF      >         POP     ZL\r
+|                  > \r
+| 000738 9433      >         INC     RX_COUNT\r
+|                  > \r
+| 000739 946A      >         DEC     API_REMAIN              ; MORE TO RECEIVE?\r
+| 00073A F47A      >         BRPL    API_DONE                ; YES, AWAIT NEXT RX COMPLETE INTERRUPT\r
+| 00073B C00C      >         RJMP    API_REVERT              ; NO, AWAIT NEXT DATA SIZE COMMAND\r
+|                  | ;FEED_WDOG:\r
+|                  | ;       MFEED_WDOG\r
+|                  | TX_COMPLETE:\r
+| 00073C           >         MTX_COMPLETE\r
+| 00073C B61F      >         IN      SR,SREG\r
+|                  | API_TIMEOUT_ERROR:\r
+| 00073D           >         MAPI_TIMEOUT_ERROR\r
+| 00073D 930F      >         PUSH    F\r
+|                  | API_FRAMING_ERROR:\r
+|                  | API_RESET_ERROR:\r
+| 00073E           >         MAPI_FRAMING_ERROR\r
+| 00073E 9853      >         CBI     UCR,TXEN                ; DISABLE UART TX AND TXD PIN\r
+| 00073F E50F      >         LDI     F,API_RATE_SLOW         ; 4800 BPS IF EXPECTING ADDRESS COMMAND\r
+| 000740 B909      >         OUT     UBRR,F                  ; SET UART RATE\r
+|                  > \r
+| 000741 EB0F      >         LDI     F,~(1<<APISIZE)\r
+| 000742 22E0      >         AND     API_STATE,F             ; EXPECTING ADDRESS COMMAND\r
+| 000743 24CC      >         CLR     API_WATCHDOG            ; NO ACTION, JUST WAIT TO RECEIVE ADDR\r
+|                  | API_REINIT:\r
+| 000744           >         MAPI_REINIT\r
+| 000744 9855      >         CBI     UCR,UDRIE               ; DISABLE UART TX EMPTY INTERRUPT\r
+| 000745 9856      >         CBI     UCR,TXCIE               ; DISABLE UART TX COMPLETE INTERRRUPT\r
+| 000746 9A57      >         SBI     UCR,RXCIE               ; ENABLE UART RX COMPLETE INTERRUPT\r
+| 000747 B10C      >         IN      F,UDR                   ; CLEAR UART RX COMPLETE PENDING BIT\r
+|                  | API_REVERT:\r
+| 000748           >         MAPI_REVERT\r
+| 000748 E70F      >         LDI     F,~(1<<APIDATA)\r
+| 000749 22E0      >         AND     API_STATE,F             ; EXPECTING ADDRESS / DATA SIZE COMMAND\r
+|                  | API_DONE:\r
+| 00074A           >         MAPI_DONE\r
+| 00074A 910F      >         POP     F\r
+| 00074B BE1F      >         OUT     SREG,SR\r
+| 00074C 9518      >         RETI\r
+|                  | \r
+|                  | ; -----------------------------------------------------------------------------\r
+|                  | \r
+|                  | CALCULATE_XBYTE:\r
+| 00074D 24AA      |         CLR     XBYTE\r
+| 00074E EF00      |         LDI     F,$F0\r
+| 00074F 1AA0      |         SUB     XBYTE,F\r
+| 000750 FF67      |         SBRS    XPIXEL,7\r
+| 000751 24AA      |         CLR     XBYTE\r
+| 000752 776F      |         ANDI    XPIXEL,$7F\r
+| 000753 5068      | L0415:  SUBI    XPIXEL,$08\r
+| 000754 F014      |         BRLT    L0419\r
+| 000755 94A3      |         INC     XBYTE\r
+| 000756 CFFC      |         RJMP    L0415\r
+| 000757 5F68      | L0419:  SUBI    XPIXEL,$F8\r
+| 000758 9508      |         RET\r
+|                  | \r
+| 000759           > LPMS:   A0_A13  YL,YH\r
+| 000759 2F3C      >         MOV     R19,YL\r
+| 00075A 733F      >         ANDI    R19,$3F\r
+| 00075B BB35      >         OUT     PORTC,R19\r
+|                  > \r
+| 00075C 2F3D      >         MOV     R19,YH\r
+| 00075D 0F33      >         LSL     R19\r
+| 00075E 0F33      >         LSL     R19\r
+| 00075F FBC7      >         BST     YL,7                    ; A7\r
+| 000760 F931      >         BLD     R19,1\r
+| 000761 FBC6      >         BST     YL,6                    ; A6\r
+| 000762 F930      >         BLD     R19,0\r
+| 000763 BB3B      >         OUT     PORTA,R19\r
+| 000764 94F8      >         CLI\r
+| 000765 9AC3      >         SBI     PORTB,3\r
+| 000766 98C3      >         CBI     PORTB,3\r
+| 000767 9478      >         SEI\r
+| 000768 9330 0118 >         STS     LATCH11_SAV,R19\r
+| 00076A           >         RAMRD   R0\r
+| 00076A 2700      >         CLR     F\r
+| 00076B BB0A      >         OUT     DDRA,F                  ; PORTA INPUT\r
+| 00076C 94F8      >         CLI\r
+| 00076D 98C0      >         CBI     PORTB,0                 ; CS_ON\r
+| 00076E 0000      >         NOP\r
+| 00076F 9AC0      >         SBI     PORTB,0                 ; CS_OFF\r
+| 000770 B209      >         IN      R0,PINA                 ; READ DATA\r
+| 000771 9478      >         SEI\r
+| 000772 EF0F      >         LDI     F,$FF\r
+| 000773 BB0A      >         OUT     DDRA,F                  ; PORTA OUTPUT\r
+| 000774 9508      |         RET ;RETI\r
+|                  | \r
+|                  | WR_DISP_MEM:\r
+| 000775           >         A0_A13  XBYTE,YH\r
+| 000775 2D3A      >         MOV     R19,XBYTE\r
+| 000776 733F      >         ANDI    R19,$3F\r
+| 000777 BB35      >         OUT     PORTC,R19\r
+|                  > \r
+| 000778 2F3D      >         MOV     R19,YH\r
+| 000779 0F33      >         LSL     R19\r
+| 00077A 0F33      >         LSL     R19\r
+| 00077B FAA7      >         BST     XBYTE,7                 ; A7\r
+| 00077C F931      >         BLD     R19,1\r
+| 00077D FAA6      >         BST     XBYTE,6                 ; A6\r
+| 00077E F930      >         BLD     R19,0\r
+| 00077F BB3B      >         OUT     PORTA,R19\r
+| 000780 94F8      >         CLI\r
+| 000781 9AC3      >         SBI     PORTB,3\r
+| 000782 98C3      >         CBI     PORTB,3\r
+| 000783 9478      >         SEI\r
+| 000784 9330 0118 >         STS     LATCH11_SAV,R19\r
+| 000786           >         RAMRD   W\r
+| 000786 2700      >         CLR     F\r
+| 000787 BB0A      >         OUT     DDRA,F                  ; PORTA INPUT\r
+| 000788 94F8      >         CLI\r
+| 000789 98C0      >         CBI     PORTB,0                 ; CS_ON\r
+| 00078A 0000      >         NOP\r
+| 00078B 9AC0      >         SBI     PORTB,0                 ; CS_OFF\r
+| 00078C B2F9      >         IN      W,PINA                  ; READ DATA\r
+| 00078D 9478      >         SEI\r
+| 00078E EF0F      >         LDI     F,$FF\r
+| 00078F BB0A      >         OUT     DDRA,F                  ; PORTA OUTPUT\r
+| 000790 FEB1      |         SBRS    FLAGS,1\r
+| 000791 C003      |         RJMP    L043E\r
+| 000792 9510      |         COM     A\r
+| 000793 22F1      |         AND     W,A\r
+| 000794 C003      |         RJMP    L0441\r
+| 000795 26F1      | L043E:  EOR     W,A\r
+| 000796 FCB0      |         SBRC    FLAGS,0\r
+| 000797 2AF1      |         OR      W,A\r
+| 000798           > L0441:  A0_A13  XBYTE,YH\r
+| 000798 2D3A      >         MOV     R19,XBYTE\r
+| 000799 733F      >         ANDI    R19,$3F\r
+| 00079A BB35      >         OUT     PORTC,R19\r
+|                  > \r
+| 00079B 2F3D      >         MOV     R19,YH\r
+| 00079C 0F33      >         LSL     R19\r
+| 00079D 0F33      >         LSL     R19\r
+| 00079E FAA7      >         BST     XBYTE,7                 ; A7\r
+| 00079F F931      >         BLD     R19,1\r
+| 0007A0 FAA6      >         BST     XBYTE,6                 ; A6\r
+| 0007A1 F930      >         BLD     R19,0\r
+| 0007A2 BB3B      >         OUT     PORTA,R19\r
+| 0007A3 94F8      >         CLI\r
+| 0007A4 9AC3      >         SBI     PORTB,3\r
+| 0007A5 98C3      >         CBI     PORTB,3\r
+| 0007A6 9478      >         SEI\r
+| 0007A7 9330 0118 >         STS     LATCH11_SAV,R19\r
+| 0007A9           >         RAMWR   W\r
+| 0007A9 BAFB      >         OUT     PORTA,W\r
+| 0007AA 94F8      >         CLI\r
+| 0007AB 98C1      >         CBI     PORTB,1\r
+| 0007AC 98C0      >         CBI     PORTB,0\r
+| 0007AD 0000      >         NOP\r
+| 0007AE 9AC0      >         SBI     PORTB,0\r
+| 0007AF 9478      >         SEI\r
+| 0007B0 9AC1      >         SBI     PORTB,1\r
+| 0007B1 9508      |         RET ;RETI\r
+|                  | \r
+|                  | CLEAR_DISPLAY:\r
+| 0007B2 2777      |         CLR     CURSORX                 ; HOME CURSOR\r
+| 0007B3 2788      |         CLR     CURSORY\r
+| 0007B4 2499      |         CLR     LINE_CNT\r
+| 0007B5 E0C0      |         LDI     YL,LOW(DRAW_DSPRAM)\r
+| 0007B6 E2D0      |         LDI     YH,HIGH(DRAW_DSPRAM)\r
+| 0007B7 E118      |         LDI     A,HIGH(DRAW_DSPRAM>>6)\r
+| 0007B8 D3D4      |         RCALL   SELECT_XPAGE\r
+|                  | CLEAR_DISPLAY_LOOP:\r
+| 0007B9 24AA      |         CLR     XBYTE\r
+| 0007BA 92A0 0100 |         STS     XBYTE_SAV,XBYTE\r
+| 0007BC 9110 0100 | L065C:  LDS     A,XBYTE_SAV\r
+| 0007BE 2B1C      |         OR      A,YL\r
+| 0007BF           >         A0_A13  A,YH\r
+| 0007BF 2F31      >         MOV     R19,A\r
+| 0007C0 733F      >         ANDI    R19,$3F\r
+| 0007C1 BB35      >         OUT     PORTC,R19\r
+|                  > \r
+| 0007C2 2F3D      >         MOV     R19,YH\r
+| 0007C3 0F33      >         LSL     R19\r
+| 0007C4 0F33      >         LSL     R19\r
+| 0007C5 FB17      >         BST     A,7                     ; A7\r
+| 0007C6 F931      >         BLD     R19,1\r
+| 0007C7 FB16      >         BST     A,6                     ; A6\r
+| 0007C8 F930      >         BLD     R19,0\r
+| 0007C9 BB3B      >         OUT     PORTA,R19\r
+| 0007CA 94F8      >         CLI\r
+| 0007CB 9AC3      >         SBI     PORTB,3\r
+| 0007CC 98C3      >         CBI     PORTB,3\r
+| 0007CD 9478      >         SEI\r
+| 0007CE 9330 0118 >         STS     LATCH11_SAV,R19\r
+| 0007D0 E000      |         LDI     F,$00\r
+| 0007D1           >         RAMWR   F\r
+| 0007D1 BB0B      >         OUT     PORTA,F\r
+| 0007D2 94F8      >         CLI\r
+| 0007D3 98C1      >         CBI     PORTB,1\r
+| 0007D4 98C0      >         CBI     PORTB,0\r
+| 0007D5 0000      >         NOP\r
+| 0007D6 9AC0      >         SBI     PORTB,0\r
+| 0007D7 9478      >         SEI\r
+| 0007D8 9AC1      >         SBI     PORTB,1\r
+| 0007D9 94A3      |         INC     XBYTE\r
+| 0007DA E200      |         LDI     F,$20\r
+| 0007DB 16A0      |         CP      XBYTE,F\r
+| 0007DC F019      |         BREQ    L0674\r
+| 0007DD 92A0 0100 |         STS     XBYTE_SAV,XBYTE\r
+| 0007DF CFDC      |         RJMP    L065C\r
+| 0007E0 DDD3      | L0674:  RCALL   NICK_SUB1\r
+| 0007E1 9493      |         INC     LINE_CNT\r
+| 0007E2 5CC0      |         SUBI    YL,LOW(-$40)\r
+| 0007E3 4FDF      |         SBCI    YH,HIGH(-$40)\r
+| 0007E4 34D0      |         CPI     YH,HIGH(DRAW_DSPRAM+DISPLAY_LINES*$40)\r
+| 0007E5           >         RJNE    CLEAR_DISPLAY_LOOP\r
+| 0007E5 F009      >         BREQ    LOCAL\r
+| 0007E6 CFD2      >         RJMP    CLEAR_DISPLAY_LOOP\r
+|                  > LOCAL:\r
+| 0007E7 9508      |         RET\r
+|                  | \r
+|                  | ; -----------------------------------------------------------------------------\r
+|                  | \r
+|                  | EXT_INT0:\r
+|                  | ;**:\r
+| 0007E8 9518      | RETI\r
+|                  | ;**     IN      SR,SREG                 ; MEASURE VCC\r
+|                  | ;**     SBI     DDRD,2\r
+|                  | ;**     IN      C,TCNT1L\r
+|                  | ;**     IN      D,TCNT1H\r
+|                  | ;**     STS     VCCH,D\r
+|                  | ;**     STS     VCCL,C\r
+|                  | ;**     RJMP    EXT_INT_RET\r
+|                  | \r
+|                  | EXT_INT1:\r
+| 0007E9 B61F      |         IN      SR,SREG                 ; MEASURE TEMPERATURE\r
+| 0007EA 9A8B      |         SBI     DDRD,3\r
+| 0007EB B54C      |         IN      C,TCNT1L\r
+| 0007EC B55D      |         IN      D,TCNT1H\r
+| 0007ED 9350 0109 |         STS     TMPH,D\r
+| 0007EF 9340 0108 |         STS     TMPL,C\r
+| 0007F1 C114      |         RJMP    EXT_INT_RET\r
+|                  | \r
+|                  | T1_OVERFLOW:\r
+| 0007F2 B61F      |         IN      SR,SREG\r
+| 0007F3 B35A      |         IN      D,DDRA                  ; SAVE STATE OF THE WORLD\r
+| 0007F4 935F      |         PUSH    D\r
+| 0007F5 B35B      |         IN      D,PORTA\r
+| 0007F6 935F      |         PUSH    D\r
+| 0007F7 B355      |         IN      D,PORTC\r
+| 0007F8 935F      |         PUSH    D\r
+| 0007F9 9150 0118 |         LDS     D,LATCH11_SAV\r
+| 0007FB 935F      |         PUSH    D\r
+|                  | \r
+| 0007FC EF5F      |         LDI     D,$FF\r
+| 0007FD BB5A      |         OUT     DDRA,D                  ; PORTA OUTPUT\r
+|                  | \r
+| 0007FE E750      |         LDI     D,$70                   ; FORCE DUMMY COMPARE MATCH\r
+| 0007FF BD5F      |         OUT     TCCR1A,D                ; TO SET OC1B, TOGGLE OC1A\r
+| 000800 B54C      |         IN      C,TCNT1L                ; (FOR REV E PARTS)\r
+| 000801 B55D      |         IN      D,TCNT1H                ; READ CURRENT COUNT\r
+| 000802 5F48      |         SUBI    C,LOW(-8)               ; ADD JUST ENOUGH TIME\r
+| 000803 4F5F      |         SBCI    D,HIGH(-8)              ; FOR THESE INSTRUCTIONS\r
+| 000804 BD5B      |         OUT     OCR1AH,D                ; AND WRITE TO COMPARE REGISTERS\r
+| 000805 BD4A      |         OUT     OCR1AL,C\r
+| 000806 BD59      |         OUT     OCR1BH,D\r
+| 000807 BD48      |         OUT     OCR1BL,C\r
+|                  | \r
+| 000808 9140 014C |         LDS     C,CLOCKING_PTR\r
+|                  | ;       TST     C                       ; START OF 4 LINE BLOCK?  (1 BASED)\r
+| 00080A 9150 014D |  lds d,CLOCKING_PTR+1\r
+| 00080C 7051      |  andi d,1\r
+| 00080D 2B45      |  or c,d ; checks for start of an 8 line block\r
+|                  | ; rjmp BREAK0 ; temporary (prevents switching off via power switch)\r
+| 00080E F449      |         BRNE    BREAK0                  ; NO, BREAK COUNTER IS OK FOR NOW\r
+|                  | \r
+| 00080F 9150 016B |         LDS     D,BREAK_COUNT\r
+| 000811 9553      |         INC     D                       ; HAD BREAK SOLIDLY FOR TIMEOUT?\r
+| 000812 9350 016B |         STS     BREAK_COUNT,D\r
+| 000814 F451      |         BRNE    BREAK1                  ; NO, CLOCK OUT TO DISPLAY AS NORMAL\r
+| 000815 EB5F      |         LDI     D,~(1<<6)\r
+| 000816 22B5      |         AND     FLAGS,D                 ; SAY WE TURNED OFF VIA BREAK DETECTION\r
+|                  | GO_SLEEP_ENTRY:\r
+| 000817 C92D      |         RJMP    SLEEP_ENTRY\r
+|                  | \r
+| 000818 0000      | BREAK0: NOP\r
+| 000819 0000      |         NOP\r
+| 00081A 0000      |         NOP\r
+| 00081B 0000      |         NOP\r
+| 00081C 0000      |         NOP\r
+| 00081D 0000      |         NOP\r
+| 00081E 0000      |         NOP\r
+| 00081F 9A8B      | BREAK1: SBI     DDRD,3                  ; PRECHARGE TEMPERATURE MEASUREMENT\r
+| 000820 9A93      |         SBI     PORTD,3\r
+|                  | \r
+| 000821 2755      |         CLR     D\r
+| 000822 BD5E      |         OUT     TCCR1B,D                ; STOP TIMER1\r
+| 000823 BD5D      |         OUT     TCNT1H,D                ; AND CLEAR COUNT\r
+| 000824 BD5C      |         OUT     TCNT1L,D\r
+|                  | \r
+| 000825 9150 014D |         LDS     D,CLOCKING_PTR+1\r
+| 000827 2B54      |         OR      D,C                     ; START OF FRAME?  (REALLY LINE 1)\r
+| 000828 F071      |         BREQ    L04E6                   ; YES, GO AND TOGGLE M ETC\r
+|                  | \r
+| 000829 9150 0117 |         LDS     D,LATCH10_SAV\r
+| 00082B BB5B      |         OUT     PORTA,D\r
+| 00082C 9AC4      |         SBI     PORTB,4\r
+| 00082D 9ADD      |         SBI     PORTA,5                 ; PULSE CL1\r
+| 00082E 98DD      |         CBI     PORTA,5\r
+| 00082F 98C4      |         CBI     PORTB,4\r
+| 000830 0000      |         NOP                             ; EQUALIZE DELAY\r
+| 000831 0000      |         NOP\r
+| 000832 0000      |         NOP\r
+| 000833 0000      |         NOP\r
+| 000834 0000      |         NOP\r
+| 000835 0000      |         NOP\r
+| 000836 C00E      |         RJMP    L04F9\r
+|                  | \r
+| 000837 9150 0117 | L04E6:  LDS     D,LATCH10_SAV\r
+| 000839 6850      |         ORI     D,$80                   ; RAISE FLM\r
+| 00083A 6250      |         ORI     D,$20                   ; RAISE CL1\r
+| 00083B BB5B      |         OUT     PORTA,D\r
+|                  | \r
+| 00083C 9AC4      |         SBI     PORTB,4\r
+| 00083D E640      |         LDI     C,$60                   ; TOGGLE M AND CL1\r
+| 00083E 2754      |         EOR     D,C\r
+| 00083F BB5B      |         OUT     PORTA,D\r
+| 000840 775F      |         ANDI    D,$7F                   ; DROP FLM\r
+| 000841 BB5B      |         OUT     PORTA,D\r
+| 000842 98C4      |         CBI     PORTB,4\r
+| 000843 9350 0117 |         STS     LATCH10_SAV,D\r
+|                  | \r
+| 000845 9150 0117 | L04F9:  LDS     D,LATCH10_SAV           ; SAVE STATE\r
+| 000847 935F      |         PUSH    D\r
+|                  | \r
+| 000848 93EF      |         PUSH    ZL\r
+| 000849 93FF      |         PUSH    ZH\r
+| 00084A 91E0 014C |         LDS     ZL,CLOCKING_PTR\r
+| 00084C 91F0 014D |         LDS     ZH,CLOCKING_PTR+1\r
+|                  | \r
+| 00084E 5CE0      |         SUBI    ZL,LOW(-$40)\r
+| 00084F 4FFF      |         SBCI    ZH,HIGH(-$40)\r
+| 000850 71FF      |         ANDI    ZH,HIGH(DISPLAY_LINES*$40-1)\r
+|                  | \r
+| 000851           >         A0_A15  ZL,ZH\r
+| 000851 933F      >         PUSH    R19\r
+|                  > \r
+| 000852 2F3E      >         MOV     R19,ZL\r
+| 000853 733F      >         ANDI    R19,$3F\r
+| 000854 BB35      >         OUT     PORTC,R19\r
+|                  > \r
+| 000855 2F3F      >         MOV     R19,ZH\r
+| 000856 0F33      >         LSL     R19\r
+| 000857 0F33      >         LSL     R19\r
+| 000858 FBE7      >         BST     ZL,7                    ; A7\r
+| 000859 F931      >         BLD     R19,1\r
+| 00085A FBE6      >         BST     ZL,6                    ; A6\r
+| 00085B F930      >         BLD     R19,0\r
+| 00085C BB3B      >         OUT     PORTA,R19\r
+| 00085D 9AC3      >         SBI     PORTB,3\r
+| 00085E 98C3      >         CBI     PORTB,3\r
+| 00085F 93F0 0118 >         STS     LATCH11_SAV,ZH\r
+|                  > \r
+| 000861 9130 0117 >         LDS     R19,LATCH10_SAV         ; AND THIS\r
+| 000863 FBF7      >         BST     ZH,7                    ; A15\r
+| 000864 F931      >         BLD     R19,1\r
+| 000865 FBF6      >         BST     ZH,6                    ; A14\r
+| 000866 F930      >         BLD     R19,0\r
+| 000867 BB3B      >         OUT     PORTA,R19\r
+| 000868 9AC4      >         SBI     PORTB,4\r
+| 000869 98C4      >         CBI     PORTB,4\r
+| 00086A 9330 0117 >         STS     LATCH10_SAV,R19\r
+|                  > \r
+| 00086C 913F      >         POP     R19\r
+|                  | \r
+| 00086D 98C1      |         CBI     PORTB,1                 ; CLR HC590\r
+| 00086E 9AC1      |         SBI     PORTB,1\r
+| 00086F 9897      |         CBI     PORTD,7                 ; DROP OE FOR HC590\r
+| 000870 2744      |         CLR     C\r
+| 000871 BB4A      |         OUT     DDRA,C                  ; PORTA HI Z\r
+| 000872 EC40      |         LDI     C,$C0\r
+| 000873 BB44      |         OUT     DDRC,C                  ; PORTC HI Z\r
+| 000874 98C0      |         CBI     PORTB,0                 ; DROP CS FOR DSPRAM\r
+|                  | \r
+| 000875 2755      |         CLR     D\r
+| 000876 BD5B      |         OUT     OCR1AH,D\r
+|                  | \r
+|                  | ;       LDI     D,1                     ; TO CLOCK AT 5.5/2 MHZ\r
+| 000877 BD5A      |         OUT     OCR1AL,D                ; TO CLOCK AT 7.3/2 MHZ\r
+| 000878 E059      |         LDI     D,$09\r
+| 000879 BD5E      |         OUT     TCCR1B,D                ; START CL2 CLOCKING WITH CLR ON MATCH\r
+|                  | \r
+| 00087A 93E0 014C |         STS     CLOCKING_PTR,ZL\r
+| 00087C 93F0 014D |         STS     CLOCKING_PTR+1,ZH\r
+| 00087E 91FF      |         POP     ZH\r
+| 00087F 91EF      |         POP     ZL\r
+|                  | \r
+|                  | ;!!!    LDI     D,$7A                   ; WAIT FOR 32uSEC\r
+|                  | ;       LDI     D,58 ;$7A                       ; WAIT FOR 32uSEC GOOD\r
+| 000880 E35C      |         LDI     D,60                    ; WAIT FOR 32uSEC\r
+|                  | ;       LDI     D,61 ;$7A                       ; WAIT FOR 32uSEC\r
+|                  | ;       LDI     D,62 ;$7A                       ; WAIT FOR 32uSEC GOOD\r
+|                  | \r
+| 000881 955A      | L050E:  DEC     D\r
+| 000882 F7F1      |         BRNE    L050E\r
+|                  | \r
+| 000883 9AC0      |         SBI     PORTB,0                 ; RAISE CS FOR DSPRAM\r
+| 000884 EF5F      |         LDI     D,$FF\r
+| 000885 BB5A      |         OUT     DDRA,D                  ; PORTA OUTPUT\r
+| 000886 9A97      |         SBI     PORTD,7                 ; RAISE OE FOR HC590\r
+| 000887 BB54      |         OUT     DDRC,D                  ; PORTC OUTPUT\r
+|                  | \r
+| 000888 988D      |         CBI     DDRD,5                  ; CL2 INPUT TO MEASURE VEE\r
+| 000889 9895      |         CBI     PORTD,5                 ; REMOVE PULL UP\r
+|                  | \r
+| 00088A E051      |         LDI     D,$01                   ; KILL CLR ON COMPARE MATCH\r
+| 00088B 0000      |         NOP                             ; !WITH OC1A LEFT IN LOW STATE\r
+| 00088C BD5E      |         OUT     TCCR1B,D\r
+|                  | \r
+| 00088D E05B      |         LDI     D,$0B                   ; WAIT FOR 3uSEC\r
+|                  | SETTLE_CL2:\r
+| 00088E 955A      |         DEC     D\r
+| 00088F F7F1      |         BRNE    SETTLE_CL2\r
+|                  | \r
+| 000890 9150 010D |         LDS     D,VEEH\r
+| 000892 9140 010C |         LDS     C,VEEL\r
+| 000894 9A8D      |         SBI     DDRD,5                  ; CL2 LOW OUTPUT\r
+| 000895 9985      |         SBIC    PIND,5                  ; SAMPLE CL2 JUST BEFORE CHANGE\r
+| 000896 C007      |         RJMP    L052F\r
+|                  | \r
+| 000897 334A      |         CPI     C,LOW(VEE_MIN)\r
+| 000898 EF9D      |         LDI     E,HIGH(VEE_MIN)\r
+| 000899 0759      |         CPC     D,E\r
+| 00089A F052      |         BRMI    L0535\r
+|                  | \r
+| 00089B 5041      |         SUBI    C,$01\r
+| 00089C 4050      |         SBCI    D,$00\r
+| 00089D C00B      |         RJMP    L0536\r
+|                  | \r
+| 00089E 3D45      | L052F:  CPI     C,LOW(VEE_MAX)\r
+| 00089F EF9F      |         LDI     E,HIGH(VEE_MAX)\r
+| 0008A0 0759      |         CPC     D,E\r
+| 0008A1 F41A      |         BRPL    L0535\r
+|                  | \r
+| 0008A2 5F4F      |         SUBI    C,$FF\r
+| 0008A3 4F5F      |         SBCI    D,$FF\r
+| 0008A4 C004      |         RJMP    L0536\r
+|                  | \r
+| 0008A5 0000      | L0535:  NOP                             ; EQUALIZE DELAYS\r
+| 0008A6 0000      |         NOP\r
+| 0008A7 0000      |         NOP\r
+| 0008A8 0000      |         NOP\r
+| 0008A9 9350 010D | L0536:  STS     VEEH,D\r
+| 0008AB 9340 010C |         STS     VEEL,C\r
+| 0008AD BD5B      |         OUT     OCR1AH,D                ; SET SWITCHING TIME FOR VEE MEASURE\r
+| 0008AE BD4A      |         OUT     OCR1AL,C\r
+|                  | \r
+| 0008AF 9140 010C |         LDS     C,VEEL\r
+| 0008B1 9150 010D |         LDS     D,VEEH\r
+| 0008B3 9190 010E |         LDS     E,CONTRASTL\r
+| 0008B5 1B49      |         SUB     C,E\r
+| 0008B6 9190 010F |         LDS     E,CONTRASTH\r
+| 0008B8 0B59      |         SBC     D,E\r
+| 0008B9 F41A      |         BRPL    L0545\r
+|                  | \r
+| 0008BA ED45      |         LDI     C,LOW(CONTRAST_SHORT)\r
+| 0008BB EF5F      |         LDI     D,HIGH(CONTRAST_SHORT)\r
+| 0008BC C004      |         RJMP    L0547\r
+|                  | \r
+| 0008BD EA4C      | L0545:  LDI     C,LOW(CONTRAST_LONG)\r
+| 0008BE EF5E      |         LDI     D,HIGH(CONTRAST_LONG)\r
+| 0008BF 0000      |         NOP\r
+| 0008C0 0000      |         NOP\r
+|                  | \r
+| 0008C1 BD59      | L0547:  OUT     OCR1BH,D                ; SET SWITCHING TIME FOR VEE GENERATOR\r
+| 0008C2 BD48      |         OUT     OCR1BL,C\r
+|                  | \r
+| 0008C3 E052      |         LDI     D,2                     ; SET TIME FOR START OF LED PULSE\r
+| 0008C4 BF53      |         OUT     TCCR0,D                 ; PRESCALE=CK/8\r
+| 0008C5 EE5D      |         LDI     D,-TK_DELAY_0           ; 54uSEC\r
+| 0008C6 BF52      |         OUT     TCNT0,D\r
+| 0008C7 E051      |         LDI     D,1\r
+| 0008C8 9350 0168 |         STS     SCAN_STATE,D\r
+|                  | \r
+| 0008CA EF5D      |         LDI     D,HIGH(T1_FULL_SCALE)\r
+| 0008CB BD5D      |         OUT     TCNT1H,D\r
+| 0008CC E354      |         LDI     D,LOW(T1_FULL_SCALE)\r
+| 0008CD BD5C      |         OUT     TCNT1L,D\r
+|                  | \r
+| 0008CE 988B      |         CBI     DDRD,3                  ; START TEMPERATURE MEASUREMENT\r
+| 0008CF 9893      |         CBI     PORTD,3\r
+|                  | \r
+| 0008D0 EE50      |         LDI     D,$E0                   ; NEXT COMPARE MATCH MUST SET OC1A\r
+| 0008D1 BD5F      |         OUT     TCCR1A,D                ; AND CLR OC1B (FOR REV E PARTS)\r
+|                  | \r
+| 0008D2 C021      |         RJMP    T1_OVERFLOW_RET\r
+|                  | \r
+|                  | T0_OVERFLOW:\r
+| 0008D3 B61F      |         IN      SR,SREG                 ; LED/PHOTODIODE SCANNING\r
+| 0008D4 B35A      |         IN      D,DDRA                  ; SAVE STATE OF THE WORLD\r
+| 0008D5 935F      |         PUSH    D\r
+| 0008D6 B35B      |         IN      D,PORTA\r
+| 0008D7 935F      |         PUSH    D\r
+| 0008D8 B355      |         IN      D,PORTC\r
+| 0008D9 935F      |         PUSH    D\r
+| 0008DA 9150 0118 |         LDS     D,LATCH11_SAV\r
+| 0008DC 935F      |         PUSH    D\r
+| 0008DD 9150 0117 |         LDS     D,LATCH10_SAV\r
+| 0008DF 935F      |         PUSH    D\r
+|                  | \r
+| 0008E0 93FF      |         PUSH    ZH\r
+| 0008E1 93EF      |         PUSH    ZL\r
+| 0008E2 920F      |         PUSH    R0\r
+|                  | \r
+| 0008E3 EF5F      |         LDI     D,$FF\r
+| 0008E4 BB5A      |         OUT     DDRA,D                  ; PORTA OUTPUT\r
+|                  | \r
+| 0008E5 9150 0168 |         LDS     D,SCAN_STATE\r
+| 0008E7 9553      |         INC     D\r
+| 0008E8 9350 0168 |         STS     SCAN_STATE,D\r
+| 0008EA 955A      |         DEC     D\r
+| 0008EB F0E1      |         BREQ    SCAN_START              ; IF SCAN_STATE WAS = 0\r
+| 0008EC 955A      |         DEC     D\r
+| 0008ED F111      |         BREQ    SCAN_BEEPER             ; IF SCAN_STATE WAS = 1\r
+|                  |  ; IMPLEMENT ENTRY POINT FOR SCAN_PULSE_LED HERE\r
+| 0008EE 955A      |         DEC     D\r
+| 0008EF           >         RJEQ    SCAN_PHOTO              ; IF SCAN_STATE WAS = 2\r
+| 0008EF F409      >         BRNE    LOCAL\r
+| 0008F0 C089      >         RJMP    SCAN_PHOTO\r
+|                  > LOCAL:\r
+|                  | \r
+|                  | T0_OVERFLOW_RET:\r
+| 0008F1 900F      |         POP     R0\r
+| 0008F2 91EF      |         POP     ZL\r
+| 0008F3 91FF      |         POP     ZH\r
+|                  | \r
+|                  | T1_OVERFLOW_RET:\r
+| 0008F4 915F      |         POP     D                       ; RESTORE STATE OF THE WORLD\r
+| 0008F5 BB5B      |         OUT     PORTA,D\r
+| 0008F6 9AC4      |         SBI     PORTB,4\r
+| 0008F7 98C4      |         CBI     PORTB,4\r
+| 0008F8 9350 0117 |         STS     LATCH10_SAV,D\r
+| 0008FA 915F      |         POP     D\r
+| 0008FB BB5B      |         OUT     PORTA,D\r
+| 0008FC 9AC3      |         SBI     PORTB,3\r
+| 0008FD 98C3      |         CBI     PORTB,3\r
+| 0008FE 9350 0118 |         STS     LATCH11_SAV,D\r
+| 000900 915F      |         POP     D\r
+| 000901 BB55      |         OUT     PORTC,D\r
+| 000902 915F      |         POP     D\r
+| 000903 BB5B      |         OUT     PORTA,D\r
+| 000904 915F      |         POP     D\r
+| 000905 BB5A      |         OUT     DDRA,D\r
+|                  |         ;MFEED_WDOG\r
+|                  | EXT_INT_RET:\r
+| 000906 BE1F      |         OUT     SREG,SR\r
+| 000907 9518      |         RETI\r
+|                  | \r
+|                  | SCAN_START:\r
+| 000908 E053      |         LDI     D,3 ;5\r
+| 000909 BF53      |         OUT     TCCR0,D                 ; PRESCALE=CK/1024\r
+| 00090A EF50      |         LDI     D,-TK_DELAY_1 ;TK_DELAY_2\r
+| 00090B BF52      |         OUT     TCNT0,D\r
+| 00090C E051      |         LDI     D,1\r
+| 00090D 9350 0168 |         STS     SCAN_STATE,D\r
+| 00090F C153      |         RJMP    L0617_RESET\r
+|                  | \r
+|                  | SCAN_BEEPER:\r
+| 000910 9150 0110 |         LDS     D,BUZZ_TIME\r
+| 000912 2355      |         TST     D\r
+| 000913 F199      |         BREQ    SCAN_PULSE_LED\r
+| 000914 9150 0111 |         LDS     D,BUZZ_PERIOD\r
+| 000916 5150      |         SUBI    D,$10\r
+| 000917 F018      |         BRLO    BUZZ_TOGGLE\r
+| 000918 9350 0111 |         STS     BUZZ_PERIOD,D\r
+| 00091A C02C      |         RJMP    SCAN_PULSE_LED\r
+|                  | BUZZ_TOGGLE:                            ; ASSUME D = $F0 + PERIOD-1\r
+| 00091B 2F45      |         MOV     C,D                     ; EG. C = $F3 FOR PERIOD = 4\r
+| 00091C 9542      |         SWAP    C                       ; EG. C = $3F FOR PERIOD = 4\r
+| 00091D 2354      |         AND     D,C                     ; EG. D = $33 FOR PERIOD = 4\r
+| 00091E 9350 0111 |         STS     BUZZ_PERIOD,D\r
+| 000920 9140 0119 |         LDS     C,LATCH12_SAV\r
+| 000922 FF43      |         SBRS    C,3                     ; TEST PREVIOUS SPEAKER STATE\r
+| 000923 C010      |         RJMP    BEEPER_SPKHI\r
+| 000924 9150 0110 |         LDS     D,BUZZ_TIME\r
+| 000926 955A      |         DEC     D\r
+| 000927 9350 0110 |         STS     BUZZ_TIME,D\r
+| 000929 F0A1      |         BREQ    BEEPER_SPKOFF\r
+|                  | ;BEEPER_SPKLO:\r
+| 00092A           >         SPKLO\r
+| 00092A 9150 0119 >         LDS     D,LATCH12_SAV           ; DRIVE SPEAKER LO\r
+| 00092C 7F57      >         CBR     D,1<<3\r
+| 00092D 6054      >         SBR     D,1<<2\r
+| 00092E BB55      >         OUT     PORTC,D\r
+| 00092F 9AC2      >         SBI     PORTB,2\r
+| 000930 98C2      >         CBI     PORTB,2\r
+| 000931 9350 0119 >         STS     LATCH12_SAV,D\r
+| 000933 C013      |         RJMP    SCAN_PULSE_LED\r
+|                  | BEEPER_SPKHI:\r
+| 000934           >         SPKHI\r
+| 000934 9150 0119 >         LDS     D,LATCH12_SAV           ; DRIVE SPEAKER HI\r
+| 000936 6058      >         SBR     D,1<<3\r
+| 000937 7F5B      >         CBR     D,1<<2\r
+| 000938 BB55      >         OUT     PORTC,D\r
+| 000939 9AC2      >         SBI     PORTB,2\r
+| 00093A 98C2      >         CBI     PORTB,2\r
+| 00093B 9350 0119 >         STS     LATCH12_SAV,D\r
+| 00093D C009      |         RJMP    SCAN_PULSE_LED\r
+|                  | BEEPER_SPKOFF:\r
+| 00093E           >         SPKOFF\r
+| 00093E 9150 0119 >         LDS     D,LATCH12_SAV           ; DRIVE SPEAKER OFF\r
+| 000940 7F57      >         CBR     D,1<<3\r
+| 000941 7F5B      >         CBR     D,1<<2\r
+| 000942 BB55      >         OUT     PORTC,D\r
+| 000943 9AC2      >         SBI     PORTB,2\r
+| 000944 98C2      >         CBI     PORTB,2\r
+| 000945 9350 0119 >         STS     LATCH12_SAV,D\r
+|                  | \r
+|                  | SCAN_PULSE_LED:\r
+| 000947 9150 0169 |         LDS     D,LATCH5_SAV\r
+|                  | ;**:\r
+| 000949 FF57      |         SBRS    D,7                     ; ARE WE INSIDE SLEEP_LOOP?\r
+|                  | ;**     SBRC    D,7\r
+| 00094A C006      |         RJMP    SCAN_PULSE_LED_OK       ; YES, KEEP TIMER 0 TO RETAIN CONTROL\r
+|                  | \r
+| 00094B E850      |         LDI     D,1<<7\r
+| 00094C 26B5      |         EOR     FLAGS,D\r
+| 00094D F41A      |         BRPL    SCAN_PULSE_LED_OK       ; PULSE LED EVERY 2ND CYCLE\r
+|                  | \r
+| 00094E 2755      |         CLR     D\r
+| 00094F BF53      |         OUT     TCCR0,D                 ; STOP TIMER\r
+| 000950 CFA0      |         RJMP    T0_OVERFLOW_RET         ; AND WASTE EVERY REMAINING CYCLE\r
+|                  | \r
+|                  | SCAN_PULSE_LED_OK:\r
+| 000951 E052      |         LDI     D,2\r
+| 000952 BF53      |         OUT     TCCR0,D                 ; PRESCALE=CK/8\r
+| 000953 EF52      |         LDI     D,-TK_LED_PULSE         ; 22uSEC\r
+| 000954 BF52      |         OUT     TCNT0,D\r
+|                  | \r
+|                  |         ;LDIZ   SCAN_TBL                ; POINT TO FIRST LED CHANNEL\r
+| 000955 E3EA      |         LDI     ZL,LOW((SCAN_TBL)*2)    ; USE PRIOR TO LPM INSTRUCTION\r
+| 000956 E1F8      |         LDI     ZH,HIGH((SCAN_TBL)*2)   ; EXTRA BRACKETS NEEDED IF @0=EXPRESSION\r
+|                  | \r
+| 000957 2755      |         CLR     D\r
+| 000958 0DED      |         ADD     ZL,SCAN\r
+| 000959 1FF5      |         ADC     ZH,D\r
+| 00095A 95C8      |         LPM                             ; R0 = LED DRIVE VALUE\r
+| 00095B E354      |         LDI     D,13*4\r
+| 00095C 16D5      |         CP      SCAN,D\r
+| 00095D F448      |         BRSH    L0570\r
+| 00095E           >         LEDLO                           ; ENABLE HORIZ LED DRIVE\r
+| 00095E 9150 0119 >         LDS     D,LATCH12_SAV           ; DRIVE LED COMMON LO\r
+| 000960 7E5F      >         CBR     D,1<<4\r
+| 000961 BB55      >         OUT     PORTC,D\r
+| 000962 9AC2      >         SBI     PORTB,2\r
+| 000963 98C2      >         CBI     PORTB,2\r
+| 000964 9350 0119 >         STS     LATCH12_SAV,D\r
+| 000966 C008      |         RJMP    L0574\r
+| 000967           > L0570:  LEDHI                           ; DISABLE HORIZ LED DRIVE\r
+| 000967 9150 0119 >         LDS     D,LATCH12_SAV           ; DRIVE LED COMMON HI\r
+| 000969 6150      >         SBR     D,1<<4\r
+| 00096A BB55      >         OUT     PORTC,D\r
+| 00096B 9AC2      >         SBI     PORTB,2\r
+| 00096C 98C2      >         CBI     PORTB,2\r
+| 00096D 9350 0119 >         STS     LATCH12_SAV,D\r
+| 00096F           > L0574:  LED     R0\r
+| 00096F BA0B      >         OUT     PORTA,R0                ; MAIN LED DRIVE PORT\r
+| 000970 9000 0119 >         LDS     R0,LATCH12_SAV\r
+| 000972 BA05      >         OUT     PORTC,R0\r
+| 000973 9AA9      >         SBI     PORTC,1\r
+| 000974 9AC2      >         SBI     PORTB,2                 ; THIS WILL PROVIDE LE=1\r
+| 000975 98C2      >         CBI     PORTB,2                 ; THIS WILL PROVIDE G=0\r
+| 000976 98A9      >         CBI     PORTC,1\r
+| 000977 9AC2      >         SBI     PORTB,2                 ; THIS WILL PROVIDE LE=1\r
+| 000978 98C2      >         CBI     PORTB,2                 ; THIS WILL PROVIDE G=0\r
+| 000979 CF77      |         RJMP    T0_OVERFLOW_RET\r
+|                  | \r
+|                  | SCAN_PHOTO:\r
+| 00097A B350      |         IN      D,PIND                  ; PHOTODIODE STATUS IN BIT 6,D\r
+| 00097B EE40      |         LDI     C,$E0\r
+| 00097C           >         LED     C                       ; TURN OFF LED ??\r
+| 00097C BB4B      >         OUT     PORTA,C         ; MAIN LED DRIVE PORT\r
+| 00097D 9140 0119 >         LDS     C,LATCH12_SAV\r
+| 00097F BB45      >         OUT     PORTC,C\r
+| 000980 9AA9      >         SBI     PORTC,1\r
+| 000981 9AC2      >         SBI     PORTB,2                 ; THIS WILL PROVIDE LE=1\r
+| 000982 98C2      >         CBI     PORTB,2                 ; THIS WILL PROVIDE G=0\r
+| 000983 98A9      >         CBI     PORTC,1\r
+| 000984 9AC2      >         SBI     PORTB,2                 ; THIS WILL PROVIDE LE=1\r
+| 000985 98C2      >         CBI     PORTB,2                 ; THIS WILL PROVIDE G=0\r
+|                  | \r
+| 000986 9488      |         CLC\r
+| 000987 FD56      |         SBRC    D,6\r
+| 000988 C008      |         RJMP    L0593                   ; ROW/COLUMN IS INACTIVE\r
+|                  | \r
+|                  |         ; ROW/COLUMN IS ACTIVE\r
+| 000989 9150 0113 |         LDS     D,DEBOUNCE\r
+| 00098B 2355      |         TST     D\r
+| 00098C F019      |         BREQ    L0591\r
+| 00098D E054      |         LDI     D,$04\r
+| 00098E 9350 0113 |         STS     DEBOUNCE,D\r
+| 000990 9408      | L0591:  SEC\r
+|                  | \r
+|                  | L0593:  ; WE HAVE A ROW/COLUMN STATUS IN CF\r
+| 000991 B74F      |         IN      C,SREG\r
+|                  | \r
+| 000992 E354      |         LDI     D,13*4\r
+| 000993 16D5      |         CP      SCAN,D\r
+| 000994 F460      |         BRSH    L05A8\r
+|                  | \r
+|                  |         ; WE HAVE A ROW STATUS\r
+| 000995 BF4F      |         OUT     SREG,C                  ; CF = 0 INACTIVE, CF = 1 ACTIVE\r
+| 000996 91E0 0115 |         LDS     ZL,ROW_BITMAP\r
+| 000998 91F0 0116 |         LDS     ZH,ROW_BITMAP+1\r
+| 00099A 1FEE      |         ROL     ZL\r
+| 00099B 1FFF      |         ROL     ZH\r
+| 00099C 93E0 0115 |         STS     ROW_BITMAP,ZL\r
+| 00099E 93F0 0116 |         STS     ROW_BITMAP+1,ZH\r
+| 0009A0 C07B      |         RJMP    L05F9\r
+|                  | \r
+|                  | L05A8:  ; WE HAVE A COLUMN STATUS\r
+|                  | ;       LDS     D,LATCH5_SAV\r
+|                  | ;;**:\r
+|                  | ;       SBRS    D,7                     ; TURNED OFF?\r
+|                  | ;;**    SBRC    D,7\r
+|                  | ;       RJMP    L05F9                   ; YES, NO FURTHER PROCESSING\r
+| 0009A1 BF4F      |         OUT     SREG,C                  ; CF = 0 INACTIVE, CF = 1 ACTIVE\r
+| 0009A2 F008      |         BRCS    L05AB\r
+| 0009A3 C078      |         RJMP    L05F9\r
+|                  | \r
+|                  | L05AB:  ; WE HAVE AN ACTIVE COLUMN\r
+| 0009A4 9150 0113 |         LDS     D,DEBOUNCE\r
+| 0009A6 2355      |         TST     D\r
+| 0009A7 F021      |         BREQ    L05B3\r
+| 0009A8 E054      |         LDI     D,$04\r
+| 0009A9 9350 0113 |         STS     DEBOUNCE,D\r
+| 0009AB C070      |         RJMP    L05F9\r
+|                  | \r
+|                  | L05B3:  ; LOOK FOR ANY ACTIVE ROW\r
+| 0009AC 91F0 0116 |         LDS     ZH,ROW_BITMAP+1\r
+| 0009AE 91E0 0115 |         LDS     ZL,ROW_BITMAP\r
+|                  | \r
+| 0009B0 9150 0114 |         LDS     D,ROW_INDEX\r
+| 0009B2 2355      |         TST     D\r
+| 0009B3 F029      |         BREQ    ROW_BITMAP_LOOP\r
+|                  | \r
+| 0009B4 2F45      |         MOV     C,D\r
+|                  | ROW_BITMAP_SKIP:\r
+| 0009B5 95F7      |         ROR     ZH\r
+| 0009B6 95E7      |         ROR     ZL\r
+| 0009B7 5044      |         SUBI    C,4\r
+| 0009B8 F7E1      |         BRNE    ROW_BITMAP_SKIP\r
+|                  | \r
+|                  | ROW_BITMAP_LOOP:\r
+| 0009B9 5F5C      |         SUBI    D,-4\r
+| 0009BA 95F7      |         ROR     ZH\r
+| 0009BB 95E7      |         ROR     ZL\r
+| 0009BC F018      |         BRCS    FOUND_INTERSECTION\r
+|                  | ROW_BITMAP_LOOPE:\r
+| 0009BD 3354      |         CPI     D,13*4\r
+| 0009BE F3D0      |         BRLO    ROW_BITMAP_LOOP\r
+|                  | \r
+|                  |         ; NO FURTHER INTERSECTING ROWS FOUND\r
+| 0009BF C05C      |         RJMP    L05F9\r
+|                  | \r
+|                  | FOUND_INTERSECTION:\r
+|                  |         ; FOUND AN INTERSECTING ROW FOR COLUMN\r
+| 0009C0 9350 0114 |         STS     ROW_INDEX,D\r
+|                  | \r
+| 0009C2 E344      |         LDI     C,$34                   ; BECAUSE ROW_BITMAP IS BEING TESTED\r
+| 0009C3 1B45      |         SUB     C,D                     ; IN THE REVERSE ORDER TO ITS CREATION\r
+|                  | \r
+|                  |         ;LDIZ   SCAN_TBL+1              ; POINT TO FIRST TOUCH CHANNEL\r
+| 0009C4 E3EC      |         LDI     ZL,LOW((SCAN_TBL+1)*2)  ; USE PRIOR TO LPM INSTRUCTION\r
+| 0009C5 E1F8      |         LDI     ZH,HIGH((SCAN_TBL+1)*2) ; EXTRA BRACKETS NEEDED IF @0=EXPRESSION\r
+|                  | \r
+| 0009C6 2755      |         CLR     D\r
+| 0009C7 0FE4      |         ADD     ZL,C\r
+| 0009C8 1FF5      |         ADC     ZH,D\r
+| 0009C9 95C8      |         LPM\r
+| 0009CA 2D40      |         MOV     C,R0\r
+| 0009CB 0C00      |         LSL     R0\r
+| 0009CC 0C00      |         LSL     R0\r
+| 0009CD 0C00      |         LSL     R0\r
+| 0009CE 0D40      |         ADD     C,R0\r
+| 0009CF 0C00      |         LSL     R0\r
+| 0009D0 0D40      |         ADD     C,R0\r
+|                  | \r
+|                  |         ;LDIZ   SCAN_TBL+1              ; POINT TO FIRST TOUCH CHANNEL\r
+| 0009D1 E3EC      |         LDI     ZL,LOW((SCAN_TBL+1)*2)  ; USE PRIOR TO LPM INSTRUCTION\r
+| 0009D2 E1F8      |         LDI     ZH,HIGH((SCAN_TBL+1)*2) ; EXTRA BRACKETS NEEDED IF @0=EXPRESSION\r
+|                  | \r
+| 0009D3 2755      |         CLR     D\r
+| 0009D4 0DED      |         ADD     ZL,SCAN\r
+| 0009D5 1FF5      |         ADC     ZH,D\r
+| 0009D6 95C8      |         LPM\r
+| 0009D7 0D40      |         ADD     C,R0\r
+| 0009D8 E0E0      |         LDI     ZL,LOW(RTN_DSPRAM)      ; RETURN CODE TABLE\r
+| 0009D9 EEF0      |         LDI     ZH,HIGH(RTN_DSPRAM)\r
+| 0009DA 2755      |         CLR     D\r
+| 0009DB 0FE4      |         ADD     ZL,C\r
+| 0009DC 1FF5      |         ADC     ZH,D\r
+|                  | \r
+| 0009DD           >         A0_A15  ZL,ZH\r
+| 0009DD 933F      >         PUSH    R19\r
+|                  > \r
+| 0009DE 2F3E      >         MOV     R19,ZL\r
+| 0009DF 733F      >         ANDI    R19,$3F\r
+| 0009E0 BB35      >         OUT     PORTC,R19\r
+|                  > \r
+| 0009E1 2F3F      >         MOV     R19,ZH\r
+| 0009E2 0F33      >         LSL     R19\r
+| 0009E3 0F33      >         LSL     R19\r
+| 0009E4 FBE7      >         BST     ZL,7                    ; A7\r
+| 0009E5 F931      >         BLD     R19,1\r
+| 0009E6 FBE6      >         BST     ZL,6                    ; A6\r
+| 0009E7 F930      >         BLD     R19,0\r
+| 0009E8 BB3B      >         OUT     PORTA,R19\r
+| 0009E9 9AC3      >         SBI     PORTB,3\r
+| 0009EA 98C3      >         CBI     PORTB,3\r
+| 0009EB 93F0 0118 >         STS     LATCH11_SAV,ZH\r
+|                  > \r
+| 0009ED 9130 0117 >         LDS     R19,LATCH10_SAV         ; AND THIS\r
+| 0009EF FBF7      >         BST     ZH,7                    ; A15\r
+| 0009F0 F931      >         BLD     R19,1\r
+| 0009F1 FBF6      >         BST     ZH,6                    ; A14\r
+| 0009F2 F930      >         BLD     R19,0\r
+| 0009F3 BB3B      >         OUT     PORTA,R19\r
+| 0009F4 9AC4      >         SBI     PORTB,4\r
+| 0009F5 98C4      >         CBI     PORTB,4\r
+| 0009F6 9330 0117 >         STS     LATCH10_SAV,R19\r
+|                  > \r
+| 0009F8 913F      >         POP     R19\r
+|                  | \r
+| 0009F9 930F      |         PUSH    F\r
+| 0009FA           >         RAMRDX  R0\r
+| 0009FA 2700      >         CLR     F\r
+| 0009FB BB0A      >         OUT     DDRA,F                  ; PORTA INPUT\r
+| 0009FC 98C0      >         CBI     PORTB,0                 ; CS_ON\r
+| 0009FD 0000      >         NOP\r
+| 0009FE 9AC0      >         SBI     PORTB,0                 ; CS_OFF\r
+| 0009FF B209      >         IN      R0,PINA                 ; READ DATA\r
+| 000A00 EF0F      >         LDI     F,$FF\r
+| 000A01 BB0A      >         OUT     DDRA,F                  ; PORTA OUTPUT\r
+| 000A02 910F      |         POP     F\r
+|                  | \r
+| 000A03 2000      |         TST     R0\r
+| 000A04 F429      |         BRNE    VALID_INTERSECTION\r
+|                  | \r
+|                  |         ; INTERSECTION IS NULL, GO ON TO NEXT\r
+| 000A05 9150 0114 |         LDS     D,ROW_INDEX\r
+| 000A07 3354      |         CPI     D,13*4\r
+| 000A08 F498      |         BRSH    L05F9                   ; DONE LAST ROW, GO ON TO NEXT COLUMN\r
+|                  | GO_L0617:\r
+| 000A09 C05E      |         RJMP    L0617                   ; GO ON TO NEXT ROW, SAME COLUMN\r
+|                  | \r
+|                  | VALID_INTERSECTION:\r
+|                  |         ; INTERSECTION IS VALID, WE HAVE KEY MAKE\r
+| 000A0A E054      |         LDI     D,$04\r
+| 000A0B 9350 0113 |         STS     DEBOUNCE,D\r
+| 000A0D 9200 0107 |         STS     ACTIVE_ZONE,R0\r
+| 000A0F E356      |         LDI     D,54 ;43\r
+| 000A10 9350 0110 |         STS     BUZZ_TIME,D             ; SHORT BEEP ON MAKE\r
+|                  | \r
+| 000A12 2D55      |         MOV     D,TX_COUNT\r
+| 000A13 315F      |         CPI     D,TX_SIZE-1\r
+| 000A14 F438      |         BRSH    L05F9\r
+|                  | \r
+| 000A15 931F      |         PUSH    A\r
+| 000A16 2D10      |         MOV     A,R0\r
+| 000A17 DA8D      |         RCALL   TX_CHAR\r
+| 000A18 311B      |         CPI     A,$1B\r
+| 000A19 F409      |         BRNE    TX_CONT\r
+| 000A1A DA8A      |         RCALL   TX_CHAR\r
+|                  | TX_CONT:\r
+| 000A1B 911F      |         POP     A\r
+|                  | \r
+|                  | L05F9:\r
+| 000A1C E054      |         LDI     D,4                     ; SCAN TO NEXT LED / PHOTODIODE PAIR\r
+| 000A1D 0ED5      |         ADD     SCAN,D\r
+|                  | \r
+| 000A1E 9150 0169 |         LDS     D,LATCH5_SAV\r
+| 000A20 FD57      |         SBRC    D,7\r
+| 000A21 C027      |         RJMP    TURNED_ON\r
+|                  | \r
+| 000A22 E053      |         LDI     D,3\r
+| 000A23 BF53      |         OUT     TCCR0,D                 ; PRESCALE=CK/64\r
+| 000A24 EF50      |         LDI     D,-TK_DELAY_1\r
+| 000A25 BF52      |         OUT     TCNT0,D\r
+| 000A26 E051      |         LDI     D,1\r
+| 000A27 9350 0168 |         STS     SCAN_STATE,D\r
+|                  | \r
+| 000A29 E344      |         LDI     C,13*4\r
+| 000A2A 16D4      |         CP      SCAN,C\r
+| 000A2B F2E8      |         BRLO    GO_L0617\r
+|                  | \r
+|                  |         ; KEEP VDD ON, TO AVOID THE LONG TK_DELAY_2\r
+|                  |         ;LDS    D,LATCH5_SAV\r
+|                  |         ;ANDI   D,$BF                   ; BIT 6 = 0 VDD OFF\r
+|                  |         ;STS    LATCH5_SAV,D\r
+|                  |         ;PHOTO  D                       ; READY TO SLEEP FOR ANOTHER 0.25 SEC\r
+|                  | \r
+| 000A2C E050      |         LDI     D,0\r
+| 000A2D BF53      |         OUT     TCCR0,D                 ; STOP TIMER SINCE COMPLETE SCAN DONE\r
+|                  |  ;RJMP T0_OVERFLOW_RET\r
+|                  | \r
+|                  |  ;LDI D,$05\r
+|                  |  ;OUT UBRR,D\r
+|                  |  ;LDI D,$18\r
+|                  |  ;OUT UCR,D\r
+| 000A2E 9150 0116 |         LDS     D,ROW_BITMAP+1\r
+| 000A30 9140 0115 |         LDS     C,ROW_BITMAP\r
+|                  |  ;OUT UDR,C\r
+|                  |  ;OUT UDR,D\r
+| 000A32 2B45      |         OR      C,D                     ; HAVE WE SOME ACTIVITY?\r
+|                  | \r
+| 000A33 9150 016A |         LDS     D,TURNON_COUNT\r
+| 000A35 3054      |         CPI     D,4\r
+| 000A36 F418      |         BRSH    TURNON_BREAK            ; WAITING FOR BREAK\r
+| 000A37 3051      |         CPI     D,1\r
+| 000A38 F428      |         BRSH    TURNON_MAKE             ; WAITING FOR MAKE\r
+|                  | GO_T0_OVERFLOW_RET:\r
+| 000A39 CEB7      |         RJMP    T0_OVERFLOW_RET         ; ALREADY HAD MAKE, NOT TURNED ON YET\r
+|                  | \r
+|                  | TURNON_BREAK:\r
+| 000A3A 2344      |         TST     C                       ; HAD SOME ACTIVITY?\r
+| 000A3B F029      |         BREQ    TURNON_SAVE             ; NO, COUNT DOWN TO BREAK\r
+| 000A3C E055      |         LDI     D,4+1                   ; YES, RESTART COUNTDOWN TO BREAK\r
+| 000A3D C003      |         RJMP    TURNON_SAVE\r
+|                  | TURNON_MAKE:\r
+| 000A3E 2344      |         TST     C                       ; HAD SOME ACTIVITY?\r
+| 000A3F F409      |         BRNE    TURNON_SAVE             ; YES, COUNT DOWN TO MAKE\r
+| 000A40 E054      |         LDI     D,3+1                   ; NO, RESTART COUNTDOWN TO MAKE\r
+|                  | TURNON_SAVE:\r
+| 000A41 955A      |         DEC     D                       ; COUNT DOWN TO MAKE OR BREAK\r
+| 000A42 9350 016A |         STS     TURNON_COUNT,D\r
+| 000A44 F7A1      |         BRNE    GO_T0_OVERFLOW_RET      ; NOT READY TO TRY TURNON YET\r
+|                  | \r
+| 000A45 EB5F      |         LDI     D,~(1<<6)\r
+| 000A46 22B5      |         AND     FLAGS,D                 ; SAY WE TURNED OFF VIA BREAK DETECTION\r
+| 000A47 988A      |         CBI     DDRD,2                  ; D2 = TRI-STATE, VSWT ON\r
+| 000A48 CDCE      |         RJMP    GO_SLEEP_ENTRY          ; WE WILL NOW WAIT FOR TURNON COMMAND\r
+|                  | \r
+|                  | TURNED_ON:\r
+| 000A49 E050      |         LDI     D,0                     ; STOP TIMER, WE WILL REGAIN\r
+| 000A4A BF53      |         OUT     TCCR0,D                 ; CONTROL VIA NEXT CLOCKING INTERRUPT\r
+| 000A4B 9350 0114 |         STS     ROW_INDEX,D\r
+|                  | \r
+| 000A4D EC48      |         LDI     C,50*4\r
+| 000A4E 16D4      |         CP      SCAN,C\r
+| 000A4F F0C0      |         BRLO    L0617\r
+|                  | \r
+| 000A50 9150 0113 |         LDS     D,DEBOUNCE              ; COMPLETED ENTIRE SCAN, START NEW SCAN\r
+| 000A52 2355      |         TST     D\r
+| 000A53 F079      |         BREQ    L0617_RESET\r
+| 000A54 955A      |         DEC     D\r
+| 000A55 9350 0113 |         STS     DEBOUNCE,D\r
+| 000A57 F459      |         BRNE    L0617_RESET\r
+|                  | \r
+| 000A58 9150 0107 |         LDS     D,ACTIVE_ZONE\r
+| 000A5A 2355      |         TST     D\r
+| 000A5B F039      |         BREQ    L0617_RESET\r
+|                  | \r
+| 000A5C 2D55      |         MOV     D,TX_COUNT\r
+| 000A5D 3250      |         CPI     D,TX_SIZE\r
+| 000A5E F420      |         BRSH    L0617_RESET\r
+|                  | \r
+| 000A5F 931F      |         PUSH    A\r
+| 000A60 E010      |         LDI     A,0\r
+| 000A61 DA43      |         RCALL   TX_CHAR\r
+| 000A62 911F      |         POP     A\r
+|                  | \r
+|                  | L0617_RESET:\r
+| 000A63 24DD      |         CLR     SCAN\r
+| 000A64 92D0 0115 |         STS     ROW_BITMAP,SCAN\r
+| 000A66 92D0 0116 |         STS     ROW_BITMAP+1,SCAN\r
+|                  | \r
+|                  | L0617:  ; SELECT PHOTODIODE AND ALLOW TO SETTLE\r
+|                  |         ;LDIZ   SCAN_TBL\r
+| 000A68 E3EA      |         LDI     ZL,LOW((SCAN_TBL)*2)    ; USE PRIOR TO LPM INSTRUCTION\r
+| 000A69 E1F8      |         LDI     ZH,HIGH((SCAN_TBL)*2)   ; EXTRA BRACKETS NEEDED IF @0=EXPRESSION\r
+|                  | \r
+| 000A6A 9631      |         ADIW    ZL,1                    ; POINT TO FIRST PHOTO CHANNEL\r
+| 000A6B 2755      |         CLR     D\r
+| 000A6C 0DED      |         ADD     ZL,SCAN\r
+| 000A6D 1FF5      |         ADC     ZH,D\r
+| 000A6E 95C8      |         LPM\r
+| 000A6F 9150 0169 |         LDS     D,LATCH5_SAV\r
+| 000A71 7850      |         ANDI    D,$80                   ; BIT 7 = PRESERVED, LCD ON/OFF STATUS\r
+| 000A72 6450      |         ORI     D,$40                   ; BIT 6 = 1 VDD ON\r
+| 000A73 2950      |         OR      D,R0\r
+| 000A74 9350 0169 |         STS     LATCH5_SAV,D\r
+| 000A76           >         PHOTO   D\r
+| 000A76 BB5B      >         OUT     PORTA,D         ; SELECT PHOTODIODE CHANNEL\r
+| 000A77 9150 0119 >         LDS     D,LATCH12_SAV\r
+| 000A79 BB55      >         OUT     PORTC,D\r
+| 000A7A 9AA8      >         SBI     PORTC,0\r
+| 000A7B 9AC2      >         SBI     PORTB,2                 ; THIS WILL PROVIDE LE=1\r
+| 000A7C 98C2      >         CBI     PORTB,2                 ; THIS WILL PROVIDE G=0\r
+| 000A7D 98A8      >         CBI     PORTC,0\r
+| 000A7E 9AC2      >         SBI     PORTB,2                 ; THIS WILL PROVIDE LE=1\r
+| 000A7F 98C2      >         CBI     PORTB,2                 ; THIS WILL PROVIDE G=0\r
+| 000A80 CE70      |         RJMP    T0_OVERFLOW_RET\r
+|                  | \r
+| 000A81 2499      | SCROLL: CLR     LINE_CNT\r
+|                  | \r
+| 000A82 E0C0      |         LDI     YL,LOW(DRAW_DSPRAM)     ; SCROLL UP\r
+| 000A83 E2D0      |         LDI     YH,HIGH(DRAW_DSPRAM)\r
+| 000A84 E0A0      |         LDI     XL,LOW(DRAW_DSPRAM)\r
+| 000A85 E2B0      |         LDI     XH,HIGH(DRAW_DSPRAM)\r
+|                  | \r
+| 000A86 E118      |         LDI     A,HIGH(DRAW_DSPRAM>>6)\r
+| 000A87 D105      |         RCALL   SELECT_XPAGE\r
+|                  | \r
+| 000A88 5CA0      | L0628:  SUBI    XL,LOW(-$40)\r
+| 000A89 4FBF      |         SBCI    XH,HIGH(-$40)\r
+| 000A8A 940A      |         DEC     R0\r
+| 000A8B F7E1      |         BRNE    L0628\r
+|                  | \r
+| 000A8C E220      | L062C:  LDI     B,$20                   ; COPYING 32 BYTES\r
+| 000A8D 932F      | L062D:  PUSH    B\r
+| 000A8E D0C8      |         RCALL   READ_BYTE\r
+| 000A8F D0E3      |         RCALL   WRITE_BYTE\r
+| 000A90 95A3      |         INC     XL\r
+| 000A91 95C3      |         INC     YL\r
+| 000A92 912F      |         POP     B\r
+| 000A93 952A      |         DEC     B\r
+| 000A94           >         RJNE    L062D   ;BRNE   L062D\r
+| 000A94 F009      >         BREQ    LOCAL\r
+| 000A95 CFF7      >         RJMP    L062D\r
+|                  > LOCAL:\r
+|                  | \r
+| 000A96 DB1D      |         RCALL   NICK_SUB1\r
+| 000A97 9493      |         INC     LINE_CNT\r
+| 000A98 96A0      |         ADIW    YL,$20\r
+| 000A99 9690      |         ADIW    XL,$20\r
+| 000A9A 34B0      |         CPI     XH,HIGH(DRAW_DSPRAM+DISPLAY_LINES*$40)\r
+| 000A9B           >         RJNE    L062C   ;BRNE   L062C\r
+| 000A9B F009      >         BREQ    LOCAL\r
+| 000A9C CFEF      >         RJMP    L062C\r
+|                  > LOCAL:\r
+| 000A9D CD1B      |         RJMP    CLEAR_DISPLAY_LOOP\r
+|                  | \r
+|                  | SCROLL_REGION:\r
+| 000A9E D9DF      |         RCALL   RX_WAIT\r
+| 000A9F 931F      |         PUSH    A                       ; DIRECTION TO SCROLL\r
+|                  | \r
+| 000AA0 D9DD      |         RCALL   RX_WAIT\r
+| 000AA1 9310 0172 |         STS     SCROLL_COUNT,A          ; AMOUNT TO SCROLL IN PIXEL LINES\r
+|                  | \r
+| 000AA3 D9DA      |         RCALL   RX_WAIT\r
+| 000AA4 9516      |         LSR     A\r
+| 000AA5 9516      |         LSR     A\r
+| 000AA6 9516      |         LSR     A\r
+| 000AA7 F409      |         BRNE    SCROLL_WIDTH_OK\r
+| 000AA8 E210      |         LDI     A,32                    ; ENTRY WIDTH OF 0 = FULL\r
+|                  | SCROLL_WIDTH_OK:\r
+| 000AA9 9310 0175 |         STS     SCROLL_XX,A             ; X SIZE OF REGION IN BYTES\r
+|                  | \r
+| 000AAB D9D2      |         RCALL   RX_WAIT\r
+| 000AAC 9310 0176 |         STS     SCROLL_YY,A             ; Y SIZE OF REGION IN PIXEL LINES\r
+|                  | \r
+| 000AAE 2F17      |         MOV     A,CURSORX\r
+| 000AAF 9516      |         LSR     A\r
+| 000AB0 9516      |         LSR     A\r
+| 000AB1 9516      |         LSR     A\r
+| 000AB2 9310 0173 |         STS     SCROLL_X,A\r
+| 000AB4 9380 0174 |         STS     SCROLL_Y,CURSORY\r
+|                  | \r
+| 000AB6 E118      |         LDI     A,HIGH(DRAW_DSPRAM>>6)\r
+| 000AB7 D0D5      |         RCALL   SELECT_XPAGE\r
+|                  | \r
+| 000AB8 911F      |         POP     A                       ; DIRECTION TO SCROLL\r
+| 000AB9 FD10      |         SBRC    A,0\r
+| 000ABA C046      |         RJMP    SCROLL_DOWN\r
+|                  | \r
+|                  | ;SCROLL_UP:\r
+| 000ABB 27CC      |         CLR     YL\r
+| 000ABC 91D0 0174 |         LDS     YH,SCROLL_Y\r
+| 000ABE 2E9D      |         MOV     LINE_CNT,YH             ; FOR NICK_SUB1\r
+| 000ABF 95D6      |         LSR     YH\r
+| 000AC0 95C7      |         ROR     YL\r
+| 000AC1 95D6      |         LSR     YH\r
+| 000AC2 95C7      |         ROR     YL\r
+| 000AC3 9110 0173 |         LDS     A,SCROLL_X\r
+| 000AC5 0FC1      |         ADD     YL,A\r
+| 000AC6 5ED0      |         SUBI    YH,HIGH(-DRAW_DSPRAM)   ; Y = DESTINATION WITHIN DRAWING BUFFER\r
+|                  | \r
+| 000AC7 9120 0176 |         LDS     B,SCROLL_YY\r
+| 000AC9 9110 0172 |         LDS     A,SCROLL_COUNT\r
+| 000ACB 1712      |         CP      A,B\r
+| 000ACC F520      |         BRSH    SCROLL_UP_CLEAR         ; WITH B = LINES TO CLEAR\r
+| 000ACD 1B21      |         SUB     B,A                     ; CALCULATE B = LINES TO COPY INTACT\r
+|                  | \r
+| 000ACE 27AA      |         CLR     XL\r
+| 000ACF 91B0 0174 |         LDS     XH,SCROLL_Y\r
+| 000AD1 0FB1      |         ADD     XH,A                    ; SCROLL_COUNT\r
+| 000AD2 95B6      |         LSR     XH\r
+| 000AD3 95A7      |         ROR     XL\r
+| 000AD4 95B6      |         LSR     XH\r
+| 000AD5 95A7      |         ROR     XL\r
+| 000AD6 9110 0173 |         LDS     A,SCROLL_X\r
+| 000AD8 0FA1      |         ADD     XL,A\r
+| 000AD9 5EB0      |         SUBI    XH,HIGH(-DRAW_DSPRAM)   ; X = SOURCE WITHIN DRAWING BUFFER\r
+|                  | \r
+|                  | SCROLL_UP_LOOP:\r
+| 000ADA 932F      |         PUSH    B\r
+| 000ADB 93AF      |         PUSH    XL\r
+| 000ADC 93BF      |         PUSH    XH\r
+| 000ADD 93CF      |         PUSH    YL\r
+| 000ADE 93DF      |         PUSH    YH\r
+|                  | \r
+| 000ADF 9120 0175 |         LDS     B,SCROLL_XX\r
+| 000AE1 D068      |         RCALL   COPY_BYTES\r
+| 000AE2 DAD1      |         RCALL   NICK_SUB1\r
+|                  | \r
+| 000AE3 91DF      |         POP     YH\r
+| 000AE4 91CF      |         POP     YL\r
+| 000AE5 91BF      |         POP     XH\r
+| 000AE6 91AF      |         POP     XL\r
+| 000AE7 912F      |         POP     B\r
+|                  | \r
+| 000AE8 9493      |         INC     LINE_CNT\r
+| 000AE9 5CA0      |         SUBI    XL,LOW(-$40)\r
+| 000AEA 4FBF      |         SBCI    XH,HIGH(-$40)\r
+| 000AEB 5CC0      |         SUBI    YL,LOW(-$40)\r
+| 000AEC 4FDF      |         SBCI    YH,HIGH(-$40)\r
+|                  | \r
+| 000AED 952A      |         DEC     B\r
+| 000AEE F759      |         BRNE    SCROLL_UP_LOOP\r
+|                  | \r
+| 000AEF 9120 0172 |         LDS     B,SCROLL_COUNT          ; B = LINES TO CLEAR\r
+|                  | \r
+|                  | SCROLL_UP_CLEAR:\r
+| 000AF1 932F      |         PUSH    B\r
+| 000AF2 93CF      |         PUSH    YL\r
+| 000AF3 93DF      |         PUSH    YH\r
+|                  | \r
+| 000AF4 9120 0175 |         LDS     B,SCROLL_XX\r
+| 000AF6 D05A      |         RCALL   CLEAR_BYTES\r
+| 000AF7 DABC      |         RCALL   NICK_SUB1\r
+|                  | \r
+| 000AF8 91DF      |         POP     YH\r
+| 000AF9 91CF      |         POP     YL\r
+| 000AFA 912F      |         POP     B\r
+|                  | \r
+| 000AFB 9493      |         INC     LINE_CNT\r
+| 000AFC 5CC0      |         SUBI    YL,LOW(-$40)\r
+| 000AFD 4FDF      |         SBCI    YH,HIGH(-$40)\r
+|                  | \r
+| 000AFE 952A      |         DEC     B\r
+| 000AFF F789      |         BRNE    SCROLL_UP_CLEAR\r
+|                  | \r
+| 000B00 CB06      |         RJMP    GO_MAIN_LOOP\r
+|                  | \r
+|                  | SCROLL_DOWN:\r
+| 000B01 27CC      |         CLR     YL\r
+| 000B02 91D0 0174 |         LDS     YH,SCROLL_Y\r
+| 000B04 9100 0176 |         LDS     F,SCROLL_YY\r
+| 000B06 0FD0      |         ADD     YH,F\r
+| 000B07 2E9D      |         MOV     LINE_CNT,YH             ; FOR NICK_SUB1\r
+| 000B08 95D6      |         LSR     YH\r
+| 000B09 95C7      |         ROR     YL\r
+| 000B0A 95D6      |         LSR     YH\r
+| 000B0B 95C7      |         ROR     YL\r
+| 000B0C 9110 0173 |         LDS     A,SCROLL_X\r
+| 000B0E 0FC1      |         ADD     YL,A\r
+| 000B0F 5ED0      |         SUBI    YH,HIGH(-DRAW_DSPRAM)   ; Y = DESTINATION WITHIN DRAWING BUFFER\r
+|                  | \r
+| 000B10 2F20      |         MOV     B,F ;LDS B,SCROLL_YY\r
+| 000B11 9110 0172 |         LDS     A,SCROLL_COUNT\r
+| 000B13 1712      |         CP      A,B\r
+| 000B14 F528      |         BRSH    SCROLL_DOWN_CLEAR       ; WITH B = LINES TO CLEAR\r
+| 000B15 1B21      |         SUB     B,A                     ; CALCULATE B = LINES TO COPY INTACT\r
+|                  | \r
+| 000B16 27AA      |         CLR     XL\r
+| 000B17 91B0 0174 |         LDS     XH,SCROLL_Y\r
+| 000B19 0FB0      |         ADD     XH,F\r
+| 000B1A 1BB1      |         SUB     XH,A                    ; SCROLL_COUNT\r
+| 000B1B 95B6      |         LSR     XH\r
+| 000B1C 95A7      |         ROR     XL\r
+| 000B1D 95B6      |         LSR     XH\r
+| 000B1E 95A7      |         ROR     XL\r
+| 000B1F 9110 0173 |         LDS     A,SCROLL_X\r
+| 000B21 0FA1      |         ADD     XL,A\r
+| 000B22 5EB0      |         SUBI    XH,HIGH(-DRAW_DSPRAM)   ; X = SOURCE WITHIN DRAWING BUFFER\r
+|                  | \r
+|                  | SCROLL_DOWN_LOOP:\r
+| 000B23 949A      |         DEC     LINE_CNT\r
+| 000B24 54A0      |         SUBI    XL,LOW($40)\r
+| 000B25 40B0      |         SBCI    XH,HIGH($40)\r
+| 000B26 54C0      |         SUBI    YL,LOW($40)\r
+| 000B27 40D0      |         SBCI    YH,HIGH($40)\r
+|                  | \r
+| 000B28 932F      |         PUSH    B\r
+| 000B29 93AF      |         PUSH    XL\r
+| 000B2A 93BF      |         PUSH    XH\r
+| 000B2B 93CF      |         PUSH    YL\r
+| 000B2C 93DF      |         PUSH    YH\r
+|                  | \r
+| 000B2D 9120 0175 |         LDS     B,SCROLL_XX\r
+| 000B2F D01A      |         RCALL   COPY_BYTES\r
+| 000B30 DA83      |         RCALL   NICK_SUB1\r
+|                  | \r
+| 000B31 91DF      |         POP     YH\r
+| 000B32 91CF      |         POP     YL\r
+| 000B33 91BF      |         POP     XH\r
+| 000B34 91AF      |         POP     XL\r
+| 000B35 912F      |         POP     B\r
+|                  | \r
+| 000B36 952A      |         DEC     B\r
+| 000B37 F759      |         BRNE    SCROLL_DOWN_LOOP\r
+|                  | \r
+| 000B38 9120 0172 |         LDS     B,SCROLL_COUNT          ; B = LINES TO CLEAR\r
+|                  | \r
+|                  | SCROLL_DOWN_CLEAR:\r
+| 000B3A 949A      |         DEC     LINE_CNT\r
+| 000B3B 54C0      |         SUBI    YL,LOW($40)\r
+| 000B3C 40D0      |         SBCI    YH,HIGH($40)\r
+|                  | \r
+| 000B3D 932F      |         PUSH    B\r
+| 000B3E 93CF      |         PUSH    YL\r
+| 000B3F 93DF      |         PUSH    YH\r
+|                  | \r
+| 000B40 9120 0175 |         LDS     B,SCROLL_XX\r
+| 000B42 D00E      |         RCALL   CLEAR_BYTES\r
+| 000B43 DA70      |         RCALL   NICK_SUB1\r
+|                  | \r
+| 000B44 91DF      |         POP     YH\r
+| 000B45 91CF      |         POP     YL\r
+| 000B46 912F      |         POP     B\r
+|                  | \r
+| 000B47 952A      |         DEC     B\r
+| 000B48 F789      |         BRNE    SCROLL_DOWN_CLEAR\r
+|                  | \r
+| 000B49 CABD      |         RJMP    GO_MAIN_LOOP\r
+|                  | \r
+|                  | COPY_BYTES:\r
+| 000B4A D00C      |         RCALL   READ_BYTE\r
+| 000B4B 9611      |         ADIW    XL,1\r
+|                  | \r
+| 000B4C D026      |         RCALL   WRITE_BYTE\r
+| 000B4D 9621      |         ADIW    YL,1\r
+|                  | \r
+| 000B4E 952A      |         DEC     B\r
+| 000B4F F7D1      |         BRNE    COPY_BYTES\r
+|                  | \r
+| 000B50 9508      |         RET\r
+|                  | \r
+|                  | CLEAR_BYTES:\r
+| 000B51 E010      |         LDI     A,0\r
+|                  | \r
+|                  | FILL_BYTES:\r
+| 000B52 D020      |         RCALL   WRITE_BYTE\r
+| 000B53 9621      |         ADIW    YL,1\r
+|                  | \r
+| 000B54 952A      |         DEC     B\r
+| 000B55 F7E1      |         BRNE    FILL_BYTES\r
+|                  | \r
+| 000B56 9508      |         RET\r
+|                  | \r
+|                  | READ_BYTE:\r
+| 000B57           >         A0_A13  XL,XH\r
+| 000B57 2F3A      >         MOV     R19,XL\r
+| 000B58 733F      >         ANDI    R19,$3F\r
+| 000B59 BB35      >         OUT     PORTC,R19\r
+|                  > \r
+| 000B5A 2F3B      >         MOV     R19,XH\r
+| 000B5B 0F33      >         LSL     R19\r
+| 000B5C 0F33      >         LSL     R19\r
+| 000B5D FBA7      >         BST     XL,7                    ; A7\r
+| 000B5E F931      >         BLD     R19,1\r
+| 000B5F FBA6      >         BST     XL,6                    ; A6\r
+| 000B60 F930      >         BLD     R19,0\r
+| 000B61 BB3B      >         OUT     PORTA,R19\r
+| 000B62 94F8      >         CLI\r
+| 000B63 9AC3      >         SBI     PORTB,3\r
+| 000B64 98C3      >         CBI     PORTB,3\r
+| 000B65 9478      >         SEI\r
+| 000B66 9330 0118 >         STS     LATCH11_SAV,R19\r
+| 000B68           >         RAMRD   A\r
+| 000B68 2700      >         CLR     F\r
+| 000B69 BB0A      >         OUT     DDRA,F                  ; PORTA INPUT\r
+| 000B6A 94F8      >         CLI\r
+| 000B6B 98C0      >         CBI     PORTB,0                 ; CS_ON\r
+| 000B6C 0000      >         NOP\r
+| 000B6D 9AC0      >         SBI     PORTB,0                 ; CS_OFF\r
+| 000B6E B319      >         IN      A,PINA                  ; READ DATA\r
+| 000B6F 9478      >         SEI\r
+| 000B70 EF0F      >         LDI     F,$FF\r
+| 000B71 BB0A      >         OUT     DDRA,F                  ; PORTA OUTPUT\r
+| 000B72 9508      |         RET\r
+|                  | \r
+|                  | WRITE_BYTE:\r
+| 000B73           >         A0_A13  YL,YH\r
+| 000B73 2F3C      >         MOV     R19,YL\r
+| 000B74 733F      >         ANDI    R19,$3F\r
+| 000B75 BB35      >         OUT     PORTC,R19\r
+|                  > \r
+| 000B76 2F3D      >         MOV     R19,YH\r
+| 000B77 0F33      >         LSL     R19\r
+| 000B78 0F33      >         LSL     R19\r
+| 000B79 FBC7      >         BST     YL,7                    ; A7\r
+| 000B7A F931      >         BLD     R19,1\r
+| 000B7B FBC6      >         BST     YL,6                    ; A6\r
+| 000B7C F930      >         BLD     R19,0\r
+| 000B7D BB3B      >         OUT     PORTA,R19\r
+| 000B7E 94F8      >         CLI\r
+| 000B7F 9AC3      >         SBI     PORTB,3\r
+| 000B80 98C3      >         CBI     PORTB,3\r
+| 000B81 9478      >         SEI\r
+| 000B82 9330 0118 >         STS     LATCH11_SAV,R19\r
+| 000B84           >         RAMWR   A\r
+| 000B84 BB1B      >         OUT     PORTA,A\r
+| 000B85 94F8      >         CLI\r
+| 000B86 98C1      >         CBI     PORTB,1\r
+| 000B87 98C0      >         CBI     PORTB,0\r
+| 000B88 0000      >         NOP\r
+| 000B89 9AC0      >         SBI     PORTB,0\r
+| 000B8A 9478      >         SEI\r
+| 000B8B 9AC1      >         SBI     PORTB,1\r
+| 000B8C 9508      |         RET\r
+|                  | \r
+|                  | SELECT_XPAGE:\r
+| 000B8D           >         A14_A18 A\r
+| 000B8D 94F8      >         CLI\r
+| 000B8E 9130 0117 >         LDS     R19,LATCH10_SAV         ; AND THIS\r
+| 000B90 2731      >         EOR     R19,A\r
+| 000B91 7E30      >         ANDI    R19,$E0\r
+| 000B92 2731      >         EOR     R19,A\r
+| 000B93 BB3B      >         OUT     PORTA,R19\r
+| 000B94 9AC4      >         SBI     PORTB,4\r
+| 000B95 98C4      >         CBI     PORTB,4\r
+| 000B96 9478      >         SEI\r
+| 000B97 9330 0117 >         STS     LATCH10_SAV,R19         ; MUST BE ATOMIC DUE TO TOGGLING M\r
+| 000B99 9508      |         RET\r
+|                  | \r
+|                  | ; HOW MANY SECS/6553600 PER 4HZ INTERRUPT ?\r
+|                  | ; EACH TIME THROUGH ADD 1638400 SECS/6553600 = 1/4 SEC\r
+|                  | ; OSCILLATOR IS SLOW SO WE WILL ADD 1 PART IN 10000\r
+|                  | ; HENCE EACH TIME THROUGH ADD 1638400+164 = 1638564 UNITS TO COUNT\r
+|                  | \r
+|                  | TIM2_OVF:\r
+| 000B9A B61F      |         IN      SR,SREG\r
+|                  | \r
+|                  |         ; REMOVED BECAUSE DON'T WANT TO HAVE IN AN INTERRUPT\r
+|                  |         ;WDR\r
+|                  | \r
+|                  | ;!!     LDI     A,$10                   ; DIAGNOSTIC\r
+|                  | ;!!     STS     BUZZ_TIME,A             ; SHORT BEEP\r
+|                  | \r
+| 000B9B 9150 015F |         LDS     D,TIME_HSEC_64K\r
+| 000B9D 555C      |         SUBI    D,LOW(-1638564)\r
+| 000B9E 9350 015F |         STS     TIME_HSEC_64K,D\r
+|                  | \r
+| 000BA0 9150 0160 |         LDS     D,TIME_HSEC_256\r
+| 000BA2 4F5F      |         SBCI    D,HIGH(-1638564)\r
+| 000BA3 9350 0160 |         STS     TIME_HSEC_256,D\r
+|                  | \r
+| 000BA5 9150 0161 |         LDS     D,TIME_HSEC\r
+| 000BA7 4E56      |         SBCI    D,HIGH(-1638564>>8)\r
+| 000BA8 3654      |         CPI     D,100\r
+| 000BA9 F450      |         BRSH    TIM2_CARRY\r
+| 000BAA 9350 0161 |         STS     TIME_HSEC,D\r
+|                  | \r
+|                  | TIM2_END:\r
+| 000BAC BE1F      |         OUT     SREG,SR\r
+| 000BAD FEB6      |         SBRS    FLAGS,6                 ; IF WE TURNED OFF VIA COMMAND,\r
+| 000BAE 9518      |         RETI                            ; START A NEW SCAN, OTHERWISE DONE\r
+|                  | \r
+| 000BAF E050      |         LDI     D,0\r
+| 000BB0 9350 0168 |         STS     SCAN_STATE,D            ; WE WILL EXECUTE SCAN_START ROUTINE\r
+| 000BB2 CD20      |         RJMP    T0_OVERFLOW             ; GO AND TURN VDD ON\r
+|                  | \r
+|                  | GO_TX_CHAR:\r
+| 000BB3 C8F1      |         RJMP    TX_CHAR\r
+|                  | \r
+|                  | TIM2_CARRY:\r
+| 000BB4 E050      |         LDI     D,0\r
+| 000BB5 9350 0161 |         STS     TIME_HSEC,D\r
+|                  | \r
+| 000BB7 9150 0162 |         LDS     D,TIME_SECOND\r
+| 000BB9 9553      |         INC     D\r
+| 000BBA 335C      |         CPI     D,60\r
+| 000BBB F1E8      |         BRLO    TIM2_SECOND\r
+|                  | \r
+| 000BBC 9150 0163 |         LDS     D,TIME_MINUTE\r
+| 000BBE 9553      |         INC     D\r
+| 000BBF 335C      |         CPI     D,60\r
+| 000BC0 F1A8      |         BRLO    TIM2_MINUTE\r
+|                  | \r
+| 000BC1 9150 0164 |         LDS     D,TIME_HOUR\r
+| 000BC3 9553      |         INC     D\r
+| 000BC4 3158      |         CPI     D,24\r
+| 000BC5 F168      |         BRLO    TIM2_HOUR\r
+|                  | \r
+| 000BC6 93EF      |         PUSH    ZL\r
+| 000BC7 93FF      |         PUSH    ZH\r
+| 000BC8 920F      |         PUSH    R0\r
+| 000BC9 E2ED      |         LDI     ZL,LOW(MONTH_TABLE*2-1)\r
+| 000BCA E1F8      |         LDI     ZH,HIGH(MONTH_TABLE*2-1)\r
+| 000BCB 9190 0166 |         LDS     E,DATE_MONTH\r
+| 000BCD 0FE9      |         ADD     ZL,E\r
+| 000BCE E090      |         LDI     E,0\r
+| 000BCF 1FF9      |         ADC     ZH,E\r
+| 000BD0 95C8      |         LPM\r
+| 000BD1 2D90      |         MOV     E,R0\r
+| 000BD2 319C      |         CPI     E,28\r
+| 000BD3 F431      |         BRNE    FEBRUARY_OK\r
+| 000BD4 9190 0167 |         LDS     E,DATE_YEAR\r
+| 000BD6 7093      |         ANDI    E,3\r
+| 000BD7 E19C      |         LDI     E,28\r
+| 000BD8 F409      |         BRNE    FEBRUARY_OK\r
+| 000BD9 E19D      |         LDI     E,29\r
+|                  | FEBRUARY_OK:\r
+| 000BDA 900F      |         POP     R0\r
+| 000BDB 91FF      |         POP     ZH\r
+| 000BDC 91EF      |         POP     ZL\r
+|                  | \r
+| 000BDD 9150 0165 |         LDS     D,DATE_DAY\r
+| 000BDF 1759      |         CP      D,E\r
+| 000BE0 F070      |         BRLO    TIM2_DAY\r
+|                  | \r
+| 000BE1 9150 0166 |         LDS     D,DATE_MONTH\r
+| 000BE3 305C      |         CPI     D,12\r
+| 000BE4 F030      |         BRLO    TIM2_MONTH\r
+|                  | \r
+| 000BE5 9150 0167 |         LDS     D,DATE_YEAR\r
+| 000BE7 9553      |         INC     D\r
+| 000BE8 9350 0167 |         STS     DATE_YEAR,D\r
+| 000BEA 2755      |         CLR     D\r
+|                  | TIM2_MONTH:\r
+| 000BEB 9553      |         INC     D\r
+| 000BEC 9350 0166 |         STS     DATE_MONTH,D\r
+| 000BEE 2755      |         CLR     D\r
+|                  | TIM2_DAY:\r
+| 000BEF 9553      |         INC     D\r
+| 000BF0 9350 0165 |         STS     DATE_DAY,D\r
+| 000BF2 2755      |         CLR     D\r
+|                  | TIM2_HOUR:\r
+| 000BF3 9350 0164 |         STS     TIME_HOUR,D\r
+| 000BF5 2755      |         CLR     D\r
+|                  | TIM2_MINUTE:\r
+| 000BF6 9350 0163 |         STS     TIME_MINUTE,D\r
+| 000BF8 2755      |         CLR     D\r
+|                  | TIM2_SECOND:\r
+| 000BF9 9350 0162 |         STS     TIME_SECOND,D\r
+|                  | \r
+|                  | TIM2_SEND:\r
+| 000BFB 2D55      |         MOV     D,TX_COUNT\r
+| 000BFC 3159      |         CPI     D,TX_SIZE-7\r
+| 000BFD F4C0      |         BRSH    TIM2_SEND_SKIP\r
+|                  | \r
+| 000BFE 931F      |         PUSH    A\r
+| 000BFF E11B      |         LDI     A,$1B\r
+| 000C00 D8A4      |         RCALL   TX_CHAR\r
+| 000C01 E514      |         LDI     A,'T'\r
+| 000C02 D8A2      |         RCALL   TX_CHAR\r
+|                  | ; LDS A,VCCL\r
+|                  | ; RCALL TX_CHAR\r
+|                  | ; LDS A,VCCH\r
+|                  | ; RCALL TX_CHAR\r
+|                  | ; LDS A,VEEL\r
+|                  | ; RCALL TX_CHAR\r
+|                  | ; LDS A,VEEH\r
+|                  | ; RCALL TX_CHAR\r
+|                  | ; LDI A,$0D\r
+|                  | ; RCALL TX_CHAR\r
+| 000C03 9110 0164 |         LDS     A,TIME_HOUR\r
+| 000C05 DFAD      |         RCALL   GO_TX_CHAR\r
+| 000C06 9110 0163 |         LDS     A,TIME_MINUTE\r
+| 000C08 DFAA      |         RCALL   GO_TX_CHAR\r
+| 000C09 9110 0162 |         LDS     A,TIME_SECOND\r
+| 000C0B DFA7      |         RCALL   GO_TX_CHAR\r
+| 000C0C 9110 0166 |         LDS     A,DATE_MONTH\r
+| 000C0E DFA4      |         RCALL   GO_TX_CHAR\r
+| 000C0F 9110 0165 |         LDS     A,DATE_DAY\r
+| 000C11 DFA1      |         RCALL   GO_TX_CHAR\r
+| 000C12 9110 0167 |         LDS     A,DATE_YEAR\r
+| 000C14 DF9E      |         RCALL   GO_TX_CHAR\r
+| 000C15 911F      |         POP     A\r
+|                  | \r
+|                  | TIM2_SEND_SKIP:\r
+| 000C16 CF95      |         RJMP    TIM2_END\r
+|                  | \r
+|                  | ; -----------------------------------------------------------------------------\r
+|                  | \r
+|                  | MONTH_TABLE:\r
+| 000C17           |         .DB     31,28,31,30,31,30,31,31,30,31,30,31\r
+| 000C19 1F1E 1F1F |\r
+| 000C1B 1E1F 1E1F |\r
+|                  | \r
+|                  | ; 1ST BYTE = LED\r
+|                  | ; 2ND BYTE = PHOTO\r
+|                  | ; 3RD BYTE = TOUCH CHANNEL\r
+|                  | \r
+|                  | SCAN_TBL:\r
+| 000C1D           |         .DB     $F0,$34,$00,$00,$E8,$34,$01,$00,$F0,$33,$01,$00,$E8,$33,$02,$00\r
+| 000C1F E834 0100 |\r
+| 000C21 F033 0100 |\r
+| 000C23 E833 0200 |\r
+| 000C25           |         .DB     $E4,$33,$03,$00,$E8,$32,$03,$00,$E4,$32,$04,$00,$E2,$32,$05,$00\r
+| 000C27 E832 0300 |\r
+| 000C29 E432 0400 |\r
+| 000C2B E232 0500 |\r
+| 000C2D           |         .DB     $E4,$31,$05,$00,$E2,$31,$06,$00,$E1,$31,$07,$00,$E2,$30,$07,$00\r
+| 000C2F E231 0600 |\r
+| 000C31 E131 0700 |\r
+| 000C33 E230 0700 |\r
+| 000C35           |         .DB     $E1,$30,$08,$00,$C1,$2A,$00,$00,$C2,$2A,$01,$00,$C1,$2B,$01,$00\r
+| 000C37 C12A 0000 |\r
+| 000C39 C22A 0100 |\r
+| 000C3B C12B 0100 |\r
+| 000C3D           |         .DB     $C2,$2B,$02,$00,$C4,$2B,$03,$00,$C2,$2C,$03,$00,$C4,$2C,$04,$00\r
+| 000C3F C42B 0300 |\r
+| 000C41 C22C 0300 |\r
+| 000C43 C42C 0400 |\r
+| 000C45           |         .DB     $C8,$2C,$05,$00,$C4,$18,$05,$00,$C8,$18,$06,$00,$D0,$18,$07,$00\r
+| 000C47 C418 0500 |\r
+| 000C49 C818 0600 |\r
+| 000C4B D018 0700 |\r
+| 000C4D           |         .DB     $C8,$19,$07,$00,$D0,$19,$08,$00,$A1,$19,$09,$00,$D0,$1A,$09,$00\r
+| 000C4F D019 0800 |\r
+| 000C51 A119 0900 |\r
+| 000C53 D01A 0900 |\r
+| 000C55           |         .DB     $A1,$1A,$0A,$00,$A2,$1A,$0B,$00,$A1,$1B,$0B,$00,$A2,$1B,$0C,$00\r
+| 000C57 A21A 0B00 |\r
+| 000C59 A11B 0B00 |\r
+| 000C5B A21B 0C00 |\r
+| 000C5D           |         .DB     $A4,$1B,$0D,$00,$A2,$1C,$0D,$00,$A4,$1C,$0E,$00,$A8,$1C,$0F,$00\r
+| 000C5F A21C 0D00 |\r
+| 000C61 A41C 0E00 |\r
+| 000C63 A81C 0F00 |\r
+| 000C65           |         .DB     $A4,$1D,$0F,$00,$A8,$1D,$10,$00,$B0,$1D,$11,$00,$A8,$1E,$11,$00\r
+| 000C67 A81D 1000 |\r
+| 000C69 B01D 1100 |\r
+| 000C6B A81E 1100 |\r
+| 000C6D           |         .DB     $B0,$1E,$12,$00,$61,$1E,$13,$00,$B0,$1F,$13,$00,$61,$1F,$14,$00\r
+| 000C6F 611E 1300 |\r
+| 000C71 B01F 1300 |\r
+| 000C73 611F 1400 |\r
+| 000C75           |         .DB     $62,$1F,$15,$00,$61,$28,$15,$00,$62,$28,$16,$00,$64,$28,$17,$00\r
+| 000C77 6128 1500 |\r
+| 000C79 6228 1600 |\r
+| 000C7B 6428 1700 |\r
+| 000C7D           |         .DB     $62,$29,$17,$00,$64,$29,$18,$00\r
+| 000C7F 6429 1800 |\r
+|                  | \r
+|                  | RTN_CODE:\r
+| 000C81           |         .DB     $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00\r
+| 000C83 0000 0000 |\r
+| 000C85 0000 0000 |\r
+| 000C87 0000 0000 |\r
+| 000C89           |         .DB     $00,$00,$00,$00,$00,$00,$08,$08,$08,$00,$00,$00,$00,$00,$00,$00\r
+| 000C8B 0000 0808 |\r
+| 000C8D 0800 0000 |\r
+| 000C8F 0000 0000 |\r
+| 000C91           |         .DB     $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00\r
+| 000C93 0000 0000 |\r
+| 000C95 0000 0000 |\r
+| 000C97 0000 0000 |\r
+| 000C99           |         .DB     $00,$00,$7E,$00,$31,$00,$32,$00,$33,$00,$34,$00,$35,$00,$36,$00\r
+| 000C9B 3100 3200 |\r
+| 000C9D 3300 3400 |\r
+| 000C9F 3500 3600 |\r
+| 000CA1           |         .DB     $37,$00,$38,$00,$39,$00,$30,$00,$2D,$00,$3D,$00,$00,$00,$00,$00\r
+| 000CA3 3900 3000 |\r
+| 000CA5 2D00 3D00 |\r
+| 000CA7 0000 0000 |\r
+| 000CA9           |         .DB     $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00\r
+| 000CAB 0000 0000 |\r
+| 000CAD 0000 0000 |\r
+| 000CAF 0000 0000 |\r
+| 000CB1           |         .DB     $00,$00,$00,$00,$51,$00,$57,$00,$45,$00,$52,$00,$54,$00,$59,$00\r
+| 000CB3 5100 5700 |\r
+| 000CB5 4500 5200 |\r
+| 000CB7 5400 5900 |\r
+| 000CB9           |         .DB     $55,$00,$49,$00,$4F,$00,$50,$00,$5B,$00,$5D,$00,$5C,$00,$00,$00\r
+| 000CBB 4F00 5000 |\r
+| 000CBD 5B00 5D00 |\r
+| 000CBF 5C00 0000 |\r
+| 000CC1           |         .DB     $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00\r
+| 000CC3 0000 0000 |\r
+| 000CC5 0000 0000 |\r
+| 000CC7 0000 0000 |\r
+| 000CC9           |         .DB     $00,$00,$00,$00,$00,$00,$41,$00,$53,$00,$44,$00,$46,$00,$47,$00\r
+| 000CCB 0000 4100 |\r
+| 000CCD 5300 4400 |\r
+| 000CCF 4600 4700 |\r
+| 000CD1           |         .DB     $48,$00,$4A,$00,$4B,$00,$4C,$00,$3B,$00,$27,$00,$0D,$0D,$0D,$00\r
+| 000CD3 4B00 4C00 |\r
+| 000CD5 3B00 2700 |\r
+| 000CD7 0D0D 0D00 |\r
+| 000CD9           |         .DB     $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00\r
+| 000CDB 0000 0000 |\r
+| 000CDD 0000 0000 |\r
+| 000CDF 0000 0000 |\r
+| 000CE1           |         .DB     $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$5A,$00,$58,$00,$43,$00\r
+| 000CE3 0000 0000 |\r
+| 000CE5 0000 5A00 |\r
+| 000CE7 5800 4300 |\r
+| 000CE9           |         .DB     $56,$00,$42,$00,$4E,$00,$4D,$00,$2C,$00,$2E,$00,$2F,$00,$00,$00\r
+| 000CEB 4E00 4D00 |\r
+| 000CED 2C00 2E00 |\r
+| 000CEF 2F00 0000 |\r
+| 000CF1 0000      |         .DB     $00,$00\r
+|                  | RTN_CODE_END:\r
+|                  | \r
+|                  | ; -----------------------------------------------------------------------------\r
+|                  | \r
+|                  | CHSET00:\r
+|                  | .INCLUDE "CHSET00.INC"\r
+|                  | ; chset00.inc generated from chset00.win, do not edit!\r
+|                  | \r
+| 000CF2           |         .db     $46,$32,$34,$44,$30,$33,$31,$39,$30,$33,$31,$32,$31,$37,$30,$39\r
+| 000CF4 3033 3139 |\r
+| 000CF6 3033 3132 |\r
+| 000CF8 3137 3039 |\r
+| 000CFA           |         .db     $4c,$03,$4c,$03,$4c,$03,$4c,$03,$4c,$03,$4c,$03,$4c,$03,$4c,$03\r
+| 000CFC 4C03 4C03 |\r
+| 000CFE 4C03 4C03 |\r
+| 000D00 4C03 4C03 |\r
+| 000D02           |         .db     $4c,$03,$4c,$03,$4c,$03,$4c,$03,$4c,$03,$4c,$03,$4c,$03,$4c,$03\r
+| 000D04 4C03 4C03 |\r
+| 000D06 4C03 4C03 |\r
+| 000D08 4C03 4C03 |\r
+| 000D0A           |         .db     $4c,$03,$4c,$03,$4c,$03,$4c,$03,$4c,$03,$4c,$03,$4c,$03,$4c,$03\r
+| 000D0C 4C03 4C03 |\r
+| 000D0E 4C03 4C03 |\r
+| 000D10 4C03 4C03 |\r
+| 000D12           |         .db     $4c,$03,$4c,$03,$4c,$03,$4c,$03,$4c,$03,$4c,$03,$4c,$03,$4c,$03\r
+| 000D14 4C03 4C03 |\r
+| 000D16 4C03 4C03 |\r
+| 000D18 4C03 4C03 |\r
+| 000D1A           |         .db     $00,$01,$4c,$03,$4c,$03,$4c,$03,$4c,$03,$4c,$03,$4c,$03,$4c,$03\r
+| 000D1C 4C03 4C03 |\r
+| 000D1E 4C03 4C03 |\r
+| 000D20 4C03 4C03 |\r
+| 000D22           |         .db     $4c,$03,$4c,$03,$4c,$03,$4c,$03,$4c,$03,$03,$01,$4c,$03,$4c,$03\r
+| 000D24 4C03 4C03 |\r
+| 000D26 4C03 0301 |\r
+| 000D28 4C03 4C03 |\r
+| 000D2A           |         .db     $06,$01,$0f,$01,$18,$01,$21,$01,$2a,$01,$33,$01,$3c,$01,$45,$01\r
+| 000D2C 1801 2101 |\r
+| 000D2E 2A01 3301 |\r
+| 000D30 3C01 4501 |\r
+| 000D32           |         .db     $4e,$01,$57,$01,$4c,$03,$4c,$03,$4c,$03,$4c,$03,$4c,$03,$4c,$03\r
+| 000D34 4C03 4C03 |\r
+| 000D36 4C03 4C03 |\r
+| 000D38 4C03 4C03 |\r
+| 000D3A           |         .db     $4c,$03,$60,$01,$69,$01,$72,$01,$7b,$01,$84,$01,$8d,$01,$96,$01\r
+| 000D3C 6901 7201 |\r
+| 000D3E 7B01 8401 |\r
+| 000D40 8D01 9601 |\r
+| 000D42           |         .db     $9f,$01,$a9,$01,$b2,$01,$bb,$01,$c4,$01,$cd,$01,$d6,$01,$df,$01\r
+| 000D44 B201 BB01 |\r
+| 000D46 C401 CD01 |\r
+| 000D48 D601 DF01 |\r
+| 000D4A           |         .db     $e8,$01,$f1,$01,$08,$02,$11,$02,$1a,$02,$23,$02,$2c,$02,$35,$02\r
+| 000D4C 0802 1102 |\r
+| 000D4E 1A02 2302 |\r
+| 000D50 2C02 3502 |\r
+| 000D52           |         .db     $3e,$02,$47,$02,$50,$02,$4c,$03,$4c,$03,$4c,$03,$4c,$03,$4c,$03\r
+| 000D54 5002 4C03 |\r
+| 000D56 4C03 4C03 |\r
+| 000D58 4C03 4C03 |\r
+| 000D5A           |         .db     $4c,$03,$59,$02,$62,$02,$6b,$02,$74,$02,$7d,$02,$86,$02,$8f,$02\r
+| 000D5C 6202 6B02 |\r
+| 000D5E 7402 7D02 |\r
+| 000D60 8602 8F02 |\r
+| 000D62           |         .db     $99,$02,$a3,$02,$ad,$02,$b8,$02,$c2,$02,$cb,$02,$d4,$02,$dd,$02\r
+| 000D64 AD02 B802 |\r
+| 000D66 C202 CB02 |\r
+| 000D68 D402 DD02 |\r
+| 000D6A           |         .db     $e6,$02,$f0,$02,$fc,$02,$03,$03,$0c,$03,$15,$03,$1e,$03,$27,$03\r
+| 000D6C FC02 0303 |\r
+| 000D6E 0C03 1503 |\r
+| 000D70 1E03 2703 |\r
+| 000D72           |         .db     $30,$03,$39,$03,$43,$03,$4c,$03,$4c,$03,$4c,$03,$4c,$03,$4c,$03\r
+| 000D74 4303 4C03 |\r
+| 000D76 4C03 4C03 |\r
+| 000D78 4C03 4C03 |\r
+| 000D7A           |         .db     $00,$03,$06,$61,$01,$f8,$01,$07,$70,$88,$98,$a8,$c8,$88,$70,$01\r
+| 000D7C 01F8 0107 |\r
+| 000D7E 7088 98A8 |\r
+| 000D80 C888 7001 |\r
+| 000D82           |         .db     $07,$20,$60,$20,$20,$20,$20,$70,$01,$07,$70,$88,$08,$10,$20,$40\r
+| 000D84 2020 2070 |\r
+| 000D86 0107 7088 |\r
+| 000D88 0810 2040 |\r
+| 000D8A           |         .db     $f8,$01,$07,$f8,$10,$20,$10,$08,$88,$70,$01,$07,$10,$30,$50,$90\r
+| 000D8C 1020 1008 |\r
+| 000D8E 8870 0107 |\r
+| 000D90 1030 5090 |\r
+| 000D92           |         .db     $f8,$10,$10,$01,$07,$f8,$80,$f0,$08,$08,$88,$70,$01,$07,$30,$40\r
+| 000D94 07F8 80F0 |\r
+| 000D96 0808 8870 |\r
+| 000D98 0107 3040 |\r
+| 000D9A           |         .db     $80,$f0,$88,$88,$70,$01,$07,$f8,$08,$10,$20,$40,$40,$40,$01,$07\r
+| 000D9C 7001 07F8 |\r
+| 000D9E 0810 2040 |\r
+| 000DA0 4040 0107 |\r
+| 000DA2           |         .db     $70,$88,$88,$70,$88,$88,$70,$01,$07,$70,$88,$88,$78,$08,$10,$60\r
+| 000DA4 8888 7001 |\r
+| 000DA6 0770 8888 |\r
+| 000DA8 7808 1060 |\r
+| 000DAA           |         .db     $01,$07,$70,$88,$88,$88,$f8,$88,$88,$01,$07,$f0,$88,$88,$f0,$88\r
+| 000DAC 8888 F888 |\r
+| 000DAE 8801 07F0 |\r
+| 000DB0 8888 F088 |\r
+| 000DB2           |         .db     $88,$f0,$01,$07,$70,$88,$80,$80,$80,$88,$70,$01,$07,$e0,$90,$88\r
+| 000DB4 7088 8080 |\r
+| 000DB6 8088 7001 |\r
+| 000DB8 07E0 9088 |\r
+| 000DBA           |         .db     $88,$88,$90,$e0,$01,$07,$f8,$80,$80,$f0,$80,$80,$f8,$01,$07,$f8\r
+| 000DBC 0107 F880 |\r
+| 000DBE 80F0 8080 |\r
+| 000DC0 F801 07F8 |\r
+| 000DC2           |         .db     $80,$80,$f0,$80,$80,$80,$01,$07,$70,$88,$80,$b8,$88,$88,$78,$01\r
+| 000DC4 8080 0107 |\r
+| 000DC6 7088 80B8 |\r
+| 000DC8 8888 7801 |\r
+| 000DCA           |         .db     $07,$88,$88,$88,$f8,$88,$88,$88,$02,$21,$07,$80,$80,$80,$80,$80\r
+| 000DCC F888 8888 |\r
+| 000DCE 0221 0780 |\r
+| 000DD0 8080 8080 |\r
+| 000DD2           |         .db     $80,$80,$01,$07,$08,$08,$08,$08,$08,$88,$70,$01,$07,$88,$90,$a0\r
+| 000DD4 0808 0808 |\r
+| 000DD6 0888 7001 |\r
+| 000DD8 0788 90A0 |\r
+| 000DDA           |         .db     $c0,$a0,$90,$88,$01,$07,$80,$80,$80,$80,$80,$80,$f8,$01,$07,$88\r
+| 000DDC 0107 8080 |\r
+| 000DDE 8080 8080 |\r
+| 000DE0 F801 0788 |\r
+| 000DE2           |         .db     $d8,$a8,$a8,$88,$88,$88,$01,$07,$88,$88,$c8,$a8,$98,$88,$88,$01\r
+| 000DE4 8888 0107 |\r
+| 000DE6 8888 C8A8 |\r
+| 000DE8 9888 8801 |\r
+| 000DEA           |         .db     $07,$70,$88,$88,$88,$88,$88,$70,$01,$07,$f0,$88,$88,$f0,$80,$80\r
+| 000DEC 8888 8870 |\r
+| 000DEE 0107 F088 |\r
+| 000DF0 88F0 8080 |\r
+| 000DF2           |         .db     $80,$01,$07,$70,$88,$88,$88,$a8,$90,$68,$4c,$03,$4c,$03,$4c,$03\r
+| 000DF4 8888 88A8 |\r
+| 000DF6 9068 4C03 |\r
+| 000DF8 4C03 4C03 |\r
+| 000DFA           |         .db     $06,$08,$01,$01,$4f,$00,$65,$03,$01,$07,$f0,$88,$88,$f0,$a0,$90\r
+| 000DFC 4F00 6503 |\r
+| 000DFE 0107 F088 |\r
+| 000E00 88F0 A090 |\r
+| 000E02           |         .db     $88,$01,$07,$70,$88,$80,$70,$08,$88,$70,$01,$07,$f8,$20,$20,$20\r
+| 000E04 8880 7008 |\r
+| 000E06 8870 0107 |\r
+| 000E08 F820 2020 |\r
+| 000E0A           |         .db     $20,$20,$20,$01,$07,$88,$88,$88,$88,$88,$88,$70,$01,$07,$88,$88\r
+| 000E0C 0788 8888 |\r
+| 000E0E 8888 8870 |\r
+| 000E10 0107 8888 |\r
+| 000E12           |         .db     $88,$88,$88,$50,$20,$01,$07,$88,$88,$88,$a8,$a8,$a8,$50,$01,$07\r
+| 000E14 2001 0788 |\r
+| 000E16 8888 A8A8 |\r
+| 000E18 A850 0107 |\r
+| 000E1A           |         .db     $88,$88,$50,$20,$50,$88,$88,$01,$07,$88,$88,$88,$50,$20,$20,$20\r
+| 000E1C 5088 8801 |\r
+| 000E1E 0788 8888 |\r
+| 000E20 5020 2020 |\r
+| 000E22           |         .db     $01,$07,$f8,$08,$10,$20,$40,$80,$f8,$01,$07,$00,$00,$70,$08,$78\r
+| 000E24 1020 4080 |\r
+| 000E26 F801 0700 |\r
+| 000E28 0070 0878 |\r
+| 000E2A           |         .db     $88,$78,$01,$07,$80,$80,$f0,$88,$88,$88,$f0,$01,$07,$00,$00,$78\r
+| 000E2C 8080 F088 |\r
+| 000E2E 8888 F001 |\r
+| 000E30 0700 0078 |\r
+| 000E32           |         .db     $80,$80,$80,$78,$01,$07,$08,$08,$78,$88,$88,$88,$78,$01,$07,$00\r
+| 000E34 0107 0808 |\r
+| 000E36 7888 8888 |\r
+| 000E38 7801 0700 |\r
+| 000E3A           |         .db     $00,$70,$88,$f8,$80,$70,$01,$07,$18,$20,$f8,$20,$20,$20,$20,$01\r
+| 000E3C 8070 0107 |\r
+| 000E3E 1820 F820 |\r
+| 000E40 2020 2001 |\r
+| 000E42           |         .db     $08,$00,$00,$78,$88,$88,$78,$08,$70,$01,$07,$80,$80,$b0,$c8,$88\r
+| 000E44 8888 7808 |\r
+| 000E46 7001 0780 |\r
+| 000E48 80B0 C888 |\r
+| 000E4A           |         .db     $88,$88,$02,$21,$07,$80,$00,$80,$80,$80,$80,$80,$05,$21,$08,$10\r
+| 000E4C 0780 0080 |\r
+| 000E4E 8080 8080 |\r
+| 000E50 0521 0810 |\r
+| 000E52           |         .db     $00,$10,$10,$10,$10,$90,$60,$05,$21,$07,$80,$80,$90,$a0,$c0,$a0\r
+| 000E54 1090 6005 |\r
+| 000E56 2107 8080 |\r
+| 000E58 90A0 C0A0 |\r
+| 000E5A           |         .db     $90,$03,$21,$07,$c0,$40,$40,$40,$40,$40,$40,$01,$07,$00,$00,$f0\r
+| 000E5C C040 4040 |\r
+| 000E5E 4040 4001 |\r
+| 000E60 0700 00F0 |\r
+| 000E62           |         .db     $a8,$a8,$a8,$a8,$01,$07,$00,$00,$b0,$c8,$88,$88,$88,$01,$07,$00\r
+| 000E64 0107 0000 |\r
+| 000E66 B0C8 8888 |\r
+| 000E68 8801 0700 |\r
+| 000E6A           |         .db     $00,$70,$88,$88,$88,$70,$01,$08,$00,$00,$f0,$88,$88,$f0,$80,$80\r
+| 000E6C 8870 0108 |\r
+| 000E6E 0000 F088 |\r
+| 000E70 88F0 8080 |\r
+| 000E72           |         .db     $01,$08,$00,$00,$78,$88,$88,$78,$08,$08,$02,$05,$61,$05,$b0,$c0\r
+| 000E74 7888 8878 |\r
+| 000E76 0808 0205 |\r
+| 000E78 6105 B0C0 |\r
+| 000E7A           |         .db     $80,$80,$80,$01,$07,$00,$00,$78,$80,$70,$08,$f0,$01,$07,$20,$20\r
+| 000E7C 0700 0078 |\r
+| 000E7E 8070 08F0 |\r
+| 000E80 0107 2020 |\r
+| 000E82           |         .db     $f8,$20,$20,$20,$18,$01,$07,$00,$00,$88,$88,$88,$98,$68,$01,$07\r
+| 000E84 1801 0700 |\r
+| 000E86 0088 8888 |\r
+| 000E88 9868 0107 |\r
+| 000E8A           |         .db     $00,$00,$88,$88,$88,$50,$20,$01,$07,$00,$00,$88,$88,$a8,$a8,$50\r
+| 000E8C 8850 2001 |\r
+| 000E8E 0700 0088 |\r
+| 000E90 88A8 A850 |\r
+| 000E92           |         .db     $01,$07,$00,$00,$88,$50,$20,$50,$88,$01,$08,$00,$00,$88,$88,$88\r
+| 000E94 8850 2050 |\r
+| 000E96 8801 0800 |\r
+| 000E98 0088 8888 |\r
+| 000E9A           |         .db     $78,$08,$70,$01,$07,$00,$00,$f8,$10,$20,$40,$f8,$01,$07,$f8,$f8\r
+| 000E9C 0700 00F8 |\r
+| 000E9E 1020 40F8 |\r
+| 000EA0 0107 F8F8 |\r
+| 000EA2 F8F8      |         .db     $f8,$f8,$f8,$f8,$f8,$00\r
+| 000EA4 F800      |\r
+|                  | \r
+|                  | \r
+|                  | CHSET00_END:\r
+|                  | \r
+|                  | ; -----------------------------------------------------------------------------\r
+|                  | \r
+|                  | GET_CLEAR_FRAME_RECT_SIZE:\r
+| 000EA5 9370 0156 |         STS     RECTNC_X,CURSORX\r
+| 000EA7 9380 0157 |         STS     RECTNC_Y,CURSORY\r
+| 000EA9 D5D4      |         RCALL   RX_WAIT\r
+| 000EAA 9310 0158 |         STS     RECTNC_XX,A\r
+| 000EAC D5D1      |         RCALL   RX_WAIT\r
+| 000EAD 9310 0159 |         STS     RECTNC_YY,A\r
+| 000EAF D026      |         RCALL   CLEAR_FRAME_RECT\r
+| 000EB0 C2E4      |         RJMP    MAIN_LOOP\r
+|                  | \r
+|                  | GET_FRAME_RECT_SIZE:\r
+| 000EB1 9370 0156 |         STS     RECTNC_X,CURSORX\r
+| 000EB3 9380 0157 |         STS     RECTNC_Y,CURSORY\r
+| 000EB5 D5C8      |         RCALL   RX_WAIT\r
+| 000EB6 9310 0158 |         STS     RECTNC_XX,A\r
+| 000EB8 D5C5      |         RCALL   RX_WAIT\r
+| 000EB9 9310 0159 |         STS     RECTNC_YY,A\r
+| 000EBB D02F      |         RCALL   FRAME_RECT\r
+| 000EBC C2D8      |         RJMP    MAIN_LOOP\r
+|                  | \r
+|                  | GET_CLEAR_HALFTONE_RECT_SIZE:\r
+| 000EBD 9370 0152 |         STS     RECT_X,CURSORX\r
+| 000EBF 9380 0153 |         STS     RECT_Y,CURSORY\r
+| 000EC1 D5BC      |         RCALL   RX_WAIT\r
+| 000EC2 9310 0154 |         STS     RECT_XX,A\r
+| 000EC4 D5B9      |         RCALL   RX_WAIT\r
+| 000EC5 9310 0155 |         STS     RECT_YY,A\r
+| 000EC7 D078      |         RCALL   CLEAR_HALFTONE_RECT\r
+| 000EC8 C2CC      |         RJMP    MAIN_LOOP\r
+|                  | \r
+|                  | GET_HALFTONE_RECT_SIZE:\r
+| 000EC9 9370 0152 |         STS     RECT_X,CURSORX\r
+| 000ECB 9380 0153 |         STS     RECT_Y,CURSORY\r
+| 000ECD D5B0      |         RCALL   RX_WAIT\r
+| 000ECE 9310 0154 |         STS     RECT_XX,A\r
+| 000ED0 D5AD      |         RCALL   RX_WAIT\r
+| 000ED1 9310 0155 |         STS     RECT_YY,A\r
+| 000ED3 D071      |         RCALL   HALFTONE_RECT\r
+| 000ED4 C2C0      |         RJMP    MAIN_LOOP\r
+|                  | \r
+| 000ED5 9508      | NO_GOX: RET\r
+|                  | \r
+|                  | CLEAR_FRAME_RECT:\r
+| 000ED6 9100 0156 |         LDS     F,RECTNC_X\r
+| 000ED8 9300 0152 |         STS     RECT_X,F\r
+| 000EDA 9100 0157 |         LDS     F,RECTNC_Y\r
+| 000EDC 9300 0153 |         STS     RECT_Y,F\r
+| 000EDE 9100 0158 |         LDS     F,RECTNC_XX\r
+| 000EE0 9300 0154 |         STS     RECT_XX,F\r
+| 000EE2 9100 0159 |         LDS     F,RECTNC_YY\r
+| 000EE4 9300 0155 |         STS     RECT_YY,F\r
+|                  | \r
+| 000EE6 E002      |         LDI     F,$02\r
+| 000EE7 2AB0      |         OR      FLAGS,F\r
+|                  | \r
+| 000EE8 D724      |         RCALL   DRAW_RECT\r
+|                  | \r
+| 000EE9 EF0D      |         LDI     F,$FD\r
+| 000EEA 22B0      |         AND     FLAGS,F\r
+|                  | \r
+|                  | FRAME_RECT:\r
+| 000EEB 9100 0158 |         LDS     F,RECTNC_XX\r
+| 000EED 950A      |         DEC     F\r
+| 000EEE 3002      |         CPI     F,2\r
+| 000EEF F328      |         BRLO    NO_GOX\r
+| 000EF0 9100 0159 |         LDS     F,RECTNC_YY\r
+| 000EF2 3003      |         CPI     F,3\r
+| 000EF3 F308      |         BRLO    NO_GOX\r
+|                  | \r
+| 000EF4 9100 0156 |         LDS     F,RECTNC_X\r
+| 000EF6 9300 0152 |         STS     RECT_X,F\r
+| 000EF8 9100 0157 |         LDS     F,RECTNC_Y\r
+| 000EFA 9300 0153 |         STS     RECT_Y,F\r
+| 000EFC 9100 0158 |         LDS     F,RECTNC_XX\r
+| 000EFE 9300 0154 |         STS     RECT_XX,F\r
+| 000F00 E001      |         LDI     F,$01\r
+| 000F01 9300 0155 |         STS     RECT_YY,F\r
+| 000F03 D709      |         RCALL   DRAW_RECT\r
+|                  | \r
+| 000F04 9100 0156 |         LDS     F,RECTNC_X\r
+| 000F06 9300 0152 |         STS     RECT_X,F\r
+| 000F08 9100 0157 |         LDS     F,RECTNC_Y\r
+| 000F0A 9503      |         INC     F\r
+| 000F0B 9300 0153 |         STS     RECT_Y,F\r
+| 000F0D 9100 0159 |         LDS     F,RECTNC_YY\r
+| 000F0F 5002      |         SUBI    F,2\r
+| 000F10 9300 0155 |         STS     RECT_YY,F\r
+| 000F12 E001      |         LDI     F,$01\r
+| 000F13 9300 0154 |         STS     RECT_XX,F\r
+| 000F15 D6F7      |         RCALL   DRAW_RECT\r
+|                  | \r
+| 000F16 9080 0158 |         LDS     X_SIZE,RECTNC_XX\r
+| 000F18 9100 0156 |         LDS     F,RECTNC_X\r
+| 000F1A 0D08      |         ADD     F,X_SIZE\r
+| 000F1B 950A      |         DEC     F\r
+| 000F1C 9300 0152 |         STS     RECT_X,F\r
+| 000F1E E001      |         LDI     F,$01\r
+| 000F1F 9300 0154 |         STS     RECT_XX,F\r
+| 000F21 9100 0157 |         LDS     F,RECTNC_Y\r
+| 000F23 9503      |         INC     F\r
+| 000F24 9300 0153 |         STS     RECT_Y,F\r
+| 000F26 9100 0159 |         LDS     F,RECTNC_YY\r
+| 000F28 5002      |         SUBI    F,2\r
+| 000F29 9300 0155 |         STS     RECT_YY,F\r
+| 000F2B D6E1      |         RCALL   DRAW_RECT\r
+|                  | \r
+| 000F2C 9100 0156 |         LDS     F,RECTNC_X\r
+| 000F2E 9300 0152 |         STS     RECT_X,F\r
+| 000F30 9100 0158 |         LDS     F,RECTNC_XX\r
+| 000F32 9300 0154 |         STS     RECT_XX,F\r
+| 000F34 9070 0159 |         LDS     Y_SIZE,RECTNC_YY\r
+| 000F36 9100 0157 |         LDS     F,RECTNC_Y\r
+| 000F38 0D07      |         ADD     F,Y_SIZE\r
+| 000F39 950A      |         DEC     F\r
+| 000F3A 9300 0153 |         STS     RECT_Y,F\r
+| 000F3C E001      |         LDI     F,$01\r
+| 000F3D 9300 0155 |         STS     RECT_YY,F\r
+| 000F3F C6CD      |         RJMP    DRAW_RECT\r
+|                  | \r
+|                  | CLEAR_HALFTONE_RECT:\r
+|                  | ;       LDS     F,RECTNC_X\r
+|                  | ;       STS     RECT_X,F\r
+|                  | ;       LDS     F,RECTNC_Y\r
+|                  | ;       STS     RECT_Y,F\r
+|                  | ;       LDS     F,RECTNC_XX\r
+|                  | ;       STS     RECT_XX,F\r
+|                  | ;       LDS     F,RECTNC_YY\r
+|                  | ;       STS     RECT_YY,F\r
+|                  | \r
+| 000F40 E002      |         LDI     F,$02\r
+| 000F41 2AB0      |         OR      FLAGS,F\r
+|                  | \r
+| 000F42 D6CA      |         RCALL   DRAW_RECT\r
+|                  | \r
+| 000F43 EF0D      |         LDI     F,$FD\r
+| 000F44 22B0      |         AND     FLAGS,F\r
+|                  | \r
+|                  | HALFTONE_RECT:\r
+| 000F45 9478      |         SEI\r
+| 000F46 9090 0153 |         LDS     LINE_CNT,RECT_Y\r
+| 000F48 9160 0152 |         LDS     XPIXEL,RECT_X\r
+| 000F4A D802      |         RCALL   CALCULATE_XBYTE\r
+| 000F4B 9360 0102 |         STS     XPIXEL_SAV,XPIXEL\r
+| 000F4D 92A0 0100 |         STS     XBYTE_SAV,XBYTE\r
+| 000F4F 9070 0155 |         LDS     Y_SIZE,RECT_YY\r
+| 000F51 27CC      |         CLR     YL\r
+| 000F52 2DD9      |         MOV     YH,LINE_CNT\r
+| 000F53 E515      |         LDI     A,$55\r
+| 000F54 FFD0      |         SBRS    YH,0\r
+| 000F55 EA1A      |         LDI     A,$AA\r
+| 000F56 2E01      |         MOV     PATTERN,A\r
+| 000F57 95D6      |         LSR     YH\r
+| 000F58 95C7      |         ROR     YL\r
+| 000F59 95D6      |         LSR     YH\r
+| 000F5A 95C7      |         ROR     YL\r
+| 000F5B 5ED0      |         SUBI    YH,HIGH(-DRAW_DSPRAM)   ; DRAW INTO DRAWING BUFFER\r
+| 000F5C E118      |         LDI     A,HIGH(DRAW_DSPRAM>>6)\r
+| 000F5D DC2F      |         RCALL   SELECT_XPAGE\r
+| 000F5E C007      |         RJMP    X03A3\r
+| 000F5F 5CC0      | X039A:  SUBI    YL,LOW(-$40)\r
+| 000F60 4FDF      |         SBCI    YH,HIGH(-$40)\r
+| 000F61 9493      |         INC     LINE_CNT\r
+| 000F62 9160 0102 |         LDS     XPIXEL,XPIXEL_SAV\r
+| 000F64 90A0 0100 |         LDS     XBYTE,XBYTE_SAV\r
+| 000F66 2AAC      | X03A3:  OR      XBYTE,YL\r
+| 000F67 EF1F      |         LDI     A,$FF\r
+| 000F68 9080 0154 |         LDS     X_SIZE,RECT_XX\r
+| 000F6A E000      |         LDI     F,$00\r
+| 000F6B 1680      |         CP      X_SIZE,F\r
+| 000F6C F041      |         BREQ    X03B0\r
+| 000F6D E008      |         LDI     F,$08\r
+| 000F6E 1680      |         CP      X_SIZE,F\r
+| 000F6F F0C8      |         BRLO    X03C2\r
+| 000F70 2366      |         TST     XPIXEL\r
+| 000F71 F019      |         BREQ    X03B0\r
+| 000F72 9516      | X03AD:  LSR     A\r
+| 000F73 956A      |         DEC     XPIXEL\r
+| 000F74 F7E9      |         BRNE    X03AD\r
+| 000F75 2110      | X03B0:  AND     A,PATTERN\r
+| 000F76 D7FE      |         RCALL   WR_DISP_MEM\r
+| 000F77 E008      |         LDI     F,$08\r
+| 000F78 9110 0102 |         LDS     A,XPIXEL_SAV\r
+| 000F7A 1B01      |         SUB     F,A\r
+| 000F7B 1A80      |         SUB     X_SIZE,F\r
+| 000F7C 94A3      |         INC     XBYTE\r
+| 000F7D EF1F      |         LDI     A,$FF\r
+| 000F7E E008      | X03B8:  LDI     F,$08\r
+| 000F7F 1680      |         CP      X_SIZE,F\r
+| 000F80 F040      |         BRLO    X03C2\r
+| 000F81 F0C1      |         BREQ    X03D2\r
+| 000F82 2110      |         AND     A,PATTERN\r
+| 000F83 D7F1      |         RCALL   WR_DISP_MEM\r
+| 000F84 EF1F      |         LDI     A,$FF\r
+| 000F85 E008      |         LDI     F,$08\r
+| 000F86 1A80      |         SUB     X_SIZE,F\r
+| 000F87 94A3      |         INC     XBYTE\r
+| 000F88 CFF5      |         RJMP    X03B8\r
+| 000F89 2088      | X03C2:  TST     X_SIZE\r
+| 000F8A F089      |         BREQ    X03D3\r
+| 000F8B 9516      | X03C4:  LSR     A\r
+| 000F8C 948A      |         DEC     X_SIZE\r
+| 000F8D F7E9      |         BRNE    X03C4\r
+| 000F8E 9510      |         COM     A\r
+| 000F8F 2366      |         TST     XPIXEL\r
+| 000F90 F049      |         BREQ    X03D2\r
+| 000F91 2722      |         CLR     B\r
+| 000F92 9516      | X03CB:  LSR     A\r
+| 000F93 9527      |         ROR     B\r
+| 000F94 956A      |         DEC     XPIXEL\r
+| 000F95 F7E1      |         BRNE    X03CB\r
+| 000F96 2110      |         AND     A,PATTERN\r
+| 000F97 D7DD      |         RCALL   WR_DISP_MEM\r
+| 000F98 94A3      |         INC     XBYTE\r
+| 000F99 2F12      |         MOV     A,B\r
+| 000F9A 2110      | X03D2:  AND     A,PATTERN\r
+| 000F9B D7D9      |         RCALL   WR_DISP_MEM\r
+| 000F9C 9400      | X03D3:  COM     PATTERN\r
+| 000F9D D616      |         RCALL   NICK_SUB1\r
+| 000F9E 947A      |         DEC     Y_SIZE\r
+| 000F9F 2700      |         CLR     F\r
+| 000FA0 1270      |         CPSE    Y_SIZE,F\r
+| 000FA1 CFBD      |         RJMP    X039A\r
+| 000FA2 9508      |         RET\r
+|                  | \r
+|                  | ; -----------------------------------------------------------------------------\r
+|                  | \r
+|                  |         .ORG    $1000\r
+|                  | \r
+tsv3.asm:3705: Warning : Flash size exceeded by 1 word(s)\r
+| 001000 0241      |         .DW     $4102                   ; SELECT ADDRESS COMMAND\r
+|                  | \r
+|                  | ; -----------------------------------------------------------------------------\r
+|                  | \r
+|                  | \r
++------------------+-----------------------------------------------------------+\r
+\r
+Errors      : 0\r
+Warnings    : 2\r
+Code        : 4097\r
+Rom         : 4\r
+Data        : 279\r
+Unused Code : 93\r
+Unused Rom  : 0\r
diff --git a/src/avrsample.old/aaa b/src/avrsample.old/aaa
new file mode 100644 (file)
index 0000000..f3c95bd
Binary files /dev/null and b/src/avrsample.old/aaa differ
diff --git a/src/avrsample.old/avr_make b/src/avrsample.old/avr_make
new file mode 100644 (file)
index 0000000..eace73e
--- /dev/null
@@ -0,0 +1,68 @@
+# GCC-AVR standard makefile\r
+# Based on AVRfreaks.net January 2000 sample makefile\r
+# For compilation under Microsoft Windows environment\r
+\r
+# Variables definitions\r
+       CC      = avr-gcc\r
+       AS      = avr-gcc -x assembler-with-cpp \r
+       RM      = rm -f\r
+       RN      = mv\r
+       BIN     = avr-objcopy\r
+       SIZE    = avr-size\r
+       INCDIR  = .\r
+       LIBDIR  = avr/lib\r
+       SHELL   = sh.exe\r
+\r
+# Output format (srec or ihex, avrobj is always created)\r
+       FORMAT = ihex           \r
+\r
+# Project specific object files\r
+       OBJ     = $(ASRC:.s=.o) $(SRC:.c=.o) \r
+       CPFLAGS += -mmcu=$(MCU)\r
+       ASFLAGS += -mmcu=$(MCU)\r
+       LDFLAGS += -mmcu=$(MCU)\r
+  \r
+# Define make process\r
+\r
+#all:  $(TRG).obj $(TRG).elf $(TRG).rom $(TRG).eep $(TRG).ok \r
+all:   $(TRG).s $(TRG).elf $(TRG).hex $(TRG).eep $(TRG).ok\r
+%.o : %.c \r
+       $(CC) -c $(CPFLAGS) -I$(INCDIR) $< -o $@\r
+%.s : %.c\r
+       $(CC) -S $(CPFLAGS) -I$(INCDIR) $< -o $@\r
+%.o : %.s\r
+       $(AS) -c $(ASFLAGS) -I$(INCDIR) $< -o $@\r
+%.elf: $(OBJ)\r
+       $(CC) $(OBJ) $(LIB) $(LDFLAGS) -o $@\r
+%.obj: %.elf\r
+       $(BIN) -O avrobj -R .eeprom $< $@\r
+%.rom: %.elf\r
+       $(BIN) -O $(FORMAT) -R .eeprom $< $@\r
+#%.eep: %.elf\r
+#      $(BIN) -j .eeprom --set-section-flags=.eeprom="alloc,load" section-lma .eeprom=0 -O $(FORMAT) $< $@\r
+%.eep: %.elf\r
+       $(BIN) -j .eeprom --set-section-flags .eeprom="alloc,load" section-lma .eeprom=0 -O $(FORMAT) $< $@\r
+%.hex: %.elf\r
+       $(BIN) -O ihex $< $@\r
+\r
+# No error message if successfully compiled\r
+%ok:\r
+       @echo "Errors: none" \r
+\r
+# Clean up directory\r
+clean:\r
+       $(RM) $(OBJ)\r
+       $(RM) $(SRC:.c=.s)\r
+       $(RM) $(SRC:.c=.lst)\r
+       $(RM) $(TRG).map\r
+       $(RM) $(TRG).elf\r
+\r
+       $(RM) $(TRG).obj\r
+       $(RM) $(TRG).a90\r
+       $(RM) $(TRG).hex        \r
+       $(RM) *.bak\r
+       $(RM) *.log\r
+       \r
+size:\r
+       $(SIZE) $(TRG).elf\r
+       \r
diff --git a/src/avrsample.old/avr_make% b/src/avrsample.old/avr_make%
new file mode 100644 (file)
index 0000000..682da20
--- /dev/null
@@ -0,0 +1,68 @@
+# GCC-AVR standard makefile\r
+# Based on AVRfreaks.net January 2000 sample makefile\r
+# For compilation under Microsoft Windows environment\r
+\r
+# Variables definitions\r
+       CC      = avr-gcc\r
+       AS      = avr-gcc -x assembler-with-cpp \r
+       RM      = rm -f\r
+       RN      = mv\r
+       BIN     = avr-objcopy\r
+       SIZE    = avr-size\r
+       INCDIR  = .\r
+       LIBDIR  = avr/lib\r
+       SHELL   = sh.exe\r
+\r
+# Output format (srec or ihex, avrobj is always created)\r
+       FORMAT = ihex           \r
+\r
+# Project specific object files\r
+       OBJ     = $(ASRC:.s=.o) $(SRC:.c=.o) \r
+       CPFLAGS += -mmcu=$(MCU)\r
+       ASFLAGS += -mmcu=$(MCU)\r
+       LDFLAGS += -mmcu=$(MCU)\r
+  \r
+# Define make process\r
+\r
+#all:  $(TRG).obj $(TRG).elf $(TRG).rom $(TRG).eep $(TRG).ok \r
+all:   $(TRG).elf $(TRG).hex $(TRG).eep $(TRG).ok\r
+%.o : %.c \r
+       $(CC) -c $(CPFLAGS) -I$(INCDIR) $< -o $@\r
+%.s : %.c\r
+       $(CC) -S $(CPFLAGS) -I$(INCDIR) $< -o $@\r
+%.o : %.s\r
+       $(AS) -c $(ASFLAGS) -I$(INCDIR) $< -o $@\r
+%.elf: $(OBJ)\r
+       $(CC) $(OBJ) $(LIB) $(LDFLAGS) -o $@\r
+%.obj: %.elf\r
+       $(BIN) -O avrobj -R .eeprom $< $@\r
+%.rom: %.elf\r
+       $(BIN) -O $(FORMAT) -R .eeprom $< $@\r
+#%.eep: %.elf\r
+#      $(BIN) -j .eeprom --set-section-flags=.eeprom="alloc,load" section-lma .eeprom=0 -O $(FORMAT) $< $@\r
+%.eep: %.elf\r
+       $(BIN) -j .eeprom --set-section-flags .eeprom="alloc,load" section-lma .eeprom=0 -O $(FORMAT) $< $@\r
+%.hex: %.elf\r
+       $(BIN) -O ihex $< $@\r
+\r
+# No error message if successfully compiled\r
+%ok:\r
+       @echo "Errors: none" \r
+\r
+# Clean up directory\r
+clean:\r
+       $(RM) $(OBJ)\r
+       $(RM) $(SRC:.c=.s)\r
+       $(RM) $(SRC:.c=.lst)\r
+       $(RM) $(TRG).map\r
+       $(RM) $(TRG).elf\r
+\r
+       $(RM) $(TRG).obj\r
+       $(RM) $(TRG).a90\r
+       $(RM) $(TRG).hex        \r
+       $(RM) *.bak\r
+       $(RM) *.log\r
+       \r
+size:\r
+       $(SIZE) $(TRG).elf\r
+       \r
diff --git a/src/avrsample.old/hello.c b/src/avrsample.old/hello.c
new file mode 100644 (file)
index 0000000..e203f00
--- /dev/null
@@ -0,0 +1,60 @@
+/* hello.c by Nick for Hytech AVR */\r
+\r
+#include <stdio.h>\r
+#include <avr/io.h>\r
+/* #include <avr/signal.h> */\r
+#include "hello.h"\r
+\r
+int my_puts(char *s)\r
+       {\r
+       char c;\r
+\r
+       while (c = *s++)\r
+               {\r
+               my_putc(c);\r
+               }\r
+       return 0;\r
+       }\r
+\r
+int my_putc(char c)\r
+       {\r
+       while (bit_is_set(UCSRA, UDRE) == 0)\r
+               ;\r
+       UDR = c;\r
+       return 0;\r
+       }\r
+\r
+int my_getc(void)\r
+       {\r
+       if (bit_is_set(UCSRA, RXC) == 0)\r
+               return -1;\r
+       return UDR;\r
+       }\r
+\r
+int main(void)\r
+       {\r
+       __do_copy_data();\r
+       __do_clear_bss();\r
+\r
+       /* initialise the AVR's built-in UART for 9600 bps */\r
+       UCSRA = _BV(TXC);\r
+       UCSRB = _BV(TXEN) | _BV(RXEN);\r
+       UBRR = 71;\r
+       /* UBRRH = 0; */ /* = (11059200 / (9600 * 16)) - 1 */\r
+\r
+#if 1\r
+       /* send a demo message to ISPD via the AVR's UART */\r
+       my_puts("a"); /* "hello, world\r\n"); */\r
+#else\r
+       /* setup the standard input, output and error streams */\r
+       fdevopen(my_putc, my_getc, 0);\r
+\r
+       /* send a demo message to ISPD via the AVR's UART */\r
+       printf("hello, world\r\n");\r
+#endif\r
+\r
+       /* enter an infinite loop as we can never exit */\r
+       while (1)\r
+               ;\r
+       }\r
+\r
diff --git a/src/avrsample.old/hello.elf b/src/avrsample.old/hello.elf
new file mode 100644 (file)
index 0000000..8290ef0
Binary files /dev/null and b/src/avrsample.old/hello.elf differ
diff --git a/src/avrsample.old/hello.h b/src/avrsample.old/hello.h
new file mode 100644 (file)
index 0000000..62e1390
--- /dev/null
@@ -0,0 +1,7 @@
+/* hello.h by Nick for Hytech AVR */\r
+\r
+int my_puts(char *s);\r
+int my_putc(char c);\r
+int my_getc(void);\r
+int main(void);\r
+\r
diff --git a/src/avrsample.old/hello.hex b/src/avrsample.old/hello.hex
new file mode 100644 (file)
index 0000000..f588907
--- /dev/null
@@ -0,0 +1,14 @@
+:100000000DC027C026C025C024C023C022C021C0E7\r
+:1000100020C01FC01EC01DC01CC01BC011241FBE9D\r
+:10002000CFEDD0E0DEBFCDBF10E0A0E6B0E0E2EB68\r
+:10003000F0E003C0C89531960D92A236B107D1F712\r
+:1000400010E0A2E6B0E001C01D92A236B107E1F7D0\r
+:1000500020C0D6CFCF93DF93D92FC82F8991882383\r
+:1000600021F008D089918823E1F780E090E0DF91CA\r
+:10007000CF9108955D9BFECF8CB980E090E008950C\r
+:100080005F9B03C08CB1992708958FEF9FEF089570\r
+:100090000895CFEDD0E0DEBFCDBFC6DFD1DF80E475\r
+:1000A0008BB988E18AB987E489B980E690E0D2DF2C\r
+:0200B000FFCF80\r
+:0200B2006100EB\r
+:00000001FF\r
diff --git a/src/avrsample.old/hello.lst b/src/avrsample.old/hello.lst
new file mode 100644 (file)
index 0000000..827574c
--- /dev/null
@@ -0,0 +1,325 @@
+GAS LISTING C:\cygwin\tmp/cc8saaaa.s                   page 1\r
+\r
+\r
+   1                           .file   "hello.c"\r
+   2                           .arch at90s4433\r
+   3                   __SREG__ = 0x3f\r
+   4                   __SP_H__ = 0x3e\r
+   5                   __SP_L__ = 0x3d\r
+   6                   __tmp_reg__ = 0\r
+   7                   __zero_reg__ = 1\r
+   8                           .global __do_copy_data\r
+   9                           .global __do_clear_bss\r
+  10                           .stabs  "c:\\uzi\\src\\avrsample/",100,0,0,.Ltext0\r
+  11                           .stabs  "hello.c",100,0,0,.Ltext0\r
+  12                           .text\r
+  13                   .Ltext0:\r
+  14                           .stabs  "gcc2_compiled.",60,0,0,0\r
+  15                           .stabs  "int:t(0,1)=r(0,1);-32768;32767;",128,0,0,0\r
+  16                           .stabs  "char:t(0,2)=r(0,2);0;127;",128,0,0,0\r
+  17                           .stabs  "long int:t(0,3)=@s32;r(0,3);0020000000000;0017777777777;",128,0,0,0\r
+  18                           .stabs  "unsigned int:t(0,4)=r(0,4);0000000000000;0000000177777;",128,0,0,0\r
+  19                           .stabs  "long unsigned int:t(0,5)=@s32;r(0,5);0000000000000;0037777777777;",128,0,0,0\r
+  20                           .stabs  "long long int:t(0,6)=@s64;r(0,6);01000000000000000000000;0777777777777777777777;",128,0,0,\r
+  21                           .stabs  "long long unsigned int:t(0,7)=@s64;r(0,7);0000000000000;01777777777777777777777;",128,0,0,\r
+  22                           .stabs  "short int:t(0,8)=r(0,8);-32768;32767;",128,0,0,0\r
+  23                           .stabs  "short unsigned int:t(0,9)=r(0,9);0000000000000;0000000177777;",128,0,0,0\r
+  24                           .stabs  "signed char:t(0,10)=@s8;r(0,10);-128;127;",128,0,0,0\r
+  25                           .stabs  "unsigned char:t(0,11)=@s8;r(0,11);0;255;",128,0,0,0\r
+  26                           .stabs  "float:t(0,12)=r(0,1);4;0;",128,0,0,0\r
+  27                           .stabs  "double:t(0,13)=r(0,1);4;0;",128,0,0,0\r
+  28                           .stabs  "long double:t(0,14)=r(0,1);4;0;",128,0,0,0\r
+  29                           .stabs  "complex int:t(0,15)=s4real:(0,1),0,16;imag:(0,1),16,16;;",128,0,0,0\r
+  30                           .stabs  "complex float:t(0,16)=r(0,16);8;0;",128,0,0,0\r
+  31                           .stabs  "complex double:t(0,17)=r(0,17);8;0;",128,0,0,0\r
+  32                           .stabs  "complex long double:t(0,18)=r(0,18);8;0;",128,0,0,0\r
+  33                           .stabs  "__builtin_va_list:t(0,19)=*(0,20)=(0,20)",128,0,0,0\r
+  34                           .stabs  "_Bool:t(0,21)=@s8;-16;",128,0,0,0\r
+  35                           .stabs  "hello.c",130,0,0,0\r
+  36                           .stabs  "c:/WinAVR/avr/include/stdio.h",130,0,0,0\r
+  37                           .stabs  "c:/WinAVR/avr/include/inttypes.h",130,0,0,0\r
+  38                           .stabs  "int8_t:t(3,1)=(0,10)",128,0,46,0\r
+  39                           .stabs  "uint8_t:t(3,2)=(0,11)",128,0,47,0\r
+  40                           .stabs  "int16_t:t(3,3)=(0,1)",128,0,49,0\r
+  41                           .stabs  "uint16_t:t(3,4)=(0,4)",128,0,50,0\r
+  42                           .stabs  "int32_t:t(3,5)=(0,3)",128,0,52,0\r
+  43                           .stabs  "uint32_t:t(3,6)=(0,5)",128,0,53,0\r
+  44                           .stabs  "int64_t:t(3,7)=(0,6)",128,0,55,0\r
+  45                           .stabs  "uint64_t:t(3,8)=(0,7)",128,0,56,0\r
+  46                           .stabs  "intptr_t:t(3,9)=(3,3)",128,0,58,0\r
+  47                           .stabs  "uintptr_t:t(3,10)=(3,4)",128,0,59,0\r
+  48                           .stabn  162,0,0,0\r
+  49                           .stabs  "c:/WinAVR/lib/gcc-lib/avr/3.3/include/stdarg.h",130,0,0,0\r
+  50                           .stabs  "__gnuc_va_list:t(4,1)=(0,19)",128,0,43,0\r
+  51                           .stabs  "va_list:t(4,2)=(4,1)",128,0,105,0\r
+  52                           .stabn  162,0,0,0\r
+  53                           .stabs  "c:/WinAVR/lib/gcc-lib/avr/3.3/include/stddef.h",130,0,0,0\r
+  54                           .stabs  "size_t:t(5,1)=(0,4)",128,0,213,0\r
+  55                           .stabn  162,0,0,0\r
+  56                           .stabn  162,0,0,0\r
+  57                           .stabs  "c:/WinAVR/avr/include/avr/io.h",130,0,0,0\r
+\fGAS LISTING C:\cygwin\tmp/cc8saaaa.s                  page 2\r
+\r
+\r
+  58                           .stabs  "c:/WinAVR/avr/include/avr/io4433.h",130,0,0,0\r
+  59                           .stabs  "c:/WinAVR/avr/include/avr/sfr_defs.h",130,0,0,0\r
+  60                           .stabn  162,0,0,0\r
+  61                           .stabn  162,0,0,0\r
+  62                           .stabn  162,0,0,0\r
+  63                           .stabs  "hello.h",130,0,0,0\r
+  64                           .stabn  162,0,0,0\r
+  65                           .stabs  "my_puts:F(0,1)",36,0,9,my_puts\r
+  66                           .stabs  "s:P(1,1)=*(0,2)",64,0,8,28\r
+  67                   .global my_puts\r
+  68                           .type   my_puts, @function\r
+  69                   my_puts:\r
+   1:hello.c       **** /* hello.c by Nick for Hytech AVR */\r
+   2:hello.c       **** \r
+   3:hello.c       **** #include <stdio.h>\r
+   4:hello.c       **** #include <avr/io.h>\r
+   5:hello.c       **** /* #include <avr/signal.h> */\r
+   6:hello.c       **** #include "hello.h"\r
+   7:hello.c       **** \r
+   8:hello.c       **** int my_puts(char *s)\r
+   9:hello.c       ****        {\r
+  70                           .stabn 68,0,9,.LM1-my_puts\r
+  71                   .LM1:\r
+  72                   /* prologue: frame size=0 */\r
+  73 0000 CF93                 push r28\r
+  74 0002 DF93                 push r29\r
+  75                   /* prologue end (size=2) */\r
+  76 0004 D92F                 mov r29,r25\r
+  77 0006 C82F                 mov r28,r24\r
+  10:hello.c       ****        char c;\r
+  11:hello.c       **** \r
+  12:hello.c       ****        while (c = *s++)\r
+  78                           .stabn 68,0,12,.LM2-my_puts\r
+  79                   .LM2:\r
+  80                   .LBB2:\r
+  81 0008 8991                 ld r24,Y+\r
+  82 000a 8823                 tst r24\r
+  83 000c 21F0                 breq .L7\r
+  84                   .L5:\r
+  13:hello.c       ****                {\r
+  14:hello.c       ****                my_putc(c);\r
+  85                           .stabn 68,0,14,.LM3-my_puts\r
+  86                   .LM3:\r
+  87 000e 08D0                 rcall my_putc\r
+  88 0010 8991                 ld r24,Y+\r
+  89 0012 8823                 tst r24\r
+  90 0014 E1F7                 brne .L5\r
+  91                   .L7:\r
+  15:hello.c       ****                }\r
+  16:hello.c       ****        return 0;\r
+  17:hello.c       ****        }\r
+  92                           .stabn 68,0,17,.LM4-my_puts\r
+  93                   .LM4:\r
+  94                   .LBE2:\r
+  95 0016 80E0                 ldi r24,lo8(0)\r
+  96 0018 90E0                 ldi r25,hi8(0)\r
+  97                   /* epilogue: frame size=0 */\r
+\fGAS LISTING C:\cygwin\tmp/cc8saaaa.s                  page 3\r
+\r
+\r
+  98 001a DF91                 pop r29\r
+  99 001c CF91                 pop r28\r
+ 100 001e 0895                 ret\r
+ 101                   /* epilogue end (size=3) */\r
+ 102                   /* function my_puts size 16 (11) */\r
+ 103                           .size   my_puts, .-my_puts\r
+ 104                           .stabs  "c:r(0,2)",64,0,10,24\r
+ 105                           .stabn  192,0,0,.LBB2-my_puts\r
+ 106                           .stabn  224,0,0,.LBE2-my_puts\r
+ 107                   .Lscope0:\r
+ 108                           .stabs  "",36,0,0,.Lscope0-my_puts\r
+ 109                           .stabs  "my_putc:F(0,1)",36,0,20,my_putc\r
+ 110                           .stabs  "c:P(0,2)",64,0,19,24\r
+ 111                   .global my_putc\r
+ 112                           .type   my_putc, @function\r
+ 113                   my_putc:\r
+  18:hello.c       **** \r
+  19:hello.c       **** int my_putc(char c)\r
+  20:hello.c       ****        {\r
+ 114                           .stabn 68,0,20,.LM5-my_putc\r
+ 115                   .LM5:\r
+ 116                   /* prologue: frame size=0 */\r
+ 117                   /* prologue end (size=0) */\r
+  21:hello.c       ****        while (bit_is_set(UCSRA, UDRE) == 0)\r
+ 118                           .stabn 68,0,21,.LM6-my_putc\r
+ 119                   .LM6:\r
+ 120                   .L9:\r
+ 121 0020 5D9B                 sbis 43-0x20,5\r
+ 122 0022 FECF                 rjmp .L9\r
+  22:hello.c       ****                ;\r
+  23:hello.c       ****        UDR = c;\r
+ 123                           .stabn 68,0,23,.LM7-my_putc\r
+ 124                   .LM7:\r
+ 125 0024 8CB9                 out 44-0x20,r24\r
+  24:hello.c       ****        return 0;\r
+  25:hello.c       ****        }\r
+ 126                           .stabn 68,0,25,.LM8-my_putc\r
+ 127                   .LM8:\r
+ 128 0026 80E0                 ldi r24,lo8(0)\r
+ 129 0028 90E0                 ldi r25,hi8(0)\r
+ 130                   /* epilogue: frame size=0 */\r
+ 131 002a 0895                 ret\r
+ 132                   /* epilogue end (size=1) */\r
+ 133                   /* function my_putc size 6 (5) */\r
+ 134                           .size   my_putc, .-my_putc\r
+ 135                   .Lscope1:\r
+ 136                           .stabs  "",36,0,0,.Lscope1-my_putc\r
+ 137                           .stabs  "my_getc:F(0,1)",36,0,28,my_getc\r
+ 138                   .global my_getc\r
+ 139                           .type   my_getc, @function\r
+ 140                   my_getc:\r
+  26:hello.c       **** \r
+  27:hello.c       **** int my_getc(void)\r
+  28:hello.c       ****        {\r
+ 141                           .stabn 68,0,28,.LM9-my_getc\r
+ 142                   .LM9:\r
+ 143                   /* prologue: frame size=0 */\r
+\fGAS LISTING C:\cygwin\tmp/cc8saaaa.s                  page 4\r
+\r
+\r
+ 144                   /* prologue end (size=0) */\r
+  29:hello.c       ****        if (bit_is_set(UCSRA, RXC) == 0)\r
+ 145                           .stabn 68,0,29,.LM10-my_getc\r
+ 146                   .LM10:\r
+ 147 002c 5F9B                 sbis 43-0x20,7\r
+ 148 002e 03C0                 rjmp .L14\r
+  30:hello.c       ****                return -1;\r
+  31:hello.c       ****        return UDR;\r
+ 149                           .stabn 68,0,31,.LM11-my_getc\r
+ 150                   .LM11:\r
+ 151 0030 8CB1                 in r24,44-0x20\r
+ 152 0032 9927                 clr r25\r
+  32:hello.c       ****        }\r
+ 153                           .stabn 68,0,32,.LM12-my_getc\r
+ 154                   .LM12:\r
+ 155 0034 0895                 ret\r
+ 156                           .stabn 68,0,30,.LM13-my_getc\r
+ 157                   .LM13:\r
+ 158                   .L14:\r
+ 159 0036 8FEF                 ldi r24,lo8(-1)\r
+ 160 0038 9FEF                 ldi r25,hi8(-1)\r
+ 161                           .stabn 68,0,32,.LM14-my_getc\r
+ 162                   .LM14:\r
+ 163 003a 0895                 ret\r
+ 164                   /* epilogue: frame size=0 */\r
+ 165 003c 0895                 ret\r
+ 166                   /* epilogue end (size=1) */\r
+ 167                   /* function my_getc size 9 (8) */\r
+ 168                           .size   my_getc, .-my_getc\r
+ 169                   .Lscope2:\r
+ 170                           .stabs  "",36,0,0,.Lscope2-my_getc\r
+ 171                           .data\r
+ 172                   .LC0:\r
+ 173 0000 6100                 .string "a"\r
+ 174                           .text\r
+ 175                           .stabs  "main:F(0,1)",36,0,35,main\r
+ 176                   .global main\r
+ 177                           .type   main, @function\r
+ 178                   main:\r
+  33:hello.c       **** \r
+  34:hello.c       **** int main(void)\r
+  35:hello.c       ****        {\r
+ 179                           .stabn 68,0,35,.LM15-main\r
+ 180                   .LM15:\r
+ 181                   /* prologue: frame size=0 */\r
+ 182 003e C0E0                 ldi r28,lo8(__stack - 0)\r
+ 183 0040 D0E0                 ldi r29,hi8(__stack - 0)\r
+ 184 0042 DEBF                 out __SP_H__,r29\r
+ 185 0044 CDBF                 out __SP_L__,r28\r
+ 186                   /* prologue end (size=4) */\r
+  36:hello.c       ****        __do_copy_data();\r
+ 187                           .stabn 68,0,36,.LM16-main\r
+ 188                   .LM16:\r
+ 189                   .LBB3:\r
+ 190 0046 00D0                 rcall __do_copy_data\r
+  37:hello.c       ****        __do_clear_bss();\r
+ 191                           .stabn 68,0,37,.LM17-main\r
+\fGAS LISTING C:\cygwin\tmp/cc8saaaa.s                  page 5\r
+\r
+\r
+ 192                   .LM17:\r
+ 193 0048 00D0                 rcall __do_clear_bss\r
+  38:hello.c       **** \r
+  39:hello.c       ****        /* initialise the AVR's built-in UART for 9600 bps */\r
+  40:hello.c       ****        UCSRA = _BV(TXC);\r
+ 194                           .stabn 68,0,40,.LM18-main\r
+ 195                   .LM18:\r
+ 196 004a 80E4                 ldi r24,lo8(64)\r
+ 197 004c 8BB9                 out 43-0x20,r24\r
+  41:hello.c       ****        UCSRB = _BV(TXEN) | _BV(RXEN);\r
+ 198                           .stabn 68,0,41,.LM19-main\r
+ 199                   .LM19:\r
+ 200 004e 88E1                 ldi r24,lo8(24)\r
+ 201 0050 8AB9                 out 42-0x20,r24\r
+  42:hello.c       ****        UBRR = 71;\r
+ 202                           .stabn 68,0,42,.LM20-main\r
+ 203                   .LM20:\r
+ 204 0052 87E4                 ldi r24,lo8(71)\r
+ 205 0054 89B9                 out 41-0x20,r24\r
+  43:hello.c       ****        /* UBRRH = 0; */ /* = (11059200 / (9600 * 16)) - 1 */\r
+  44:hello.c       **** \r
+  45:hello.c       **** #if 1\r
+  46:hello.c       ****        /* send a demo message to ISPD via the AVR's UART */\r
+  47:hello.c       ****        my_puts("a"); /* "hello, world\r\n"); */\r
+ 206                           .stabn 68,0,47,.LM21-main\r
+ 207                   .LM21:\r
+ 208 0056 80E0                 ldi r24,lo8(.LC0)\r
+ 209 0058 90E0                 ldi r25,hi8(.LC0)\r
+ 210 005a D2DF                 rcall my_puts\r
+  48:hello.c       **** #else\r
+  49:hello.c       ****        /* setup the standard input, output and error streams */\r
+  50:hello.c       ****        fdevopen(my_putc, my_getc, 0);\r
+  51:hello.c       **** \r
+  52:hello.c       ****        /* send a demo message to ISPD via the AVR's UART */\r
+  53:hello.c       ****        printf("hello, world\r\n");\r
+  54:hello.c       **** #endif\r
+  55:hello.c       **** \r
+  56:hello.c       ****        /* enter an infinite loop as we can never exit */\r
+  57:hello.c       ****        while (1)\r
+ 211                           .stabn 68,0,57,.LM22-main\r
+ 212                   .LM22:\r
+ 213                   .L16:\r
+ 214 005c FFCF                 rjmp .L16\r
+  58:hello.c       ****                ;\r
+  59:hello.c       ****        }\r
+ 215                           .stabn 68,0,59,.LM23-main\r
+ 216                   .LM23:\r
+ 217                   .LBE3:\r
+ 218                   /* epilogue: frame size=0 */\r
+ 219                   /* epilogue: noreturn */\r
+ 220                   /* epilogue end (size=0) */\r
+ 221                   /* function main size 16 (12) */\r
+ 222                           .size   main, .-main\r
+ 223                   .Lscope3:\r
+ 224                           .stabs  "",36,0,0,.Lscope3-main\r
+ 225                           .text\r
+ 226                           .stabs "",100,0,0,Letext\r
+\fGAS LISTING C:\cygwin\tmp/cc8saaaa.s                  page 6\r
+\r
+\r
+ 227                   Letext:\r
+ 228                   /* File "hello.c": code   47 = 0x002f (  36), prologues   6, epilogues   5 */\r
+\fGAS LISTING C:\cygwin\tmp/cc8saaaa.s                  page 7\r
+\r
+\r
+DEFINED SYMBOLS\r
+                            *ABS*:00000000 hello.c\r
+                            *ABS*:0000003f __SREG__\r
+                            *ABS*:0000003e __SP_H__\r
+                            *ABS*:0000003d __SP_L__\r
+                            *ABS*:00000000 __tmp_reg__\r
+                            *ABS*:00000001 __zero_reg__\r
+C:\cygwin\tmp/cc8saaaa.s:69     .text:00000000 my_puts\r
+C:\cygwin\tmp/cc8saaaa.s:113    .text:00000020 my_putc\r
+C:\cygwin\tmp/cc8saaaa.s:140    .text:0000002c my_getc\r
+C:\cygwin\tmp/cc8saaaa.s:178    .text:0000003e main\r
+C:\cygwin\tmp/cc8saaaa.s:227    .text:0000005e Letext\r
+\r
+UNDEFINED SYMBOLS\r
+__do_copy_data\r
+__do_clear_bss\r
+__stack\r
diff --git a/src/avrsample.old/hello.map b/src/avrsample.old/hello.map
new file mode 100644 (file)
index 0000000..d64094d
--- /dev/null
@@ -0,0 +1,311 @@
+Archive member included because of file (symbol)\r
+\r
+c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\libgcc.a(_copy_data.o)\r
+                              hello.o (__do_copy_data)\r
+c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\libgcc.a(_clear_bss.o)\r
+                              hello.o (__do_clear_bss)\r
+\r
+Memory Configuration\r
+\r
+Name             Origin             Length             Attributes\r
+text             0x00000000         0x00002000         xr\r
+data             0x00800060         0x0000ffa0         rw !x\r
+eeprom           0x00810000         0x00010000         rw !x\r
+*default*        0x00000000         0xffffffff\r
+\r
+Linker script and memory map\r
+\r
+LOAD c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o\r
+LOAD hello.o\r
+LOAD c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\libgcc.a\r
+LOAD c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a\r
+LOAD c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\libgcc.a\r
+\r
+.hash\r
+ *(.hash)\r
+\r
+.dynsym\r
+ *(.dynsym)\r
+\r
+.dynstr\r
+ *(.dynstr)\r
+\r
+.gnu.version\r
+ *(.gnu.version)\r
+\r
+.gnu.version_d\r
+ *(.gnu.version_d)\r
+\r
+.gnu.version_r\r
+ *(.gnu.version_r)\r
+\r
+.rel.init\r
+ *(.rel.init)\r
+\r
+.rela.init\r
+ *(.rela.init)\r
+\r
+.rel.text\r
+ *(.rel.text)\r
+ *(.rel.text.*)\r
+ *(.rel.gnu.linkonce.t*)\r
+\r
+.rela.text\r
+ *(.rela.text)\r
+ *(.rela.text.*)\r
+ *(.rela.gnu.linkonce.t*)\r
+\r
+.rel.fini\r
+ *(.rel.fini)\r
+\r
+.rela.fini\r
+ *(.rela.fini)\r
+\r
+.rel.rodata\r
+ *(.rel.rodata)\r
+ *(.rel.rodata.*)\r
+ *(.rel.gnu.linkonce.r*)\r
+\r
+.rela.rodata\r
+ *(.rela.rodata)\r
+ *(.rela.rodata.*)\r
+ *(.rela.gnu.linkonce.r*)\r
+\r
+.rel.data\r
+ *(.rel.data)\r
+ *(.rel.data.*)\r
+ *(.rel.gnu.linkonce.d*)\r
+\r
+.rela.data\r
+ *(.rela.data)\r
+ *(.rela.data.*)\r
+ *(.rela.gnu.linkonce.d*)\r
+\r
+.rel.ctors\r
+ *(.rel.ctors)\r
+\r
+.rela.ctors\r
+ *(.rela.ctors)\r
+\r
+.rel.dtors\r
+ *(.rel.dtors)\r
+\r
+.rela.dtors\r
+ *(.rela.dtors)\r
+\r
+.rel.got\r
+ *(.rel.got)\r
+\r
+.rela.got\r
+ *(.rela.got)\r
+\r
+.rel.bss\r
+ *(.rel.bss)\r
+\r
+.rela.bss\r
+ *(.rela.bss)\r
+\r
+.rel.plt\r
+ *(.rel.plt)\r
+\r
+.rela.plt\r
+ *(.rela.plt)\r
+\r
+.text           0x00000000       0xb2\r
+ *(.vectors)\r
+ .vectors       0x00000000       0x1c c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o\r
+                0x00000000                __vectors\r
+                0x00000000                __vector_default\r
+                0x0000001c                __ctors_start = .\r
+ *(.ctors)\r
+                0x0000001c                __ctors_end = .\r
+                0x0000001c                __dtors_start = .\r
+ *(.dtors)\r
+                0x0000001c                __dtors_end = .\r
+ *(.progmem.gcc*)\r
+ *(.progmem*)\r
+                0x0000001c                . = ALIGN (0x2)\r
+ *(.init0)\r
+ *(.init1)\r
+ *(.init2)\r
+ .init2         0x0000001c        0xc c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o\r
+ *(.init3)\r
+ *(.init4)\r
+ .init4         0x00000028       0x18 c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\libgcc.a(_copy_data.o)\r
+                0x00000028                __do_copy_data\r
+ .init4         0x00000040       0x10 c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\libgcc.a(_clear_bss.o)\r
+                0x00000040                __do_clear_bss\r
+ *(.init5)\r
+ *(.init6)\r
+ *(.init7)\r
+ *(.init8)\r
+ *(.init9)\r
+ .init9         0x00000050        0x2 c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o\r
+ *(.text)\r
+ .text          0x00000052        0x2 c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o\r
+                0x00000052                __vector_1\r
+                0x00000052                __vector_12\r
+                0x00000052                __bad_interrupt\r
+                0x00000052                __vector_6\r
+                0x00000052                __vector_3\r
+                0x00000052                __vector_11\r
+                0x00000052                __vector_13\r
+                0x00000052                __vector_7\r
+                0x00000052                __vector_5\r
+                0x00000052                __vector_4\r
+                0x00000052                __vector_9\r
+                0x00000052                __vector_2\r
+                0x00000052                __vector_8\r
+                0x00000052                __vector_10\r
+ .text          0x00000054       0x5e hello.o\r
+                0x00000092                main\r
+                0x00000080                my_getc\r
+                0x00000054                my_puts\r
+                0x00000074                my_putc\r
+                0x000000b2                . = ALIGN (0x2)\r
+ *(.text.*)\r
+                0x000000b2                . = ALIGN (0x2)\r
+ *(.fini9)\r
+ *(.fini8)\r
+ *(.fini7)\r
+ *(.fini6)\r
+ *(.fini5)\r
+ *(.fini4)\r
+ *(.fini3)\r
+ *(.fini2)\r
+ *(.fini1)\r
+ *(.fini0)\r
+                0x000000b2                _etext = .\r
+\r
+.data           0x00800060        0x2 load address 0x000000b2\r
+                0x00800060                PROVIDE (__data_start, .)\r
+ *(.data)\r
+ .data          0x00800060        0x2 hello.o\r
+ *(.gnu.linkonce.d*)\r
+                0x00800062                . = ALIGN (0x2)\r
+                0x00800062                _edata = .\r
+                0x00800062                PROVIDE (__data_end, .)\r
+\r
+.bss            0x00800062        0x0\r
+                0x00800062                PROVIDE (__bss_start, .)\r
+ *(.bss)\r
+ *(COMMON)\r
+                0x00800062                PROVIDE (__bss_end, .)\r
+                0x000000b2                __data_load_start = LOADADDR (.data)\r
+                0x000000b4                __data_load_end = (__data_load_start + SIZEOF (.data))\r
+\r
+.noinit         0x00800062        0x0\r
+                0x00800062                PROVIDE (__noinit_start, .)\r
+ *(.noinit*)\r
+                0x00800062                PROVIDE (__noinit_end, .)\r
+                0x00800062                _end = .\r
+                0x00800062                PROVIDE (__heap_start, .)\r
+\r
+.eeprom         0x00810000        0x0 load address 0x000000b4\r
+ *(.eeprom*)\r
+                0x00810000                __eeprom_end = .\r
+\r
+.stab           0x00000000      0x6d8\r
+ *(.stab)\r
+ .stab          0x00000000      0x2a0 c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o\r
+ .stab          0x000002a0      0x438 hello.o\r
+                                0x444 (size before relaxing)\r
+\r
+.stabstr        0x00000000      0x6a4\r
+ *(.stabstr)\r
+ .stabstr       0x00000000      0x6a4 c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o\r
+                                  0x0 (size before relaxing)\r
+\r
+.stab.excl\r
+ *(.stab.excl)\r
+\r
+.stab.exclstr\r
+ *(.stab.exclstr)\r
+\r
+.stab.index\r
+ *(.stab.index)\r
+\r
+.stab.indexstr\r
+ *(.stab.indexstr)\r
+\r
+.comment\r
+ *(.comment)\r
+\r
+.debug\r
+ *(.debug)\r
+\r
+.line\r
+ *(.line)\r
+\r
+.debug_srcinfo\r
+ *(.debug_srcinfo)\r
+\r
+.debug_sfnames\r
+ *(.debug_sfnames)\r
+\r
+.debug_aranges\r
+ *(.debug_aranges)\r
+\r
+.debug_pubnames\r
+ *(.debug_pubnames)\r
+\r
+.debug_info\r
+ *(.debug_info)\r
+ *(.gnu.linkonce.wi.*)\r
+\r
+.debug_abbrev\r
+ *(.debug_abbrev)\r
+\r
+.debug_line\r
+ *(.debug_line)\r
+\r
+.debug_frame\r
+ *(.debug_frame)\r
+\r
+.debug_str\r
+ *(.debug_str)\r
+\r
+.debug_loc\r
+ *(.debug_loc)\r
+\r
+.debug_macinfo\r
+ *(.debug_macinfo)\r
+OUTPUT(hello.elf elf32-avr)\r
+\r
+Cross Reference Table\r
+\r
+Symbol                                            File\r
+__bad_interrupt                                   c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o\r
+__bss_end                                         c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\libgcc.a(_clear_bss.o)\r
+__bss_start                                       c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\libgcc.a(_clear_bss.o)\r
+__data_end                                        c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\libgcc.a(_copy_data.o)\r
+__data_load_start                                 c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\libgcc.a(_copy_data.o)\r
+__data_start                                      c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\libgcc.a(_copy_data.o)\r
+__do_clear_bss                                    c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\libgcc.a(_clear_bss.o)\r
+                                                  hello.o\r
+__do_copy_data                                    c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\libgcc.a(_copy_data.o)\r
+                                                  hello.o\r
+__heap_end                                        c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o\r
+__init                                            c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o\r
+__stack                                           c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o\r
+                                                  hello.o\r
+__vector_1                                        c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o\r
+__vector_10                                       c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o\r
+__vector_11                                       c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o\r
+__vector_12                                       c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o\r
+__vector_13                                       c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o\r
+__vector_2                                        c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o\r
+__vector_3                                        c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o\r
+__vector_4                                        c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o\r
+__vector_5                                        c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o\r
+__vector_6                                        c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o\r
+__vector_7                                        c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o\r
+__vector_8                                        c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o\r
+__vector_9                                        c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o\r
+__vector_default                                  c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o\r
+__vectors                                         c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o\r
+main                                              hello.o\r
+                                                  c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o\r
+my_getc                                           hello.o\r
+my_putc                                           hello.o\r
+my_puts                                           hello.o\r
diff --git a/src/avrsample.old/hello.o b/src/avrsample.old/hello.o
new file mode 100644 (file)
index 0000000..ba38dfb
Binary files /dev/null and b/src/avrsample.old/hello.o differ
diff --git a/src/avrsample.old/hello.s b/src/avrsample.old/hello.s
new file mode 100644 (file)
index 0000000..8944fb7
--- /dev/null
@@ -0,0 +1,228 @@
+       .file   "hello.c"\r
+       .arch at90s4433\r
+__SREG__ = 0x3f\r
+__SP_H__ = 0x3e\r
+__SP_L__ = 0x3d\r
+__tmp_reg__ = 0\r
+__zero_reg__ = 1\r
+       .global __do_copy_data\r
+       .global __do_clear_bss\r
+       .stabs  "c:\\uzi\\src\\avrsample/",100,0,0,.Ltext0\r
+       .stabs  "hello.c",100,0,0,.Ltext0\r
+       .text\r
+.Ltext0:\r
+       .stabs  "gcc2_compiled.",60,0,0,0\r
+       .stabs  "int:t(0,1)=r(0,1);-32768;32767;",128,0,0,0\r
+       .stabs  "char:t(0,2)=r(0,2);0;127;",128,0,0,0\r
+       .stabs  "long int:t(0,3)=@s32;r(0,3);0020000000000;0017777777777;",128,0,0,0\r
+       .stabs  "unsigned int:t(0,4)=r(0,4);0000000000000;0000000177777;",128,0,0,0\r
+       .stabs  "long unsigned int:t(0,5)=@s32;r(0,5);0000000000000;0037777777777;",128,0,0,0\r
+       .stabs  "long long int:t(0,6)=@s64;r(0,6);01000000000000000000000;0777777777777777777777;",128,0,0,0\r
+       .stabs  "long long unsigned int:t(0,7)=@s64;r(0,7);0000000000000;01777777777777777777777;",128,0,0,0\r
+       .stabs  "short int:t(0,8)=r(0,8);-32768;32767;",128,0,0,0\r
+       .stabs  "short unsigned int:t(0,9)=r(0,9);0000000000000;0000000177777;",128,0,0,0\r
+       .stabs  "signed char:t(0,10)=@s8;r(0,10);-128;127;",128,0,0,0\r
+       .stabs  "unsigned char:t(0,11)=@s8;r(0,11);0;255;",128,0,0,0\r
+       .stabs  "float:t(0,12)=r(0,1);4;0;",128,0,0,0\r
+       .stabs  "double:t(0,13)=r(0,1);4;0;",128,0,0,0\r
+       .stabs  "long double:t(0,14)=r(0,1);4;0;",128,0,0,0\r
+       .stabs  "complex int:t(0,15)=s4real:(0,1),0,16;imag:(0,1),16,16;;",128,0,0,0\r
+       .stabs  "complex float:t(0,16)=r(0,16);8;0;",128,0,0,0\r
+       .stabs  "complex double:t(0,17)=r(0,17);8;0;",128,0,0,0\r
+       .stabs  "complex long double:t(0,18)=r(0,18);8;0;",128,0,0,0\r
+       .stabs  "__builtin_va_list:t(0,19)=*(0,20)=(0,20)",128,0,0,0\r
+       .stabs  "_Bool:t(0,21)=@s8;-16;",128,0,0,0\r
+       .stabs  "hello.c",130,0,0,0\r
+       .stabs  "c:/WinAVR/avr/include/stdio.h",130,0,0,0\r
+       .stabs  "c:/WinAVR/avr/include/inttypes.h",130,0,0,0\r
+       .stabs  "int8_t:t(3,1)=(0,10)",128,0,46,0\r
+       .stabs  "uint8_t:t(3,2)=(0,11)",128,0,47,0\r
+       .stabs  "int16_t:t(3,3)=(0,1)",128,0,49,0\r
+       .stabs  "uint16_t:t(3,4)=(0,4)",128,0,50,0\r
+       .stabs  "int32_t:t(3,5)=(0,3)",128,0,52,0\r
+       .stabs  "uint32_t:t(3,6)=(0,5)",128,0,53,0\r
+       .stabs  "int64_t:t(3,7)=(0,6)",128,0,55,0\r
+       .stabs  "uint64_t:t(3,8)=(0,7)",128,0,56,0\r
+       .stabs  "intptr_t:t(3,9)=(3,3)",128,0,58,0\r
+       .stabs  "uintptr_t:t(3,10)=(3,4)",128,0,59,0\r
+       .stabn  162,0,0,0\r
+       .stabs  "c:/WinAVR/lib/gcc-lib/avr/3.3/include/stdarg.h",130,0,0,0\r
+       .stabs  "__gnuc_va_list:t(4,1)=(0,19)",128,0,43,0\r
+       .stabs  "va_list:t(4,2)=(4,1)",128,0,105,0\r
+       .stabn  162,0,0,0\r
+       .stabs  "c:/WinAVR/lib/gcc-lib/avr/3.3/include/stddef.h",130,0,0,0\r
+       .stabs  "size_t:t(5,1)=(0,4)",128,0,213,0\r
+       .stabn  162,0,0,0\r
+       .stabn  162,0,0,0\r
+       .stabs  "c:/WinAVR/avr/include/avr/io.h",130,0,0,0\r
+       .stabs  "c:/WinAVR/avr/include/avr/io4433.h",130,0,0,0\r
+       .stabs  "c:/WinAVR/avr/include/avr/sfr_defs.h",130,0,0,0\r
+       .stabn  162,0,0,0\r
+       .stabn  162,0,0,0\r
+       .stabn  162,0,0,0\r
+       .stabs  "hello.h",130,0,0,0\r
+       .stabn  162,0,0,0\r
+       .stabs  "my_puts:F(0,1)",36,0,9,my_puts\r
+       .stabs  "s:P(1,1)=*(0,2)",64,0,8,28\r
+.global        my_puts\r
+       .type   my_puts, @function\r
+my_puts:\r
+       .stabn 68,0,9,.LM1-my_puts\r
+.LM1:\r
+/* prologue: frame size=0 */\r
+       push r28\r
+       push r29\r
+/* prologue end (size=2) */\r
+       mov r29,r25\r
+       mov r28,r24\r
+       .stabn 68,0,12,.LM2-my_puts\r
+.LM2:\r
+.LBB2:\r
+       ld r24,Y+\r
+       tst r24\r
+       breq .L7\r
+.L5:\r
+       .stabn 68,0,14,.LM3-my_puts\r
+.LM3:\r
+       rcall my_putc\r
+       ld r24,Y+\r
+       tst r24\r
+       brne .L5\r
+.L7:\r
+       .stabn 68,0,17,.LM4-my_puts\r
+.LM4:\r
+.LBE2:\r
+       ldi r24,lo8(0)\r
+       ldi r25,hi8(0)\r
+/* epilogue: frame size=0 */\r
+       pop r29\r
+       pop r28\r
+       ret\r
+/* epilogue end (size=3) */\r
+/* function my_puts size 16 (11) */\r
+       .size   my_puts, .-my_puts\r
+       .stabs  "c:r(0,2)",64,0,10,24\r
+       .stabn  192,0,0,.LBB2-my_puts\r
+       .stabn  224,0,0,.LBE2-my_puts\r
+.Lscope0:\r
+       .stabs  "",36,0,0,.Lscope0-my_puts\r
+       .stabs  "my_putc:F(0,1)",36,0,20,my_putc\r
+       .stabs  "c:P(0,2)",64,0,19,24\r
+.global        my_putc\r
+       .type   my_putc, @function\r
+my_putc:\r
+       .stabn 68,0,20,.LM5-my_putc\r
+.LM5:\r
+/* prologue: frame size=0 */\r
+/* prologue end (size=0) */\r
+       .stabn 68,0,21,.LM6-my_putc\r
+.LM6:\r
+.L9:\r
+       sbis 43-0x20,5\r
+       rjmp .L9\r
+       .stabn 68,0,23,.LM7-my_putc\r
+.LM7:\r
+       out 44-0x20,r24\r
+       .stabn 68,0,25,.LM8-my_putc\r
+.LM8:\r
+       ldi r24,lo8(0)\r
+       ldi r25,hi8(0)\r
+/* epilogue: frame size=0 */\r
+       ret\r
+/* epilogue end (size=1) */\r
+/* function my_putc size 6 (5) */\r
+       .size   my_putc, .-my_putc\r
+.Lscope1:\r
+       .stabs  "",36,0,0,.Lscope1-my_putc\r
+       .stabs  "my_getc:F(0,1)",36,0,28,my_getc\r
+.global        my_getc\r
+       .type   my_getc, @function\r
+my_getc:\r
+       .stabn 68,0,28,.LM9-my_getc\r
+.LM9:\r
+/* prologue: frame size=0 */\r
+/* prologue end (size=0) */\r
+       .stabn 68,0,29,.LM10-my_getc\r
+.LM10:\r
+       sbis 43-0x20,7\r
+       rjmp .L14\r
+       .stabn 68,0,31,.LM11-my_getc\r
+.LM11:\r
+       in r24,44-0x20\r
+       clr r25\r
+       .stabn 68,0,32,.LM12-my_getc\r
+.LM12:\r
+       ret\r
+       .stabn 68,0,30,.LM13-my_getc\r
+.LM13:\r
+.L14:\r
+       ldi r24,lo8(-1)\r
+       ldi r25,hi8(-1)\r
+       .stabn 68,0,32,.LM14-my_getc\r
+.LM14:\r
+       ret\r
+/* epilogue: frame size=0 */\r
+       ret\r
+/* epilogue end (size=1) */\r
+/* function my_getc size 9 (8) */\r
+       .size   my_getc, .-my_getc\r
+.Lscope2:\r
+       .stabs  "",36,0,0,.Lscope2-my_getc\r
+       .data\r
+.LC0:\r
+       .string "a"\r
+       .text\r
+       .stabs  "main:F(0,1)",36,0,35,main\r
+.global        main\r
+       .type   main, @function\r
+main:\r
+       .stabn 68,0,35,.LM15-main\r
+.LM15:\r
+/* prologue: frame size=0 */\r
+       ldi r28,lo8(__stack - 0)\r
+       ldi r29,hi8(__stack - 0)\r
+       out __SP_H__,r29\r
+       out __SP_L__,r28\r
+/* prologue end (size=4) */\r
+       .stabn 68,0,36,.LM16-main\r
+.LM16:\r
+.LBB3:\r
+       rcall __do_copy_data\r
+       .stabn 68,0,37,.LM17-main\r
+.LM17:\r
+       rcall __do_clear_bss\r
+       .stabn 68,0,40,.LM18-main\r
+.LM18:\r
+       ldi r24,lo8(64)\r
+       out 43-0x20,r24\r
+       .stabn 68,0,41,.LM19-main\r
+.LM19:\r
+       ldi r24,lo8(24)\r
+       out 42-0x20,r24\r
+       .stabn 68,0,42,.LM20-main\r
+.LM20:\r
+       ldi r24,lo8(71)\r
+       out 41-0x20,r24\r
+       .stabn 68,0,47,.LM21-main\r
+.LM21:\r
+       ldi r24,lo8(.LC0)\r
+       ldi r25,hi8(.LC0)\r
+       rcall my_puts\r
+       .stabn 68,0,57,.LM22-main\r
+.LM22:\r
+.L16:\r
+       rjmp .L16\r
+       .stabn 68,0,59,.LM23-main\r
+.LM23:\r
+.LBE3:\r
+/* epilogue: frame size=0 */\r
+/* epilogue: noreturn */\r
+/* epilogue end (size=0) */\r
+/* function main size 16 (12) */\r
+       .size   main, .-main\r
+.Lscope3:\r
+       .stabs  "",36,0,0,.Lscope3-main\r
+       .text\r
+       .stabs "",100,0,0,Letext\r
+Letext:\r
+/* File "hello.c": code   47 = 0x002f (  36), prologues   6, epilogues   5 */\r
diff --git a/src/avrsample.old/io.com b/src/avrsample.old/io.com
new file mode 100644 (file)
index 0000000..5686873
Binary files /dev/null and b/src/avrsample.old/io.com differ
diff --git a/src/avrsample.old/ispd.exe b/src/avrsample.old/ispd.exe
new file mode 100644 (file)
index 0000000..4963ef0
Binary files /dev/null and b/src/avrsample.old/ispd.exe differ
diff --git a/src/avrsample.old/libc/calloc.c b/src/avrsample.old/libc/calloc.c
new file mode 100644 (file)
index 0000000..93f7246
--- /dev/null
@@ -0,0 +1,41 @@
+/*
+ * Copyright (c) 2002 Joerg Wunsch
+ *
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE DEVELOPERS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * $Id: calloc.c,v 1.1 2002/10/12 19:37:29 joerg_wunsch Exp $
+ */
+
+#include <stdlib.h>
+#include <string.h>
+
+void *
+calloc(size_t nele, size_t size)
+{
+       void *p;
+
+       if ((p = malloc(nele * size)) == 0)
+               return 0;
+       memset(p, 0, nele * size);
+       return p;
+}
diff --git a/src/avrsample.old/libc/calloc.s b/src/avrsample.old/libc/calloc.s
new file mode 100644 (file)
index 0000000..0e174d4
--- /dev/null
@@ -0,0 +1,82 @@
+       .file   "calloc.c"\r
+       .arch at90s4433\r
+__SREG__ = 0x3f\r
+__SP_H__ = 0x3e\r
+__SP_L__ = 0x3d\r
+__tmp_reg__ = 0\r
+__zero_reg__ = 1\r
+       .global __do_copy_data\r
+       .global __do_clear_bss\r
+       .text\r
+.global        calloc\r
+       .type   calloc, @function\r
+calloc:\r
+/* prologue: frame size=8 */\r
+       push r28\r
+       push r29\r
+       in r28,__SP_L__\r
+       in r29,__SP_H__\r
+       sbiw r28,8\r
+       in __tmp_reg__,__SREG__\r
+       cli\r
+       out __SP_H__,r29\r
+       out __SREG__,__tmp_reg__\r
+       out __SP_L__,r28\r
+/* prologue end (size=10) */\r
+       std Y+1,r24\r
+       std Y+2,r25\r
+       std Y+3,r22\r
+       std Y+4,r23\r
+       ldd r24,Y+1\r
+       ldd r25,Y+2\r
+       ldd r18,Y+3\r
+       ldd r19,Y+4\r
+       mov r23,r19\r
+       mov r22,r18\r
+       rcall __mulhi3\r
+       rcall malloc\r
+       std Y+5,r24\r
+       std Y+6,r25\r
+       ldd r24,Y+5\r
+       ldd r25,Y+6\r
+       sbiw r24,0\r
+       brne .L7\r
+       std Y+7,__zero_reg__\r
+       std Y+8,__zero_reg__\r
+       rjmp .L6\r
+.L7:\r
+       ldd r24,Y+1\r
+       ldd r25,Y+2\r
+       ldd r18,Y+3\r
+       ldd r19,Y+4\r
+       mov r23,r19\r
+       mov r22,r18\r
+       rcall __mulhi3\r
+       mov r20,r24\r
+       mov r21,r25\r
+       ldi r22,lo8(0)\r
+       ldi r23,hi8(0)\r
+       ldd r24,Y+5\r
+       ldd r25,Y+6\r
+       rcall memset\r
+       ldd r24,Y+5\r
+       ldd r25,Y+6\r
+       std Y+7,r24\r
+       std Y+8,r25\r
+.L6:\r
+       ldd r24,Y+7\r
+       ldd r25,Y+8\r
+/* epilogue: frame size=8 */\r
+       adiw r28,8\r
+       in __tmp_reg__,__SREG__\r
+       cli\r
+       out __SP_H__,r29\r
+       out __SREG__,__tmp_reg__\r
+       out __SP_L__,r28\r
+       pop r29\r
+       pop r28\r
+       ret\r
+/* epilogue end (size=9) */\r
+/* function calloc size 60 (41) */\r
+       .size   calloc, .-calloc\r
+/* File "calloc.c": code   60 = 0x003c (  41), prologues  10, epilogues   9 */\r
diff --git a/src/avrsample.old/libc/fdevopen.c b/src/avrsample.old/libc/fdevopen.c
new file mode 100644 (file)
index 0000000..f52c458
--- /dev/null
@@ -0,0 +1,102 @@
+/* Copyright (c) 2002, Joerg Wunsch
+   All rights reserved.
+
+   Redistribution and use in source and binary forms, with or without
+   modification, are permitted provided that the following conditions are met:
+
+   * Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+   * Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in
+     the documentation and/or other materials provided with the
+     distribution.
+   * Neither the name of the copyright holders nor the names of
+     contributors may be used to endorse or promote products derived
+     from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+  POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/* $Id: fdevopen.c,v 1.3 2003/03/17 17:49:46 troth Exp $ */
+
+#include <inttypes.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "stdio_private.h"
+
+FILE *__iob[3];                        /* stdin, stdout, stderr */
+
+/** \ingroup avr_stdio
+   This function is a replacement for \c fopen().
+
+   It opens a stream for a device where the actual device
+   implementation needs to be provided by the application.  If
+   successful, a pointer to the structure for the opened stream is
+   returned.  Reasons for a possible failure currently include that
+   neither the \c put nor the \c get argument have been provided, thus
+   attempting to open a stream with no IO intent at all, or that
+   insufficient dynamic memory is available to establish a new stream.
+
+   If the \c put function pointer is provided, the stream is opened
+   with write intent.  The function passed as \c put shall take one
+   character to write to the device as argument , and shall return 0
+   if the output was successful, and a nonzero value if the character
+   could not be sent to the device.
+
+   If the \c get function pointer is provided, the stream is opened
+   with read intent.  The function passed as \c get shall take no
+   arguments, and return one character from the device, passed as an
+   \c int type.  If an error occurs when trying to read from the
+   device, it shall return \c -1.
+
+   If both functions are provided, the stream is opened with read
+   and write intent.
+
+   The first stream opened with read intent is assigned to \c stdin,
+   and the first one opened with write intent is assigned to both,
+   \c stdout and \c stderr.
+
+   The third parameter \c opts is currently unused, but reserved for
+   future extensions.  */
+
+FILE *
+fdevopen(int (*put)(char), int (*get)(void), int opts __attribute__((unused)))
+{
+       FILE *s;
+
+       if (put == 0 && get == 0)
+               return 0;
+
+       if ((s = calloc(1, sizeof(FILE))) == 0)
+               return 0;
+
+       if (get != 0) {
+               s->get = get;
+               s->flags = __SRD;
+               if (stdin == 0)
+                       stdin = s;
+       }
+
+       if (put != 0) {
+               s->put = put;
+               s->flags |= __SWR;
+               if (stdout == 0) {
+                       stdout = s;
+                       if (stderr == 0)
+                               stderr = s;
+               }
+       }
+
+       return s;
+}
diff --git a/src/avrsample.old/libc/fdevopen.s b/src/avrsample.old/libc/fdevopen.s
new file mode 100644 (file)
index 0000000..1a8df29
--- /dev/null
@@ -0,0 +1,139 @@
+       .file   "fdevopen.c"\r
+       .arch at90s4433\r
+__SREG__ = 0x3f\r
+__SP_H__ = 0x3e\r
+__SP_L__ = 0x3d\r
+__tmp_reg__ = 0\r
+__zero_reg__ = 1\r
+       .global __do_copy_data\r
+       .global __do_clear_bss\r
+       .text\r
+.global        fdevopen\r
+       .type   fdevopen, @function\r
+fdevopen:\r
+/* prologue: frame size=10 */\r
+       push r28\r
+       push r29\r
+       in r28,__SP_L__\r
+       in r29,__SP_H__\r
+       sbiw r28,10\r
+       in __tmp_reg__,__SREG__\r
+       cli\r
+       out __SP_H__,r29\r
+       out __SREG__,__tmp_reg__\r
+       out __SP_L__,r28\r
+/* prologue end (size=10) */\r
+       std Y+1,r24\r
+       std Y+2,r25\r
+       std Y+3,r22\r
+       std Y+4,r23\r
+       std Y+5,r20\r
+       std Y+6,r21\r
+       ldd r24,Y+1\r
+       ldd r25,Y+2\r
+       sbiw r24,0\r
+       brne .L7\r
+       ldd r24,Y+3\r
+       ldd r25,Y+4\r
+       sbiw r24,0\r
+       brne .L7\r
+       std Y+9,__zero_reg__\r
+       std Y+10,__zero_reg__\r
+       rjmp .L6\r
+.L7:\r
+       ldi r22,lo8(12)\r
+       ldi r23,hi8(12)\r
+       ldi r24,lo8(1)\r
+       ldi r25,hi8(1)\r
+       rcall calloc\r
+       std Y+7,r24\r
+       std Y+8,r25\r
+       ldd r24,Y+7\r
+       ldd r25,Y+8\r
+       sbiw r24,0\r
+       brne .L8\r
+       std Y+9,__zero_reg__\r
+       std Y+10,__zero_reg__\r
+       rjmp .L6\r
+.L8:\r
+       ldd r24,Y+3\r
+       ldd r25,Y+4\r
+       sbiw r24,0\r
+       breq .L9\r
+       ldd r30,Y+7\r
+       ldd r31,Y+8\r
+       ldd r24,Y+3\r
+       ldd r25,Y+4\r
+       std Z+10,r24\r
+       std Z+11,r25\r
+       ldd r30,Y+7\r
+       ldd r31,Y+8\r
+       ldi r24,lo8(1)\r
+       std Z+3,r24\r
+       lds r24,__iob\r
+       lds r25,(__iob)+1\r
+       sbiw r24,0\r
+       brne .L9\r
+       ldd r24,Y+7\r
+       ldd r25,Y+8\r
+       sts (__iob)+1,r25\r
+       sts __iob,r24\r
+.L9:\r
+       ldd r24,Y+1\r
+       ldd r25,Y+2\r
+       sbiw r24,0\r
+       breq .L11\r
+       ldd r30,Y+7\r
+       ldd r31,Y+8\r
+       ldd r24,Y+1\r
+       ldd r25,Y+2\r
+       std Z+8,r24\r
+       std Z+9,r25\r
+       ldd r26,Y+7\r
+       ldd r27,Y+8\r
+       ldd r30,Y+7\r
+       ldd r31,Y+8\r
+       ldd r24,Z+3\r
+       ori r24,lo8(2)\r
+       mov r31,r27\r
+       mov r30,r26\r
+       std Z+3,r24\r
+       lds r24,__iob+2\r
+       lds r25,(__iob+2)+1\r
+       sbiw r24,0\r
+       brne .L11\r
+       ldd r24,Y+7\r
+       ldd r25,Y+8\r
+       sts (__iob+2)+1,r25\r
+       sts __iob+2,r24\r
+       lds r24,__iob+4\r
+       lds r25,(__iob+4)+1\r
+       sbiw r24,0\r
+       brne .L11\r
+       ldd r24,Y+7\r
+       ldd r25,Y+8\r
+       sts (__iob+4)+1,r25\r
+       sts __iob+4,r24\r
+.L11:\r
+       ldd r24,Y+7\r
+       ldd r25,Y+8\r
+       std Y+9,r24\r
+       std Y+10,r25\r
+.L6:\r
+       ldd r24,Y+9\r
+       ldd r25,Y+10\r
+/* epilogue: frame size=10 */\r
+       adiw r28,10\r
+       in __tmp_reg__,__SREG__\r
+       cli\r
+       out __SP_H__,r29\r
+       out __SREG__,__tmp_reg__\r
+       out __SP_L__,r28\r
+       pop r29\r
+       pop r28\r
+       ret\r
+/* epilogue end (size=9) */\r
+/* function fdevopen size 125 (106) */\r
+       .size   fdevopen, .-fdevopen\r
+       .comm __iob,6,1\r
+/* File "fdevopen.c": code  125 = 0x007d ( 106), prologues  10, epilogues   9 */\r
diff --git a/src/avrsample.old/libc/gcrt1.S b/src/avrsample.old/libc/gcrt1.S
new file mode 100644 (file)
index 0000000..dfe4d2c
--- /dev/null
@@ -0,0 +1,177 @@
+/* Copyright (c) 2002, Marek Michalkiewicz <marekm@amelek.gda.pl>
+   All rights reserved.
+
+   Redistribution and use in source and binary forms, with or without
+   modification, are permitted provided that the following conditions are met:
+
+   * Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+   * Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in
+     the documentation and/or other materials provided with the
+     distribution.
+
+   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+   ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+   POSSIBILITY OF SUCH DAMAGE. */
+
+#if (__GNUC__ < 3) || (__GNUC__ == 3 && __GNUC_MINOR__ < 3)
+#error "GCC version >= 3.3 required"
+#endif
+
+#include "macros.inc"
+
+       .macro  vector name
+       .if (. - __vectors < _VECTORS_SIZE)
+       .weak   \name
+       .set    \name, __bad_interrupt
+       XJMP    \name
+       .endif
+       .endm
+
+       .section .vectors,"ax",@progbits
+       .global __vectors
+       .func   __vectors
+__vectors:
+       XJMP    __init
+       vector  __vector_1
+       vector  __vector_2
+       vector  __vector_3
+       vector  __vector_4
+       vector  __vector_5
+       vector  __vector_6
+       vector  __vector_7
+       vector  __vector_8
+       vector  __vector_9
+       vector  __vector_10
+       vector  __vector_11
+       vector  __vector_12
+       vector  __vector_13
+       vector  __vector_14
+       vector  __vector_15
+       vector  __vector_16
+       vector  __vector_17
+       vector  __vector_18
+       vector  __vector_19
+       vector  __vector_20
+       vector  __vector_21
+       vector  __vector_22
+       vector  __vector_23
+       vector  __vector_24
+       vector  __vector_25
+       vector  __vector_26
+       vector  __vector_27
+       vector  __vector_28
+       vector  __vector_29
+       vector  __vector_30
+       vector  __vector_31
+       vector  __vector_32
+       vector  __vector_33
+       vector  __vector_34
+       vector  __vector_35
+       vector  __vector_36
+       vector  __vector_37
+       vector  __vector_38
+       vector  __vector_39
+       .endfunc
+
+       /* Handle unexpected interrupts (enabled and no handler), which
+          usually indicate a bug.  Jump to the __vector_default function
+          if defined by the user, otherwise jump to the reset address.
+
+          This must be in a different section, otherwise the assembler
+          will resolve "rjmp" offsets and there will be no relocs.  */
+
+       .text
+       .global __bad_interrupt
+       .func   __bad_interrupt
+__bad_interrupt:
+       .weak   __vector_default
+       .set    __vector_default, __vectors
+       XJMP    __vector_default
+       .endfunc
+
+       .section .init0,"ax",@progbits
+       .weak   __init
+;      .func   __init
+__init:
+
+#ifndef __AVR_ASM_ONLY__
+       .weak   __stack
+       .set    __stack, RAMEND
+
+       /* By default, malloc() uses the current value of the stack pointer
+          minus __malloc_margin as the highest available address.
+
+          In some applications with external SRAM, the stack can be below
+          the data section (in the internal SRAM - faster), and __heap_end
+          should be set to the highest address available for malloc().  */
+       .weak   __heap_end
+       .set    __heap_end, 0
+
+       .section .init2,"ax",@progbits
+       clr     __zero_reg__
+       out     _SFR_IO_ADDR(SREG), __zero_reg__
+       ldi     r28,lo8(__stack)
+#ifdef SPH
+       ldi     r29,hi8(__stack)
+       out     _SFR_IO_ADDR(SPH), r29
+#endif
+       out     _SFR_IO_ADDR(SPL), r28
+
+#if BIG_CODE
+       /* Only for >64K devices with RAMPZ, replaces the default code
+          provided by libgcc.S which is only linked in if necessary.  */
+
+       .section .init4,"ax",@progbits
+       .global __do_copy_data
+__do_copy_data:
+       ldi     r17, hi8(__data_end)
+       ldi     r26, lo8(__data_start)
+       ldi     r27, hi8(__data_start)
+       ldi     r30, lo8(__data_load_start)
+       ldi     r31, hi8(__data_load_start)
+
+       /* On the enhanced core, "elpm" with post-increment updates RAMPZ
+          automatically.  Otherwise we have to handle it ourselves.  */
+
+#ifdef __AVR_ENHANCED__
+       ldi     r16, hh8(__data_load_start)
+#else
+       ldi     r16, hh8(__data_load_start - 0x10000)
+.__do_copy_data_carry:
+       inc     r16
+#endif
+       out     _SFR_IO_ADDR(RAMPZ), r16
+       rjmp    .__do_copy_data_start
+.__do_copy_data_loop:
+#ifdef __AVR_ENHANCED__
+       elpm    r0, Z+
+#else
+       lpm
+#endif
+       st      X+, r0
+#ifndef __AVR_ENHANCED__
+       adiw    r30, 1
+       brcs    .__do_copy_data_carry
+#endif
+.__do_copy_data_start:
+       cpi     r26, lo8(__data_end)
+       cpc     r27, r17
+       brne    .__do_copy_data_loop
+#endif /* BIG_CODE */
+
+#endif /* !__AVR_ASM_ONLY__ */
+
+       .section .init9,"ax",@progbits
+       XJMP    main
+;      .endfunc
+
diff --git a/src/avrsample.old/libc/gcrt1.i b/src/avrsample.old/libc/gcrt1.i
new file mode 100644 (file)
index 0000000..bf13aa3
--- /dev/null
@@ -0,0 +1,157 @@
+# 1 "gcrt1.S"\r
+# 1 "<built-in>"\r
+# 1 "<command line>"\r
+# 1 "gcrt1.S"\r
+# 30 "gcrt1.S"\r
+# 1 "macros.inc" 1\r
+# 33 "macros.inc"\r
+# 1 "c:/WinAVR/avr/include/avr/io.h" 1 3\r
+# 81 "c:/WinAVR/avr/include/avr/io.h" 3\r
+# 1 "c:/WinAVR/avr/include/avr/sfr_defs.h" 1 3\r
+# 82 "c:/WinAVR/avr/include/avr/io.h" 2 3\r
+# 197 "c:/WinAVR/avr/include/avr/io.h" 3\r
+# 1 "c:/WinAVR/avr/include/avr/io4433.h" 1 3\r
+# 198 "c:/WinAVR/avr/include/avr/io.h" 2 3\r
+# 34 "macros.inc" 2\r
+# 124 "macros.inc"\r
+        .macro X_movw dest src\r
+                .if ((\src) - (\dest))\r
+                        .if (((\src) | (\dest)) & 0x01)\r
+                                .if (((\src)-(\dest)) & 0x80)\r
+                                        mov (\dest)+1, (\src)+1\r
+                                        mov (\dest), (\src)\r
+                                .else\r
+                                        mov (\dest), (\src)\r
+                                        mov (\dest)+1, (\src)+1\r
+                                .endif\r
+                        .else\r
+\r
+\r
+\r
+                                mov (\dest), (\src)\r
+                                mov (\dest)+1, (\src)+1\r
+\r
+                        .endif\r
+                .endif\r
+        .endm\r
+# 176 "macros.inc"\r
+        .macro LPM_R0_ZPLUS_INIT hhi\r
+\r
+\r
+\r
+\r
+\r
+        .endm\r
+\r
+        .macro LPM_R0_ZPLUS_NEXT hhi\r
+# 202 "macros.inc"\r
+        lpm\r
+        adiw r30,1\r
+\r
+\r
+        .endm\r
+\r
+        .macro LPM_R0_ZP\r
+\r
+\r
+\r
+        lpm\r
+        adiw r30,1\r
+\r
+        .endm\r
+# 31 "gcrt1.S" 2\r
+\r
+        .macro vector name\r
+        .if (. - __vectors < 28)\r
+        .weak \name\r
+        .set \name, __bad_interrupt\r
+        rjmp \name\r
+        .endif\r
+        .endm\r
+\r
+        .section .vectors,"ax",@progbits\r
+        .global __vectors\r
+        .func __vectors\r
+__vectors:\r
+        rjmp __init\r
+        vector __vector_1\r
+        vector __vector_2\r
+        vector __vector_3\r
+        vector __vector_4\r
+        vector __vector_5\r
+        vector __vector_6\r
+        vector __vector_7\r
+        vector __vector_8\r
+        vector __vector_9\r
+        vector __vector_10\r
+        vector __vector_11\r
+        vector __vector_12\r
+        vector __vector_13\r
+        vector __vector_14\r
+        vector __vector_15\r
+        vector __vector_16\r
+        vector __vector_17\r
+        vector __vector_18\r
+        vector __vector_19\r
+        vector __vector_20\r
+        vector __vector_21\r
+        vector __vector_22\r
+        vector __vector_23\r
+        vector __vector_24\r
+        vector __vector_25\r
+        vector __vector_26\r
+        vector __vector_27\r
+        vector __vector_28\r
+        vector __vector_29\r
+        vector __vector_30\r
+        vector __vector_31\r
+        vector __vector_32\r
+        vector __vector_33\r
+        vector __vector_34\r
+        vector __vector_35\r
+        vector __vector_36\r
+        vector __vector_37\r
+        vector __vector_38\r
+        vector __vector_39\r
+        .endfunc\r
+# 93 "gcrt1.S"\r
+        .text\r
+        .global __bad_interrupt\r
+        .func __bad_interrupt\r
+__bad_interrupt:\r
+        .weak __vector_default\r
+        .set __vector_default, __vectors\r
+        rjmp __vector_default\r
+        .endfunc\r
+\r
+        .section .init0,"ax",@progbits\r
+        .weak __init\r
+; .func __init\r
+__init:\r
+\r
+\r
+        .weak __stack\r
+        .set __stack, 0xDF\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+        .weak __heap_end\r
+        .set __heap_end, 0\r
+\r
+        .section .init2,"ax",@progbits\r
+        clr r1\r
+        out ((((0x3F) + 0x20)) - 0x20), r1\r
+        ldi r28,lo8(__stack)\r
+\r
+\r
+\r
+\r
+        out ((((0x3D) + 0x20)) - 0x20), r28\r
+# 174 "gcrt1.S"\r
+        .section .init9,"ax",@progbits\r
+        rjmp main\r
+; .endfunc\r
diff --git a/src/avrsample.old/libc/macros.inc b/src/avrsample.old/libc/macros.inc
new file mode 100644 (file)
index 0000000..29a8978
--- /dev/null
@@ -0,0 +1,216 @@
+/* Copyright (c) 2002, Marek Michalkiewicz
+   All rights reserved.
+
+   Redistribution and use in source and binary forms, with or without
+   modification, are permitted provided that the following conditions are met:
+
+   * Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+   * Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in
+     the documentation and/or other materials provided with the
+     distribution.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+  POSSIBILITY OF SUCH DAMAGE. */
+
+/*
+   macros.inc - macros for use in assembler sources
+
+   Contributors:
+     Created by Marek Michalkiewicz <marekm@linux.org.pl>
+ */
+
+#include <avr/io.h>
+
+/* if not defined, assume old version with underscores */
+#ifndef __USER_LABEL_PREFIX__
+#define __USER_LABEL_PREFIX__ _
+#endif
+
+#ifndef __REGISTER_PREFIX__
+#define __REGISTER_PREFIX__
+#endif
+
+/* the assembler line separator (just in case it ever changes) */
+#define _L $
+
+#define CONCAT1(a, b) CONCAT2(a, b)
+#define CONCAT2(a, b) a ## b
+
+#define _U(x) CONCAT1(__USER_LABEL_PREFIX__, x)
+
+#define _R(x) CONCAT1(__REGISTER_PREFIX__, x)
+
+/* these should help to fix the "can't have function named r1()" bug
+   which may require adding '%' in front of register names.  */
+
+#define r0 _R(r0)
+#define r1 _R(r1)
+#define r2 _R(r2)
+#define r3 _R(r3)
+#define r4 _R(r4)
+#define r5 _R(r5)
+#define r6 _R(r6)
+#define r7 _R(r7)
+#define r8 _R(r8)
+#define r9 _R(r9)
+#define r10 _R(r10)
+#define r11 _R(r11)
+#define r12 _R(r12)
+#define r13 _R(r13)
+#define r14 _R(r14)
+#define r15 _R(r15)
+#define r16 _R(r16)
+#define r17 _R(r17)
+#define r18 _R(r18)
+#define r19 _R(r19)
+#define r20 _R(r20)
+#define r21 _R(r21)
+#define r22 _R(r22)
+#define r23 _R(r23)
+#define r24 _R(r24)
+#define r25 _R(r25)
+#define r26 _R(r26)
+#define r27 _R(r27)
+#define r28 _R(r28)
+#define r29 _R(r29)
+#define r30 _R(r30)
+#define r31 _R(r31)
+
+#ifndef __tmp_reg__
+#define __tmp_reg__ r0
+#endif
+
+#ifndef __zero_reg__
+#define __zero_reg__ r1
+#endif
+
+#if __AVR_MEGA__
+  #define XJMP jmp
+  #define XCALL call
+#else
+  #define XJMP rjmp
+  #define XCALL rcall
+#endif
+
+/* used only by fplib/strtod.S - libgcc internal function calls */
+#define PROLOGUE_SAVES(offset) XJMP (__prologue_saves__ + 2 * (offset))
+#define EPILOGUE_RESTORES(offset) XJMP (__epilogue_restores__ + 2 * (offset))
+
+#if FLASHEND > 0x10000  /* ATmega103 */
+  #define BIG_CODE 1
+#else
+  #define BIG_CODE 0
+#endif
+
+/*
+   Smart version of movw (use register numbers as arguments):
+    - uses "movw" if possible (supported by MCU, and both registers even)
+    - handles overlapping register pairs correctly
+    - no instruction generated if source and destination are the same
+   (may expand to 0, 1 or 2 instructions).
+ */
+
+       .macro  X_movw dest src
+               .if ((\src) - (\dest))  /* different registers */
+                       .if (((\src) | (\dest)) & 0x01)
+                               .if (((\src)-(\dest)) & 0x80) /* src < dest */
+                                       mov     (\dest)+1, (\src)+1
+                                       mov     (\dest), (\src)
+                               .else  /* src > dest */
+                                       mov     (\dest), (\src)
+                                       mov     (\dest)+1, (\src)+1
+                               .endif
+                       .else  /* both even -> overlap not possible */
+#if __AVR_ENHANCED__
+                               movw    (\dest), (\src)
+#else
+                               mov     (\dest), (\src)
+                               mov     (\dest)+1, (\src)+1
+#endif
+                       .endif
+               .endif
+       .endm
+
+#if __AVR_ENHANCED__
+  #define LOAD_X(lo, hi) movw r26, lo
+  #define LOAD_Z(lo, hi) movw r30, lo
+#else
+  #define LOAD_X(lo, hi)               \
+       mov     r26, lo                 _L\
+       mov     r27, hi
+
+  #define LOAD_Z(lo, hi)               \
+       mov     r30, lo                 _L\
+       mov     r31, hi
+#endif
+
+/* LOAD_X_CONST(p) loads constant P into pointer register X.  */
+#define LOAD_X_CONST(p)                \
+       ldi     r26, lo8(p)             _L\
+       ldi     r27, hi8(p)
+
+/*
+   LPM_R0_ZPLUS_INIT is used before the loop to initialize RAMPZ
+   for future devices with RAMPZ:Z auto-increment - [e]lpm r0, Z+.
+
+   LPM_R0_ZPLUS_NEXT is used inside the loop to load a byte from
+   the program memory at [RAMPZ:]Z to R0, and increment [RAMPZ:]Z.
+
+   The argument in both macros is a register that contains the
+   high byte (bits 23-16) of the address, bits 15-0 should be in
+   the Z (r31:r30) register.  It can be any register except for:
+   r0, r1 (__zero_reg__ - assumed to always contain 0), r30, r31.
+ */
+
+       .macro  LPM_R0_ZPLUS_INIT hhi
+#if __AVR_ENHANCED__
+  #if BIG_CODE
+       out     _SFR_IO_ADDR(RAMPZ), \hhi
+  #endif
+#endif
+       .endm
+
+       .macro  LPM_R0_ZPLUS_NEXT hhi
+#if __AVR_ENHANCED__
+  #if BIG_CODE
+    /* ELPM with RAMPZ:Z post-increment, load RAMPZ only once */
+       elpm    r0, Z+
+  #else
+    /* LPM with Z post-increment, max 64K, no RAMPZ (ATmega83/161/163/32) */
+       lpm     r0, Z+
+  #endif
+#else
+  #if BIG_CODE
+    /* ELPM without post-increment, load RAMPZ each time (ATmega103) */
+       out     _SFR_IO_ADDR(RAMPZ), \hhi
+       elpm
+       adiw    r30,1
+       adc     \hhi, __zero_reg__
+  #else
+    /* LPM without post-increment, max 64K, no RAMPZ (AT90S*) */
+       lpm
+       adiw    r30,1
+  #endif
+#endif
+       .endm
+
+       .macro  LPM_R0_ZP
+#if __AVR_ENHANCED__
+       lpm     r0, Z+
+#else
+       lpm
+       adiw    r30,1
+#endif
+       .endm
+
diff --git a/src/avrsample.old/libc/malloc.c b/src/avrsample.old/libc/malloc.c
new file mode 100644 (file)
index 0000000..6912b1e
--- /dev/null
@@ -0,0 +1,420 @@
+/*
+ * Copyright (c) 2002 Joerg Wunsch
+ *
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE DEVELOPERS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * $Id: malloc.c,v 1.6 2003/01/08 11:14:10 joerg_wunsch Exp $
+ */
+
+#include <stdlib.h>
+
+#include <avr/io.h>
+
+#ifndef __AVR__
+
+/*
+ * When compiling this file natively on a host machine, it will
+ * include a main() that performs a regression test.  This is meant as
+ * a debugging aid, where a normal source-level debugger will help to
+ * verify that the various allocator structures have the desired
+ * appearance at each stage.
+ *
+ * When cross-compiling with avr-gcc, it will compile into just the
+ * library functions malloc() and free().
+ */
+#define MALLOC_TEST
+
+#endif /* !__AVR__ */
+
+struct freelist {
+       size_t sz;
+       struct freelist *nx;
+};
+
+static char *brkval;
+static struct freelist *flp;
+
+#ifdef MALLOC_TEST
+
+#define malloc mymalloc
+#define free myfree
+#define __heap_start mymem
+#define __heap_end ((char *)0)
+
+char mymem[256];
+#define STACK_POINTER() (mymem + 256)
+
+#else /* !MALLOC_TEST */
+
+extern char __heap_start;
+extern char __heap_end;
+
+#define STACK_POINTER() ((char *)SP)
+
+#endif /* MALLOC_TEST */
+
+/*
+ * Exported interface:
+ *
+ * When extending the data segment, the allocator will not try to go
+ * beyond the current stack limit, decreased by __malloc_margin bytes.
+ * Thus, all possible stack frames of interrupt routines that could
+ * interrupt the current function, plus all further nested function
+ * calls must not require more stack space, or they'll risk to collide
+ * with the data segment.
+ */
+ 
+/* May be changed by the user only before the first malloc() call.  */
+
+size_t __malloc_margin = 32;
+char *__malloc_heap_start = &__heap_start;
+char *__malloc_heap_end = &__heap_end;
+
+void *
+malloc(size_t len)
+{
+       struct freelist *fp1, *fp2;
+       char *cp;
+       size_t s;
+
+       /*
+        * Our minimum chunk size is the size of a pointer (plus the
+        * size of the "sz" field, but we don't need to account for
+        * this), otherwise we could not possibly fit a freelist entry
+        * into the chunk later.
+        */
+       if (len < sizeof(struct freelist) - sizeof(size_t))
+               len = sizeof(struct freelist) - sizeof(size_t);
+
+       /*
+        * First, walk the free list and try finding a chunk that
+        * would match exactly.  If we found one, we are done.  While
+        * walking, note down the size of the largest chunk we found
+        * that would still fit the request -- we need it for step 2.
+        *
+        */
+       for (s = 0, fp1 = flp, fp2 = 0;
+            fp1;
+            fp2 = fp1, fp1 = fp1->nx) {
+               if (fp1->sz == len) {
+                       /*
+                        * Found it.  Disconnect the chunk from the
+                        * freelist, and return it.
+                        */
+                       if (fp2)
+                               fp2->nx = fp1->nx;
+                       else
+                               flp = fp1->nx;
+                       return &(fp1->nx);
+               }
+               if (fp1->sz > len) {
+                       if (s == 0 || fp1->sz < s)
+                               s = fp1->sz;
+               }
+       }
+       /*
+        * Step 2: If we found a chunk on the freelist that would fit
+        * (but was too large), look it up again and use it, since it
+        * is our closest match now.  Since the freelist entry needs
+        * to be split into two entries then, watch out that the
+        * difference between the requested size and the size of the
+        * chunk found is large enough for another freelist entry; if
+        * not, just enlarge the request size to what we have found,
+        * and use the entire chunk.
+        */
+       if (s) {
+               if (s - len < sizeof(struct freelist))
+                       len = s;
+               for (fp1 = flp, fp2 = 0;
+                    fp1;
+                    fp2 = fp1, fp1 = fp1->nx) {
+                       if (fp1->sz == s) {
+                               if (len == s) {
+                                       /*
+                                        * Use entire chunk; same as
+                                        * above.
+                                        */
+                                       if (fp2)
+                                               fp2->nx = fp1->nx;
+                                       else
+                                               flp = fp1->nx;
+                                       return &(fp1->nx);
+                               }
+                               /*
+                                * Split them up.  Note that we leave
+                                * the first part as the new (smaller)
+                                * freelist entry, and return the
+                                * upper portion to the caller.  This
+                                * saves us the work to fix up the
+                                * freelist chain; we just need to
+                                * fixup the size of the current
+                                * entry, and note down the size of
+                                * the new chunk before returning it
+                                * to the caller.
+                                */
+                               cp = (char *)fp1;
+                               s -= len;
+                               cp += s;
+                               fp2 = (struct freelist *)cp;
+                               fp2->sz = len;
+                               fp1->sz = s - sizeof(size_t);
+                               return &(fp2->nx);
+                       }
+               }
+       }
+       /*
+        * Step 3: If the request could not be satisfied from a
+        * freelist entry, just prepare a new chunk.  This means we
+        * need to obtain more memory first.  The largest address just
+        * not allocated so far is remembered in the brkval variable.
+        * Under Unix, the "break value" was the end of the data
+        * segment as dynamically requested from the operating system.
+        * Since we don't have an operating system, just make sure
+        * that we don't collide with the stack.
+        */
+       if (brkval == 0)
+               brkval = __malloc_heap_start;
+       cp = __malloc_heap_end;
+       if (cp == 0)
+               cp = STACK_POINTER() - __malloc_margin;
+       if (brkval + len + sizeof(size_t) < cp) {
+               fp1 = (struct freelist *)brkval;
+               brkval += len + sizeof(size_t);
+               fp1->sz = len;
+               return &(fp1->nx);
+       }
+       /*
+        * Step 4: There's no help, just fail. :-/
+        */
+       return 0;
+}
+
+void
+free(void *p)
+{
+       struct freelist *fp1, *fp2, *fpnew;
+       char *cp1, *cp2, *cpnew;
+
+       /* ISO C says free(NULL) must be a no-op */
+       if (p == 0)
+               return;
+
+       cpnew = p;
+       cpnew -= sizeof(size_t);
+       fpnew = (struct freelist *)cpnew;
+       fpnew->nx = 0;
+
+       /*
+        * Trivial case first: if there's no freelist yet, our entry
+        * will be the only one on it.
+        */
+       if (flp == 0) {
+               flp = fpnew;
+               return;
+       }
+
+       /*
+        * Now, find the position where our new entry belongs onto the
+        * freelist.  Try to aggregate the chunk with adjacent chunks
+        * if possible.
+        */
+       for (fp1 = flp, fp2 = 0;
+            fp1;
+            fp2 = fp1, fp1 = fp1->nx) {
+               if (fp1 < fpnew)
+                       continue;
+               cp1 = (char *)fp1;
+               fpnew->nx = fp1;
+               if ((char *)&(fpnew->nx) + fpnew->sz == cp1) {
+                       /* upper chunk adjacent, assimilate it */
+                       fpnew->sz += fp1->sz + sizeof(size_t);
+                       fpnew->nx = fp1->nx;
+               }
+               if (fp2 == 0) {
+                       /* new head of freelist */
+                       flp = fpnew;
+                       return;
+               }
+               break;
+       }
+       /*
+        * Note that we get here either if we hit the "break" above,
+        * or if we fell off the end of the loop.  The latter means
+        * we've got a new topmost chunk.  Either way, try aggregating
+        * with the lower chunk if possible.
+        */
+       fp2->nx = fpnew;
+       cp2 = (char *)&(fp2->nx);
+       if (cp2 + fp2->sz == cpnew) {
+               /* lower junk adjacent, merge */
+               fp2->sz += fpnew->sz + sizeof(size_t);
+               fp2->nx = fpnew->nx;
+       }
+}
+
+#ifdef MALLOC_TEST
+
+#include <stdio.h>
+#include <time.h>
+#include <unistd.h>
+
+void *handles[32];
+size_t sizes[32];
+
+
+void *
+alloc(size_t s)
+{
+       void *p;
+
+       if ((p = malloc(s)) == 0)
+               return 0;
+       memset(p, 0xd0, s);
+       return p;
+}
+
+void
+printfreelist(void)
+{
+       struct freelist *fp1;
+       int i;
+
+       if (!flp) {
+               printf("no free list\n");
+               return;
+       }
+
+       for (i = 0, fp1 = flp; fp1; i++, fp1 = fp1->nx) {
+               printf("entry %d @ %u: size %u, next ",
+                      i, (char *)fp1 - mymem, fp1->sz);
+               if (fp1->nx)
+                       printf("%u\n", (char *)fp1->nx - mymem);
+               else
+                       printf("NULL\n");
+       }
+}
+
+int
+compare(const void *p1, const void *p2)
+{
+       return *((size_t *)p1) - *((size_t *)p2);
+}
+
+void
+printalloc(void)
+{
+       int i, j, k;
+       size_t sum, sum2;
+       void *sortedhandles[32];
+       struct freelist *fp;
+       char *cp;
+
+       for (i = j = k = sum = sum2 = 0;
+            i < sizeof handles / sizeof (void *);
+            i++)
+               if (sizes[i]) {
+                       j++;
+                       sum += sizes[i];
+                       if (handles[i]) {
+                               k++;
+                               sum2 += sizes[i];
+                       }
+               }
+       printf("brkval: %d, %d request%s => sum %u bytes "
+              "(actually %d reqs => %u bytes)\n",
+              (char *)brkval - mymem, j, j == 1? "": "s", sum, k, sum2);
+       memcpy(sortedhandles, handles, sizeof sortedhandles);
+       qsort(sortedhandles, 32, sizeof(void *), compare);
+       for (i = j = 0; i < sizeof sortedhandles / sizeof (void *); i++)
+               if ((cp = sortedhandles[i])) {
+                       cp -= sizeof(size_t);
+                       fp = (struct freelist *)cp;
+                       printf("block %d @ %u: %u bytes\n",
+                              j, (char *)&fp->nx - mymem, fp->sz);
+                       j++;
+               }
+
+}
+
+
+int
+main(void)
+{
+       int i, j, k, l, m, om, p, f;
+       size_t s;
+
+       srand(time(0) ^ getpid());
+
+       for (k = 0; k < 100; k++) {
+               memset(handles, 0, sizeof handles);
+               memset(sizes, 0, sizeof sizes);
+
+               j = rand() % 16 + 15;
+               l = rand() % 80 + 7;
+
+               for (i = s = 0; i < j && s < 256; i++) {
+                       sizes[i] = rand() % l + 1;
+                       s += sizes[i];
+               }
+               j = i;
+               for (m = om = 1, p = 1, f = 0; m < 1000; m++) {
+                       for (i = s = 0; i < j; i++)
+                               if (handles[i])
+                                       s++;
+                       if (s == j)
+                               break;
+
+                       if (m / om > 10) {
+                               p <<= 1;
+                               p |= 1;
+                       }
+
+                       for (i = 0; i < j; i++)
+                               if (rand() & p) {
+                                       if (!handles[i] &&
+                                           (handles[i] = alloc(sizes[i])) == 0)
+                                               f++;
+                               }
+                       for (i = 0; i < j; i++)
+                               if (rand() & 1) {
+                                       free(handles[i]);
+                                       handles[i] = 0;
+                               }
+               }
+               if (f)
+                       printf("%d alloc failure%s total\n",
+                              f, f == 1? "": "s");
+               printf("After alloc:\n");
+               printalloc();
+               printfreelist();
+               for (i = 0; i < j; i++)
+                       free(handles[i]);
+               printf("After cleanup:\n");
+               printfreelist();
+       }
+
+       return 0;
+}
+
+#endif /* MALLOC_TEST */
+
diff --git a/src/avrsample.old/libc/malloc.s b/src/avrsample.old/libc/malloc.s
new file mode 100644 (file)
index 0000000..610f133
--- /dev/null
@@ -0,0 +1,600 @@
+       .file   "malloc.c"\r
+       .arch at90s4433\r
+__SREG__ = 0x3f\r
+__SP_H__ = 0x3e\r
+__SP_L__ = 0x3d\r
+__tmp_reg__ = 0\r
+__zero_reg__ = 1\r
+       .global __do_copy_data\r
+       .global __do_clear_bss\r
+.global        __malloc_margin\r
+       .data\r
+       .type   __malloc_margin, @object\r
+       .size   __malloc_margin, 2\r
+__malloc_margin:\r
+       .word   32\r
+.global        __malloc_heap_start\r
+       .type   __malloc_heap_start, @object\r
+       .size   __malloc_heap_start, 2\r
+__malloc_heap_start:\r
+       .word   __heap_start\r
+.global        __malloc_heap_end\r
+       .type   __malloc_heap_end, @object\r
+       .size   __malloc_heap_end, 2\r
+__malloc_heap_end:\r
+       .word   __heap_end\r
+       .text\r
+.global        malloc\r
+       .type   malloc, @function\r
+malloc:\r
+/* prologue: frame size=14 */\r
+       push r28\r
+       push r29\r
+       in r28,__SP_L__\r
+       in r29,__SP_H__\r
+       sbiw r28,14\r
+       in __tmp_reg__,__SREG__\r
+       cli\r
+       out __SP_H__,r29\r
+       out __SREG__,__tmp_reg__\r
+       out __SP_L__,r28\r
+/* prologue end (size=10) */\r
+       std Y+1,r24\r
+       std Y+2,r25\r
+       ldd r24,Y+1\r
+       ldd r25,Y+2\r
+       cpi r24,2\r
+       cpc r25,__zero_reg__\r
+       brsh .L7\r
+       ldi r24,lo8(2)\r
+       ldi r25,hi8(2)\r
+       std Y+1,r24\r
+       std Y+2,r25\r
+.L7:\r
+       std Y+9,__zero_reg__\r
+       std Y+10,__zero_reg__\r
+       lds r24,flp\r
+       lds r25,(flp)+1\r
+       std Y+3,r24\r
+       std Y+4,r25\r
+       std Y+5,__zero_reg__\r
+       std Y+6,__zero_reg__\r
+.L8:\r
+       ldd r24,Y+3\r
+       ldd r25,Y+4\r
+       sbiw r24,0\r
+       brne .L11\r
+       rjmp .L9\r
+.L11:\r
+       ldd r30,Y+3\r
+       ldd r31,Y+4\r
+       ld r18,Z\r
+       ldd r19,Z+1\r
+       ldd r24,Y+1\r
+       ldd r25,Y+2\r
+       cp r18,r24\r
+       cpc r19,r25\r
+       brne .L12\r
+       ldd r24,Y+5\r
+       ldd r25,Y+6\r
+       sbiw r24,0\r
+       breq .L13\r
+       ldd r24,Y+5\r
+       ldd r25,Y+6\r
+       std Y+13,r24\r
+       std Y+14,r25\r
+       ldd r26,Y+3\r
+       ldd r27,Y+4\r
+       mov r31,r27\r
+       mov r30,r26\r
+       ldd r24,Z+2\r
+       ldd r25,Z+3\r
+       ldd r30,Y+13\r
+       ldd r31,Y+14\r
+       std Z+2,r24\r
+       std Z+3,r25\r
+       rjmp .L14\r
+.L13:\r
+       ldd r30,Y+3\r
+       ldd r31,Y+4\r
+       ldd r24,Z+2\r
+       ldd r25,Z+3\r
+       sts (flp)+1,r25\r
+       sts flp,r24\r
+.L14:\r
+       ldd r24,Y+3\r
+       ldd r25,Y+4\r
+       adiw r24,2\r
+       std Y+11,r24\r
+       std Y+12,r25\r
+       rjmp .L6\r
+.L12:\r
+       ldd r30,Y+3\r
+       ldd r31,Y+4\r
+       ld r18,Z\r
+       ldd r19,Z+1\r
+       ldd r24,Y+1\r
+       ldd r25,Y+2\r
+       cp r24,r18\r
+       cpc r25,r19\r
+       brsh .L10\r
+       ldd r24,Y+9\r
+       ldd r25,Y+10\r
+       sbiw r24,0\r
+       breq .L17\r
+       ldd r30,Y+3\r
+       ldd r31,Y+4\r
+       ld r18,Z\r
+       ldd r19,Z+1\r
+       ldd r24,Y+9\r
+       ldd r25,Y+10\r
+       cp r18,r24\r
+       cpc r19,r25\r
+       brlo .L17\r
+       rjmp .L10\r
+.L17:\r
+       ldd r30,Y+3\r
+       ldd r31,Y+4\r
+       ld r24,Z\r
+       ldd r25,Z+1\r
+       std Y+9,r24\r
+       std Y+10,r25\r
+.L10:\r
+       ldd r24,Y+3\r
+       ldd r25,Y+4\r
+       std Y+5,r24\r
+       std Y+6,r25\r
+       ldd r30,Y+3\r
+       ldd r31,Y+4\r
+       ldd r24,Z+2\r
+       ldd r25,Z+3\r
+       std Y+3,r24\r
+       std Y+4,r25\r
+       rjmp .L8\r
+.L9:\r
+       ldd r24,Y+9\r
+       ldd r25,Y+10\r
+       sbiw r24,0\r
+       brne .+2\r
+       rjmp .L18\r
+       ldd r24,Y+9\r
+       ldd r25,Y+10\r
+       ldd r18,Y+1\r
+       ldd r19,Y+2\r
+       sub r24,r18\r
+       sbc r25,r19\r
+       cpi r24,4\r
+       cpc r25,__zero_reg__\r
+       brsh .L19\r
+       ldd r24,Y+9\r
+       ldd r25,Y+10\r
+       std Y+1,r24\r
+       std Y+2,r25\r
+.L19:\r
+       lds r24,flp\r
+       lds r25,(flp)+1\r
+       std Y+3,r24\r
+       std Y+4,r25\r
+       std Y+5,__zero_reg__\r
+       std Y+6,__zero_reg__\r
+.L20:\r
+       ldd r24,Y+3\r
+       ldd r25,Y+4\r
+       sbiw r24,0\r
+       brne .L23\r
+       rjmp .L18\r
+.L23:\r
+       ldd r30,Y+3\r
+       ldd r31,Y+4\r
+       ld r18,Z\r
+       ldd r19,Z+1\r
+       ldd r24,Y+9\r
+       ldd r25,Y+10\r
+       cp r18,r24\r
+       cpc r19,r25\r
+       breq .+2\r
+       rjmp .L22\r
+       ldd r18,Y+1\r
+       ldd r19,Y+2\r
+       ldd r24,Y+9\r
+       ldd r25,Y+10\r
+       cp r18,r24\r
+       cpc r19,r25\r
+       brne .L25\r
+       ldd r24,Y+5\r
+       ldd r25,Y+6\r
+       sbiw r24,0\r
+       breq .L26\r
+       ldd r24,Y+5\r
+       ldd r25,Y+6\r
+       std Y+13,r24\r
+       std Y+14,r25\r
+       ldd r26,Y+3\r
+       ldd r27,Y+4\r
+       mov r31,r27\r
+       mov r30,r26\r
+       ldd r24,Z+2\r
+       ldd r25,Z+3\r
+       ldd r30,Y+13\r
+       ldd r31,Y+14\r
+       std Z+2,r24\r
+       std Z+3,r25\r
+       rjmp .L27\r
+.L26:\r
+       ldd r30,Y+3\r
+       ldd r31,Y+4\r
+       ldd r24,Z+2\r
+       ldd r25,Z+3\r
+       sts (flp)+1,r25\r
+       sts flp,r24\r
+.L27:\r
+       ldd r24,Y+3\r
+       ldd r25,Y+4\r
+       adiw r24,2\r
+       std Y+11,r24\r
+       std Y+12,r25\r
+       rjmp .L6\r
+.L25:\r
+       ldd r24,Y+3\r
+       ldd r25,Y+4\r
+       std Y+7,r24\r
+       std Y+8,r25\r
+       ldd r18,Y+9\r
+       ldd r19,Y+10\r
+       ldd r24,Y+1\r
+       ldd r25,Y+2\r
+       sub r18,r24\r
+       sbc r19,r25\r
+       mov r25,r19\r
+       mov r24,r18\r
+       std Y+9,r24\r
+       std Y+10,r25\r
+       ldd r18,Y+7\r
+       ldd r19,Y+8\r
+       ldd r24,Y+9\r
+       ldd r25,Y+10\r
+       add r24,r18\r
+       adc r25,r19\r
+       std Y+7,r24\r
+       std Y+8,r25\r
+       ldd r24,Y+7\r
+       ldd r25,Y+8\r
+       std Y+5,r24\r
+       std Y+6,r25\r
+       ldd r30,Y+5\r
+       ldd r31,Y+6\r
+       ldd r24,Y+1\r
+       ldd r25,Y+2\r
+       st Z,r24\r
+       std Z+1,r25\r
+       ldd r30,Y+3\r
+       ldd r31,Y+4\r
+       ldd r24,Y+9\r
+       ldd r25,Y+10\r
+       sbiw r24,2\r
+       st Z,r24\r
+       std Z+1,r25\r
+       ldd r24,Y+5\r
+       ldd r25,Y+6\r
+       adiw r24,2\r
+       std Y+11,r24\r
+       std Y+12,r25\r
+       rjmp .L6\r
+.L22:\r
+       ldd r24,Y+3\r
+       ldd r25,Y+4\r
+       std Y+5,r24\r
+       std Y+6,r25\r
+       ldd r30,Y+3\r
+       ldd r31,Y+4\r
+       ldd r24,Z+2\r
+       ldd r25,Z+3\r
+       std Y+3,r24\r
+       std Y+4,r25\r
+       rjmp .L20\r
+.L18:\r
+       lds r24,brkval\r
+       lds r25,(brkval)+1\r
+       sbiw r24,0\r
+       brne .L28\r
+       lds r24,__malloc_heap_start\r
+       lds r25,(__malloc_heap_start)+1\r
+       sts (brkval)+1,r25\r
+       sts brkval,r24\r
+.L28:\r
+       lds r24,__malloc_heap_end\r
+       lds r25,(__malloc_heap_end)+1\r
+       std Y+7,r24\r
+       std Y+8,r25\r
+       ldd r24,Y+7\r
+       ldd r25,Y+8\r
+       sbiw r24,0\r
+       brne .L29\r
+       lds r24,93\r
+       mov r18,r24\r
+       clr r19\r
+       lds r24,__malloc_margin\r
+       lds r25,(__malloc_margin)+1\r
+       sub r18,r24\r
+       sbc r19,r25\r
+       mov r25,r19\r
+       mov r24,r18\r
+       std Y+7,r24\r
+       std Y+8,r25\r
+.L29:\r
+       lds r18,brkval\r
+       lds r19,(brkval)+1\r
+       ldd r24,Y+1\r
+       ldd r25,Y+2\r
+       add r24,r18\r
+       adc r25,r19\r
+       mov r18,r24\r
+       mov r19,r25\r
+       subi r18,lo8(-(2))\r
+       sbci r19,hi8(-(2))\r
+       ldd r24,Y+7\r
+       ldd r25,Y+8\r
+       cp r18,r24\r
+       cpc r19,r25\r
+       brsh .L30\r
+       lds r24,brkval\r
+       lds r25,(brkval)+1\r
+       std Y+3,r24\r
+       std Y+4,r25\r
+       lds r18,brkval\r
+       lds r19,(brkval)+1\r
+       ldd r24,Y+1\r
+       ldd r25,Y+2\r
+       add r24,r18\r
+       adc r25,r19\r
+       adiw r24,2\r
+       sts (brkval)+1,r25\r
+       sts brkval,r24\r
+       ldd r30,Y+3\r
+       ldd r31,Y+4\r
+       ldd r24,Y+1\r
+       ldd r25,Y+2\r
+       st Z,r24\r
+       std Z+1,r25\r
+       ldd r24,Y+3\r
+       ldd r25,Y+4\r
+       adiw r24,2\r
+       std Y+11,r24\r
+       std Y+12,r25\r
+       rjmp .L6\r
+.L30:\r
+       std Y+11,__zero_reg__\r
+       std Y+12,__zero_reg__\r
+.L6:\r
+       ldd r24,Y+11\r
+       ldd r25,Y+12\r
+/* epilogue: frame size=14 */\r
+       adiw r28,14\r
+       in __tmp_reg__,__SREG__\r
+       cli\r
+       out __SP_H__,r29\r
+       out __SREG__,__tmp_reg__\r
+       out __SP_L__,r28\r
+       pop r29\r
+       pop r28\r
+       ret\r
+/* epilogue end (size=9) */\r
+/* function malloc size 354 (335) */\r
+       .size   malloc, .-malloc\r
+.global        free\r
+       .type   free, @function\r
+free:\r
+/* prologue: frame size=14 */\r
+       push r28\r
+       push r29\r
+       in r28,__SP_L__\r
+       in r29,__SP_H__\r
+       sbiw r28,14\r
+       in __tmp_reg__,__SREG__\r
+       cli\r
+       out __SP_H__,r29\r
+       out __SREG__,__tmp_reg__\r
+       out __SP_L__,r28\r
+/* prologue end (size=10) */\r
+       std Y+1,r24\r
+       std Y+2,r25\r
+       ldd r24,Y+1\r
+       ldd r25,Y+2\r
+       sbiw r24,0\r
+       brne .L32\r
+       rjmp .L31\r
+.L32:\r
+       ldd r24,Y+1\r
+       ldd r25,Y+2\r
+       std Y+13,r24\r
+       std Y+14,r25\r
+       ldd r24,Y+13\r
+       ldd r25,Y+14\r
+       sbiw r24,2\r
+       std Y+13,r24\r
+       std Y+14,r25\r
+       ldd r24,Y+13\r
+       ldd r25,Y+14\r
+       std Y+7,r24\r
+       std Y+8,r25\r
+       ldd r30,Y+7\r
+       ldd r31,Y+8\r
+       std Z+2,__zero_reg__\r
+       std Z+3,__zero_reg__\r
+       lds r24,flp\r
+       lds r25,(flp)+1\r
+       sbiw r24,0\r
+       brne .L33\r
+       ldd r24,Y+7\r
+       ldd r25,Y+8\r
+       sts (flp)+1,r25\r
+       sts flp,r24\r
+       rjmp .L31\r
+.L33:\r
+       lds r24,flp\r
+       lds r25,(flp)+1\r
+       std Y+3,r24\r
+       std Y+4,r25\r
+       std Y+5,__zero_reg__\r
+       std Y+6,__zero_reg__\r
+.L34:\r
+       ldd r24,Y+3\r
+       ldd r25,Y+4\r
+       sbiw r24,0\r
+       brne .L37\r
+       rjmp .L35\r
+.L37:\r
+       ldd r18,Y+3\r
+       ldd r19,Y+4\r
+       ldd r24,Y+7\r
+       ldd r25,Y+8\r
+       cp r18,r24\r
+       cpc r19,r25\r
+       brsh .L38\r
+       rjmp .L36\r
+.L38:\r
+       ldd r24,Y+3\r
+       ldd r25,Y+4\r
+       std Y+9,r24\r
+       std Y+10,r25\r
+       ldd r30,Y+7\r
+       ldd r31,Y+8\r
+       ldd r24,Y+3\r
+       ldd r25,Y+4\r
+       std Z+2,r24\r
+       std Z+3,r25\r
+       ldd r30,Y+7\r
+       ldd r31,Y+8\r
+       ldd r18,Y+7\r
+       ldd r19,Y+8\r
+       ld r24,Z\r
+       ldd r25,Z+1\r
+       add r24,r18\r
+       adc r25,r19\r
+       mov r18,r24\r
+       mov r19,r25\r
+       subi r18,lo8(-(2))\r
+       sbci r19,hi8(-(2))\r
+       ldd r24,Y+9\r
+       ldd r25,Y+10\r
+       cp r18,r24\r
+       cpc r19,r25\r
+       brne .L39\r
+       ldd r20,Y+7\r
+       ldd r21,Y+8\r
+       ldd r30,Y+7\r
+       ldd r31,Y+8\r
+       ldd r26,Y+3\r
+       ldd r27,Y+4\r
+       ld r18,Z\r
+       ldd r19,Z+1\r
+       ld r24,X+\r
+       ld r25,X\r
+       add r24,r18\r
+       adc r25,r19\r
+       adiw r24,2\r
+       mov r31,r21\r
+       mov r30,r20\r
+       st Z,r24\r
+       std Z+1,r25\r
+       ldd r26,Y+7\r
+       ldd r27,Y+8\r
+       ldd r30,Y+3\r
+       ldd r31,Y+4\r
+       ldd r24,Z+2\r
+       ldd r25,Z+3\r
+       mov r31,r27\r
+       mov r30,r26\r
+       std Z+2,r24\r
+       std Z+3,r25\r
+.L39:\r
+       ldd r24,Y+5\r
+       ldd r25,Y+6\r
+       sbiw r24,0\r
+       brne .L35\r
+       ldd r24,Y+7\r
+       ldd r25,Y+8\r
+       sts (flp)+1,r25\r
+       sts flp,r24\r
+       rjmp .L31\r
+.L36:\r
+       ldd r24,Y+3\r
+       ldd r25,Y+4\r
+       std Y+5,r24\r
+       std Y+6,r25\r
+       ldd r30,Y+3\r
+       ldd r31,Y+4\r
+       ldd r24,Z+2\r
+       ldd r25,Z+3\r
+       std Y+3,r24\r
+       std Y+4,r25\r
+       rjmp .L34\r
+.L35:\r
+       ldd r30,Y+5\r
+       ldd r31,Y+6\r
+       ldd r24,Y+7\r
+       ldd r25,Y+8\r
+       std Z+2,r24\r
+       std Z+3,r25\r
+       ldd r24,Y+5\r
+       ldd r25,Y+6\r
+       adiw r24,2\r
+       std Y+11,r24\r
+       std Y+12,r25\r
+       ldd r30,Y+5\r
+       ldd r31,Y+6\r
+       ldd r18,Y+11\r
+       ldd r19,Y+12\r
+       ld r24,Z\r
+       ldd r25,Z+1\r
+       add r18,r24\r
+       adc r19,r25\r
+       ldd r24,Y+13\r
+       ldd r25,Y+14\r
+       cp r18,r24\r
+       cpc r19,r25\r
+       brne .L31\r
+       ldd r20,Y+5\r
+       ldd r21,Y+6\r
+       ldd r30,Y+5\r
+       ldd r31,Y+6\r
+       ldd r26,Y+7\r
+       ldd r27,Y+8\r
+       ld r18,Z\r
+       ldd r19,Z+1\r
+       ld r24,X+\r
+       ld r25,X\r
+       add r24,r18\r
+       adc r25,r19\r
+       adiw r24,2\r
+       mov r31,r21\r
+       mov r30,r20\r
+       st Z,r24\r
+       std Z+1,r25\r
+       ldd r26,Y+5\r
+       ldd r27,Y+6\r
+       ldd r30,Y+7\r
+       ldd r31,Y+8\r
+       ldd r24,Z+2\r
+       ldd r25,Z+3\r
+       mov r31,r27\r
+       mov r30,r26\r
+       std Z+2,r24\r
+       std Z+3,r25\r
+.L31:\r
+/* epilogue: frame size=14 */\r
+       adiw r28,14\r
+       in __tmp_reg__,__SREG__\r
+       cli\r
+       out __SP_H__,r29\r
+       out __SREG__,__tmp_reg__\r
+       out __SP_L__,r28\r
+       pop r29\r
+       pop r28\r
+       ret\r
+/* epilogue end (size=9) */\r
+/* function free size 204 (185) */\r
+       .size   free, .-free\r
+       .lcomm brkval,2\r
+       .lcomm flp,2\r
+/* File "malloc.c": code  558 = 0x022e ( 520), prologues  20, epilogues  18 */\r
diff --git a/src/avrsample.old/libc/memset.S b/src/avrsample.old/libc/memset.S
new file mode 100644 (file)
index 0000000..cc049cf
--- /dev/null
@@ -0,0 +1,78 @@
+/* Copyright (c) 2002, Marek Michalkiewicz
+   All rights reserved.
+
+   Redistribution and use in source and binary forms, with or without
+   modification, are permitted provided that the following conditions are met:
+
+   * Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+   * Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in
+     the documentation and/or other materials provided with the
+     distribution.
+   * Neither the name of the copyright holders nor the names of
+     contributors may be used to endorse or promote products derived
+     from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+  POSSIBILITY OF SUCH DAMAGE. */
+
+#include "macros.inc"
+
+#define dest_hi r25
+#define dest_lo r24
+; #define val_hi r23
+#define val_lo r22
+#define len_hi r21
+#define len_lo r20
+
+/** \ingroup avr_string
+    \fn void *memset(void *dest, int val, size_t len)
+    \brief Fill memory with a constant byte.
+
+    The memset() function fills the first len bytes of the memory area pointed
+    to by dest with the constant byte val.
+
+    \returns The memset() function returns a pointer to the memory area dest. */
+
+       .text
+       .global _U(memset)
+       .type   _U(memset), @function
+_U(memset):
+       LOAD_X(dest_lo, dest_hi)
+#if OPTIMIZE_SPEED
+; 11 words, (12 + len * 4 - (len & 1)) cycles
+       sbrs    len_lo, 0
+       rjmp    .memset_start
+       rjmp    .memset_odd
+.memset_loop:
+       st      X+, val_lo
+.memset_odd:
+       st      X+, val_lo
+.memset_start:
+       subi    len_lo, lo8(2)
+       sbci    len_hi, hi8(2)
+#else
+; 8 words, (11 + len * 6) cycles
+       rjmp    .memset_start
+.memset_loop:
+       st      X+, val_lo
+.memset_start:
+       subi    len_lo, lo8(1)
+       sbci    len_hi, hi8(1)
+#endif
+       brcc    .memset_loop
+; return dest (unchanged)
+       ret
+.memset_end:
+       .size   _U(memset), .memset_end - _U(memset)
+
diff --git a/src/avrsample.old/libc/memset.i b/src/avrsample.old/libc/memset.i
new file mode 100644 (file)
index 0000000..f05cb50
--- /dev/null
@@ -0,0 +1,86 @@
+# 1 "memset.S"\r
+# 1 "<built-in>"\r
+# 1 "<command line>"\r
+# 1 "memset.S"\r
+# 29 "memset.S"\r
+# 1 "macros.inc" 1\r
+# 33 "macros.inc"\r
+# 1 "c:/WinAVR/avr/include/avr/io.h" 1 3\r
+# 81 "c:/WinAVR/avr/include/avr/io.h" 3\r
+# 1 "c:/WinAVR/avr/include/avr/sfr_defs.h" 1 3\r
+# 82 "c:/WinAVR/avr/include/avr/io.h" 2 3\r
+# 197 "c:/WinAVR/avr/include/avr/io.h" 3\r
+# 1 "c:/WinAVR/avr/include/avr/io4433.h" 1 3\r
+# 198 "c:/WinAVR/avr/include/avr/io.h" 2 3\r
+# 34 "macros.inc" 2\r
+# 124 "macros.inc"\r
+        .macro X_movw dest src\r
+                .if ((\src) - (\dest))\r
+                        .if (((\src) | (\dest)) & 0x01)\r
+                                .if (((\src)-(\dest)) & 0x80)\r
+                                        mov (\dest)+1, (\src)+1\r
+                                        mov (\dest), (\src)\r
+                                .else\r
+                                        mov (\dest), (\src)\r
+                                        mov (\dest)+1, (\src)+1\r
+                                .endif\r
+                        .else\r
+\r
+\r
+\r
+                                mov (\dest), (\src)\r
+                                mov (\dest)+1, (\src)+1\r
+\r
+                        .endif\r
+                .endif\r
+        .endm\r
+# 176 "macros.inc"\r
+        .macro LPM_R0_ZPLUS_INIT hhi\r
+\r
+\r
+\r
+\r
+\r
+        .endm\r
+\r
+        .macro LPM_R0_ZPLUS_NEXT hhi\r
+# 202 "macros.inc"\r
+        lpm\r
+        adiw r30,1\r
+\r
+\r
+        .endm\r
+\r
+        .macro LPM_R0_ZP\r
+\r
+\r
+\r
+        lpm\r
+        adiw r30,1\r
+\r
+        .endm\r
+# 30 "memset.S" 2\r
+\r
+\r
+\r
+; #define val_hi r23\r
+# 47 "memset.S"\r
+        .text\r
+        .global memset\r
+        .type memset, @function\r
+memset:\r
+        mov r26, r24 $ mov r27, r25\r
+# 65 "memset.S"\r
+; 8 words, (11 + len * 6) cycles\r
+        rjmp .memset_start\r
+.memset_loop:\r
+        st X+, r22\r
+.memset_start:\r
+        subi r20, lo8(1)\r
+        sbci r21, hi8(1)\r
+\r
+        brcc .memset_loop\r
+; return dest (unchanged)\r
+        ret\r
+.memset_end:\r
+        .size memset, .memset_end - memset\r
diff --git a/src/avrsample.old/libc/stdio_private.h b/src/avrsample.old/libc/stdio_private.h
new file mode 100644 (file)
index 0000000..16a8fbe
--- /dev/null
@@ -0,0 +1,67 @@
+/* Copyright (c) 2002, Joerg Wunsch
+   All rights reserved.
+
+   Redistribution and use in source and binary forms, with or without
+   modification, are permitted provided that the following conditions are met:
+
+   * Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+   * Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in
+     the documentation and/or other materials provided with the
+     distribution.
+   * Neither the name of the copyright holders nor the names of
+     contributors may be used to endorse or promote products derived
+     from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+  POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/* $Id: stdio_private.h,v 1.6 2003/01/07 22:17:24 joerg_wunsch Exp $ */
+
+#include <inttypes.h>
+#include <stdio.h>
+
+struct __file {
+       char    *buf;           /* buffer pointer */
+       unsigned char unget;    /* ungetc() buffer */
+       uint8_t flags;          /* flags, see below */
+#define __SRD  0x0001          /* OK to read */
+#define __SWR  0x0002          /* OK to write */
+#define __SSTR 0x0004          /* this is an sprintf/snprintf string */
+#define __SPGM 0x0008          /* fmt string is in progmem */
+#define __SERR 0x0010          /* found error */
+#define __SEOF 0x0020          /* found EOF */
+#define __SUNGET 0x040         /* ungetc() happened */
+#if 0
+/* possible future extensions, will require uint16_t flags */
+#define __SRW  0x0080          /* open for reading & writing */
+#define __SLBF 0x0100          /* line buffered */
+#define __SNBF 0x0200          /* unbuffered */
+#define __SMBF 0x0400          /* buf is from malloc */
+#endif
+       int     size;           /* size of buffer */
+       int     len;            /* characters read or written so far */
+       int     (*put)(char);   /* function to write one char to device */
+       int     (*get)(void);   /* function to read one char from device */
+};
+
+/* values for PRINTF_LEVEL */
+#define PRINTF_MIN 1
+#define PRINTF_STD 2
+#define PRINTF_FLT 3
+
+/* values for SCANF_LEVEL */
+#define SCANF_MIN 1
+#define SCANF_STD 2
+#define SCANF_FLT 3
diff --git a/src/avrsample.old/makefile b/src/avrsample.old/makefile
new file mode 100644 (file)
index 0000000..71214fd
--- /dev/null
@@ -0,0 +1,38 @@
+# Simple Makefile\r
+# Volker Oth (c) 1999\r
+\r
+\r
+########### change this lines according to your project ##################\r
+\r
+#put the name of the target mcu here (at90s8515, at90s8535, attiny22, atmega603 etc.)\r
+    MCU = at90s4433\r
+\r
+#put the name of the target file here (without extension)\r
+       TRG     = hello\r
+\r
+#put your C sourcefiles here \r
+#      SRC     = uart.c $(TRG).c\r
+       SRC     = $(TRG).c\r
+\r
+#put additional assembler source file here\r
+       ASRC    =\r
+\r
+#additional libraries and object files to link\r
+       LIB = \r
+\r
+#additional includes to compile\r
+       INC     = \r
+\r
+#compiler flags\r
+       CPFLAGS = -g -O2 -Wall -Wstrict-prototypes -Wa,-ahlms=$(<:.c=.lst)\r
+\r
+#linker flags\r
+       LDFLAGS = -Wl,-Map=$(TRG).map,--cref\r
+\r
+########### you should not need to change the following line #############\r
+include avr_make\r
+                 \r
+###### dependecies, add any dependencies you need here ###################\r
+\r
+#uart.o     : uart.c uart.h\r
+$(TRG).o    : $(TRG).c\r
diff --git a/src/avrsample.old/makefile% b/src/avrsample.old/makefile%
new file mode 100644 (file)
index 0000000..0dc1ef7
--- /dev/null
@@ -0,0 +1,39 @@
+# Simple Makefile\r
+# Volker Oth (c) 1999\r
+\r
+\r
+########### change this lines according to your project ##################\r
+\r
+#put the name of the target mcu here (at90s8515, at90s8535, attiny22, atmega603 etc.)\r
+    MCU = at90s4433\r
+\r
+#put the name of the target file here (without extension)\r
+       TRG     = hello\r
+\r
+#put your C sourcefiles here \r
+#      SRC     = uart.c $(TRG).c\r
+       SRC     = $(TRG).c\r
+\r
+#put additional assembler source file here\r
+       ASRC    =\r
+\r
+#additional libraries and object files to link\r
+       LIB = \r
+\r
+#additional includes to compile\r
+       INC     = \r
+\r
+#compiler flags\r
+       CPFLAGS = -g -O2 -Wall -Wstrict-prototypes -Wa,-ahlms=$(<:.c=.lst)\r
+\r
+#linker flags\r
+       LDFLAGS = -Wl,-Map=$(TRG).map,--cref\r
+\r
+########### you should not need to change the following line #############\r
+include avr_make\r
+                 \r
+###### dependecies, add any dependencies you need here ###################\r
+\r
+#uart.o     : uart.c uart.h\r
+$(TRG).o    : $(TRG).c\r
+       mv $(TRG).o $(TRG).obj\r
diff --git a/src/avrsample.old/n.bat b/src/avrsample.old/n.bat
new file mode 100644 (file)
index 0000000..2ecd204
--- /dev/null
@@ -0,0 +1,2 @@
+avr-gcc -mmcu=at90s4433 -Wa,-a=nick -Wl,--oformat,ihex,-M hello.c -o hello.hex > hello.map
+copy hello.hex a:\
diff --git a/src/avrsample.old/nick b/src/avrsample.old/nick
new file mode 100644 (file)
index 0000000..2ab5e80
--- /dev/null
@@ -0,0 +1,123 @@
+GAS LISTING C:\cygwin\tmp/ccmeaaaa.s                   page 1\r
+\r
+\r
+   1                           .file   "gcctest7.c"\r
+   2                           .arch at90s4433\r
+   3                   __SREG__ = 0x3f\r
+   4                   __SP_H__ = 0x3e\r
+   5                   __SP_L__ = 0x3d\r
+   6                   __tmp_reg__ = 0\r
+   7                   __zero_reg__ = 1\r
+   8                           .global __do_copy_data\r
+   9                           .global __do_clear_bss\r
+  10                           .section        .progmem.data,"a",@progbits\r
+  11                           .type   __c.0, @object\r
+  12                           .size   __c.0, 14\r
+  13                   __c.0:\r
+  14 0000 4865 6C6C            .string "Hello World !"\r
+  14      6F20 576F \r
+  14      726C 6420 \r
+  14      2100 \r
+  15                           .type   __c.1, @object\r
+  16                           .size   __c.1, 17\r
+  17                   __c.1:\r
+  18 000e 5072 6573            .string "Press any key..."\r
+  18      7320 616E \r
+  18      7920 6B65 \r
+  18      792E 2E2E \r
+  18      00\r
+  19                           .type   __c.2, @object\r
+  20                           .size   __c.2, 14\r
+  21                   __c.2:\r
+  22 001f 596F 7520            .string "You pressed '"\r
+  22      7072 6573 \r
+  22      7365 6420 \r
+  22      2700 \r
+  23                           .type   __c.3, @object\r
+  24                           .size   __c.3, 14\r
+  25                   __c.3:\r
+  26 002d 2720 7768            .string "' which is 0x"\r
+  26      6963 6820 \r
+  26      6973 2030 \r
+  26      7800 \r
+  27                           .type   __c.4, @object\r
+  28                           .size   __c.4, 17\r
+  29                   __c.4:\r
+  30 003b 2069 6E20            .string " in hexadecimal."\r
+  30      6865 7861 \r
+  30      6465 6369 \r
+  30      6D61 6C2E \r
+  30      00\r
+  31                           .text\r
+  32                   .global main\r
+  33                           .type   main, @function\r
+  34                   main:\r
+  35                   /* prologue: frame size=1 */\r
+  36 0000 C0E0                 ldi r28,lo8(__stack - 1)\r
+  37 0002 D0E0                 ldi r29,hi8(__stack - 1)\r
+  38 0004 DEBF                 out __SP_H__,r29\r
+  39 0006 CDBF                 out __SP_L__,r28\r
+  40                   /* prologue end (size=4) */\r
+\fGAS LISTING C:\cygwin\tmp/ccmeaaaa.s                  page 2\r
+\r
+\r
+  41 0008 00D0                 rcall UART_Init\r
+  42 000a 80E0                 ldi r24,lo8(__c.0)\r
+  43 000c 90E0                 ldi r25,hi8(__c.0)\r
+  44 000e 00D0                 rcall UART_PrintfProgStr\r
+  45 0010 00D0                 rcall UART_PrintfEndOfLine\r
+  46                   .L3:\r
+  47 0012 80E0                 ldi r24,lo8(__c.1)\r
+  48 0014 90E0                 ldi r25,hi8(__c.1)\r
+  49 0016 00D0                 rcall UART_PrintfProgStr\r
+  50 0018 00D0                 rcall UART_PrintfEndOfLine\r
+  51 001a 00D0                 rcall UART_ReceiveByte\r
+  52 001c 8983                 std Y+1,r24\r
+  53 001e 80E0                 ldi r24,lo8(__c.2)\r
+  54 0020 90E0                 ldi r25,hi8(__c.2)\r
+  55 0022 00D0                 rcall UART_PrintfProgStr\r
+  56 0024 8981                 ldd r24,Y+1\r
+  57 0026 00D0                 rcall UART_SendByte\r
+  58 0028 80E0                 ldi r24,lo8(__c.3)\r
+  59 002a 90E0                 ldi r25,hi8(__c.3)\r
+  60 002c 00D0                 rcall UART_PrintfProgStr\r
+  61 002e 8981                 ldd r24,Y+1\r
+  62 0030 00D0                 rcall UART_Printfu08\r
+  63 0032 80E0                 ldi r24,lo8(__c.4)\r
+  64 0034 90E0                 ldi r25,hi8(__c.4)\r
+  65 0036 00D0                 rcall UART_PrintfProgStr\r
+  66 0038 00D0                 rcall UART_PrintfEndOfLine\r
+  67 003a EBCF                 rjmp .L3\r
+  68                   /* epilogue: frame size=1 */\r
+  69                   /* epilogue: noreturn */\r
+  70                   /* epilogue end (size=0) */\r
+  71                   /* function main size 30 (26) */\r
+  72                           .size   main, .-main\r
+  73                   /* File "gcctest7.c": code   30 = 0x001e (  26), prologues   4, epilogues   0 */\r
+\fGAS LISTING C:\cygwin\tmp/ccmeaaaa.s                  page 3\r
+\r
+\r
+DEFINED SYMBOLS\r
+                            *ABS*:00000000 gcctest7.c\r
+                            *ABS*:0000003f __SREG__\r
+                            *ABS*:0000003e __SP_H__\r
+                            *ABS*:0000003d __SP_L__\r
+                            *ABS*:00000000 __tmp_reg__\r
+                            *ABS*:00000001 __zero_reg__\r
+C:\cygwin\tmp/ccmeaaaa.s:13     .progmem.data:00000000 __c.0\r
+C:\cygwin\tmp/ccmeaaaa.s:17     .progmem.data:0000000e __c.1\r
+C:\cygwin\tmp/ccmeaaaa.s:21     .progmem.data:0000001f __c.2\r
+C:\cygwin\tmp/ccmeaaaa.s:25     .progmem.data:0000002d __c.3\r
+C:\cygwin\tmp/ccmeaaaa.s:29     .progmem.data:0000003b __c.4\r
+C:\cygwin\tmp/ccmeaaaa.s:34     .text:00000000 main\r
+\r
+UNDEFINED SYMBOLS\r
+__do_copy_data\r
+__do_clear_bss\r
+__stack\r
+UART_Init\r
+UART_PrintfProgStr\r
+UART_PrintfEndOfLine\r
+UART_ReceiveByte\r
+UART_SendByte\r
+UART_Printfu08\r
diff --git a/src/avrsample.old/r.bat b/src/avrsample.old/r.bat
new file mode 100644 (file)
index 0000000..43c4d94
--- /dev/null
@@ -0,0 +1 @@
+revava -e hello.hex -o hello.s
diff --git a/src/avrsample.old/x.bat b/src/avrsample.old/x.bat
new file mode 100644 (file)
index 0000000..fbce676
--- /dev/null
@@ -0,0 +1 @@
+avr-gcc -mmcu=at90s4433 -S hello.c
diff --git a/src/avrsample/a.sh b/src/avrsample/a.sh
new file mode 100644 (file)
index 0000000..f5282de
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+avr-gcc -S -g -Wall -Wstrict-prototypes -Wa,-ahlms=hello.lst -mmcu=at90s4433 -I. hello.c -o hello.s
+avr-gcc -c -g -Wall -Wstrict-prototypes -Wa,-ahlms=hello.lst -mmcu=at90s4433 -I. hello.c -o hello.o
+avr-gcc  hello.o   -Wl,-Map=hello.map,--cref -mmcu=at90s4433 -o hello.elf
+avr-objcopy -O ihex hello.elf hello.hex
+avr-objcopy -j .eeprom --set-section-flags .eeprom="alloc,load" --change-section-lma .eeprom=0 -O ihex          hello.elf hello.eep
+
diff --git a/src/avrsample/a.sh% b/src/avrsample/a.sh%
new file mode 100644 (file)
index 0000000..f5282de
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+avr-gcc -S -g -Wall -Wstrict-prototypes -Wa,-ahlms=hello.lst -mmcu=at90s4433 -I. hello.c -o hello.s
+avr-gcc -c -g -Wall -Wstrict-prototypes -Wa,-ahlms=hello.lst -mmcu=at90s4433 -I. hello.c -o hello.o
+avr-gcc  hello.o   -Wl,-Map=hello.map,--cref -mmcu=at90s4433 -o hello.elf
+avr-objcopy -O ihex hello.elf hello.hex
+avr-objcopy -j .eeprom --set-section-flags .eeprom="alloc,load" --change-section-lma .eeprom=0 -O ihex          hello.elf hello.eep
+
diff --git a/src/avrsample/a.tar b/src/avrsample/a.tar
new file mode 100644 (file)
index 0000000..0748a87
Binary files /dev/null and b/src/avrsample/a.tar differ
diff --git a/src/avrsample/aaa b/src/avrsample/aaa
new file mode 100644 (file)
index 0000000..f3c95bd
Binary files /dev/null and b/src/avrsample/aaa differ
diff --git a/src/avrsample/avr_make b/src/avrsample/avr_make
new file mode 100644 (file)
index 0000000..261036e
--- /dev/null
@@ -0,0 +1,68 @@
+# GCC-AVR standard makefile\r
+# Based on AVRfreaks.net January 2000 sample makefile\r
+# For compilation under Microsoft Windows environment\r
+\r
+# Variables definitions\r
+       CC      = avr-gcc\r
+       AS      = avr-gcc -x assembler-with-cpp \r
+       RM      = rm -f\r
+       RN      = mv\r
+       BIN     = avr-objcopy\r
+       SIZE    = avr-size\r
+       INCDIR  = .\r
+       LIBDIR  = avr/lib\r
+       SHELL   = sh.exe\r
+\r
+# Output format (srec or ihex, avrobj is always created)\r
+       FORMAT = ihex           \r
+\r
+# Project specific object files\r
+       OBJ     = $(ASRC:.s=.o) $(SRC:.c=.o) \r
+       CPFLAGS += -mmcu=$(MCU)\r
+       ASFLAGS += -mmcu=$(MCU)\r
+       LDFLAGS += -mmcu=$(MCU)\r
+  \r
+# Define make process\r
+\r
+#all:  $(TRG).obj $(TRG).elf $(TRG).rom $(TRG).eep $(TRG).ok \r
+all:   $(TRG).s $(TRG).elf $(TRG).hex $(TRG).eep $(TRG).ok\r
+%.o : %.c \r
+       $(CC) -c $(CPFLAGS) -I$(INCDIR) $< -o $@\r
+%.s : %.c\r
+       $(CC) -S $(CPFLAGS) -I$(INCDIR) $< -o $@\r
+%.o : %.s\r
+       $(AS) -c $(ASFLAGS) -I$(INCDIR) $< -o $@\r
+%.elf: $(OBJ)\r
+       $(CC) $(OBJ) $(LIB) $(LDFLAGS) -o $@\r
+%.obj: %.elf\r
+       $(BIN) -O avrobj -R .eeprom $< $@\r
+%.rom: %.elf\r
+       $(BIN) -O $(FORMAT) -R .eeprom $< $@\r
+#%.eep: %.elf\r
+#      $(BIN) -j .eeprom --set-section-flags=.eeprom="alloc,load" section-lma .eeprom=0 -O $(FORMAT) $< $@\r
+%.eep: %.elf\r
+       $(BIN) -j .eeprom --set-section-flags .eeprom="alloc,load" --change-section-lma .eeprom=0 -O $(FORMAT) $< $@\r
+%.hex: %.elf\r
+       $(BIN) -O ihex $< $@\r
+\r
+# No error message if successfully compiled\r
+%ok:\r
+       @echo "Errors: none" \r
+\r
+# Clean up directory\r
+clean:\r
+       $(RM) $(OBJ)\r
+       $(RM) $(SRC:.c=.s)\r
+       $(RM) $(SRC:.c=.lst)\r
+       $(RM) $(TRG).map\r
+       $(RM) $(TRG).elf\r
+\r
+       $(RM) $(TRG).obj\r
+       $(RM) $(TRG).a90\r
+       $(RM) $(TRG).hex        \r
+       $(RM) *.bak\r
+       $(RM) *.log\r
+       \r
+size:\r
+       $(SIZE) $(TRG).elf\r
+       \r
diff --git a/src/avrsample/avr_make% b/src/avrsample/avr_make%
new file mode 100644 (file)
index 0000000..82c4ddb
--- /dev/null
@@ -0,0 +1,68 @@
+# GCC-AVR standard makefile\r
+# Based on AVRfreaks.net January 2000 sample makefile\r
+# For compilation under Microsoft Windows environment\r
+\r
+# Variables definitions\r
+       CC      = avr-gcc\r
+       AS      = avr-gcc -x assembler-with-cpp \r
+       RM      = rm -f\r
+       RN      = mv\r
+       BIN     = avr-objcopy\r
+       SIZE    = avr-size\r
+       INCDIR  = .\r
+       LIBDIR  = avr/lib\r
+       SHELL   = sh.exe\r
+\r
+# Output format (srec or ihex, avrobj is always created)\r
+       FORMAT = ihex           \r
+\r
+# Project specific object files\r
+       OBJ     = $(ASRC:.s=.o) $(SRC:.c=.o) \r
+       CPFLAGS += -mmcu=$(MCU)\r
+       ASFLAGS += -mmcu=$(MCU)\r
+       LDFLAGS += -mmcu=$(MCU)\r
+  \r
+# Define make process\r
+\r
+#all:  $(TRG).obj $(TRG).elf $(TRG).rom $(TRG).eep $(TRG).ok \r
+all:   $(TRG).s $(TRG).elf $(TRG).hex $(TRG).eep $(TRG).ok\r
+%.o : %.c \r
+       $(CC) -c $(CPFLAGS) -I$(INCDIR) $< -o $@\r
+%.s : %.c\r
+       $(CC) -S $(CPFLAGS) -I$(INCDIR) $< -o $@\r
+%.o : %.s\r
+       $(AS) -c $(ASFLAGS) -I$(INCDIR) $< -o $@\r
+%.elf: $(OBJ)\r
+       $(CC) $(OBJ) $(LIB) $(LDFLAGS) -o $@\r
+%.obj: %.elf\r
+       $(BIN) -O avrobj -R .eeprom $< $@\r
+%.rom: %.elf\r
+       $(BIN) -O $(FORMAT) -R .eeprom $< $@\r
+#%.eep: %.elf\r
+#      $(BIN) -j .eeprom --set-section-flags=.eeprom="alloc,load" section-lma .eeprom=0 -O $(FORMAT) $< $@\r
+%.eep: %.elf\r
+       $(BIN) -j .eeprom --set-section-flags .eeprom="alloc,load" --section-lma --set-section-flags .eeprom=0 -O $(FORMAT) $< $@\r
+%.hex: %.elf\r
+       $(BIN) -O ihex $< $@\r
+\r
+# No error message if successfully compiled\r
+%ok:\r
+       @echo "Errors: none" \r
+\r
+# Clean up directory\r
+clean:\r
+       $(RM) $(OBJ)\r
+       $(RM) $(SRC:.c=.s)\r
+       $(RM) $(SRC:.c=.lst)\r
+       $(RM) $(TRG).map\r
+       $(RM) $(TRG).elf\r
+\r
+       $(RM) $(TRG).obj\r
+       $(RM) $(TRG).a90\r
+       $(RM) $(TRG).hex        \r
+       $(RM) *.bak\r
+       $(RM) *.log\r
+       \r
+size:\r
+       $(SIZE) $(TRG).elf\r
+       \r
diff --git a/src/avrsample/hello.c b/src/avrsample/hello.c
new file mode 100644 (file)
index 0000000..add0fd1
--- /dev/null
@@ -0,0 +1,118 @@
+/* hello.c by Nick for Hytech AVR */\r
+\r
+#include <stdio.h>\r
+#include <avr/io.h>\r
+#include <avr/interrupt.h>\r
+#include <avr/signal.h>\r
+#include "hello.h"\r
+\r
+#define F_CPU           11059200      /* 4Mhz */\r
+#define UART_BAUD_RATE      9600      /* 9600 baud */\r
+#define UART_BAUD_SELECT (F_CPU/(UART_BAUD_RATE*16l)-1)\r
+\r
+int uart_putc(char c)\r
+       {\r
+       while (bit_is_set(UCSRA, UDRE) == 0)\r
+               ;\r
+       UDR = c;\r
+       return 0;\r
+       }\r
+\r
+int uart_getc(void)\r
+       {\r
+       if (bit_is_set(UCSRA, RXC) == 0)\r
+               return -1;\r
+       return UDR;\r
+       }\r
+\r
+/* uart globals */\r
+static volatile unsigned char *uart_data_ptr;\r
+static volatile unsigned char uart_counter;\r
+\r
+\r
+SIGNAL(SIG_UART_TRANS)\r
+/* signal handler for uart txd ready interrupt */\r
+{\r
+#if 0\r
+    if (uart_counter == 0)\r
+       {\r
+       outp(inp(UCSRB) & ~(1<<UDRIE), UCSRB);\r
+       return;\r
+       }\r
+\r
+    uart_data_ptr++;\r
+\r
+    if (--uart_counter)\r
+        outp(*uart_data_ptr, UDR);       /* write byte to data buffer */\r
+#endif\r
+}\r
+\r
+\r
+SIGNAL(SIG_UART_RECV)\r
+/* signal handler for receive complete interrupt */\r
+{\r
+    register char led;\r
+\r
+    led = inp(UDR);        /* read byte for UART data buffer */\r
+#if 1\r
+ UDR = led + 1;\r
+#else\r
+    outp(~led, PORTB);     /* output received byte to PortB (LEDs) */\r
+#endif\r
+}\r
+\r
+\r
+void uart_send(unsigned char *buf, unsigned char size)\r
+/* send buffer <buf> to uart */\r
+{\r
+    if (!uart_counter) {\r
+        /* write first byte to data buffer */\r
+        uart_data_ptr  = buf;\r
+        uart_counter   = size;\r
+        outp(*buf, UDR);\r
+    }\r
+}\r
+\r
+\r
+void uart_init(void)\r
+/* initialize uart */\r
+{\r
+    /* enable RxD/TxD and ints */\r
+    outp((1<<RXCIE)|(1<<UDRIE)|(1<<RXEN)|(1<<TXEN),UCSRB);\r
+    /* set baud rate */\r
+    outp((unsigned char)UART_BAUD_SELECT, UBRR);\r
+}\r
+\r
+int main(void)\r
+       {\r
+       /* initialise the AVR's built-in UART for 9600 bps */\r
+#if 1\r
+       uart_init();\r
+#else\r
+       UCSRA = _BV(TXC);\r
+       UCSRB = _BV(TXEN) | _BV(RXEN);\r
+       UBRR = 71;\r
+       /* UBRRH = 0; */ /* = (11059200 / (9600 * 16)) - 1 */\r
+#endif\r
+\r
+#if 0\r
+       /* send a demo message to ISPD via the AVR's UART */\r
+       uart_putc('h');\r
+       uart_putc('e');\r
+       uart_putc('l');\r
+       uart_putc('l');\r
+       uart_putc('o');\r
+#else\r
+       /* setup the standard input, output and error streams */\r
+       fdevopen(uart_putc, uart_getc, 0);\r
+\r
+       /* send a demo message to ISPD via the AVR's UART */\r
+       printf("hello, world\r\n");\r
+        uart_send("Serial Data from AVR received###", 32);\r
+#endif\r
+\r
+       /* enter an infinite loop as we can never exit */\r
+       while (1)\r
+               ;\r
+       }\r
+\r
diff --git a/src/avrsample/hello.c! b/src/avrsample/hello.c!
new file mode 100644 (file)
index 0000000..9f77dc5
--- /dev/null
@@ -0,0 +1,105 @@
+/*\r
+    Title:    AVR-GCC test program #4 for the STK200 eva board\r
+    Author:   Volker Oth\r
+    Date:     4/1999\r
+    Purpose:  Uses the UART to communicate with a terminal program on the pc.\r
+              The "tranceive complete" interrupt is used to send the string \r
+              "Serial Data from AVR receiced###" continuously to the pc.\r
+              When a byte was received from the pc, the "receive complete"\r
+              interrupt is called, which outputs the byte to PortB where the\r
+              LEDs visualize the 8 bits it consists of.\r
+              UART format: 9600 baud, 8bit, 1 stopbit, no parity\r
+    needed\r
+    Software: AVR-GCC to compile\r
+    needed\r
+    Hardware: ATS90S8515/8535/2313/mega(?) on STK200/300 board\r
+    Note:     To contact me, mail to\r
+                  volkeroth@gmx.de\r
+              You might find more AVR related stuff at my homepage:\r
+                  http://members.xoom.com/volkeroth\r
+*/\r
+\r
+#include <avr/io.h>\r
+#include <avr/interrupt.h>\r
+#include <avr/signal.h>\r
+\r
+\r
+#define F_CPU           11059200      /* 4Mhz */\r
+#define UART_BAUD_RATE      9600      /* 9600 baud */\r
+\r
+\r
+#define UART_BAUD_SELECT (F_CPU/(UART_BAUD_RATE*16l)-1)\r
+\r
+\r
+typedef unsigned char  u08;\r
+typedef          char  s08;\r
+typedef unsigned short u16;\r
+typedef          short s16;\r
+\r
+\r
+/* uart globals */\r
+static volatile u08 *uart_data_ptr;\r
+static volatile u08 uart_counter;\r
+\r
+\r
+SIGNAL(SIG_UART_TRANS)      \r
+/* signal handler for uart txd ready interrupt */\r
+{\r
+    uart_data_ptr++;\r
+\r
+    if (--uart_counter)\r
+        outp(*uart_data_ptr, UDR);       /* write byte to data buffer */\r
+}\r
+\r
+\r
+SIGNAL(SIG_UART_RECV)      \r
+/* signal handler for receive complete interrupt */\r
+{\r
+    register char led;\r
+\r
+    led = inp(UDR);        /* read byte for UART data buffer */\r
+#if 1\r
+ UDR = led + 1;\r
+#else\r
+    outp(~led, PORTB);     /* output received byte to PortB (LEDs) */\r
+#endif\r
+}\r
+\r
+\r
+void uart_send(u08 *buf, u08 size)\r
+/* send buffer <buf> to uart */\r
+{   \r
+    if (!uart_counter) {\r
+        /* write first byte to data buffer */\r
+        uart_data_ptr  = buf;\r
+        uart_counter   = size;\r
+        outp(*buf, UDR);\r
+    }\r
+}\r
+\r
+\r
+void uart_init(void)\r
+/* initialize uart */\r
+{\r
+    /* enable RxD/TxD and ints */\r
+    outp((1<<RXCIE)|(1<<TXCIE)|(1<<RXEN)|(1<<TXEN),UCSRB);       \r
+    /* set baud rate */\r
+    outp((u08)UART_BAUD_SELECT, UBRR);          \r
+}\r
+\r
+\r
+int main(void)\r
+{\r
+    outp(0xff ,DDRB);      /* PortB output */\r
+    outp(0x00, PORTB);     /* switch LEDs on */\r
+\r
+    uart_init();\r
+ UDR = 'a';\r
+ abort();\r
+\r
+    sei();                 /* enable interrupts */\r
+\r
+    for (;;) {             /* loop forever */\r
+        uart_send("Serial Data from AVR received###", 32);\r
+    }            \r
+}\r
diff --git a/src/avrsample/hello.c# b/src/avrsample/hello.c#
new file mode 100644 (file)
index 0000000..1ccbf7a
--- /dev/null
@@ -0,0 +1,60 @@
+/* hello.c by Nick for Hytech AVR */
+
+#include <stdio.h>
+#include <avr/io.h>
+/* #include <avr/signal.h> */
+#include "hello.h"
+
+int my_puts(char *s)
+       {
+       char c;
+
+       while (c = *s++)
+               {
+               my_putc(c);
+               }
+       return 0;
+       }
+
+int my_putc(char c)
+       {
+       while (bit_is_set(UCSRA, UDRE) == 0)
+               ;
+       UDR = c;
+       return 0;
+       }
+
+int my_getc(void)
+       {
+       if (bit_is_set(UCSRA, RXC) == 0)
+               return -1;
+       return UDR;
+       }
+
+int main(void)
+       {
+       __do_copy_data();
+       __do_clear_bss();
+
+       /* initialise the AVR's built-in UART for 9600 bps */
+       UCSRA = _BV(TXC);
+       UCSRB = _BV(TXEN) | _BV(RXEN);
+       UBRR = 71;
+       /* UBRRH = 0; */ /* = (11059200 / (9600 * 16)) - 1 */
+
+#if 1
+       /* send a demo message to ISPD via the AVR's UART */
+       my_puts("a"); /* "hello, world\r\n"); */
+#else
+       /* setup the standard input, output and error streams */
+       fdevopen(my_putc, my_getc, 0);
+
+       /* send a demo message to ISPD via the AVR's UART */
+       printf("hello, world\r\n");
+#endif
+
+       /* enter an infinite loop as we can never exit */
+       while (1)
+               ;
+       }
+
diff --git a/src/avrsample/hello.c% b/src/avrsample/hello.c%
new file mode 100644 (file)
index 0000000..0f3b6e6
--- /dev/null
@@ -0,0 +1,116 @@
+/* hello.c by Nick for Hytech AVR */\r
+\r
+#include <stdio.h>\r
+#include <avr/io.h>\r
+#include <avr/interrupt.h>\r
+#include <avr/signal.h>\r
+#include "hello.h"\r
+\r
+#define F_CPU           11059200      /* 4Mhz */\r
+#define UART_BAUD_RATE      9600      /* 9600 baud */\r
+#define UART_BAUD_SELECT (F_CPU/(UART_BAUD_RATE*16l)-1)\r
+\r
+int uart_putc(char c)\r
+       {\r
+       while (bit_is_set(UCSRA, UDRE) == 0)\r
+               ;\r
+       UDR = c;\r
+       return 0;\r
+       }\r
+\r
+int uart_getc(void)\r
+       {\r
+       if (bit_is_set(UCSRA, RXC) == 0)\r
+               return -1;\r
+       return UDR;\r
+       }\r
+\r
+/* uart globals */\r
+static volatile unsigned char *uart_data_ptr;\r
+static volatile unsigned char uart_counter;\r
+\r
+\r
+SIGNAL(SIG_UART_TRANS)\r
+/* signal handler for uart txd ready interrupt */\r
+{\r
+    if (uart_counter == 0)\r
+       {\r
+       outp(inp(UCSRB) & ~(1<<UDRIE), UCSRB);\r
+       return;\r
+       }\r
+\r
+    uart_data_ptr++;\r
+\r
+    if (--uart_counter)\r
+        outp(*uart_data_ptr, UDR);       /* write byte to data buffer */\r
+}\r
+\r
+\r
+SIGNAL(SIG_UART_RECV)\r
+/* signal handler for receive complete interrupt */\r
+{\r
+    register char led;\r
+\r
+    led = inp(UDR);        /* read byte for UART data buffer */\r
+#if 1\r
+ UDR = led + 1;\r
+#else\r
+    outp(~led, PORTB);     /* output received byte to PortB (LEDs) */\r
+#endif\r
+}\r
+\r
+\r
+void uart_send(unsigned char *buf, unsigned char size)\r
+/* send buffer <buf> to uart */\r
+{\r
+    if (!uart_counter) {\r
+        /* write first byte to data buffer */\r
+        uart_data_ptr  = buf;\r
+        uart_counter   = size;\r
+        outp(*buf, UDR);\r
+    }\r
+}\r
+\r
+\r
+void uart_init(void)\r
+/* initialize uart */\r
+{\r
+    /* enable RxD/TxD and ints */\r
+    outp((1<<RXCIE)|(1<<UDRIE)|(1<<RXEN)|(1<<TXEN),UCSRB);\r
+    /* set baud rate */\r
+    outp((unsigned char)UART_BAUD_SELECT, UBRR);\r
+}\r
+\r
+int main(void)\r
+       {\r
+       /* initialise the AVR's built-in UART for 9600 bps */\r
+#if 1\r
+       uart_init();\r
+#else\r
+       UCSRA = _BV(TXC);\r
+       UCSRB = _BV(TXEN) | _BV(RXEN);\r
+       UBRR = 71;\r
+       /* UBRRH = 0; */ /* = (11059200 / (9600 * 16)) - 1 */\r
+#endif\r
+\r
+#if 0\r
+       /* send a demo message to ISPD via the AVR's UART */\r
+       uart_putc('h');\r
+       uart_putc('e');\r
+       uart_putc('l');\r
+       uart_putc('l');\r
+       uart_putc('o');\r
+#else\r
+       /* setup the standard input, output and error streams */\r
+       fdevopen(uart_putc, uart_getc, 0);\r
+\r
+       /* send a demo message to ISPD via the AVR's UART */\r
+       printf("hello, world\r\n");\r
+        uart_send("Serial Data from AVR received###", 32);\r
+#endif\r
+\r
+       /* enter an infinite loop as we can never exit */\r
+       while (1)\r
+               ;\r
+       }\r
+\r
diff --git a/src/avrsample/hello.eep b/src/avrsample/hello.eep
new file mode 100644 (file)
index 0000000..1996e8f
--- /dev/null
@@ -0,0 +1 @@
+:00000001FF\r
diff --git a/src/avrsample/hello.elf b/src/avrsample/hello.elf
new file mode 100644 (file)
index 0000000..3b3e074
Binary files /dev/null and b/src/avrsample/hello.elf differ
diff --git a/src/avrsample/hello.h b/src/avrsample/hello.h
new file mode 100644 (file)
index 0000000..9491323
--- /dev/null
@@ -0,0 +1,6 @@
+/* hello.h by Nick for Hytech AVR */
+
+int my_putc(char c);
+int my_getc(void);
+int main(void);
+
diff --git a/src/avrsample/hello.h# b/src/avrsample/hello.h#
new file mode 100644 (file)
index 0000000..1ff84f3
--- /dev/null
@@ -0,0 +1,7 @@
+/* hello.h by Nick for Hytech AVR */
+
+int my_puts(char *s);
+int my_putc(char c);
+int my_getc(void);
+int main(void);
+
diff --git a/src/avrsample/hello.hex b/src/avrsample/hello.hex
new file mode 100644 (file)
index 0000000..8b2aa09
--- /dev/null
@@ -0,0 +1,183 @@
+:100000000DC027C026C025C024C023C022C021C0E7\r
+:1000100074C01FC062C01DC01CC01BC011241FBE05\r
+:10002000CFEDD0E0DEBFCDBF10E0A0E6B0E0EAE16A\r
+:10003000FBE003C0C89531960D92A639B107D1F700\r
+:1000400010E0A6E9B0E001C01D92A33AB107E1F7C4\r
+:10005000A0C0D6CFCF93DF93CDB7DEB721970FB631\r
+:10006000F894DEBF0FBECDBF898380912B00992706\r
+:10007000807290700097C9F3898180932C0080E092\r
+:1000800090E021960FB6F894DEBF0FBECDBFDF9192\r
+:10009000CF910895CF93DF93CDB7DEB722970FB6F8\r
+:1000A000F894DEBF0FBECDBF80912B0088232CF0CB\r
+:1000B0008FEF9FEF89839A8305C080912C00992749\r
+:1000C00089839A8389819A8122960FB6F894DEBF3C\r
+:1000D0000FBECDBFDF91CF9108951F920F920FB643\r
+:1000E0000F921124CF93DF93CDB7DEB7DF91CF917D\r
+:1000F0000F900FBE0F901F9018951F920F920FB682\r
+:100100000F9211248F93CF93DF93CDB7DEB78091F9\r
+:100110002C008F5F80932C00DF91CF918F910F90F7\r
+:100120000FBE0F901F901895CF93DF93CDB7DEB71A\r
+:1001300023970FB6F894DEBF0FBECDBF89839A8395\r
+:100140006B8380919800882371F489819A819093C0\r
+:100150009700809396008B8180939800E981FA81C3\r
+:10016000808180932C0023960FB6F894DEBF0FBEDB\r
+:10017000CDBFDF91CF910895CF93DF93CDB7DEB799\r
+:1001800088EB80932A0087E480932900DF91CF9148\r
+:100190000895CFEDD0E0DEBFCDBFEEDF40E050E010\r
+:1001A0006AE470E08AE290E00CD080E690E09F93F1\r
+:1001B0008F934ED00F900F9060E28FE690E0B4DF07\r
+:1001C000FFCF0F931F93CF93DF93082F192FD72FB4\r
+:1001D000C62F009711F4672BB1F16BE070E081E05E\r
+:1001E00090E0D8D2F92FE82F009769F1209771F0AD\r
+:1001F000C187D28781E0828380919D0090919E008B\r
+:10020000892B21F4F0939E00E0939D0001151105C8\r
+:10021000C1F00783108782E0828380919F009091D4\r
+:10022000A000892B71F4F093A000E0939F008091CF\r
+:10023000A1009091A200892B21F4F093A200E093F9\r
+:10024000A1008E2F9F2FDF91CF911F910F910895C5\r
+:10025000A0E0B0E0EDE2F1E038C4E5E0F0E0EC0F62\r
+:10026000FD1F819191914E2F5F2F682F792F8091E3\r
+:100270009F009091A00002D0E2E043C4A2E1B0E070\r
+:10028000E3E4F1E012C4AA24BB24CC24DD24682ECC\r
+:10029000792E6D877E874F87588B44245524F92FFC\r
+:1002A000E82F45825682828181FD56C28FEF9FEFF3\r
+:1002B0006EC240FE3FC2822D80538A3020F5F0E3AB\r
+:1002C0002F1641F42A89222329F4332019F480E0DF\r
+:1002D00091E093C0EA898E2F9927282F392F220F7A\r
+:1002E000331F220F331F220F331F280F391F280FF0\r
+:1002F000822F820D80538A8B43FC2EC288230CF4FC\r
+:100300002BC2382E29C243FE05C0FA89FF2311F4FF\r
+:1003100021E02A8B822D992787FD909588369105BB\r
+:1003200054F5853691050CF06BC08835910509F4BC\r
+:10033000DDC089359105B4F48B32910509F442C0D2\r
+:100340008C32910544F48032910509F43FC08397C3\r
+:1003500009F442C0E5C18D329105D9F18E9709F4B7\r
+:1003600040C0DEC18336910509F454C0843691053E\r
+:1003700009F47DC0D5C18037910509F4AFC081373C\r
+:10038000910584F48C369105B1F18D3691052CF4EC\r
+:100390008936910509F46BC0C3C18F36910509F404\r
+:1003A0009AC0BEC18537910509F4A2C08637910570\r
+:1003B00024F483379105C1F1B3C18837910509F45D\r
+:1003C00095C0AEC180E190E0482A592AE0E2F0E011\r
+:1003D00005C080E890E011C0E0E4F0E04E2A5F2A1A\r
+:1003E000BBC188E090E0482A592AEFEFFEEF4E2289\r
+:1003F0005F221A8AB1C184E090E0482A592AACC130\r
+:100400000F2EFFE3AF2EF02D3A940F2EF3E62F2E92\r
+:10041000F02D28C1EF85F8898E2F9F2F02968F87A8\r
+:10042000988BA0803A941EC1EF85F8898E2F9F2F5C\r
+:1004300002968F87988BA080B180198AFB2DEA2DB8\r
+:100440008081882351F099899F5F998BFB2DEA2D3C\r
+:10045000E90FF11D80818823B1F743FE05C08A8929\r
+:100460009989891708F4898BE9893E1AFBC042FEF5\r
+:100470000CC0EF85F8898E2F9F2F04968F87988B5D\r
+:1004800020813181428153810FC0EF85F8898E2F01\r
+:100490009F2F02968F87988B80819181282F392FEB\r
+:1004A000442737FD4095542FA22EB32EC42ED52EAF\r
+:1004B000552364F4E2E0F0E04E2A5F2AD094C09421\r
+:1004C000B094A094A11CB11CC11CD11C8FEB9FEF58\r
+:1004D0004822592230C098E0998B0AC0E0E4F0E04D\r
+:1004E0004E2A5F2A0F2EF8E72F2EF02DF0E1F98B20\r
+:1004F00042FE0CC0EF85F8898E2F9F2F04968F87C0\r
+:10050000988B20813181428153810DC0EF85F8891C\r
+:100510008E2F9F2F02968F87988B80819181282F15\r
+:10052000392F44275527A22EB32EC42ED52EEFECFB\r
+:10053000FFEF4E225F228C2E9D2E0894811C911C71\r
+:10054000F989EF2EFF24002711279D2D8C2D7B2D5F\r
+:100550006A2D512F402F3F2D2E2D80D2B92FA82F3D\r
+:10056000972F862FF92DE82D80838A301CF0820D7D\r
+:10057000815204C0F92DE82D8081805DF92DE82D90\r
+:1005800081938E2E9F2E9D2D8C2D7B2D6A2D512F8C\r
+:10059000402F3F2D2E2D62D2A22EB32EC42ED52E4B\r
+:1005A000211531054105510581F650FE17C0A32CD8\r
+:1005B00046FE0BC0832D992787FD9095F989F03170\r
+:1005C00011F4825001C08150A82E45FCAA941A143F\r
+:1005D0002CF4AA8A88E090E0482A592A43FE1CC0DD\r
+:1005E0009A89993010F0E8E0EA8B8C2F9D2F0196C4\r
+:1005F000A82CA81A8A89F82FF150FA8BA81660F453\r
+:1006000090E3F92DE82D91938E2E9F2E8A89F82F55\r
+:10061000F150FA8BA816A8F341FE02C08DE207C084\r
+:1006200044FE02C08BE203C045FE06C080E2F92D05\r
+:10063000E82D81938E2E9F2E46FE0EC0F989F03153\r
+:1006400029F4F92DE82D21928E2E9F2E80E3F92D8D\r
+:10065000E82D81938E2E9F2E8C2F9D2F0196F82DA5\r
+:10066000F81B3F1A842D807869F4832D3A9418166C\r
+:100670004CF4772D662D80E290E0A4D0832D3A943F\r
+:100680001816BCF323E6221641F48A2D992787FD1C\r
+:100690009095772D662D96D032C083E72816B9F451\r
+:1006A00099899150998B9F3F51F1FB2DEA2D8081C3\r
+:1006B000992787FD90950894A11CB11C772D662D74\r
+:1006C00081D0E989E150E98BEF3F79F718C08C2F91\r
+:1006D0009D2F01968816990691F00C2F1D2F0F5F04\r
+:1006E0001F4FF92DE82D82918E2E9F2E992787FD81\r
+:1006F0009095772D662D66D08016910691F7842D02\r
+:100700008078A9F0832D3A9418168CF4772D662DF5\r
+:1007100080E290E057D0832D3A941816BCF307C0BE\r
+:10072000822D992787FD9095772D662D4BD04424F7\r
+:10073000552412C0F5E22F1641F444245524439465\r
+:100740001A8A3A882AE0298B07C0822D992787FDCB\r
+:100750009095772D662D36D0F72DE62D828183FF7B\r
+:100760000AC0ED85FE858E2F9F2F01968D879E876F\r
+:10077000C895202C05C0ED85FE852190ED87FE876C\r
+:10078000222009F096CDF72DE62D85819681E2E1B4\r
+:100790006296A7C10F931F93CF93DF934DD1082F7C\r
+:1007A000192F3DD0D92FC82F009739F0512F402F46\r
+:1007B00060E070E039D18C2F9D2FDF91CF911F9198\r
+:1007C0000F9108950F931F93CF93DF93082F192F45\r
+:1007D000D72FC62F8A8182FF0DC02D813E818B814C\r
+:1007E0009C812817390764F4E881F9810193E88333\r
+:1007F000F98306C0EF81F885802F0995892B41F494\r
+:100800008D819E8101968D839E83912F802F02C0C2\r
+:100810008FEF9FEFDF91CF911F910F910895482F98\r
+:10082000592F029710F442E050E020E030E0E091D0\r
+:100830009B00F0919C006E2F7F2FB32FA22F30973B\r
+:10084000B9F0808191818417950759F148175907AC\r
+:1008500040F42115310519F08217930710F4282F61\r
+:10086000392FAE2FBF2F0280F381E02D309749F74B\r
+:1008700021153105E9F1932F822F841B950B0497E5\r
+:1008800010F4532F422FF72FE62FA0E0B0E0672B94\r
+:1008900079F1808191818217930719F542175307E7\r
+:1008A00089F4228133818E2F9F2F0296109729F091\r
+:1008B00012962D933C931397089530939C002093A8\r
+:1008C0009B000895241B350BAE2FBF2FA20FB31F23\r
+:1008D0004D935D9322503040208331838A2F9B2F8C\r
+:1008E0000895AE2FBF2F0280F381E02D309789F657\r
+:1008F0008091990090919A00892B41F48091920007\r
+:100900009091930090939A0080939900A091940005\r
+:10091000B0919500109741F4ADB7BEB780919000AB\r
+:1009200090919100A81BB90BE0919900F0919A0069\r
+:100930008E2F9F2F840F951F02968A179B0748F4CE\r
+:1009400090939A0080939900419351938E2F9F2FFB\r
+:10095000089580E090E00895CF93DF93009709F425\r
+:1009600060C0B92FA82F129712961D921C92139750\r
+:1009700080919B0090919C00009751F1F92FE82FF6\r
+:1009800040E050E0EA17FB0740F1DB2FCA2F129638\r
+:10099000ED93FC9313972D913C911197C20FD31FA8\r
+:1009A0008C2F9D2F02968E179F0779F48A819B8149\r
+:1009B000280F391F2E5F3F4F2D933C931197828153\r
+:1009C000938112968D939C9313974115510561F471\r
+:1009D000B0939C00A0939B0024C04E2F5F2F0280F9\r
+:1009E000F381E02D309771F6D52FC42FAA83BB83F6\r
+:1009F000952F842F029628813981820F931F8A17A1\r
+:100A00009B0779F48D919C911197280F391F2E5FC8\r
+:100A10003F4F2883398312968D919C9113978A8337\r
+:100A20009B83DF91CF910895A82FB92F01C06D93BB\r
+:100A300041505040E0F708955527002480FF02C040\r
+:100A4000060E571F660F771F6115710521F09695E9\r
+:100A50008795009799F7952F802D0895A1E21A2E7A\r
+:100A6000AA1BBB1BEA2FFB2F0DC0AA1FBB1FEE1F2B\r
+:100A7000FF1FA217B307E407F50720F0A21BB30B73\r
+:100A8000E40BF50B661F771F881F991F1A9469F7EF\r
+:100A90006095709580959095262F372F482F592F68\r
+:100AA0006A2F7B2F8E2F9F2F08952F923F924F9268\r
+:100AB0005F926F927F928F929F92AF92BF92CF92EE\r
+:100AC000DF92EF92FF920F931F93CF93DF93CDB7F7\r
+:100AD000DEB7CA1BDB0B0FB6F894DEBF0FBECDBF6F\r
+:100AE00009942A88398848885F846E847D848C8440\r
+:100AF0009B84AA84B984C884DF80EE80FD800C8149\r
+:100B00001B81AA81B981CE0FD11D0FB6F894DEBF2B\r
+:0A0B10000FBECDBFCA2FDB2F0895E2\r
+:100B1A0068656C6C6F2C20776F726C640D0A0053D9\r
+:100B2A00657269616C20446174612066726F6D2020\r
+:100B3A0041565220726563656976656423232300F2\r
+:060B4A002000A3000000E2\r
+:00000001FF\r
diff --git a/src/avrsample/hello.lst b/src/avrsample/hello.lst
new file mode 100644 (file)
index 0000000..5052c23
--- /dev/null
@@ -0,0 +1,597 @@
+GAS LISTING C:\cygwin\tmp/cciqaaaa.s                   page 1\r
+\r
+\r
+   1                           .file   "hello.c"\r
+   2                           .arch at90s4433\r
+   3                   __SREG__ = 0x3f\r
+   4                   __SP_H__ = 0x3e\r
+   5                   __SP_L__ = 0x3d\r
+   6                   __tmp_reg__ = 0\r
+   7                   __zero_reg__ = 1\r
+   8                           .global __do_copy_data\r
+   9                           .global __do_clear_bss\r
+  10                           .stabs  "c:\\uzi\\src\\avrsample/",100,0,0,.Ltext0\r
+  11                           .stabs  "hello.c",100,0,0,.Ltext0\r
+  12                           .text\r
+  13                   .Ltext0:\r
+  14                           .stabs  "gcc2_compiled.",60,0,0,0\r
+  15                           .stabs  "int:t(0,1)=r(0,1);-32768;32767;",128,0,0,0\r
+  16                           .stabs  "char:t(0,2)=r(0,2);0;127;",128,0,0,0\r
+  17                           .stabs  "long int:t(0,3)=@s32;r(0,3);0020000000000;0017777777777;",128,0,0,0\r
+  18                           .stabs  "unsigned int:t(0,4)=r(0,4);0000000000000;0000000177777;",128,0,0,0\r
+  19                           .stabs  "long unsigned int:t(0,5)=@s32;r(0,5);0000000000000;0037777777777;",128,0,0,0\r
+  20                           .stabs  "long long int:t(0,6)=@s64;r(0,6);01000000000000000000000;0777777777777777777777;",128,0,0,\r
+  21                           .stabs  "long long unsigned int:t(0,7)=@s64;r(0,7);0000000000000;01777777777777777777777;",128,0,0,\r
+  22                           .stabs  "short int:t(0,8)=r(0,8);-32768;32767;",128,0,0,0\r
+  23                           .stabs  "short unsigned int:t(0,9)=r(0,9);0000000000000;0000000177777;",128,0,0,0\r
+  24                           .stabs  "signed char:t(0,10)=@s8;r(0,10);-128;127;",128,0,0,0\r
+  25                           .stabs  "unsigned char:t(0,11)=@s8;r(0,11);0;255;",128,0,0,0\r
+  26                           .stabs  "float:t(0,12)=r(0,1);4;0;",128,0,0,0\r
+  27                           .stabs  "double:t(0,13)=r(0,1);4;0;",128,0,0,0\r
+  28                           .stabs  "long double:t(0,14)=r(0,1);4;0;",128,0,0,0\r
+  29                           .stabs  "complex int:t(0,15)=s4real:(0,1),0,16;imag:(0,1),16,16;;",128,0,0,0\r
+  30                           .stabs  "complex float:t(0,16)=r(0,16);8;0;",128,0,0,0\r
+  31                           .stabs  "complex double:t(0,17)=r(0,17);8;0;",128,0,0,0\r
+  32                           .stabs  "complex long double:t(0,18)=r(0,18);8;0;",128,0,0,0\r
+  33                           .stabs  "__builtin_va_list:t(0,19)=*(0,20)=(0,20)",128,0,0,0\r
+  34                           .stabs  "_Bool:t(0,21)=@s8;-16;",128,0,0,0\r
+  35                           .stabs  "hello.c",130,0,0,0\r
+  36                           .stabs  "c:/WinAVR/avr/include/stdio.h",130,0,0,0\r
+  37                           .stabs  "c:/WinAVR/avr/include/inttypes.h",130,0,0,0\r
+  38                           .stabs  "int8_t:t(3,1)=(0,10)",128,0,46,0\r
+  39                           .stabs  "uint8_t:t(3,2)=(0,11)",128,0,47,0\r
+  40                           .stabs  "int16_t:t(3,3)=(0,1)",128,0,49,0\r
+  41                           .stabs  "uint16_t:t(3,4)=(0,4)",128,0,50,0\r
+  42                           .stabs  "int32_t:t(3,5)=(0,3)",128,0,52,0\r
+  43                           .stabs  "uint32_t:t(3,6)=(0,5)",128,0,53,0\r
+  44                           .stabs  "int64_t:t(3,7)=(0,6)",128,0,55,0\r
+  45                           .stabs  "uint64_t:t(3,8)=(0,7)",128,0,56,0\r
+  46                           .stabs  "intptr_t:t(3,9)=(3,3)",128,0,58,0\r
+  47                           .stabs  "uintptr_t:t(3,10)=(3,4)",128,0,59,0\r
+  48                           .stabn  162,0,0,0\r
+  49                           .stabs  "c:/WinAVR/lib/gcc-lib/avr/3.3/include/stdarg.h",130,0,0,0\r
+  50                           .stabs  "__gnuc_va_list:t(4,1)=(0,19)",128,0,43,0\r
+  51                           .stabs  "va_list:t(4,2)=(4,1)",128,0,105,0\r
+  52                           .stabn  162,0,0,0\r
+  53                           .stabs  "c:/WinAVR/lib/gcc-lib/avr/3.3/include/stddef.h",130,0,0,0\r
+  54                           .stabs  "size_t:t(5,1)=(0,4)",128,0,213,0\r
+  55                           .stabn  162,0,0,0\r
+  56                           .stabn  162,0,0,0\r
+  57                           .stabs  "c:/WinAVR/avr/include/avr/io.h",130,0,0,0\r
+\fGAS LISTING C:\cygwin\tmp/cciqaaaa.s                  page 2\r
+\r
+\r
+  58                           .stabs  "c:/WinAVR/avr/include/avr/io4433.h",130,0,0,0\r
+  59                           .stabs  "c:/WinAVR/avr/include/avr/sfr_defs.h",130,0,0,0\r
+  60                           .stabn  162,0,0,0\r
+  61                           .stabn  162,0,0,0\r
+  62                           .stabn  162,0,0,0\r
+  63                           .stabs  "c:/WinAVR/avr/include/avr/interrupt.h",130,0,0,0\r
+  64                           .stabn  162,0,0,0\r
+  65                           .stabs  "c:/WinAVR/avr/include/avr/signal.h",130,0,0,0\r
+  66                           .stabn  162,0,0,0\r
+  67                           .stabs  "hello.h",130,0,0,0\r
+  68                           .stabn  162,0,0,0\r
+  69                           .stabs  "uart_putc:F(0,1)",36,0,14,uart_putc\r
+  70                           .stabs  "c:p(0,2)",160,0,13,1\r
+  71                   .global uart_putc\r
+  72                           .type   uart_putc, @function\r
+  73                   uart_putc:\r
+   1:hello.c       **** /* hello.c by Nick for Hytech AVR */\r
+   2:hello.c       **** \r
+   3:hello.c       **** #include <stdio.h>\r
+   4:hello.c       **** #include <avr/io.h>\r
+   5:hello.c       **** #include <avr/interrupt.h>\r
+   6:hello.c       **** #include <avr/signal.h>\r
+   7:hello.c       **** #include "hello.h"\r
+   8:hello.c       **** \r
+   9:hello.c       **** #define F_CPU           11059200      /* 4Mhz */\r
+  10:hello.c       **** #define UART_BAUD_RATE      9600      /* 9600 baud */\r
+  11:hello.c       **** #define UART_BAUD_SELECT (F_CPU/(UART_BAUD_RATE*16l)-1)\r
+  12:hello.c       **** \r
+  13:hello.c       **** int uart_putc(char c)\r
+  14:hello.c       ****        {\r
+  74                           .stabn 68,0,14,.LM1-uart_putc\r
+  75                   .LM1:\r
+  76                   /* prologue: frame size=1 */\r
+  77 0000 CF93                 push r28\r
+  78 0002 DF93                 push r29\r
+  79 0004 CDB7                 in r28,__SP_L__\r
+  80 0006 DEB7                 in r29,__SP_H__\r
+  81 0008 2197                 sbiw r28,1\r
+  82 000a 0FB6                 in __tmp_reg__,__SREG__\r
+  83 000c F894                 cli\r
+  84 000e DEBF                 out __SP_H__,r29\r
+  85 0010 0FBE                 out __SREG__,__tmp_reg__\r
+  86 0012 CDBF                 out __SP_L__,r28\r
+  87                   /* prologue end (size=10) */\r
+  88 0014 8983                 std Y+1,r24\r
+  15:hello.c       ****        while (bit_is_set(UCSRA, UDRE) == 0)\r
+  89                           .stabn 68,0,15,.LM2-uart_putc\r
+  90                   .LM2:\r
+  91                   .L4:\r
+  92 0016 8091 2B00            lds r24,43\r
+  93 001a 9927                 clr r25\r
+  94 001c 8072                 andi r24,lo8(32)\r
+  95 001e 9070                 andi r25,hi8(32)\r
+  96 0020 0097                 sbiw r24,0\r
+  97 0022 C9F3                 breq .L4\r
+  16:hello.c       ****                ;\r
+  17:hello.c       ****        UDR = c;\r
+\fGAS LISTING C:\cygwin\tmp/cciqaaaa.s                  page 3\r
+\r
+\r
+  98                           .stabn 68,0,17,.LM3-uart_putc\r
+  99                   .LM3:\r
+ 100 0024 8981                 ldd r24,Y+1\r
+ 101 0026 8093 2C00            sts 44,r24\r
+  18:hello.c       ****        return 0;\r
+ 102                           .stabn 68,0,18,.LM4-uart_putc\r
+ 103                   .LM4:\r
+ 104 002a 80E0                 ldi r24,lo8(0)\r
+ 105 002c 90E0                 ldi r25,hi8(0)\r
+  19:hello.c       ****        }\r
+ 106                           .stabn 68,0,19,.LM5-uart_putc\r
+ 107                   .LM5:\r
+ 108                   /* epilogue: frame size=1 */\r
+ 109 002e 2196                 adiw r28,1\r
+ 110 0030 0FB6                 in __tmp_reg__,__SREG__\r
+ 111 0032 F894                 cli\r
+ 112 0034 DEBF                 out __SP_H__,r29\r
+ 113 0036 0FBE                 out __SREG__,__tmp_reg__\r
+ 114 0038 CDBF                 out __SP_L__,r28\r
+ 115 003a DF91                 pop r29\r
+ 116 003c CF91                 pop r28\r
+ 117 003e 0895                 ret\r
+ 118                   /* epilogue end (size=9) */\r
+ 119                   /* function uart_putc size 32 (13) */\r
+ 120                           .size   uart_putc, .-uart_putc\r
+ 121                   .Lscope0:\r
+ 122                           .stabs  "",36,0,0,.Lscope0-uart_putc\r
+ 123                           .stabs  "uart_getc:F(0,1)",36,0,22,uart_getc\r
+ 124                   .global uart_getc\r
+ 125                           .type   uart_getc, @function\r
+ 126                   uart_getc:\r
+  20:hello.c       **** \r
+  21:hello.c       **** int uart_getc(void)\r
+  22:hello.c       ****        {\r
+ 127                           .stabn 68,0,22,.LM6-uart_getc\r
+ 128                   .LM6:\r
+ 129                   /* prologue: frame size=2 */\r
+ 130 0040 CF93                 push r28\r
+ 131 0042 DF93                 push r29\r
+ 132 0044 CDB7                 in r28,__SP_L__\r
+ 133 0046 DEB7                 in r29,__SP_H__\r
+ 134 0048 2297                 sbiw r28,2\r
+ 135 004a 0FB6                 in __tmp_reg__,__SREG__\r
+ 136 004c F894                 cli\r
+ 137 004e DEBF                 out __SP_H__,r29\r
+ 138 0050 0FBE                 out __SREG__,__tmp_reg__\r
+ 139 0052 CDBF                 out __SP_L__,r28\r
+ 140                   /* prologue end (size=10) */\r
+  23:hello.c       ****        if (bit_is_set(UCSRA, RXC) == 0)\r
+ 141                           .stabn 68,0,23,.LM7-uart_getc\r
+ 142                   .LM7:\r
+ 143 0054 8091 2B00            lds r24,43\r
+ 144 0058 8823                 tst r24\r
+ 145 005a 2CF0                 brlt .L8\r
+  24:hello.c       ****                return -1;\r
+ 146                           .stabn 68,0,24,.LM8-uart_getc\r
+ 147                   .LM8:\r
+\fGAS LISTING C:\cygwin\tmp/cciqaaaa.s                  page 4\r
+\r
+\r
+ 148 005c 8FEF                 ldi r24,lo8(-1)\r
+ 149 005e 9FEF                 ldi r25,hi8(-1)\r
+ 150 0060 8983                 std Y+1,r24\r
+ 151 0062 9A83                 std Y+2,r25\r
+ 152 0064 05C0                 rjmp .L7\r
+ 153                   .L8:\r
+  25:hello.c       ****        return UDR;\r
+ 154                           .stabn 68,0,25,.LM9-uart_getc\r
+ 155                   .LM9:\r
+ 156 0066 8091 2C00            lds r24,44\r
+ 157 006a 9927                 clr r25\r
+ 158 006c 8983                 std Y+1,r24\r
+ 159 006e 9A83                 std Y+2,r25\r
+  26:hello.c       ****        }\r
+ 160                           .stabn 68,0,26,.LM10-uart_getc\r
+ 161                   .LM10:\r
+ 162                   .L7:\r
+ 163 0070 8981                 ldd r24,Y+1\r
+ 164 0072 9A81                 ldd r25,Y+2\r
+ 165                   /* epilogue: frame size=2 */\r
+ 166 0074 2296                 adiw r28,2\r
+ 167 0076 0FB6                 in __tmp_reg__,__SREG__\r
+ 168 0078 F894                 cli\r
+ 169 007a DEBF                 out __SP_H__,r29\r
+ 170 007c 0FBE                 out __SREG__,__tmp_reg__\r
+ 171 007e CDBF                 out __SP_L__,r28\r
+ 172 0080 DF91                 pop r29\r
+ 173 0082 CF91                 pop r28\r
+ 174 0084 0895                 ret\r
+ 175                   /* epilogue end (size=9) */\r
+ 176                   /* function uart_getc size 35 (16) */\r
+ 177                           .size   uart_getc, .-uart_getc\r
+ 178                   .Lscope1:\r
+ 179                           .stabs  "",36,0,0,.Lscope1-uart_getc\r
+ 180                           .stabs  "__vector_10:F(0,20)",36,0,35,__vector_10\r
+ 181                   .global __vector_10\r
+ 182                           .type   __vector_10, @function\r
+ 183                   __vector_10:\r
+  27:hello.c       **** \r
+  28:hello.c       **** /* uart globals */\r
+  29:hello.c       **** static volatile unsigned char *uart_data_ptr;\r
+  30:hello.c       **** static volatile unsigned char uart_counter;\r
+  31:hello.c       **** \r
+  32:hello.c       **** \r
+  33:hello.c       **** SIGNAL(SIG_UART_TRANS)\r
+  34:hello.c       **** /* signal handler for uart txd ready interrupt */\r
+  35:hello.c       **** {\r
+ 184                           .stabn 68,0,35,.LM11-__vector_10\r
+ 185                   .LM11:\r
+ 186                   /* prologue: frame size=0 */\r
+ 187 0086 1F92                 push __zero_reg__\r
+ 188 0088 0F92                 push __tmp_reg__\r
+ 189 008a 0FB6                 in __tmp_reg__,__SREG__\r
+ 190 008c 0F92                 push __tmp_reg__\r
+ 191 008e 1124                 clr __zero_reg__\r
+ 192 0090 CF93                 push r28\r
+ 193 0092 DF93                 push r29\r
+\fGAS LISTING C:\cygwin\tmp/cciqaaaa.s                  page 5\r
+\r
+\r
+ 194 0094 CDB7                 in r28,__SP_L__\r
+ 195 0096 DEB7                 in r29,__SP_H__\r
+ 196                   /* prologue end (size=9) */\r
+  36:hello.c       **** #if 0\r
+  37:hello.c       ****     if (uart_counter == 0)\r
+  38:hello.c       ****        {\r
+  39:hello.c       ****        outp(inp(UCSRB) & ~(1<<UDRIE), UCSRB);\r
+  40:hello.c       ****        return;\r
+  41:hello.c       ****        }\r
+  42:hello.c       **** \r
+  43:hello.c       ****     uart_data_ptr++;\r
+  44:hello.c       **** \r
+  45:hello.c       ****     if (--uart_counter)\r
+  46:hello.c       ****         outp(*uart_data_ptr, UDR);       /* write byte to data buffer */\r
+  47:hello.c       **** #endif\r
+  48:hello.c       **** }\r
+ 197                           .stabn 68,0,48,.LM12-__vector_10\r
+ 198                   .LM12:\r
+ 199                   /* epilogue: frame size=0 */\r
+ 200 0098 DF91                 pop r29\r
+ 201 009a CF91                 pop r28\r
+ 202 009c 0F90                 pop __tmp_reg__\r
+ 203 009e 0FBE                 out __SREG__,__tmp_reg__\r
+ 204 00a0 0F90                 pop __tmp_reg__\r
+ 205 00a2 1F90                 pop __zero_reg__\r
+ 206 00a4 1895                 reti\r
+ 207                   /* epilogue end (size=7) */\r
+ 208                   /* function __vector_10 size 16 (0) */\r
+ 209                           .size   __vector_10, .-__vector_10\r
+ 210                   .Lscope2:\r
+ 211                           .stabs  "",36,0,0,.Lscope2-__vector_10\r
+ 212                           .stabs  "__vector_8:F(0,20)",36,0,53,__vector_8\r
+ 213                   .global __vector_8\r
+ 214                           .type   __vector_8, @function\r
+ 215                   __vector_8:\r
+  49:hello.c       **** \r
+  50:hello.c       **** \r
+  51:hello.c       **** SIGNAL(SIG_UART_RECV)\r
+  52:hello.c       **** /* signal handler for receive complete interrupt */\r
+  53:hello.c       **** {\r
+ 216                           .stabn 68,0,53,.LM13-__vector_8\r
+ 217                   .LM13:\r
+ 218                   /* prologue: frame size=0 */\r
+ 219 00a6 1F92                 push __zero_reg__\r
+ 220 00a8 0F92                 push __tmp_reg__\r
+ 221 00aa 0FB6                 in __tmp_reg__,__SREG__\r
+ 222 00ac 0F92                 push __tmp_reg__\r
+ 223 00ae 1124                 clr __zero_reg__\r
+ 224 00b0 8F93                 push r24\r
+ 225 00b2 CF93                 push r28\r
+ 226 00b4 DF93                 push r29\r
+ 227 00b6 CDB7                 in r28,__SP_L__\r
+ 228 00b8 DEB7                 in r29,__SP_H__\r
+ 229                   /* prologue end (size=10) */\r
+  54:hello.c       ****     register char led;\r
+  55:hello.c       **** \r
+  56:hello.c       ****     led = inp(UDR);        /* read byte for UART data buffer */\r
+\fGAS LISTING C:\cygwin\tmp/cciqaaaa.s                  page 6\r
+\r
+\r
+ 230                           .stabn 68,0,56,.LM14-__vector_8\r
+ 231                   .LM14:\r
+ 232                   .LBB2:\r
+ 233 00ba 8091 2C00            lds r24,44\r
+  57:hello.c       **** #if 1\r
+  58:hello.c       ****  UDR = led + 1;\r
+ 234                           .stabn 68,0,58,.LM15-__vector_8\r
+ 235                   .LM15:\r
+ 236 00be 8F5F                 subi r24,lo8(-(1))\r
+ 237 00c0 8093 2C00            sts 44,r24\r
+  59:hello.c       **** #else\r
+  60:hello.c       ****     outp(~led, PORTB);     /* output received byte to PortB (LEDs) */\r
+  61:hello.c       **** #endif\r
+  62:hello.c       **** }\r
+ 238                           .stabn 68,0,62,.LM16-__vector_8\r
+ 239                   .LM16:\r
+ 240                   .LBE2:\r
+ 241                   /* epilogue: frame size=0 */\r
+ 242 00c4 DF91                 pop r29\r
+ 243 00c6 CF91                 pop r28\r
+ 244 00c8 8F91                 pop r24\r
+ 245 00ca 0F90                 pop __tmp_reg__\r
+ 246 00cc 0FBE                 out __SREG__,__tmp_reg__\r
+ 247 00ce 0F90                 pop __tmp_reg__\r
+ 248 00d0 1F90                 pop __zero_reg__\r
+ 249 00d2 1895                 reti\r
+ 250                   /* epilogue end (size=8) */\r
+ 251                   /* function __vector_8 size 23 (5) */\r
+ 252                           .size   __vector_8, .-__vector_8\r
+ 253                           .stabs  "led:r(0,2)",64,0,54,24\r
+ 254                           .stabn  192,0,0,.LBB2-__vector_8\r
+ 255                           .stabn  224,0,0,.LBE2-__vector_8\r
+ 256                   .Lscope3:\r
+ 257                           .stabs  "",36,0,0,.Lscope3-__vector_8\r
+ 258                           .stabs  "uart_send:F(0,20)",36,0,67,uart_send\r
+ 259                           .stabs  "buf:p(1,1)=*(0,11)",160,0,65,1\r
+ 260                           .stabs  "size:p(0,11)",160,0,65,3\r
+ 261                   .global uart_send\r
+ 262                           .type   uart_send, @function\r
+ 263                   uart_send:\r
+  63:hello.c       **** \r
+  64:hello.c       **** \r
+  65:hello.c       **** void uart_send(unsigned char *buf, unsigned char size)\r
+  66:hello.c       **** /* send buffer <buf> to uart */\r
+  67:hello.c       **** {\r
+ 264                           .stabn 68,0,67,.LM17-uart_send\r
+ 265                   .LM17:\r
+ 266                   /* prologue: frame size=3 */\r
+ 267 00d4 CF93                 push r28\r
+ 268 00d6 DF93                 push r29\r
+ 269 00d8 CDB7                 in r28,__SP_L__\r
+ 270 00da DEB7                 in r29,__SP_H__\r
+ 271 00dc 2397                 sbiw r28,3\r
+ 272 00de 0FB6                 in __tmp_reg__,__SREG__\r
+ 273 00e0 F894                 cli\r
+ 274 00e2 DEBF                 out __SP_H__,r29\r
+ 275 00e4 0FBE                 out __SREG__,__tmp_reg__\r
+\fGAS LISTING C:\cygwin\tmp/cciqaaaa.s                  page 7\r
+\r
+\r
+ 276 00e6 CDBF                 out __SP_L__,r28\r
+ 277                   /* prologue end (size=10) */\r
+ 278 00e8 8983                 std Y+1,r24\r
+ 279 00ea 9A83                 std Y+2,r25\r
+ 280 00ec 6B83                 std Y+3,r22\r
+  68:hello.c       ****     if (!uart_counter) {\r
+ 281                           .stabn 68,0,68,.LM18-uart_send\r
+ 282                   .LM18:\r
+ 283 00ee 8091 0000            lds r24,uart_counter\r
+ 284 00f2 8823                 tst r24\r
+ 285 00f4 71F4                 brne .L11\r
+  69:hello.c       ****         /* write first byte to data buffer */\r
+  70:hello.c       ****         uart_data_ptr  = buf;\r
+ 286                           .stabn 68,0,70,.LM19-uart_send\r
+ 287                   .LM19:\r
+ 288 00f6 8981                 ldd r24,Y+1\r
+ 289 00f8 9A81                 ldd r25,Y+2\r
+ 290 00fa 9093 0000            sts (uart_data_ptr)+1,r25\r
+ 291 00fe 8093 0000            sts uart_data_ptr,r24\r
+  71:hello.c       ****         uart_counter   = size;\r
+ 292                           .stabn 68,0,71,.LM20-uart_send\r
+ 293                   .LM20:\r
+ 294 0102 8B81                 ldd r24,Y+3\r
+ 295 0104 8093 0000            sts uart_counter,r24\r
+  72:hello.c       ****         outp(*buf, UDR);\r
+ 296                           .stabn 68,0,72,.LM21-uart_send\r
+ 297                   .LM21:\r
+ 298 0108 E981                 ldd r30,Y+1\r
+ 299 010a FA81                 ldd r31,Y+2\r
+ 300 010c 8081                 ld r24,Z\r
+ 301 010e 8093 2C00            sts 44,r24\r
+  73:hello.c       ****     }\r
+  74:hello.c       **** }\r
+ 302                           .stabn 68,0,74,.LM22-uart_send\r
+ 303                   .LM22:\r
+ 304                   .L11:\r
+ 305                   /* epilogue: frame size=3 */\r
+ 306 0112 2396                 adiw r28,3\r
+ 307 0114 0FB6                 in __tmp_reg__,__SREG__\r
+ 308 0116 F894                 cli\r
+ 309 0118 DEBF                 out __SP_H__,r29\r
+ 310 011a 0FBE                 out __SREG__,__tmp_reg__\r
+ 311 011c CDBF                 out __SP_L__,r28\r
+ 312 011e DF91                 pop r29\r
+ 313 0120 CF91                 pop r28\r
+ 314 0122 0895                 ret\r
+ 315                   /* epilogue end (size=9) */\r
+ 316                   /* function uart_send size 40 (21) */\r
+ 317                           .size   uart_send, .-uart_send\r
+ 318                   .Lscope4:\r
+ 319                           .stabs  "",36,0,0,.Lscope4-uart_send\r
+ 320                           .stabs  "uart_init:F(0,20)",36,0,79,uart_init\r
+ 321                   .global uart_init\r
+ 322                           .type   uart_init, @function\r
+ 323                   uart_init:\r
+  75:hello.c       **** \r
+  76:hello.c       **** \r
+\fGAS LISTING C:\cygwin\tmp/cciqaaaa.s                  page 8\r
+\r
+\r
+  77:hello.c       **** void uart_init(void)\r
+  78:hello.c       **** /* initialize uart */\r
+  79:hello.c       **** {\r
+ 324                           .stabn 68,0,79,.LM23-uart_init\r
+ 325                   .LM23:\r
+ 326                   /* prologue: frame size=0 */\r
+ 327 0124 CF93                 push r28\r
+ 328 0126 DF93                 push r29\r
+ 329 0128 CDB7                 in r28,__SP_L__\r
+ 330 012a DEB7                 in r29,__SP_H__\r
+ 331                   /* prologue end (size=4) */\r
+  80:hello.c       ****     /* enable RxD/TxD and ints */\r
+  81:hello.c       ****     outp((1<<RXCIE)|(1<<UDRIE)|(1<<RXEN)|(1<<TXEN),UCSRB);\r
+ 332                           .stabn 68,0,81,.LM24-uart_init\r
+ 333                   .LM24:\r
+ 334 012c 88EB                 ldi r24,lo8(-72)\r
+ 335 012e 8093 2A00            sts 42,r24\r
+  82:hello.c       ****     /* set baud rate */\r
+  83:hello.c       ****     outp((unsigned char)UART_BAUD_SELECT, UBRR);\r
+ 336                           .stabn 68,0,83,.LM25-uart_init\r
+ 337                   .LM25:\r
+ 338 0132 87E4                 ldi r24,lo8(71)\r
+ 339 0134 8093 2900            sts 41,r24\r
+  84:hello.c       **** }\r
+ 340                           .stabn 68,0,84,.LM26-uart_init\r
+ 341                   .LM26:\r
+ 342                   /* epilogue: frame size=0 */\r
+ 343 0138 DF91                 pop r29\r
+ 344 013a CF91                 pop r28\r
+ 345 013c 0895                 ret\r
+ 346                   /* epilogue end (size=3) */\r
+ 347                   /* function uart_init size 13 (6) */\r
+ 348                           .size   uart_init, .-uart_init\r
+ 349                   .Lscope5:\r
+ 350                           .stabs  "",36,0,0,.Lscope5-uart_init\r
+ 351                           .data\r
+ 352                   .LC0:\r
+ 353 0000 6865 6C6C            .string "hello, world\r\n"\r
+ 353      6F2C 2077 \r
+ 353      6F72 6C64 \r
+ 353      0D0A 00\r
+ 354                   .LC1:\r
+ 355 000f 5365 7269            .string "Serial Data from AVR received###"\r
+ 355      616C 2044 \r
+ 355      6174 6120 \r
+ 355      6672 6F6D \r
+ 355      2041 5652 \r
+ 356                           .text\r
+ 357                           .stabs  "main:F(0,1)",36,0,87,main\r
+ 358                   .global main\r
+ 359                           .type   main, @function\r
+ 360                   main:\r
+  85:hello.c       **** \r
+  86:hello.c       **** int main(void)\r
+  87:hello.c       ****        {\r
+ 361                           .stabn 68,0,87,.LM27-main\r
+ 362                   .LM27:\r
+\fGAS LISTING C:\cygwin\tmp/cciqaaaa.s                  page 9\r
+\r
+\r
+ 363                   /* prologue: frame size=0 */\r
+ 364 013e C0E0                 ldi r28,lo8(__stack - 0)\r
+ 365 0140 D0E0                 ldi r29,hi8(__stack - 0)\r
+ 366 0142 DEBF                 out __SP_H__,r29\r
+ 367 0144 CDBF                 out __SP_L__,r28\r
+ 368                   /* prologue end (size=4) */\r
+  88:hello.c       ****        /* initialise the AVR's built-in UART for 9600 bps */\r
+  89:hello.c       **** #if 1\r
+  90:hello.c       ****        uart_init();\r
+ 369                           .stabn 68,0,90,.LM28-main\r
+ 370                   .LM28:\r
+ 371 0146 EEDF                 rcall uart_init\r
+  91:hello.c       **** #else\r
+  92:hello.c       ****        UCSRA = _BV(TXC);\r
+  93:hello.c       ****        UCSRB = _BV(TXEN) | _BV(RXEN);\r
+  94:hello.c       ****        UBRR = 71;\r
+  95:hello.c       ****        /* UBRRH = 0; */ /* = (11059200 / (9600 * 16)) - 1 */\r
+  96:hello.c       **** #endif\r
+  97:hello.c       **** \r
+  98:hello.c       **** #if 0\r
+  99:hello.c       ****        /* send a demo message to ISPD via the AVR's UART */\r
+ 100:hello.c       ****        uart_putc('h');\r
+ 101:hello.c       ****        uart_putc('e');\r
+ 102:hello.c       ****        uart_putc('l');\r
+ 103:hello.c       ****        uart_putc('l');\r
+ 104:hello.c       ****        uart_putc('o');\r
+ 105:hello.c       **** #else\r
+ 106:hello.c       ****        /* setup the standard input, output and error streams */\r
+ 107:hello.c       ****        fdevopen(uart_putc, uart_getc, 0);\r
+ 372                           .stabn 68,0,107,.LM29-main\r
+ 373                   .LM29:\r
+ 374 0148 40E0                 ldi r20,lo8(0)\r
+ 375 014a 50E0                 ldi r21,hi8(0)\r
+ 376 014c 60E0                 ldi r22,lo8(pm(uart_getc))\r
+ 377 014e 70E0                 ldi r23,hi8(pm(uart_getc))\r
+ 378 0150 80E0                 ldi r24,lo8(pm(uart_putc))\r
+ 379 0152 90E0                 ldi r25,hi8(pm(uart_putc))\r
+ 380 0154 00D0                 rcall fdevopen\r
+ 108:hello.c       **** \r
+ 109:hello.c       ****        /* send a demo message to ISPD via the AVR's UART */\r
+ 110:hello.c       ****        printf("hello, world\r\n");\r
+ 381                           .stabn 68,0,110,.LM30-main\r
+ 382                   .LM30:\r
+ 383 0156 80E0                 ldi r24,lo8(.LC0)\r
+ 384 0158 90E0                 ldi r25,hi8(.LC0)\r
+ 385 015a 9F93                 push r25\r
+ 386 015c 8F93                 push r24\r
+ 387 015e 00D0                 rcall printf\r
+ 388 0160 0F90                 pop __tmp_reg__\r
+ 389 0162 0F90                 pop __tmp_reg__\r
+ 111:hello.c       ****         uart_send("Serial Data from AVR received###", 32);\r
+ 390                           .stabn 68,0,111,.LM31-main\r
+ 391                   .LM31:\r
+ 392 0164 60E2                 ldi r22,lo8(32)\r
+ 393 0166 80E0                 ldi r24,lo8(.LC1)\r
+ 394 0168 90E0                 ldi r25,hi8(.LC1)\r
+ 395 016a B4DF                 rcall uart_send\r
+\fGAS LISTING C:\cygwin\tmp/cciqaaaa.s                  page 10\r
+\r
+\r
+ 112:hello.c       **** #endif\r
+ 113:hello.c       **** \r
+ 114:hello.c       ****        /* enter an infinite loop as we can never exit */\r
+ 115:hello.c       ****        while (1)\r
+ 396                           .stabn 68,0,115,.LM32-main\r
+ 397                   .LM32:\r
+ 398                   .L15:\r
+ 399 016c FFCF                 rjmp .L15\r
+ 116:hello.c       ****                ;\r
+ 117:hello.c       ****        }\r
+ 400                           .stabn 68,0,117,.LM33-main\r
+ 401                   .LM33:\r
+ 402                   /* epilogue: frame size=0 */\r
+ 403                   /* epilogue: noreturn */\r
+ 404                   /* epilogue end (size=0) */\r
+ 405                   /* function main size 24 (20) */\r
+ 406                           .size   main, .-main\r
+ 407                   .Lscope6:\r
+ 408                           .stabs  "",36,0,0,.Lscope6-main\r
+ 409                           .lcomm uart_data_ptr,2\r
+ 410                           .lcomm uart_counter,1\r
+ 411                           .stabs  "uart_data_ptr:S(1,2)=*(1,3)=B(0,11)",40,0,29,uart_data_ptr\r
+ 412                           .stabs  "uart_counter:S(1,3)",40,0,30,uart_counter\r
+ 413                           .text\r
+ 414                           .stabs "",100,0,0,Letext\r
+ 415                   Letext:\r
+ 416                   /* File "hello.c": code  183 = 0x00b7 (  81), prologues  57, epilogues  45 */\r
+\fGAS LISTING C:\cygwin\tmp/cciqaaaa.s                  page 11\r
+\r
+\r
+DEFINED SYMBOLS\r
+                            *ABS*:00000000 hello.c\r
+                            *ABS*:0000003f __SREG__\r
+                            *ABS*:0000003e __SP_H__\r
+                            *ABS*:0000003d __SP_L__\r
+                            *ABS*:00000000 __tmp_reg__\r
+                            *ABS*:00000001 __zero_reg__\r
+C:\cygwin\tmp/cciqaaaa.s:73     .text:00000000 uart_putc\r
+C:\cygwin\tmp/cciqaaaa.s:126    .text:00000040 uart_getc\r
+C:\cygwin\tmp/cciqaaaa.s:183    .text:00000086 __vector_10\r
+C:\cygwin\tmp/cciqaaaa.s:215    .text:000000a6 __vector_8\r
+C:\cygwin\tmp/cciqaaaa.s:263    .text:000000d4 uart_send\r
+C:\cygwin\tmp/cciqaaaa.s:409    .bss:00000002 uart_counter\r
+                             .bss:00000000 uart_data_ptr\r
+C:\cygwin\tmp/cciqaaaa.s:323    .text:00000124 uart_init\r
+C:\cygwin\tmp/cciqaaaa.s:360    .text:0000013e main\r
+C:\cygwin\tmp/cciqaaaa.s:415    .text:0000016e Letext\r
+\r
+UNDEFINED SYMBOLS\r
+__do_copy_data\r
+__do_clear_bss\r
+__stack\r
+fdevopen\r
+printf\r
diff --git a/src/avrsample/hello.map b/src/avrsample/hello.map
new file mode 100644 (file)
index 0000000..1d230d4
--- /dev/null
@@ -0,0 +1,432 @@
+Archive member included because of file (symbol)\r
+\r
+c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\libgcc.a(_copy_data.o)\r
+                              hello.o (__do_copy_data)\r
+c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\libgcc.a(_clear_bss.o)\r
+                              hello.o (__do_clear_bss)\r
+c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(fdevopen.o)\r
+                              hello.o (fdevopen)\r
+c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(printf.o)\r
+                              hello.o (printf)\r
+c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(vfprintf_std.o)\r
+                              c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(printf.o) (vfprintf)\r
+c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(calloc.o)\r
+                              c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(fdevopen.o) (calloc)\r
+c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(fputc.o)\r
+                              c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(vfprintf_std.o) (fputc)\r
+c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(malloc.o)\r
+                              c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(calloc.o) (malloc)\r
+c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(memset.o)\r
+                              c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(calloc.o) (memset)\r
+c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\libgcc.a(_mulhi3.o)\r
+                              c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(calloc.o) (__mulhi3)\r
+c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\libgcc.a(_udivmodsi4.o)\r
+                              c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(vfprintf_std.o) (__udivmodsi4)\r
+c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\libgcc.a(_prologue.o)\r
+                              c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(printf.o) (__prologue_saves__)\r
+c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\libgcc.a(_epilogue.o)\r
+                              c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(printf.o) (__epilogue_restores__)\r
+\r
+Allocating common symbols\r
+Common symbol       size              file\r
+\r
+__iob               0x6               c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(fdevopen.o)\r
+\r
+Memory Configuration\r
+\r
+Name             Origin             Length             Attributes\r
+text             0x00000000         0x00002000         xr\r
+data             0x00800060         0x0000ffa0         rw !x\r
+eeprom           0x00810000         0x00010000         rw !x\r
+*default*        0x00000000         0xffffffff\r
+\r
+Linker script and memory map\r
+\r
+LOAD c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o\r
+LOAD hello.o\r
+LOAD c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\libgcc.a\r
+LOAD c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a\r
+LOAD c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\libgcc.a\r
+\r
+.hash\r
+ *(.hash)\r
+\r
+.dynsym\r
+ *(.dynsym)\r
+\r
+.dynstr\r
+ *(.dynstr)\r
+\r
+.gnu.version\r
+ *(.gnu.version)\r
+\r
+.gnu.version_d\r
+ *(.gnu.version_d)\r
+\r
+.gnu.version_r\r
+ *(.gnu.version_r)\r
+\r
+.rel.init\r
+ *(.rel.init)\r
+\r
+.rela.init\r
+ *(.rela.init)\r
+\r
+.rel.text\r
+ *(.rel.text)\r
+ *(.rel.text.*)\r
+ *(.rel.gnu.linkonce.t*)\r
+\r
+.rela.text\r
+ *(.rela.text)\r
+ *(.rela.text.*)\r
+ *(.rela.gnu.linkonce.t*)\r
+\r
+.rel.fini\r
+ *(.rel.fini)\r
+\r
+.rela.fini\r
+ *(.rela.fini)\r
+\r
+.rel.rodata\r
+ *(.rel.rodata)\r
+ *(.rel.rodata.*)\r
+ *(.rel.gnu.linkonce.r*)\r
+\r
+.rela.rodata\r
+ *(.rela.rodata)\r
+ *(.rela.rodata.*)\r
+ *(.rela.gnu.linkonce.r*)\r
+\r
+.rel.data\r
+ *(.rel.data)\r
+ *(.rel.data.*)\r
+ *(.rel.gnu.linkonce.d*)\r
+\r
+.rela.data\r
+ *(.rela.data)\r
+ *(.rela.data.*)\r
+ *(.rela.gnu.linkonce.d*)\r
+\r
+.rel.ctors\r
+ *(.rel.ctors)\r
+\r
+.rela.ctors\r
+ *(.rela.ctors)\r
+\r
+.rel.dtors\r
+ *(.rel.dtors)\r
+\r
+.rela.dtors\r
+ *(.rela.dtors)\r
+\r
+.rel.got\r
+ *(.rel.got)\r
+\r
+.rela.got\r
+ *(.rela.got)\r
+\r
+.rel.bss\r
+ *(.rel.bss)\r
+\r
+.rela.bss\r
+ *(.rela.bss)\r
+\r
+.rel.plt\r
+ *(.rel.plt)\r
+\r
+.rela.plt\r
+ *(.rela.plt)\r
+\r
+.text           0x00000000      0xb1a\r
+ *(.vectors)\r
+ .vectors       0x00000000       0x1c c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o\r
+                0x00000000                __vectors\r
+                0x00000000                __vector_default\r
+                0x0000001c                __ctors_start = .\r
+ *(.ctors)\r
+                0x0000001c                __ctors_end = .\r
+                0x0000001c                __dtors_start = .\r
+ *(.dtors)\r
+                0x0000001c                __dtors_end = .\r
+ *(.progmem.gcc*)\r
+ *(.progmem*)\r
+                0x0000001c                . = ALIGN (0x2)\r
+ *(.init0)\r
+ *(.init1)\r
+ *(.init2)\r
+ .init2         0x0000001c        0xc c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o\r
+ *(.init3)\r
+ *(.init4)\r
+ .init4         0x00000028       0x18 c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\libgcc.a(_copy_data.o)\r
+                0x00000028                __do_copy_data\r
+ .init4         0x00000040       0x10 c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\libgcc.a(_clear_bss.o)\r
+                0x00000040                __do_clear_bss\r
+ *(.init5)\r
+ *(.init6)\r
+ *(.init7)\r
+ *(.init8)\r
+ *(.init9)\r
+ .init9         0x00000050        0x2 c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o\r
+ *(.text)\r
+ .text          0x00000052        0x2 c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o\r
+                0x00000052                __vector_1\r
+                0x00000052                __vector_12\r
+                0x00000052                __bad_interrupt\r
+                0x00000052                __vector_6\r
+                0x00000052                __vector_3\r
+                0x00000052                __vector_11\r
+                0x00000052                __vector_13\r
+                0x00000052                __vector_7\r
+                0x00000052                __vector_5\r
+                0x00000052                __vector_4\r
+                0x00000052                __vector_9\r
+                0x00000052                __vector_2\r
+ .text          0x00000054      0x16e hello.o\r
+                0x00000128                uart_send\r
+                0x00000178                uart_init\r
+                0x00000094                uart_getc\r
+                0x00000192                main\r
+                0x00000054                uart_putc\r
+                0x000000fa                __vector_8\r
+                0x000000da                __vector_10\r
+ .text          0x000001c2       0x8e c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(fdevopen.o)\r
+                0x000001c2                fdevopen\r
+ .text          0x00000250       0x2c c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(printf.o)\r
+                0x00000250                printf\r
+ .text          0x0000027c      0x518 c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(vfprintf_std.o)\r
+                0x0000027c                vfprintf\r
+ .text          0x00000794       0x30 c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(calloc.o)\r
+                0x00000794                calloc\r
+ .text          0x000007c4       0x5a c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(fputc.o)\r
+                0x000007c4                fputc\r
+ .text          0x0000081e      0x20a c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(malloc.o)\r
+                0x0000081e                malloc\r
+                0x00000958                free\r
+ .text          0x00000a28       0x10 c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(memset.o)\r
+                0x00000a28                memset\r
+                0x00000a38                . = ALIGN (0x2)\r
+ *(.text.*)\r
+ .text.libgcc   0x00000a38       0x24 c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\libgcc.a(_mulhi3.o)\r
+                0x00000a38                __mulhi3\r
+ .text.libgcc   0x00000a5c       0x4e c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\libgcc.a(_udivmodsi4.o)\r
+                0x00000a5c                __udivmodsi4\r
+ .text.libgcc   0x00000aaa       0x38 c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\libgcc.a(_prologue.o)\r
+                0x00000aaa                __prologue_saves__\r
+ .text.libgcc   0x00000ae2       0x38 c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\libgcc.a(_epilogue.o)\r
+                0x00000ae2                __epilogue_restores__\r
+                0x00000b1a                . = ALIGN (0x2)\r
+ *(.fini9)\r
+ *(.fini8)\r
+ *(.fini7)\r
+ *(.fini6)\r
+ *(.fini5)\r
+ *(.fini4)\r
+ *(.fini3)\r
+ *(.fini2)\r
+ *(.fini1)\r
+ *(.fini0)\r
+                0x00000b1a                _etext = .\r
+\r
+.data           0x00800060       0x36 load address 0x00000b1a\r
+                0x00800060                PROVIDE (__data_start, .)\r
+ *(.data)\r
+ .data          0x00800060       0x30 hello.o\r
+ .data          0x00800090        0x6 c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(malloc.o)\r
+                0x00800092                __malloc_heap_start\r
+                0x00800094                __malloc_heap_end\r
+                0x00800090                __malloc_margin\r
+ *(.gnu.linkonce.d*)\r
+                0x00800096                . = ALIGN (0x2)\r
+                0x00800096                _edata = .\r
+                0x00800096                PROVIDE (__data_end, .)\r
+\r
+.bss            0x00800096        0xd\r
+                0x00800096                PROVIDE (__bss_start, .)\r
+ *(.bss)\r
+ .bss           0x00800096        0x3 hello.o\r
+ .bss           0x00800099        0x4 c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(malloc.o)\r
+ *(COMMON)\r
+ COMMON         0x0080009d        0x6 c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(fdevopen.o)\r
+                                  0x0 (size before relaxing)\r
+                0x0080009d                __iob\r
+                0x008000a3                PROVIDE (__bss_end, .)\r
+                0x00000b1a                __data_load_start = LOADADDR (.data)\r
+                0x00000b50                __data_load_end = (__data_load_start + SIZEOF (.data))\r
+\r
+.noinit         0x008000a3        0x0\r
+                0x008000a3                PROVIDE (__noinit_start, .)\r
+ *(.noinit*)\r
+                0x008000a3                PROVIDE (__noinit_end, .)\r
+                0x008000a3                _end = .\r
+                0x008000a3                PROVIDE (__heap_start, .)\r
+\r
+.eeprom         0x00810000        0x0 load address 0x00000b50\r
+ *(.eeprom*)\r
+                0x00810000                __eeprom_end = .\r
+\r
+.stab           0x00000000     0x1f50\r
+ *(.stab)\r
+ .stab          0x00000000      0x2a0 c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o\r
+ .stab          0x000002a0      0x54c hello.o\r
+                                0x558 (size before relaxing)\r
+ .stab          0x000007ec      0x3e4 c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(fdevopen.o)\r
+                                0x3f0 (size before relaxing)\r
+ .stab          0x00000bd0      0x1d4 c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(printf.o)\r
+                                0x2ac (size before relaxing)\r
+ .stab          0x00000da4      0x7b0 c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(vfprintf_std.o)\r
+                                0x8a0 (size before relaxing)\r
+ .stab          0x00001554      0x21c c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(calloc.o)\r
+                                0x264 (size before relaxing)\r
+ .stab          0x00001770      0x204 c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(fputc.o)\r
+                                0x2f4 (size before relaxing)\r
+ .stab          0x00001974      0x570 c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(malloc.o)\r
+                                0x5d0 (size before relaxing)\r
+ .stab          0x00001ee4       0x6c c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(memset.o)\r
+                                 0x78 (size before relaxing)\r
+\r
+.stabstr        0x00000000     0x1107\r
+ *(.stabstr)\r
+ .stabstr       0x00000000     0x1107 c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o\r
+                                  0x0 (size before relaxing)\r
+\r
+.stab.excl\r
+ *(.stab.excl)\r
+\r
+.stab.exclstr\r
+ *(.stab.exclstr)\r
+\r
+.stab.index\r
+ *(.stab.index)\r
+\r
+.stab.indexstr\r
+ *(.stab.indexstr)\r
+\r
+.comment\r
+ *(.comment)\r
+\r
+.debug\r
+ *(.debug)\r
+\r
+.line\r
+ *(.line)\r
+\r
+.debug_srcinfo\r
+ *(.debug_srcinfo)\r
+\r
+.debug_sfnames\r
+ *(.debug_sfnames)\r
+\r
+.debug_aranges\r
+ *(.debug_aranges)\r
+\r
+.debug_pubnames\r
+ *(.debug_pubnames)\r
+\r
+.debug_info\r
+ *(.debug_info)\r
+ *(.gnu.linkonce.wi.*)\r
+\r
+.debug_abbrev\r
+ *(.debug_abbrev)\r
+\r
+.debug_line\r
+ *(.debug_line)\r
+\r
+.debug_frame\r
+ *(.debug_frame)\r
+\r
+.debug_str\r
+ *(.debug_str)\r
+\r
+.debug_loc\r
+ *(.debug_loc)\r
+\r
+.debug_macinfo\r
+ *(.debug_macinfo)\r
+OUTPUT(hello.elf elf32-avr)\r
+\r
+Cross Reference Table\r
+\r
+Symbol                                            File\r
+__bad_interrupt                                   c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o\r
+__bss_end                                         c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\libgcc.a(_clear_bss.o)\r
+__bss_start                                       c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\libgcc.a(_clear_bss.o)\r
+__data_end                                        c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\libgcc.a(_copy_data.o)\r
+__data_load_start                                 c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\libgcc.a(_copy_data.o)\r
+__data_start                                      c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\libgcc.a(_copy_data.o)\r
+__do_clear_bss                                    c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\libgcc.a(_clear_bss.o)\r
+                                                  c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(malloc.o)\r
+                                                  c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(fputc.o)\r
+                                                  c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(calloc.o)\r
+                                                  c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(vfprintf_std.o)\r
+                                                  c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(printf.o)\r
+                                                  c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(fdevopen.o)\r
+                                                  hello.o\r
+__do_copy_data                                    c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\libgcc.a(_copy_data.o)\r
+                                                  c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(malloc.o)\r
+                                                  c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(fputc.o)\r
+                                                  c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(calloc.o)\r
+                                                  c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(vfprintf_std.o)\r
+                                                  c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(printf.o)\r
+                                                  c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(fdevopen.o)\r
+                                                  hello.o\r
+__epilogue_restores__                             c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\libgcc.a(_epilogue.o)\r
+                                                  c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(vfprintf_std.o)\r
+                                                  c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(printf.o)\r
+__heap_end                                        c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o\r
+                                                  c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(malloc.o)\r
+__heap_start                                      c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(malloc.o)\r
+__init                                            c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o\r
+__iob                                             c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(printf.o)\r
+                                                  c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(fdevopen.o)\r
+__malloc_heap_end                                 c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(malloc.o)\r
+__malloc_heap_start                               c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(malloc.o)\r
+__malloc_margin                                   c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(malloc.o)\r
+__mulhi3                                          c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\libgcc.a(_mulhi3.o)\r
+                                                  c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(calloc.o)\r
+__prologue_saves__                                c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\libgcc.a(_prologue.o)\r
+                                                  c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(vfprintf_std.o)\r
+                                                  c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(printf.o)\r
+__stack                                           c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o\r
+                                                  hello.o\r
+__udivmodsi4                                      c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\libgcc.a(_udivmodsi4.o)\r
+                                                  c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(vfprintf_std.o)\r
+__vector_1                                        c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o\r
+__vector_10                                       hello.o\r
+                                                  c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o\r
+__vector_11                                       c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o\r
+__vector_12                                       c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o\r
+__vector_13                                       c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o\r
+__vector_2                                        c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o\r
+__vector_3                                        c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o\r
+__vector_4                                        c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o\r
+__vector_5                                        c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o\r
+__vector_6                                        c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o\r
+__vector_7                                        c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o\r
+__vector_8                                        hello.o\r
+                                                  c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o\r
+__vector_9                                        c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o\r
+__vector_default                                  c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o\r
+__vectors                                         c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o\r
+calloc                                            c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(calloc.o)\r
+                                                  c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(fdevopen.o)\r
+fdevopen                                          c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(fdevopen.o)\r
+                                                  hello.o\r
+fputc                                             c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(fputc.o)\r
+                                                  c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(vfprintf_std.o)\r
+free                                              c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(malloc.o)\r
+main                                              hello.o\r
+                                                  c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o\r
+malloc                                            c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(malloc.o)\r
+                                                  c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(calloc.o)\r
+memset                                            c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(memset.o)\r
+                                                  c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(calloc.o)\r
+printf                                            c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(printf.o)\r
+                                                  hello.o\r
+uart_getc                                         hello.o\r
+uart_init                                         hello.o\r
+uart_putc                                         hello.o\r
+uart_send                                         hello.o\r
+vfprintf                                          c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(vfprintf_std.o)\r
+                                                  c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(printf.o)\r
diff --git a/src/avrsample/hello.o b/src/avrsample/hello.o
new file mode 100644 (file)
index 0000000..145f707
Binary files /dev/null and b/src/avrsample/hello.o differ
diff --git a/src/avrsample/hello.s b/src/avrsample/hello.s
new file mode 100644 (file)
index 0000000..dbaf1a9
--- /dev/null
@@ -0,0 +1,416 @@
+       .file   "hello.c"\r
+       .arch at90s4433\r
+__SREG__ = 0x3f\r
+__SP_H__ = 0x3e\r
+__SP_L__ = 0x3d\r
+__tmp_reg__ = 0\r
+__zero_reg__ = 1\r
+       .global __do_copy_data\r
+       .global __do_clear_bss\r
+       .stabs  "c:\\uzi\\src\\avrsample/",100,0,0,.Ltext0\r
+       .stabs  "hello.c",100,0,0,.Ltext0\r
+       .text\r
+.Ltext0:\r
+       .stabs  "gcc2_compiled.",60,0,0,0\r
+       .stabs  "int:t(0,1)=r(0,1);-32768;32767;",128,0,0,0\r
+       .stabs  "char:t(0,2)=r(0,2);0;127;",128,0,0,0\r
+       .stabs  "long int:t(0,3)=@s32;r(0,3);0020000000000;0017777777777;",128,0,0,0\r
+       .stabs  "unsigned int:t(0,4)=r(0,4);0000000000000;0000000177777;",128,0,0,0\r
+       .stabs  "long unsigned int:t(0,5)=@s32;r(0,5);0000000000000;0037777777777;",128,0,0,0\r
+       .stabs  "long long int:t(0,6)=@s64;r(0,6);01000000000000000000000;0777777777777777777777;",128,0,0,0\r
+       .stabs  "long long unsigned int:t(0,7)=@s64;r(0,7);0000000000000;01777777777777777777777;",128,0,0,0\r
+       .stabs  "short int:t(0,8)=r(0,8);-32768;32767;",128,0,0,0\r
+       .stabs  "short unsigned int:t(0,9)=r(0,9);0000000000000;0000000177777;",128,0,0,0\r
+       .stabs  "signed char:t(0,10)=@s8;r(0,10);-128;127;",128,0,0,0\r
+       .stabs  "unsigned char:t(0,11)=@s8;r(0,11);0;255;",128,0,0,0\r
+       .stabs  "float:t(0,12)=r(0,1);4;0;",128,0,0,0\r
+       .stabs  "double:t(0,13)=r(0,1);4;0;",128,0,0,0\r
+       .stabs  "long double:t(0,14)=r(0,1);4;0;",128,0,0,0\r
+       .stabs  "complex int:t(0,15)=s4real:(0,1),0,16;imag:(0,1),16,16;;",128,0,0,0\r
+       .stabs  "complex float:t(0,16)=r(0,16);8;0;",128,0,0,0\r
+       .stabs  "complex double:t(0,17)=r(0,17);8;0;",128,0,0,0\r
+       .stabs  "complex long double:t(0,18)=r(0,18);8;0;",128,0,0,0\r
+       .stabs  "__builtin_va_list:t(0,19)=*(0,20)=(0,20)",128,0,0,0\r
+       .stabs  "_Bool:t(0,21)=@s8;-16;",128,0,0,0\r
+       .stabs  "hello.c",130,0,0,0\r
+       .stabs  "c:/WinAVR/avr/include/stdio.h",130,0,0,0\r
+       .stabs  "c:/WinAVR/avr/include/inttypes.h",130,0,0,0\r
+       .stabs  "int8_t:t(3,1)=(0,10)",128,0,46,0\r
+       .stabs  "uint8_t:t(3,2)=(0,11)",128,0,47,0\r
+       .stabs  "int16_t:t(3,3)=(0,1)",128,0,49,0\r
+       .stabs  "uint16_t:t(3,4)=(0,4)",128,0,50,0\r
+       .stabs  "int32_t:t(3,5)=(0,3)",128,0,52,0\r
+       .stabs  "uint32_t:t(3,6)=(0,5)",128,0,53,0\r
+       .stabs  "int64_t:t(3,7)=(0,6)",128,0,55,0\r
+       .stabs  "uint64_t:t(3,8)=(0,7)",128,0,56,0\r
+       .stabs  "intptr_t:t(3,9)=(3,3)",128,0,58,0\r
+       .stabs  "uintptr_t:t(3,10)=(3,4)",128,0,59,0\r
+       .stabn  162,0,0,0\r
+       .stabs  "c:/WinAVR/lib/gcc-lib/avr/3.3/include/stdarg.h",130,0,0,0\r
+       .stabs  "__gnuc_va_list:t(4,1)=(0,19)",128,0,43,0\r
+       .stabs  "va_list:t(4,2)=(4,1)",128,0,105,0\r
+       .stabn  162,0,0,0\r
+       .stabs  "c:/WinAVR/lib/gcc-lib/avr/3.3/include/stddef.h",130,0,0,0\r
+       .stabs  "size_t:t(5,1)=(0,4)",128,0,213,0\r
+       .stabn  162,0,0,0\r
+       .stabn  162,0,0,0\r
+       .stabs  "c:/WinAVR/avr/include/avr/io.h",130,0,0,0\r
+       .stabs  "c:/WinAVR/avr/include/avr/io4433.h",130,0,0,0\r
+       .stabs  "c:/WinAVR/avr/include/avr/sfr_defs.h",130,0,0,0\r
+       .stabn  162,0,0,0\r
+       .stabn  162,0,0,0\r
+       .stabn  162,0,0,0\r
+       .stabs  "c:/WinAVR/avr/include/avr/interrupt.h",130,0,0,0\r
+       .stabn  162,0,0,0\r
+       .stabs  "c:/WinAVR/avr/include/avr/signal.h",130,0,0,0\r
+       .stabn  162,0,0,0\r
+       .stabs  "hello.h",130,0,0,0\r
+       .stabn  162,0,0,0\r
+       .stabs  "uart_putc:F(0,1)",36,0,14,uart_putc\r
+       .stabs  "c:p(0,2)",160,0,13,1\r
+.global        uart_putc\r
+       .type   uart_putc, @function\r
+uart_putc:\r
+       .stabn 68,0,14,.LM1-uart_putc\r
+.LM1:\r
+/* prologue: frame size=1 */\r
+       push r28\r
+       push r29\r
+       in r28,__SP_L__\r
+       in r29,__SP_H__\r
+       sbiw r28,1\r
+       in __tmp_reg__,__SREG__\r
+       cli\r
+       out __SP_H__,r29\r
+       out __SREG__,__tmp_reg__\r
+       out __SP_L__,r28\r
+/* prologue end (size=10) */\r
+       std Y+1,r24\r
+       .stabn 68,0,15,.LM2-uart_putc\r
+.LM2:\r
+.L4:\r
+       lds r24,43\r
+       clr r25\r
+       andi r24,lo8(32)\r
+       andi r25,hi8(32)\r
+       sbiw r24,0\r
+       breq .L4\r
+       .stabn 68,0,17,.LM3-uart_putc\r
+.LM3:\r
+       ldd r24,Y+1\r
+       sts 44,r24\r
+       .stabn 68,0,18,.LM4-uart_putc\r
+.LM4:\r
+       ldi r24,lo8(0)\r
+       ldi r25,hi8(0)\r
+       .stabn 68,0,19,.LM5-uart_putc\r
+.LM5:\r
+/* epilogue: frame size=1 */\r
+       adiw r28,1\r
+       in __tmp_reg__,__SREG__\r
+       cli\r
+       out __SP_H__,r29\r
+       out __SREG__,__tmp_reg__\r
+       out __SP_L__,r28\r
+       pop r29\r
+       pop r28\r
+       ret\r
+/* epilogue end (size=9) */\r
+/* function uart_putc size 32 (13) */\r
+       .size   uart_putc, .-uart_putc\r
+.Lscope0:\r
+       .stabs  "",36,0,0,.Lscope0-uart_putc\r
+       .stabs  "uart_getc:F(0,1)",36,0,22,uart_getc\r
+.global        uart_getc\r
+       .type   uart_getc, @function\r
+uart_getc:\r
+       .stabn 68,0,22,.LM6-uart_getc\r
+.LM6:\r
+/* prologue: frame size=2 */\r
+       push r28\r
+       push r29\r
+       in r28,__SP_L__\r
+       in r29,__SP_H__\r
+       sbiw r28,2\r
+       in __tmp_reg__,__SREG__\r
+       cli\r
+       out __SP_H__,r29\r
+       out __SREG__,__tmp_reg__\r
+       out __SP_L__,r28\r
+/* prologue end (size=10) */\r
+       .stabn 68,0,23,.LM7-uart_getc\r
+.LM7:\r
+       lds r24,43\r
+       tst r24\r
+       brlt .L8\r
+       .stabn 68,0,24,.LM8-uart_getc\r
+.LM8:\r
+       ldi r24,lo8(-1)\r
+       ldi r25,hi8(-1)\r
+       std Y+1,r24\r
+       std Y+2,r25\r
+       rjmp .L7\r
+.L8:\r
+       .stabn 68,0,25,.LM9-uart_getc\r
+.LM9:\r
+       lds r24,44\r
+       clr r25\r
+       std Y+1,r24\r
+       std Y+2,r25\r
+       .stabn 68,0,26,.LM10-uart_getc\r
+.LM10:\r
+.L7:\r
+       ldd r24,Y+1\r
+       ldd r25,Y+2\r
+/* epilogue: frame size=2 */\r
+       adiw r28,2\r
+       in __tmp_reg__,__SREG__\r
+       cli\r
+       out __SP_H__,r29\r
+       out __SREG__,__tmp_reg__\r
+       out __SP_L__,r28\r
+       pop r29\r
+       pop r28\r
+       ret\r
+/* epilogue end (size=9) */\r
+/* function uart_getc size 35 (16) */\r
+       .size   uart_getc, .-uart_getc\r
+.Lscope1:\r
+       .stabs  "",36,0,0,.Lscope1-uart_getc\r
+       .stabs  "__vector_10:F(0,20)",36,0,35,__vector_10\r
+.global        __vector_10\r
+       .type   __vector_10, @function\r
+__vector_10:\r
+       .stabn 68,0,35,.LM11-__vector_10\r
+.LM11:\r
+/* prologue: frame size=0 */\r
+       push __zero_reg__\r
+       push __tmp_reg__\r
+       in __tmp_reg__,__SREG__\r
+       push __tmp_reg__\r
+       clr __zero_reg__\r
+       push r28\r
+       push r29\r
+       in r28,__SP_L__\r
+       in r29,__SP_H__\r
+/* prologue end (size=9) */\r
+       .stabn 68,0,48,.LM12-__vector_10\r
+.LM12:\r
+/* epilogue: frame size=0 */\r
+       pop r29\r
+       pop r28\r
+       pop __tmp_reg__\r
+       out __SREG__,__tmp_reg__\r
+       pop __tmp_reg__\r
+       pop __zero_reg__\r
+       reti\r
+/* epilogue end (size=7) */\r
+/* function __vector_10 size 16 (0) */\r
+       .size   __vector_10, .-__vector_10\r
+.Lscope2:\r
+       .stabs  "",36,0,0,.Lscope2-__vector_10\r
+       .stabs  "__vector_8:F(0,20)",36,0,53,__vector_8\r
+.global        __vector_8\r
+       .type   __vector_8, @function\r
+__vector_8:\r
+       .stabn 68,0,53,.LM13-__vector_8\r
+.LM13:\r
+/* prologue: frame size=0 */\r
+       push __zero_reg__\r
+       push __tmp_reg__\r
+       in __tmp_reg__,__SREG__\r
+       push __tmp_reg__\r
+       clr __zero_reg__\r
+       push r24\r
+       push r28\r
+       push r29\r
+       in r28,__SP_L__\r
+       in r29,__SP_H__\r
+/* prologue end (size=10) */\r
+       .stabn 68,0,56,.LM14-__vector_8\r
+.LM14:\r
+.LBB2:\r
+       lds r24,44\r
+       .stabn 68,0,58,.LM15-__vector_8\r
+.LM15:\r
+       subi r24,lo8(-(1))\r
+       sts 44,r24\r
+       .stabn 68,0,62,.LM16-__vector_8\r
+.LM16:\r
+.LBE2:\r
+/* epilogue: frame size=0 */\r
+       pop r29\r
+       pop r28\r
+       pop r24\r
+       pop __tmp_reg__\r
+       out __SREG__,__tmp_reg__\r
+       pop __tmp_reg__\r
+       pop __zero_reg__\r
+       reti\r
+/* epilogue end (size=8) */\r
+/* function __vector_8 size 23 (5) */\r
+       .size   __vector_8, .-__vector_8\r
+       .stabs  "led:r(0,2)",64,0,54,24\r
+       .stabn  192,0,0,.LBB2-__vector_8\r
+       .stabn  224,0,0,.LBE2-__vector_8\r
+.Lscope3:\r
+       .stabs  "",36,0,0,.Lscope3-__vector_8\r
+       .stabs  "uart_send:F(0,20)",36,0,67,uart_send\r
+       .stabs  "buf:p(1,1)=*(0,11)",160,0,65,1\r
+       .stabs  "size:p(0,11)",160,0,65,3\r
+.global        uart_send\r
+       .type   uart_send, @function\r
+uart_send:\r
+       .stabn 68,0,67,.LM17-uart_send\r
+.LM17:\r
+/* prologue: frame size=3 */\r
+       push r28\r
+       push r29\r
+       in r28,__SP_L__\r
+       in r29,__SP_H__\r
+       sbiw r28,3\r
+       in __tmp_reg__,__SREG__\r
+       cli\r
+       out __SP_H__,r29\r
+       out __SREG__,__tmp_reg__\r
+       out __SP_L__,r28\r
+/* prologue end (size=10) */\r
+       std Y+1,r24\r
+       std Y+2,r25\r
+       std Y+3,r22\r
+       .stabn 68,0,68,.LM18-uart_send\r
+.LM18:\r
+       lds r24,uart_counter\r
+       tst r24\r
+       brne .L11\r
+       .stabn 68,0,70,.LM19-uart_send\r
+.LM19:\r
+       ldd r24,Y+1\r
+       ldd r25,Y+2\r
+       sts (uart_data_ptr)+1,r25\r
+       sts uart_data_ptr,r24\r
+       .stabn 68,0,71,.LM20-uart_send\r
+.LM20:\r
+       ldd r24,Y+3\r
+       sts uart_counter,r24\r
+       .stabn 68,0,72,.LM21-uart_send\r
+.LM21:\r
+       ldd r30,Y+1\r
+       ldd r31,Y+2\r
+       ld r24,Z\r
+       sts 44,r24\r
+       .stabn 68,0,74,.LM22-uart_send\r
+.LM22:\r
+.L11:\r
+/* epilogue: frame size=3 */\r
+       adiw r28,3\r
+       in __tmp_reg__,__SREG__\r
+       cli\r
+       out __SP_H__,r29\r
+       out __SREG__,__tmp_reg__\r
+       out __SP_L__,r28\r
+       pop r29\r
+       pop r28\r
+       ret\r
+/* epilogue end (size=9) */\r
+/* function uart_send size 40 (21) */\r
+       .size   uart_send, .-uart_send\r
+.Lscope4:\r
+       .stabs  "",36,0,0,.Lscope4-uart_send\r
+       .stabs  "uart_init:F(0,20)",36,0,79,uart_init\r
+.global        uart_init\r
+       .type   uart_init, @function\r
+uart_init:\r
+       .stabn 68,0,79,.LM23-uart_init\r
+.LM23:\r
+/* prologue: frame size=0 */\r
+       push r28\r
+       push r29\r
+       in r28,__SP_L__\r
+       in r29,__SP_H__\r
+/* prologue end (size=4) */\r
+       .stabn 68,0,81,.LM24-uart_init\r
+.LM24:\r
+       ldi r24,lo8(-72)\r
+       sts 42,r24\r
+       .stabn 68,0,83,.LM25-uart_init\r
+.LM25:\r
+       ldi r24,lo8(71)\r
+       sts 41,r24\r
+       .stabn 68,0,84,.LM26-uart_init\r
+.LM26:\r
+/* epilogue: frame size=0 */\r
+       pop r29\r
+       pop r28\r
+       ret\r
+/* epilogue end (size=3) */\r
+/* function uart_init size 13 (6) */\r
+       .size   uart_init, .-uart_init\r
+.Lscope5:\r
+       .stabs  "",36,0,0,.Lscope5-uart_init\r
+       .data\r
+.LC0:\r
+       .string "hello, world\r\n"\r
+.LC1:\r
+       .string "Serial Data from AVR received###"\r
+       .text\r
+       .stabs  "main:F(0,1)",36,0,87,main\r
+.global        main\r
+       .type   main, @function\r
+main:\r
+       .stabn 68,0,87,.LM27-main\r
+.LM27:\r
+/* prologue: frame size=0 */\r
+       ldi r28,lo8(__stack - 0)\r
+       ldi r29,hi8(__stack - 0)\r
+       out __SP_H__,r29\r
+       out __SP_L__,r28\r
+/* prologue end (size=4) */\r
+       .stabn 68,0,90,.LM28-main\r
+.LM28:\r
+       rcall uart_init\r
+       .stabn 68,0,107,.LM29-main\r
+.LM29:\r
+       ldi r20,lo8(0)\r
+       ldi r21,hi8(0)\r
+       ldi r22,lo8(pm(uart_getc))\r
+       ldi r23,hi8(pm(uart_getc))\r
+       ldi r24,lo8(pm(uart_putc))\r
+       ldi r25,hi8(pm(uart_putc))\r
+       rcall fdevopen\r
+       .stabn 68,0,110,.LM30-main\r
+.LM30:\r
+       ldi r24,lo8(.LC0)\r
+       ldi r25,hi8(.LC0)\r
+       push r25\r
+       push r24\r
+       rcall printf\r
+       pop __tmp_reg__\r
+       pop __tmp_reg__\r
+       .stabn 68,0,111,.LM31-main\r
+.LM31:\r
+       ldi r22,lo8(32)\r
+       ldi r24,lo8(.LC1)\r
+       ldi r25,hi8(.LC1)\r
+       rcall uart_send\r
+       .stabn 68,0,115,.LM32-main\r
+.LM32:\r
+.L15:\r
+       rjmp .L15\r
+       .stabn 68,0,117,.LM33-main\r
+.LM33:\r
+/* epilogue: frame size=0 */\r
+/* epilogue: noreturn */\r
+/* epilogue end (size=0) */\r
+/* function main size 24 (20) */\r
+       .size   main, .-main\r
+.Lscope6:\r
+       .stabs  "",36,0,0,.Lscope6-main\r
+       .lcomm uart_data_ptr,2\r
+       .lcomm uart_counter,1\r
+       .stabs  "uart_data_ptr:S(1,2)=*(1,3)=B(0,11)",40,0,29,uart_data_ptr\r
+       .stabs  "uart_counter:S(1,3)",40,0,30,uart_counter\r
+       .text\r
+       .stabs "",100,0,0,Letext\r
+Letext:\r
+/* File "hello.c": code  183 = 0x00b7 (  81), prologues  57, epilogues  45 */\r
diff --git a/src/avrsample/hello.tar.gz b/src/avrsample/hello.tar.gz
new file mode 100644 (file)
index 0000000..4a9cb3b
Binary files /dev/null and b/src/avrsample/hello.tar.gz differ
diff --git a/src/avrsample/io.com b/src/avrsample/io.com
new file mode 100644 (file)
index 0000000..5686873
Binary files /dev/null and b/src/avrsample/io.com differ
diff --git a/src/avrsample/ispd.exe b/src/avrsample/ispd.exe
new file mode 100644 (file)
index 0000000..4963ef0
Binary files /dev/null and b/src/avrsample/ispd.exe differ
diff --git a/src/avrsample/libc/calloc.c b/src/avrsample/libc/calloc.c
new file mode 100644 (file)
index 0000000..93f7246
--- /dev/null
@@ -0,0 +1,41 @@
+/*
+ * Copyright (c) 2002 Joerg Wunsch
+ *
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE DEVELOPERS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * $Id: calloc.c,v 1.1 2002/10/12 19:37:29 joerg_wunsch Exp $
+ */
+
+#include <stdlib.h>
+#include <string.h>
+
+void *
+calloc(size_t nele, size_t size)
+{
+       void *p;
+
+       if ((p = malloc(nele * size)) == 0)
+               return 0;
+       memset(p, 0, nele * size);
+       return p;
+}
diff --git a/src/avrsample/libc/calloc.s b/src/avrsample/libc/calloc.s
new file mode 100644 (file)
index 0000000..0e174d4
--- /dev/null
@@ -0,0 +1,82 @@
+       .file   "calloc.c"\r
+       .arch at90s4433\r
+__SREG__ = 0x3f\r
+__SP_H__ = 0x3e\r
+__SP_L__ = 0x3d\r
+__tmp_reg__ = 0\r
+__zero_reg__ = 1\r
+       .global __do_copy_data\r
+       .global __do_clear_bss\r
+       .text\r
+.global        calloc\r
+       .type   calloc, @function\r
+calloc:\r
+/* prologue: frame size=8 */\r
+       push r28\r
+       push r29\r
+       in r28,__SP_L__\r
+       in r29,__SP_H__\r
+       sbiw r28,8\r
+       in __tmp_reg__,__SREG__\r
+       cli\r
+       out __SP_H__,r29\r
+       out __SREG__,__tmp_reg__\r
+       out __SP_L__,r28\r
+/* prologue end (size=10) */\r
+       std Y+1,r24\r
+       std Y+2,r25\r
+       std Y+3,r22\r
+       std Y+4,r23\r
+       ldd r24,Y+1\r
+       ldd r25,Y+2\r
+       ldd r18,Y+3\r
+       ldd r19,Y+4\r
+       mov r23,r19\r
+       mov r22,r18\r
+       rcall __mulhi3\r
+       rcall malloc\r
+       std Y+5,r24\r
+       std Y+6,r25\r
+       ldd r24,Y+5\r
+       ldd r25,Y+6\r
+       sbiw r24,0\r
+       brne .L7\r
+       std Y+7,__zero_reg__\r
+       std Y+8,__zero_reg__\r
+       rjmp .L6\r
+.L7:\r
+       ldd r24,Y+1\r
+       ldd r25,Y+2\r
+       ldd r18,Y+3\r
+       ldd r19,Y+4\r
+       mov r23,r19\r
+       mov r22,r18\r
+       rcall __mulhi3\r
+       mov r20,r24\r
+       mov r21,r25\r
+       ldi r22,lo8(0)\r
+       ldi r23,hi8(0)\r
+       ldd r24,Y+5\r
+       ldd r25,Y+6\r
+       rcall memset\r
+       ldd r24,Y+5\r
+       ldd r25,Y+6\r
+       std Y+7,r24\r
+       std Y+8,r25\r
+.L6:\r
+       ldd r24,Y+7\r
+       ldd r25,Y+8\r
+/* epilogue: frame size=8 */\r
+       adiw r28,8\r
+       in __tmp_reg__,__SREG__\r
+       cli\r
+       out __SP_H__,r29\r
+       out __SREG__,__tmp_reg__\r
+       out __SP_L__,r28\r
+       pop r29\r
+       pop r28\r
+       ret\r
+/* epilogue end (size=9) */\r
+/* function calloc size 60 (41) */\r
+       .size   calloc, .-calloc\r
+/* File "calloc.c": code   60 = 0x003c (  41), prologues  10, epilogues   9 */\r
diff --git a/src/avrsample/libc/fdevopen.c b/src/avrsample/libc/fdevopen.c
new file mode 100644 (file)
index 0000000..f52c458
--- /dev/null
@@ -0,0 +1,102 @@
+/* Copyright (c) 2002, Joerg Wunsch
+   All rights reserved.
+
+   Redistribution and use in source and binary forms, with or without
+   modification, are permitted provided that the following conditions are met:
+
+   * Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+   * Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in
+     the documentation and/or other materials provided with the
+     distribution.
+   * Neither the name of the copyright holders nor the names of
+     contributors may be used to endorse or promote products derived
+     from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+  POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/* $Id: fdevopen.c,v 1.3 2003/03/17 17:49:46 troth Exp $ */
+
+#include <inttypes.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "stdio_private.h"
+
+FILE *__iob[3];                        /* stdin, stdout, stderr */
+
+/** \ingroup avr_stdio
+   This function is a replacement for \c fopen().
+
+   It opens a stream for a device where the actual device
+   implementation needs to be provided by the application.  If
+   successful, a pointer to the structure for the opened stream is
+   returned.  Reasons for a possible failure currently include that
+   neither the \c put nor the \c get argument have been provided, thus
+   attempting to open a stream with no IO intent at all, or that
+   insufficient dynamic memory is available to establish a new stream.
+
+   If the \c put function pointer is provided, the stream is opened
+   with write intent.  The function passed as \c put shall take one
+   character to write to the device as argument , and shall return 0
+   if the output was successful, and a nonzero value if the character
+   could not be sent to the device.
+
+   If the \c get function pointer is provided, the stream is opened
+   with read intent.  The function passed as \c get shall take no
+   arguments, and return one character from the device, passed as an
+   \c int type.  If an error occurs when trying to read from the
+   device, it shall return \c -1.
+
+   If both functions are provided, the stream is opened with read
+   and write intent.
+
+   The first stream opened with read intent is assigned to \c stdin,
+   and the first one opened with write intent is assigned to both,
+   \c stdout and \c stderr.
+
+   The third parameter \c opts is currently unused, but reserved for
+   future extensions.  */
+
+FILE *
+fdevopen(int (*put)(char), int (*get)(void), int opts __attribute__((unused)))
+{
+       FILE *s;
+
+       if (put == 0 && get == 0)
+               return 0;
+
+       if ((s = calloc(1, sizeof(FILE))) == 0)
+               return 0;
+
+       if (get != 0) {
+               s->get = get;
+               s->flags = __SRD;
+               if (stdin == 0)
+                       stdin = s;
+       }
+
+       if (put != 0) {
+               s->put = put;
+               s->flags |= __SWR;
+               if (stdout == 0) {
+                       stdout = s;
+                       if (stderr == 0)
+                               stderr = s;
+               }
+       }
+
+       return s;
+}
diff --git a/src/avrsample/libc/fdevopen.s b/src/avrsample/libc/fdevopen.s
new file mode 100644 (file)
index 0000000..1a8df29
--- /dev/null
@@ -0,0 +1,139 @@
+       .file   "fdevopen.c"\r
+       .arch at90s4433\r
+__SREG__ = 0x3f\r
+__SP_H__ = 0x3e\r
+__SP_L__ = 0x3d\r
+__tmp_reg__ = 0\r
+__zero_reg__ = 1\r
+       .global __do_copy_data\r
+       .global __do_clear_bss\r
+       .text\r
+.global        fdevopen\r
+       .type   fdevopen, @function\r
+fdevopen:\r
+/* prologue: frame size=10 */\r
+       push r28\r
+       push r29\r
+       in r28,__SP_L__\r
+       in r29,__SP_H__\r
+       sbiw r28,10\r
+       in __tmp_reg__,__SREG__\r
+       cli\r
+       out __SP_H__,r29\r
+       out __SREG__,__tmp_reg__\r
+       out __SP_L__,r28\r
+/* prologue end (size=10) */\r
+       std Y+1,r24\r
+       std Y+2,r25\r
+       std Y+3,r22\r
+       std Y+4,r23\r
+       std Y+5,r20\r
+       std Y+6,r21\r
+       ldd r24,Y+1\r
+       ldd r25,Y+2\r
+       sbiw r24,0\r
+       brne .L7\r
+       ldd r24,Y+3\r
+       ldd r25,Y+4\r
+       sbiw r24,0\r
+       brne .L7\r
+       std Y+9,__zero_reg__\r
+       std Y+10,__zero_reg__\r
+       rjmp .L6\r
+.L7:\r
+       ldi r22,lo8(12)\r
+       ldi r23,hi8(12)\r
+       ldi r24,lo8(1)\r
+       ldi r25,hi8(1)\r
+       rcall calloc\r
+       std Y+7,r24\r
+       std Y+8,r25\r
+       ldd r24,Y+7\r
+       ldd r25,Y+8\r
+       sbiw r24,0\r
+       brne .L8\r
+       std Y+9,__zero_reg__\r
+       std Y+10,__zero_reg__\r
+       rjmp .L6\r
+.L8:\r
+       ldd r24,Y+3\r
+       ldd r25,Y+4\r
+       sbiw r24,0\r
+       breq .L9\r
+       ldd r30,Y+7\r
+       ldd r31,Y+8\r
+       ldd r24,Y+3\r
+       ldd r25,Y+4\r
+       std Z+10,r24\r
+       std Z+11,r25\r
+       ldd r30,Y+7\r
+       ldd r31,Y+8\r
+       ldi r24,lo8(1)\r
+       std Z+3,r24\r
+       lds r24,__iob\r
+       lds r25,(__iob)+1\r
+       sbiw r24,0\r
+       brne .L9\r
+       ldd r24,Y+7\r
+       ldd r25,Y+8\r
+       sts (__iob)+1,r25\r
+       sts __iob,r24\r
+.L9:\r
+       ldd r24,Y+1\r
+       ldd r25,Y+2\r
+       sbiw r24,0\r
+       breq .L11\r
+       ldd r30,Y+7\r
+       ldd r31,Y+8\r
+       ldd r24,Y+1\r
+       ldd r25,Y+2\r
+       std Z+8,r24\r
+       std Z+9,r25\r
+       ldd r26,Y+7\r
+       ldd r27,Y+8\r
+       ldd r30,Y+7\r
+       ldd r31,Y+8\r
+       ldd r24,Z+3\r
+       ori r24,lo8(2)\r
+       mov r31,r27\r
+       mov r30,r26\r
+       std Z+3,r24\r
+       lds r24,__iob+2\r
+       lds r25,(__iob+2)+1\r
+       sbiw r24,0\r
+       brne .L11\r
+       ldd r24,Y+7\r
+       ldd r25,Y+8\r
+       sts (__iob+2)+1,r25\r
+       sts __iob+2,r24\r
+       lds r24,__iob+4\r
+       lds r25,(__iob+4)+1\r
+       sbiw r24,0\r
+       brne .L11\r
+       ldd r24,Y+7\r
+       ldd r25,Y+8\r
+       sts (__iob+4)+1,r25\r
+       sts __iob+4,r24\r
+.L11:\r
+       ldd r24,Y+7\r
+       ldd r25,Y+8\r
+       std Y+9,r24\r
+       std Y+10,r25\r
+.L6:\r
+       ldd r24,Y+9\r
+       ldd r25,Y+10\r
+/* epilogue: frame size=10 */\r
+       adiw r28,10\r
+       in __tmp_reg__,__SREG__\r
+       cli\r
+       out __SP_H__,r29\r
+       out __SREG__,__tmp_reg__\r
+       out __SP_L__,r28\r
+       pop r29\r
+       pop r28\r
+       ret\r
+/* epilogue end (size=9) */\r
+/* function fdevopen size 125 (106) */\r
+       .size   fdevopen, .-fdevopen\r
+       .comm __iob,6,1\r
+/* File "fdevopen.c": code  125 = 0x007d ( 106), prologues  10, epilogues   9 */\r
diff --git a/src/avrsample/libc/gcrt1.S b/src/avrsample/libc/gcrt1.S
new file mode 100644 (file)
index 0000000..dfe4d2c
--- /dev/null
@@ -0,0 +1,177 @@
+/* Copyright (c) 2002, Marek Michalkiewicz <marekm@amelek.gda.pl>
+   All rights reserved.
+
+   Redistribution and use in source and binary forms, with or without
+   modification, are permitted provided that the following conditions are met:
+
+   * Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+   * Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in
+     the documentation and/or other materials provided with the
+     distribution.
+
+   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+   ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+   POSSIBILITY OF SUCH DAMAGE. */
+
+#if (__GNUC__ < 3) || (__GNUC__ == 3 && __GNUC_MINOR__ < 3)
+#error "GCC version >= 3.3 required"
+#endif
+
+#include "macros.inc"
+
+       .macro  vector name
+       .if (. - __vectors < _VECTORS_SIZE)
+       .weak   \name
+       .set    \name, __bad_interrupt
+       XJMP    \name
+       .endif
+       .endm
+
+       .section .vectors,"ax",@progbits
+       .global __vectors
+       .func   __vectors
+__vectors:
+       XJMP    __init
+       vector  __vector_1
+       vector  __vector_2
+       vector  __vector_3
+       vector  __vector_4
+       vector  __vector_5
+       vector  __vector_6
+       vector  __vector_7
+       vector  __vector_8
+       vector  __vector_9
+       vector  __vector_10
+       vector  __vector_11
+       vector  __vector_12
+       vector  __vector_13
+       vector  __vector_14
+       vector  __vector_15
+       vector  __vector_16
+       vector  __vector_17
+       vector  __vector_18
+       vector  __vector_19
+       vector  __vector_20
+       vector  __vector_21
+       vector  __vector_22
+       vector  __vector_23
+       vector  __vector_24
+       vector  __vector_25
+       vector  __vector_26
+       vector  __vector_27
+       vector  __vector_28
+       vector  __vector_29
+       vector  __vector_30
+       vector  __vector_31
+       vector  __vector_32
+       vector  __vector_33
+       vector  __vector_34
+       vector  __vector_35
+       vector  __vector_36
+       vector  __vector_37
+       vector  __vector_38
+       vector  __vector_39
+       .endfunc
+
+       /* Handle unexpected interrupts (enabled and no handler), which
+          usually indicate a bug.  Jump to the __vector_default function
+          if defined by the user, otherwise jump to the reset address.
+
+          This must be in a different section, otherwise the assembler
+          will resolve "rjmp" offsets and there will be no relocs.  */
+
+       .text
+       .global __bad_interrupt
+       .func   __bad_interrupt
+__bad_interrupt:
+       .weak   __vector_default
+       .set    __vector_default, __vectors
+       XJMP    __vector_default
+       .endfunc
+
+       .section .init0,"ax",@progbits
+       .weak   __init
+;      .func   __init
+__init:
+
+#ifndef __AVR_ASM_ONLY__
+       .weak   __stack
+       .set    __stack, RAMEND
+
+       /* By default, malloc() uses the current value of the stack pointer
+          minus __malloc_margin as the highest available address.
+
+          In some applications with external SRAM, the stack can be below
+          the data section (in the internal SRAM - faster), and __heap_end
+          should be set to the highest address available for malloc().  */
+       .weak   __heap_end
+       .set    __heap_end, 0
+
+       .section .init2,"ax",@progbits
+       clr     __zero_reg__
+       out     _SFR_IO_ADDR(SREG), __zero_reg__
+       ldi     r28,lo8(__stack)
+#ifdef SPH
+       ldi     r29,hi8(__stack)
+       out     _SFR_IO_ADDR(SPH), r29
+#endif
+       out     _SFR_IO_ADDR(SPL), r28
+
+#if BIG_CODE
+       /* Only for >64K devices with RAMPZ, replaces the default code
+          provided by libgcc.S which is only linked in if necessary.  */
+
+       .section .init4,"ax",@progbits
+       .global __do_copy_data
+__do_copy_data:
+       ldi     r17, hi8(__data_end)
+       ldi     r26, lo8(__data_start)
+       ldi     r27, hi8(__data_start)
+       ldi     r30, lo8(__data_load_start)
+       ldi     r31, hi8(__data_load_start)
+
+       /* On the enhanced core, "elpm" with post-increment updates RAMPZ
+          automatically.  Otherwise we have to handle it ourselves.  */
+
+#ifdef __AVR_ENHANCED__
+       ldi     r16, hh8(__data_load_start)
+#else
+       ldi     r16, hh8(__data_load_start - 0x10000)
+.__do_copy_data_carry:
+       inc     r16
+#endif
+       out     _SFR_IO_ADDR(RAMPZ), r16
+       rjmp    .__do_copy_data_start
+.__do_copy_data_loop:
+#ifdef __AVR_ENHANCED__
+       elpm    r0, Z+
+#else
+       lpm
+#endif
+       st      X+, r0
+#ifndef __AVR_ENHANCED__
+       adiw    r30, 1
+       brcs    .__do_copy_data_carry
+#endif
+.__do_copy_data_start:
+       cpi     r26, lo8(__data_end)
+       cpc     r27, r17
+       brne    .__do_copy_data_loop
+#endif /* BIG_CODE */
+
+#endif /* !__AVR_ASM_ONLY__ */
+
+       .section .init9,"ax",@progbits
+       XJMP    main
+;      .endfunc
+
diff --git a/src/avrsample/libc/gcrt1.i b/src/avrsample/libc/gcrt1.i
new file mode 100644 (file)
index 0000000..bf13aa3
--- /dev/null
@@ -0,0 +1,157 @@
+# 1 "gcrt1.S"\r
+# 1 "<built-in>"\r
+# 1 "<command line>"\r
+# 1 "gcrt1.S"\r
+# 30 "gcrt1.S"\r
+# 1 "macros.inc" 1\r
+# 33 "macros.inc"\r
+# 1 "c:/WinAVR/avr/include/avr/io.h" 1 3\r
+# 81 "c:/WinAVR/avr/include/avr/io.h" 3\r
+# 1 "c:/WinAVR/avr/include/avr/sfr_defs.h" 1 3\r
+# 82 "c:/WinAVR/avr/include/avr/io.h" 2 3\r
+# 197 "c:/WinAVR/avr/include/avr/io.h" 3\r
+# 1 "c:/WinAVR/avr/include/avr/io4433.h" 1 3\r
+# 198 "c:/WinAVR/avr/include/avr/io.h" 2 3\r
+# 34 "macros.inc" 2\r
+# 124 "macros.inc"\r
+        .macro X_movw dest src\r
+                .if ((\src) - (\dest))\r
+                        .if (((\src) | (\dest)) & 0x01)\r
+                                .if (((\src)-(\dest)) & 0x80)\r
+                                        mov (\dest)+1, (\src)+1\r
+                                        mov (\dest), (\src)\r
+                                .else\r
+                                        mov (\dest), (\src)\r
+                                        mov (\dest)+1, (\src)+1\r
+                                .endif\r
+                        .else\r
+\r
+\r
+\r
+                                mov (\dest), (\src)\r
+                                mov (\dest)+1, (\src)+1\r
+\r
+                        .endif\r
+                .endif\r
+        .endm\r
+# 176 "macros.inc"\r
+        .macro LPM_R0_ZPLUS_INIT hhi\r
+\r
+\r
+\r
+\r
+\r
+        .endm\r
+\r
+        .macro LPM_R0_ZPLUS_NEXT hhi\r
+# 202 "macros.inc"\r
+        lpm\r
+        adiw r30,1\r
+\r
+\r
+        .endm\r
+\r
+        .macro LPM_R0_ZP\r
+\r
+\r
+\r
+        lpm\r
+        adiw r30,1\r
+\r
+        .endm\r
+# 31 "gcrt1.S" 2\r
+\r
+        .macro vector name\r
+        .if (. - __vectors < 28)\r
+        .weak \name\r
+        .set \name, __bad_interrupt\r
+        rjmp \name\r
+        .endif\r
+        .endm\r
+\r
+        .section .vectors,"ax",@progbits\r
+        .global __vectors\r
+        .func __vectors\r
+__vectors:\r
+        rjmp __init\r
+        vector __vector_1\r
+        vector __vector_2\r
+        vector __vector_3\r
+        vector __vector_4\r
+        vector __vector_5\r
+        vector __vector_6\r
+        vector __vector_7\r
+        vector __vector_8\r
+        vector __vector_9\r
+        vector __vector_10\r
+        vector __vector_11\r
+        vector __vector_12\r
+        vector __vector_13\r
+        vector __vector_14\r
+        vector __vector_15\r
+        vector __vector_16\r
+        vector __vector_17\r
+        vector __vector_18\r
+        vector __vector_19\r
+        vector __vector_20\r
+        vector __vector_21\r
+        vector __vector_22\r
+        vector __vector_23\r
+        vector __vector_24\r
+        vector __vector_25\r
+        vector __vector_26\r
+        vector __vector_27\r
+        vector __vector_28\r
+        vector __vector_29\r
+        vector __vector_30\r
+        vector __vector_31\r
+        vector __vector_32\r
+        vector __vector_33\r
+        vector __vector_34\r
+        vector __vector_35\r
+        vector __vector_36\r
+        vector __vector_37\r
+        vector __vector_38\r
+        vector __vector_39\r
+        .endfunc\r
+# 93 "gcrt1.S"\r
+        .text\r
+        .global __bad_interrupt\r
+        .func __bad_interrupt\r
+__bad_interrupt:\r
+        .weak __vector_default\r
+        .set __vector_default, __vectors\r
+        rjmp __vector_default\r
+        .endfunc\r
+\r
+        .section .init0,"ax",@progbits\r
+        .weak __init\r
+; .func __init\r
+__init:\r
+\r
+\r
+        .weak __stack\r
+        .set __stack, 0xDF\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+        .weak __heap_end\r
+        .set __heap_end, 0\r
+\r
+        .section .init2,"ax",@progbits\r
+        clr r1\r
+        out ((((0x3F) + 0x20)) - 0x20), r1\r
+        ldi r28,lo8(__stack)\r
+\r
+\r
+\r
+\r
+        out ((((0x3D) + 0x20)) - 0x20), r28\r
+# 174 "gcrt1.S"\r
+        .section .init9,"ax",@progbits\r
+        rjmp main\r
+; .endfunc\r
diff --git a/src/avrsample/libc/macros.inc b/src/avrsample/libc/macros.inc
new file mode 100644 (file)
index 0000000..29a8978
--- /dev/null
@@ -0,0 +1,216 @@
+/* Copyright (c) 2002, Marek Michalkiewicz
+   All rights reserved.
+
+   Redistribution and use in source and binary forms, with or without
+   modification, are permitted provided that the following conditions are met:
+
+   * Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+   * Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in
+     the documentation and/or other materials provided with the
+     distribution.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+  POSSIBILITY OF SUCH DAMAGE. */
+
+/*
+   macros.inc - macros for use in assembler sources
+
+   Contributors:
+     Created by Marek Michalkiewicz <marekm@linux.org.pl>
+ */
+
+#include <avr/io.h>
+
+/* if not defined, assume old version with underscores */
+#ifndef __USER_LABEL_PREFIX__
+#define __USER_LABEL_PREFIX__ _
+#endif
+
+#ifndef __REGISTER_PREFIX__
+#define __REGISTER_PREFIX__
+#endif
+
+/* the assembler line separator (just in case it ever changes) */
+#define _L $
+
+#define CONCAT1(a, b) CONCAT2(a, b)
+#define CONCAT2(a, b) a ## b
+
+#define _U(x) CONCAT1(__USER_LABEL_PREFIX__, x)
+
+#define _R(x) CONCAT1(__REGISTER_PREFIX__, x)
+
+/* these should help to fix the "can't have function named r1()" bug
+   which may require adding '%' in front of register names.  */
+
+#define r0 _R(r0)
+#define r1 _R(r1)
+#define r2 _R(r2)
+#define r3 _R(r3)
+#define r4 _R(r4)
+#define r5 _R(r5)
+#define r6 _R(r6)
+#define r7 _R(r7)
+#define r8 _R(r8)
+#define r9 _R(r9)
+#define r10 _R(r10)
+#define r11 _R(r11)
+#define r12 _R(r12)
+#define r13 _R(r13)
+#define r14 _R(r14)
+#define r15 _R(r15)
+#define r16 _R(r16)
+#define r17 _R(r17)
+#define r18 _R(r18)
+#define r19 _R(r19)
+#define r20 _R(r20)
+#define r21 _R(r21)
+#define r22 _R(r22)
+#define r23 _R(r23)
+#define r24 _R(r24)
+#define r25 _R(r25)
+#define r26 _R(r26)
+#define r27 _R(r27)
+#define r28 _R(r28)
+#define r29 _R(r29)
+#define r30 _R(r30)
+#define r31 _R(r31)
+
+#ifndef __tmp_reg__
+#define __tmp_reg__ r0
+#endif
+
+#ifndef __zero_reg__
+#define __zero_reg__ r1
+#endif
+
+#if __AVR_MEGA__
+  #define XJMP jmp
+  #define XCALL call
+#else
+  #define XJMP rjmp
+  #define XCALL rcall
+#endif
+
+/* used only by fplib/strtod.S - libgcc internal function calls */
+#define PROLOGUE_SAVES(offset) XJMP (__prologue_saves__ + 2 * (offset))
+#define EPILOGUE_RESTORES(offset) XJMP (__epilogue_restores__ + 2 * (offset))
+
+#if FLASHEND > 0x10000  /* ATmega103 */
+  #define BIG_CODE 1
+#else
+  #define BIG_CODE 0
+#endif
+
+/*
+   Smart version of movw (use register numbers as arguments):
+    - uses "movw" if possible (supported by MCU, and both registers even)
+    - handles overlapping register pairs correctly
+    - no instruction generated if source and destination are the same
+   (may expand to 0, 1 or 2 instructions).
+ */
+
+       .macro  X_movw dest src
+               .if ((\src) - (\dest))  /* different registers */
+                       .if (((\src) | (\dest)) & 0x01)
+                               .if (((\src)-(\dest)) & 0x80) /* src < dest */
+                                       mov     (\dest)+1, (\src)+1
+                                       mov     (\dest), (\src)
+                               .else  /* src > dest */
+                                       mov     (\dest), (\src)
+                                       mov     (\dest)+1, (\src)+1
+                               .endif
+                       .else  /* both even -> overlap not possible */
+#if __AVR_ENHANCED__
+                               movw    (\dest), (\src)
+#else
+                               mov     (\dest), (\src)
+                               mov     (\dest)+1, (\src)+1
+#endif
+                       .endif
+               .endif
+       .endm
+
+#if __AVR_ENHANCED__
+  #define LOAD_X(lo, hi) movw r26, lo
+  #define LOAD_Z(lo, hi) movw r30, lo
+#else
+  #define LOAD_X(lo, hi)               \
+       mov     r26, lo                 _L\
+       mov     r27, hi
+
+  #define LOAD_Z(lo, hi)               \
+       mov     r30, lo                 _L\
+       mov     r31, hi
+#endif
+
+/* LOAD_X_CONST(p) loads constant P into pointer register X.  */
+#define LOAD_X_CONST(p)                \
+       ldi     r26, lo8(p)             _L\
+       ldi     r27, hi8(p)
+
+/*
+   LPM_R0_ZPLUS_INIT is used before the loop to initialize RAMPZ
+   for future devices with RAMPZ:Z auto-increment - [e]lpm r0, Z+.
+
+   LPM_R0_ZPLUS_NEXT is used inside the loop to load a byte from
+   the program memory at [RAMPZ:]Z to R0, and increment [RAMPZ:]Z.
+
+   The argument in both macros is a register that contains the
+   high byte (bits 23-16) of the address, bits 15-0 should be in
+   the Z (r31:r30) register.  It can be any register except for:
+   r0, r1 (__zero_reg__ - assumed to always contain 0), r30, r31.
+ */
+
+       .macro  LPM_R0_ZPLUS_INIT hhi
+#if __AVR_ENHANCED__
+  #if BIG_CODE
+       out     _SFR_IO_ADDR(RAMPZ), \hhi
+  #endif
+#endif
+       .endm
+
+       .macro  LPM_R0_ZPLUS_NEXT hhi
+#if __AVR_ENHANCED__
+  #if BIG_CODE
+    /* ELPM with RAMPZ:Z post-increment, load RAMPZ only once */
+       elpm    r0, Z+
+  #else
+    /* LPM with Z post-increment, max 64K, no RAMPZ (ATmega83/161/163/32) */
+       lpm     r0, Z+
+  #endif
+#else
+  #if BIG_CODE
+    /* ELPM without post-increment, load RAMPZ each time (ATmega103) */
+       out     _SFR_IO_ADDR(RAMPZ), \hhi
+       elpm
+       adiw    r30,1
+       adc     \hhi, __zero_reg__
+  #else
+    /* LPM without post-increment, max 64K, no RAMPZ (AT90S*) */
+       lpm
+       adiw    r30,1
+  #endif
+#endif
+       .endm
+
+       .macro  LPM_R0_ZP
+#if __AVR_ENHANCED__
+       lpm     r0, Z+
+#else
+       lpm
+       adiw    r30,1
+#endif
+       .endm
+
diff --git a/src/avrsample/libc/malloc.c b/src/avrsample/libc/malloc.c
new file mode 100644 (file)
index 0000000..6912b1e
--- /dev/null
@@ -0,0 +1,420 @@
+/*
+ * Copyright (c) 2002 Joerg Wunsch
+ *
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE DEVELOPERS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * $Id: malloc.c,v 1.6 2003/01/08 11:14:10 joerg_wunsch Exp $
+ */
+
+#include <stdlib.h>
+
+#include <avr/io.h>
+
+#ifndef __AVR__
+
+/*
+ * When compiling this file natively on a host machine, it will
+ * include a main() that performs a regression test.  This is meant as
+ * a debugging aid, where a normal source-level debugger will help to
+ * verify that the various allocator structures have the desired
+ * appearance at each stage.
+ *
+ * When cross-compiling with avr-gcc, it will compile into just the
+ * library functions malloc() and free().
+ */
+#define MALLOC_TEST
+
+#endif /* !__AVR__ */
+
+struct freelist {
+       size_t sz;
+       struct freelist *nx;
+};
+
+static char *brkval;
+static struct freelist *flp;
+
+#ifdef MALLOC_TEST
+
+#define malloc mymalloc
+#define free myfree
+#define __heap_start mymem
+#define __heap_end ((char *)0)
+
+char mymem[256];
+#define STACK_POINTER() (mymem + 256)
+
+#else /* !MALLOC_TEST */
+
+extern char __heap_start;
+extern char __heap_end;
+
+#define STACK_POINTER() ((char *)SP)
+
+#endif /* MALLOC_TEST */
+
+/*
+ * Exported interface:
+ *
+ * When extending the data segment, the allocator will not try to go
+ * beyond the current stack limit, decreased by __malloc_margin bytes.
+ * Thus, all possible stack frames of interrupt routines that could
+ * interrupt the current function, plus all further nested function
+ * calls must not require more stack space, or they'll risk to collide
+ * with the data segment.
+ */
+ 
+/* May be changed by the user only before the first malloc() call.  */
+
+size_t __malloc_margin = 32;
+char *__malloc_heap_start = &__heap_start;
+char *__malloc_heap_end = &__heap_end;
+
+void *
+malloc(size_t len)
+{
+       struct freelist *fp1, *fp2;
+       char *cp;
+       size_t s;
+
+       /*
+        * Our minimum chunk size is the size of a pointer (plus the
+        * size of the "sz" field, but we don't need to account for
+        * this), otherwise we could not possibly fit a freelist entry
+        * into the chunk later.
+        */
+       if (len < sizeof(struct freelist) - sizeof(size_t))
+               len = sizeof(struct freelist) - sizeof(size_t);
+
+       /*
+        * First, walk the free list and try finding a chunk that
+        * would match exactly.  If we found one, we are done.  While
+        * walking, note down the size of the largest chunk we found
+        * that would still fit the request -- we need it for step 2.
+        *
+        */
+       for (s = 0, fp1 = flp, fp2 = 0;
+            fp1;
+            fp2 = fp1, fp1 = fp1->nx) {
+               if (fp1->sz == len) {
+                       /*
+                        * Found it.  Disconnect the chunk from the
+                        * freelist, and return it.
+                        */
+                       if (fp2)
+                               fp2->nx = fp1->nx;
+                       else
+                               flp = fp1->nx;
+                       return &(fp1->nx);
+               }
+               if (fp1->sz > len) {
+                       if (s == 0 || fp1->sz < s)
+                               s = fp1->sz;
+               }
+       }
+       /*
+        * Step 2: If we found a chunk on the freelist that would fit
+        * (but was too large), look it up again and use it, since it
+        * is our closest match now.  Since the freelist entry needs
+        * to be split into two entries then, watch out that the
+        * difference between the requested size and the size of the
+        * chunk found is large enough for another freelist entry; if
+        * not, just enlarge the request size to what we have found,
+        * and use the entire chunk.
+        */
+       if (s) {
+               if (s - len < sizeof(struct freelist))
+                       len = s;
+               for (fp1 = flp, fp2 = 0;
+                    fp1;
+                    fp2 = fp1, fp1 = fp1->nx) {
+                       if (fp1->sz == s) {
+                               if (len == s) {
+                                       /*
+                                        * Use entire chunk; same as
+                                        * above.
+                                        */
+                                       if (fp2)
+                                               fp2->nx = fp1->nx;
+                                       else
+                                               flp = fp1->nx;
+                                       return &(fp1->nx);
+                               }
+                               /*
+                                * Split them up.  Note that we leave
+                                * the first part as the new (smaller)
+                                * freelist entry, and return the
+                                * upper portion to the caller.  This
+                                * saves us the work to fix up the
+                                * freelist chain; we just need to
+                                * fixup the size of the current
+                                * entry, and note down the size of
+                                * the new chunk before returning it
+                                * to the caller.
+                                */
+                               cp = (char *)fp1;
+                               s -= len;
+                               cp += s;
+                               fp2 = (struct freelist *)cp;
+                               fp2->sz = len;
+                               fp1->sz = s - sizeof(size_t);
+                               return &(fp2->nx);
+                       }
+               }
+       }
+       /*
+        * Step 3: If the request could not be satisfied from a
+        * freelist entry, just prepare a new chunk.  This means we
+        * need to obtain more memory first.  The largest address just
+        * not allocated so far is remembered in the brkval variable.
+        * Under Unix, the "break value" was the end of the data
+        * segment as dynamically requested from the operating system.
+        * Since we don't have an operating system, just make sure
+        * that we don't collide with the stack.
+        */
+       if (brkval == 0)
+               brkval = __malloc_heap_start;
+       cp = __malloc_heap_end;
+       if (cp == 0)
+               cp = STACK_POINTER() - __malloc_margin;
+       if (brkval + len + sizeof(size_t) < cp) {
+               fp1 = (struct freelist *)brkval;
+               brkval += len + sizeof(size_t);
+               fp1->sz = len;
+               return &(fp1->nx);
+       }
+       /*
+        * Step 4: There's no help, just fail. :-/
+        */
+       return 0;
+}
+
+void
+free(void *p)
+{
+       struct freelist *fp1, *fp2, *fpnew;
+       char *cp1, *cp2, *cpnew;
+
+       /* ISO C says free(NULL) must be a no-op */
+       if (p == 0)
+               return;
+
+       cpnew = p;
+       cpnew -= sizeof(size_t);
+       fpnew = (struct freelist *)cpnew;
+       fpnew->nx = 0;
+
+       /*
+        * Trivial case first: if there's no freelist yet, our entry
+        * will be the only one on it.
+        */
+       if (flp == 0) {
+               flp = fpnew;
+               return;
+       }
+
+       /*
+        * Now, find the position where our new entry belongs onto the
+        * freelist.  Try to aggregate the chunk with adjacent chunks
+        * if possible.
+        */
+       for (fp1 = flp, fp2 = 0;
+            fp1;
+            fp2 = fp1, fp1 = fp1->nx) {
+               if (fp1 < fpnew)
+                       continue;
+               cp1 = (char *)fp1;
+               fpnew->nx = fp1;
+               if ((char *)&(fpnew->nx) + fpnew->sz == cp1) {
+                       /* upper chunk adjacent, assimilate it */
+                       fpnew->sz += fp1->sz + sizeof(size_t);
+                       fpnew->nx = fp1->nx;
+               }
+               if (fp2 == 0) {
+                       /* new head of freelist */
+                       flp = fpnew;
+                       return;
+               }
+               break;
+       }
+       /*
+        * Note that we get here either if we hit the "break" above,
+        * or if we fell off the end of the loop.  The latter means
+        * we've got a new topmost chunk.  Either way, try aggregating
+        * with the lower chunk if possible.
+        */
+       fp2->nx = fpnew;
+       cp2 = (char *)&(fp2->nx);
+       if (cp2 + fp2->sz == cpnew) {
+               /* lower junk adjacent, merge */
+               fp2->sz += fpnew->sz + sizeof(size_t);
+               fp2->nx = fpnew->nx;
+       }
+}
+
+#ifdef MALLOC_TEST
+
+#include <stdio.h>
+#include <time.h>
+#include <unistd.h>
+
+void *handles[32];
+size_t sizes[32];
+
+
+void *
+alloc(size_t s)
+{
+       void *p;
+
+       if ((p = malloc(s)) == 0)
+               return 0;
+       memset(p, 0xd0, s);
+       return p;
+}
+
+void
+printfreelist(void)
+{
+       struct freelist *fp1;
+       int i;
+
+       if (!flp) {
+               printf("no free list\n");
+               return;
+       }
+
+       for (i = 0, fp1 = flp; fp1; i++, fp1 = fp1->nx) {
+               printf("entry %d @ %u: size %u, next ",
+                      i, (char *)fp1 - mymem, fp1->sz);
+               if (fp1->nx)
+                       printf("%u\n", (char *)fp1->nx - mymem);
+               else
+                       printf("NULL\n");
+       }
+}
+
+int
+compare(const void *p1, const void *p2)
+{
+       return *((size_t *)p1) - *((size_t *)p2);
+}
+
+void
+printalloc(void)
+{
+       int i, j, k;
+       size_t sum, sum2;
+       void *sortedhandles[32];
+       struct freelist *fp;
+       char *cp;
+
+       for (i = j = k = sum = sum2 = 0;
+            i < sizeof handles / sizeof (void *);
+            i++)
+               if (sizes[i]) {
+                       j++;
+                       sum += sizes[i];
+                       if (handles[i]) {
+                               k++;
+                               sum2 += sizes[i];
+                       }
+               }
+       printf("brkval: %d, %d request%s => sum %u bytes "
+              "(actually %d reqs => %u bytes)\n",
+              (char *)brkval - mymem, j, j == 1? "": "s", sum, k, sum2);
+       memcpy(sortedhandles, handles, sizeof sortedhandles);
+       qsort(sortedhandles, 32, sizeof(void *), compare);
+       for (i = j = 0; i < sizeof sortedhandles / sizeof (void *); i++)
+               if ((cp = sortedhandles[i])) {
+                       cp -= sizeof(size_t);
+                       fp = (struct freelist *)cp;
+                       printf("block %d @ %u: %u bytes\n",
+                              j, (char *)&fp->nx - mymem, fp->sz);
+                       j++;
+               }
+
+}
+
+
+int
+main(void)
+{
+       int i, j, k, l, m, om, p, f;
+       size_t s;
+
+       srand(time(0) ^ getpid());
+
+       for (k = 0; k < 100; k++) {
+               memset(handles, 0, sizeof handles);
+               memset(sizes, 0, sizeof sizes);
+
+               j = rand() % 16 + 15;
+               l = rand() % 80 + 7;
+
+               for (i = s = 0; i < j && s < 256; i++) {
+                       sizes[i] = rand() % l + 1;
+                       s += sizes[i];
+               }
+               j = i;
+               for (m = om = 1, p = 1, f = 0; m < 1000; m++) {
+                       for (i = s = 0; i < j; i++)
+                               if (handles[i])
+                                       s++;
+                       if (s == j)
+                               break;
+
+                       if (m / om > 10) {
+                               p <<= 1;
+                               p |= 1;
+                       }
+
+                       for (i = 0; i < j; i++)
+                               if (rand() & p) {
+                                       if (!handles[i] &&
+                                           (handles[i] = alloc(sizes[i])) == 0)
+                                               f++;
+                               }
+                       for (i = 0; i < j; i++)
+                               if (rand() & 1) {
+                                       free(handles[i]);
+                                       handles[i] = 0;
+                               }
+               }
+               if (f)
+                       printf("%d alloc failure%s total\n",
+                              f, f == 1? "": "s");
+               printf("After alloc:\n");
+               printalloc();
+               printfreelist();
+               for (i = 0; i < j; i++)
+                       free(handles[i]);
+               printf("After cleanup:\n");
+               printfreelist();
+       }
+
+       return 0;
+}
+
+#endif /* MALLOC_TEST */
+
diff --git a/src/avrsample/libc/malloc.s b/src/avrsample/libc/malloc.s
new file mode 100644 (file)
index 0000000..610f133
--- /dev/null
@@ -0,0 +1,600 @@
+       .file   "malloc.c"\r
+       .arch at90s4433\r
+__SREG__ = 0x3f\r
+__SP_H__ = 0x3e\r
+__SP_L__ = 0x3d\r
+__tmp_reg__ = 0\r
+__zero_reg__ = 1\r
+       .global __do_copy_data\r
+       .global __do_clear_bss\r
+.global        __malloc_margin\r
+       .data\r
+       .type   __malloc_margin, @object\r
+       .size   __malloc_margin, 2\r
+__malloc_margin:\r
+       .word   32\r
+.global        __malloc_heap_start\r
+       .type   __malloc_heap_start, @object\r
+       .size   __malloc_heap_start, 2\r
+__malloc_heap_start:\r
+       .word   __heap_start\r
+.global        __malloc_heap_end\r
+       .type   __malloc_heap_end, @object\r
+       .size   __malloc_heap_end, 2\r
+__malloc_heap_end:\r
+       .word   __heap_end\r
+       .text\r
+.global        malloc\r
+       .type   malloc, @function\r
+malloc:\r
+/* prologue: frame size=14 */\r
+       push r28\r
+       push r29\r
+       in r28,__SP_L__\r
+       in r29,__SP_H__\r
+       sbiw r28,14\r
+       in __tmp_reg__,__SREG__\r
+       cli\r
+       out __SP_H__,r29\r
+       out __SREG__,__tmp_reg__\r
+       out __SP_L__,r28\r
+/* prologue end (size=10) */\r
+       std Y+1,r24\r
+       std Y+2,r25\r
+       ldd r24,Y+1\r
+       ldd r25,Y+2\r
+       cpi r24,2\r
+       cpc r25,__zero_reg__\r
+       brsh .L7\r
+       ldi r24,lo8(2)\r
+       ldi r25,hi8(2)\r
+       std Y+1,r24\r
+       std Y+2,r25\r
+.L7:\r
+       std Y+9,__zero_reg__\r
+       std Y+10,__zero_reg__\r
+       lds r24,flp\r
+       lds r25,(flp)+1\r
+       std Y+3,r24\r
+       std Y+4,r25\r
+       std Y+5,__zero_reg__\r
+       std Y+6,__zero_reg__\r
+.L8:\r
+       ldd r24,Y+3\r
+       ldd r25,Y+4\r
+       sbiw r24,0\r
+       brne .L11\r
+       rjmp .L9\r
+.L11:\r
+       ldd r30,Y+3\r
+       ldd r31,Y+4\r
+       ld r18,Z\r
+       ldd r19,Z+1\r
+       ldd r24,Y+1\r
+       ldd r25,Y+2\r
+       cp r18,r24\r
+       cpc r19,r25\r
+       brne .L12\r
+       ldd r24,Y+5\r
+       ldd r25,Y+6\r
+       sbiw r24,0\r
+       breq .L13\r
+       ldd r24,Y+5\r
+       ldd r25,Y+6\r
+       std Y+13,r24\r
+       std Y+14,r25\r
+       ldd r26,Y+3\r
+       ldd r27,Y+4\r
+       mov r31,r27\r
+       mov r30,r26\r
+       ldd r24,Z+2\r
+       ldd r25,Z+3\r
+       ldd r30,Y+13\r
+       ldd r31,Y+14\r
+       std Z+2,r24\r
+       std Z+3,r25\r
+       rjmp .L14\r
+.L13:\r
+       ldd r30,Y+3\r
+       ldd r31,Y+4\r
+       ldd r24,Z+2\r
+       ldd r25,Z+3\r
+       sts (flp)+1,r25\r
+       sts flp,r24\r
+.L14:\r
+       ldd r24,Y+3\r
+       ldd r25,Y+4\r
+       adiw r24,2\r
+       std Y+11,r24\r
+       std Y+12,r25\r
+       rjmp .L6\r
+.L12:\r
+       ldd r30,Y+3\r
+       ldd r31,Y+4\r
+       ld r18,Z\r
+       ldd r19,Z+1\r
+       ldd r24,Y+1\r
+       ldd r25,Y+2\r
+       cp r24,r18\r
+       cpc r25,r19\r
+       brsh .L10\r
+       ldd r24,Y+9\r
+       ldd r25,Y+10\r
+       sbiw r24,0\r
+       breq .L17\r
+       ldd r30,Y+3\r
+       ldd r31,Y+4\r
+       ld r18,Z\r
+       ldd r19,Z+1\r
+       ldd r24,Y+9\r
+       ldd r25,Y+10\r
+       cp r18,r24\r
+       cpc r19,r25\r
+       brlo .L17\r
+       rjmp .L10\r
+.L17:\r
+       ldd r30,Y+3\r
+       ldd r31,Y+4\r
+       ld r24,Z\r
+       ldd r25,Z+1\r
+       std Y+9,r24\r
+       std Y+10,r25\r
+.L10:\r
+       ldd r24,Y+3\r
+       ldd r25,Y+4\r
+       std Y+5,r24\r
+       std Y+6,r25\r
+       ldd r30,Y+3\r
+       ldd r31,Y+4\r
+       ldd r24,Z+2\r
+       ldd r25,Z+3\r
+       std Y+3,r24\r
+       std Y+4,r25\r
+       rjmp .L8\r
+.L9:\r
+       ldd r24,Y+9\r
+       ldd r25,Y+10\r
+       sbiw r24,0\r
+       brne .+2\r
+       rjmp .L18\r
+       ldd r24,Y+9\r
+       ldd r25,Y+10\r
+       ldd r18,Y+1\r
+       ldd r19,Y+2\r
+       sub r24,r18\r
+       sbc r25,r19\r
+       cpi r24,4\r
+       cpc r25,__zero_reg__\r
+       brsh .L19\r
+       ldd r24,Y+9\r
+       ldd r25,Y+10\r
+       std Y+1,r24\r
+       std Y+2,r25\r
+.L19:\r
+       lds r24,flp\r
+       lds r25,(flp)+1\r
+       std Y+3,r24\r
+       std Y+4,r25\r
+       std Y+5,__zero_reg__\r
+       std Y+6,__zero_reg__\r
+.L20:\r
+       ldd r24,Y+3\r
+       ldd r25,Y+4\r
+       sbiw r24,0\r
+       brne .L23\r
+       rjmp .L18\r
+.L23:\r
+       ldd r30,Y+3\r
+       ldd r31,Y+4\r
+       ld r18,Z\r
+       ldd r19,Z+1\r
+       ldd r24,Y+9\r
+       ldd r25,Y+10\r
+       cp r18,r24\r
+       cpc r19,r25\r
+       breq .+2\r
+       rjmp .L22\r
+       ldd r18,Y+1\r
+       ldd r19,Y+2\r
+       ldd r24,Y+9\r
+       ldd r25,Y+10\r
+       cp r18,r24\r
+       cpc r19,r25\r
+       brne .L25\r
+       ldd r24,Y+5\r
+       ldd r25,Y+6\r
+       sbiw r24,0\r
+       breq .L26\r
+       ldd r24,Y+5\r
+       ldd r25,Y+6\r
+       std Y+13,r24\r
+       std Y+14,r25\r
+       ldd r26,Y+3\r
+       ldd r27,Y+4\r
+       mov r31,r27\r
+       mov r30,r26\r
+       ldd r24,Z+2\r
+       ldd r25,Z+3\r
+       ldd r30,Y+13\r
+       ldd r31,Y+14\r
+       std Z+2,r24\r
+       std Z+3,r25\r
+       rjmp .L27\r
+.L26:\r
+       ldd r30,Y+3\r
+       ldd r31,Y+4\r
+       ldd r24,Z+2\r
+       ldd r25,Z+3\r
+       sts (flp)+1,r25\r
+       sts flp,r24\r
+.L27:\r
+       ldd r24,Y+3\r
+       ldd r25,Y+4\r
+       adiw r24,2\r
+       std Y+11,r24\r
+       std Y+12,r25\r
+       rjmp .L6\r
+.L25:\r
+       ldd r24,Y+3\r
+       ldd r25,Y+4\r
+       std Y+7,r24\r
+       std Y+8,r25\r
+       ldd r18,Y+9\r
+       ldd r19,Y+10\r
+       ldd r24,Y+1\r
+       ldd r25,Y+2\r
+       sub r18,r24\r
+       sbc r19,r25\r
+       mov r25,r19\r
+       mov r24,r18\r
+       std Y+9,r24\r
+       std Y+10,r25\r
+       ldd r18,Y+7\r
+       ldd r19,Y+8\r
+       ldd r24,Y+9\r
+       ldd r25,Y+10\r
+       add r24,r18\r
+       adc r25,r19\r
+       std Y+7,r24\r
+       std Y+8,r25\r
+       ldd r24,Y+7\r
+       ldd r25,Y+8\r
+       std Y+5,r24\r
+       std Y+6,r25\r
+       ldd r30,Y+5\r
+       ldd r31,Y+6\r
+       ldd r24,Y+1\r
+       ldd r25,Y+2\r
+       st Z,r24\r
+       std Z+1,r25\r
+       ldd r30,Y+3\r
+       ldd r31,Y+4\r
+       ldd r24,Y+9\r
+       ldd r25,Y+10\r
+       sbiw r24,2\r
+       st Z,r24\r
+       std Z+1,r25\r
+       ldd r24,Y+5\r
+       ldd r25,Y+6\r
+       adiw r24,2\r
+       std Y+11,r24\r
+       std Y+12,r25\r
+       rjmp .L6\r
+.L22:\r
+       ldd r24,Y+3\r
+       ldd r25,Y+4\r
+       std Y+5,r24\r
+       std Y+6,r25\r
+       ldd r30,Y+3\r
+       ldd r31,Y+4\r
+       ldd r24,Z+2\r
+       ldd r25,Z+3\r
+       std Y+3,r24\r
+       std Y+4,r25\r
+       rjmp .L20\r
+.L18:\r
+       lds r24,brkval\r
+       lds r25,(brkval)+1\r
+       sbiw r24,0\r
+       brne .L28\r
+       lds r24,__malloc_heap_start\r
+       lds r25,(__malloc_heap_start)+1\r
+       sts (brkval)+1,r25\r
+       sts brkval,r24\r
+.L28:\r
+       lds r24,__malloc_heap_end\r
+       lds r25,(__malloc_heap_end)+1\r
+       std Y+7,r24\r
+       std Y+8,r25\r
+       ldd r24,Y+7\r
+       ldd r25,Y+8\r
+       sbiw r24,0\r
+       brne .L29\r
+       lds r24,93\r
+       mov r18,r24\r
+       clr r19\r
+       lds r24,__malloc_margin\r
+       lds r25,(__malloc_margin)+1\r
+       sub r18,r24\r
+       sbc r19,r25\r
+       mov r25,r19\r
+       mov r24,r18\r
+       std Y+7,r24\r
+       std Y+8,r25\r
+.L29:\r
+       lds r18,brkval\r
+       lds r19,(brkval)+1\r
+       ldd r24,Y+1\r
+       ldd r25,Y+2\r
+       add r24,r18\r
+       adc r25,r19\r
+       mov r18,r24\r
+       mov r19,r25\r
+       subi r18,lo8(-(2))\r
+       sbci r19,hi8(-(2))\r
+       ldd r24,Y+7\r
+       ldd r25,Y+8\r
+       cp r18,r24\r
+       cpc r19,r25\r
+       brsh .L30\r
+       lds r24,brkval\r
+       lds r25,(brkval)+1\r
+       std Y+3,r24\r
+       std Y+4,r25\r
+       lds r18,brkval\r
+       lds r19,(brkval)+1\r
+       ldd r24,Y+1\r
+       ldd r25,Y+2\r
+       add r24,r18\r
+       adc r25,r19\r
+       adiw r24,2\r
+       sts (brkval)+1,r25\r
+       sts brkval,r24\r
+       ldd r30,Y+3\r
+       ldd r31,Y+4\r
+       ldd r24,Y+1\r
+       ldd r25,Y+2\r
+       st Z,r24\r
+       std Z+1,r25\r
+       ldd r24,Y+3\r
+       ldd r25,Y+4\r
+       adiw r24,2\r
+       std Y+11,r24\r
+       std Y+12,r25\r
+       rjmp .L6\r
+.L30:\r
+       std Y+11,__zero_reg__\r
+       std Y+12,__zero_reg__\r
+.L6:\r
+       ldd r24,Y+11\r
+       ldd r25,Y+12\r
+/* epilogue: frame size=14 */\r
+       adiw r28,14\r
+       in __tmp_reg__,__SREG__\r
+       cli\r
+       out __SP_H__,r29\r
+       out __SREG__,__tmp_reg__\r
+       out __SP_L__,r28\r
+       pop r29\r
+       pop r28\r
+       ret\r
+/* epilogue end (size=9) */\r
+/* function malloc size 354 (335) */\r
+       .size   malloc, .-malloc\r
+.global        free\r
+       .type   free, @function\r
+free:\r
+/* prologue: frame size=14 */\r
+       push r28\r
+       push r29\r
+       in r28,__SP_L__\r
+       in r29,__SP_H__\r
+       sbiw r28,14\r
+       in __tmp_reg__,__SREG__\r
+       cli\r
+       out __SP_H__,r29\r
+       out __SREG__,__tmp_reg__\r
+       out __SP_L__,r28\r
+/* prologue end (size=10) */\r
+       std Y+1,r24\r
+       std Y+2,r25\r
+       ldd r24,Y+1\r
+       ldd r25,Y+2\r
+       sbiw r24,0\r
+       brne .L32\r
+       rjmp .L31\r
+.L32:\r
+       ldd r24,Y+1\r
+       ldd r25,Y+2\r
+       std Y+13,r24\r
+       std Y+14,r25\r
+       ldd r24,Y+13\r
+       ldd r25,Y+14\r
+       sbiw r24,2\r
+       std Y+13,r24\r
+       std Y+14,r25\r
+       ldd r24,Y+13\r
+       ldd r25,Y+14\r
+       std Y+7,r24\r
+       std Y+8,r25\r
+       ldd r30,Y+7\r
+       ldd r31,Y+8\r
+       std Z+2,__zero_reg__\r
+       std Z+3,__zero_reg__\r
+       lds r24,flp\r
+       lds r25,(flp)+1\r
+       sbiw r24,0\r
+       brne .L33\r
+       ldd r24,Y+7\r
+       ldd r25,Y+8\r
+       sts (flp)+1,r25\r
+       sts flp,r24\r
+       rjmp .L31\r
+.L33:\r
+       lds r24,flp\r
+       lds r25,(flp)+1\r
+       std Y+3,r24\r
+       std Y+4,r25\r
+       std Y+5,__zero_reg__\r
+       std Y+6,__zero_reg__\r
+.L34:\r
+       ldd r24,Y+3\r
+       ldd r25,Y+4\r
+       sbiw r24,0\r
+       brne .L37\r
+       rjmp .L35\r
+.L37:\r
+       ldd r18,Y+3\r
+       ldd r19,Y+4\r
+       ldd r24,Y+7\r
+       ldd r25,Y+8\r
+       cp r18,r24\r
+       cpc r19,r25\r
+       brsh .L38\r
+       rjmp .L36\r
+.L38:\r
+       ldd r24,Y+3\r
+       ldd r25,Y+4\r
+       std Y+9,r24\r
+       std Y+10,r25\r
+       ldd r30,Y+7\r
+       ldd r31,Y+8\r
+       ldd r24,Y+3\r
+       ldd r25,Y+4\r
+       std Z+2,r24\r
+       std Z+3,r25\r
+       ldd r30,Y+7\r
+       ldd r31,Y+8\r
+       ldd r18,Y+7\r
+       ldd r19,Y+8\r
+       ld r24,Z\r
+       ldd r25,Z+1\r
+       add r24,r18\r
+       adc r25,r19\r
+       mov r18,r24\r
+       mov r19,r25\r
+       subi r18,lo8(-(2))\r
+       sbci r19,hi8(-(2))\r
+       ldd r24,Y+9\r
+       ldd r25,Y+10\r
+       cp r18,r24\r
+       cpc r19,r25\r
+       brne .L39\r
+       ldd r20,Y+7\r
+       ldd r21,Y+8\r
+       ldd r30,Y+7\r
+       ldd r31,Y+8\r
+       ldd r26,Y+3\r
+       ldd r27,Y+4\r
+       ld r18,Z\r
+       ldd r19,Z+1\r
+       ld r24,X+\r
+       ld r25,X\r
+       add r24,r18\r
+       adc r25,r19\r
+       adiw r24,2\r
+       mov r31,r21\r
+       mov r30,r20\r
+       st Z,r24\r
+       std Z+1,r25\r
+       ldd r26,Y+7\r
+       ldd r27,Y+8\r
+       ldd r30,Y+3\r
+       ldd r31,Y+4\r
+       ldd r24,Z+2\r
+       ldd r25,Z+3\r
+       mov r31,r27\r
+       mov r30,r26\r
+       std Z+2,r24\r
+       std Z+3,r25\r
+.L39:\r
+       ldd r24,Y+5\r
+       ldd r25,Y+6\r
+       sbiw r24,0\r
+       brne .L35\r
+       ldd r24,Y+7\r
+       ldd r25,Y+8\r
+       sts (flp)+1,r25\r
+       sts flp,r24\r
+       rjmp .L31\r
+.L36:\r
+       ldd r24,Y+3\r
+       ldd r25,Y+4\r
+       std Y+5,r24\r
+       std Y+6,r25\r
+       ldd r30,Y+3\r
+       ldd r31,Y+4\r
+       ldd r24,Z+2\r
+       ldd r25,Z+3\r
+       std Y+3,r24\r
+       std Y+4,r25\r
+       rjmp .L34\r
+.L35:\r
+       ldd r30,Y+5\r
+       ldd r31,Y+6\r
+       ldd r24,Y+7\r
+       ldd r25,Y+8\r
+       std Z+2,r24\r
+       std Z+3,r25\r
+       ldd r24,Y+5\r
+       ldd r25,Y+6\r
+       adiw r24,2\r
+       std Y+11,r24\r
+       std Y+12,r25\r
+       ldd r30,Y+5\r
+       ldd r31,Y+6\r
+       ldd r18,Y+11\r
+       ldd r19,Y+12\r
+       ld r24,Z\r
+       ldd r25,Z+1\r
+       add r18,r24\r
+       adc r19,r25\r
+       ldd r24,Y+13\r
+       ldd r25,Y+14\r
+       cp r18,r24\r
+       cpc r19,r25\r
+       brne .L31\r
+       ldd r20,Y+5\r
+       ldd r21,Y+6\r
+       ldd r30,Y+5\r
+       ldd r31,Y+6\r
+       ldd r26,Y+7\r
+       ldd r27,Y+8\r
+       ld r18,Z\r
+       ldd r19,Z+1\r
+       ld r24,X+\r
+       ld r25,X\r
+       add r24,r18\r
+       adc r25,r19\r
+       adiw r24,2\r
+       mov r31,r21\r
+       mov r30,r20\r
+       st Z,r24\r
+       std Z+1,r25\r
+       ldd r26,Y+5\r
+       ldd r27,Y+6\r
+       ldd r30,Y+7\r
+       ldd r31,Y+8\r
+       ldd r24,Z+2\r
+       ldd r25,Z+3\r
+       mov r31,r27\r
+       mov r30,r26\r
+       std Z+2,r24\r
+       std Z+3,r25\r
+.L31:\r
+/* epilogue: frame size=14 */\r
+       adiw r28,14\r
+       in __tmp_reg__,__SREG__\r
+       cli\r
+       out __SP_H__,r29\r
+       out __SREG__,__tmp_reg__\r
+       out __SP_L__,r28\r
+       pop r29\r
+       pop r28\r
+       ret\r
+/* epilogue end (size=9) */\r
+/* function free size 204 (185) */\r
+       .size   free, .-free\r
+       .lcomm brkval,2\r
+       .lcomm flp,2\r
+/* File "malloc.c": code  558 = 0x022e ( 520), prologues  20, epilogues  18 */\r
diff --git a/src/avrsample/libc/memset.S b/src/avrsample/libc/memset.S
new file mode 100644 (file)
index 0000000..cc049cf
--- /dev/null
@@ -0,0 +1,78 @@
+/* Copyright (c) 2002, Marek Michalkiewicz
+   All rights reserved.
+
+   Redistribution and use in source and binary forms, with or without
+   modification, are permitted provided that the following conditions are met:
+
+   * Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+   * Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in
+     the documentation and/or other materials provided with the
+     distribution.
+   * Neither the name of the copyright holders nor the names of
+     contributors may be used to endorse or promote products derived
+     from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+  POSSIBILITY OF SUCH DAMAGE. */
+
+#include "macros.inc"
+
+#define dest_hi r25
+#define dest_lo r24
+; #define val_hi r23
+#define val_lo r22
+#define len_hi r21
+#define len_lo r20
+
+/** \ingroup avr_string
+    \fn void *memset(void *dest, int val, size_t len)
+    \brief Fill memory with a constant byte.
+
+    The memset() function fills the first len bytes of the memory area pointed
+    to by dest with the constant byte val.
+
+    \returns The memset() function returns a pointer to the memory area dest. */
+
+       .text
+       .global _U(memset)
+       .type   _U(memset), @function
+_U(memset):
+       LOAD_X(dest_lo, dest_hi)
+#if OPTIMIZE_SPEED
+; 11 words, (12 + len * 4 - (len & 1)) cycles
+       sbrs    len_lo, 0
+       rjmp    .memset_start
+       rjmp    .memset_odd
+.memset_loop:
+       st      X+, val_lo
+.memset_odd:
+       st      X+, val_lo
+.memset_start:
+       subi    len_lo, lo8(2)
+       sbci    len_hi, hi8(2)
+#else
+; 8 words, (11 + len * 6) cycles
+       rjmp    .memset_start
+.memset_loop:
+       st      X+, val_lo
+.memset_start:
+       subi    len_lo, lo8(1)
+       sbci    len_hi, hi8(1)
+#endif
+       brcc    .memset_loop
+; return dest (unchanged)
+       ret
+.memset_end:
+       .size   _U(memset), .memset_end - _U(memset)
+
diff --git a/src/avrsample/libc/memset.i b/src/avrsample/libc/memset.i
new file mode 100644 (file)
index 0000000..f05cb50
--- /dev/null
@@ -0,0 +1,86 @@
+# 1 "memset.S"\r
+# 1 "<built-in>"\r
+# 1 "<command line>"\r
+# 1 "memset.S"\r
+# 29 "memset.S"\r
+# 1 "macros.inc" 1\r
+# 33 "macros.inc"\r
+# 1 "c:/WinAVR/avr/include/avr/io.h" 1 3\r
+# 81 "c:/WinAVR/avr/include/avr/io.h" 3\r
+# 1 "c:/WinAVR/avr/include/avr/sfr_defs.h" 1 3\r
+# 82 "c:/WinAVR/avr/include/avr/io.h" 2 3\r
+# 197 "c:/WinAVR/avr/include/avr/io.h" 3\r
+# 1 "c:/WinAVR/avr/include/avr/io4433.h" 1 3\r
+# 198 "c:/WinAVR/avr/include/avr/io.h" 2 3\r
+# 34 "macros.inc" 2\r
+# 124 "macros.inc"\r
+        .macro X_movw dest src\r
+                .if ((\src) - (\dest))\r
+                        .if (((\src) | (\dest)) & 0x01)\r
+                                .if (((\src)-(\dest)) & 0x80)\r
+                                        mov (\dest)+1, (\src)+1\r
+                                        mov (\dest), (\src)\r
+                                .else\r
+                                        mov (\dest), (\src)\r
+                                        mov (\dest)+1, (\src)+1\r
+                                .endif\r
+                        .else\r
+\r
+\r
+\r
+                                mov (\dest), (\src)\r
+                                mov (\dest)+1, (\src)+1\r
+\r
+                        .endif\r
+                .endif\r
+        .endm\r
+# 176 "macros.inc"\r
+        .macro LPM_R0_ZPLUS_INIT hhi\r
+\r
+\r
+\r
+\r
+\r
+        .endm\r
+\r
+        .macro LPM_R0_ZPLUS_NEXT hhi\r
+# 202 "macros.inc"\r
+        lpm\r
+        adiw r30,1\r
+\r
+\r
+        .endm\r
+\r
+        .macro LPM_R0_ZP\r
+\r
+\r
+\r
+        lpm\r
+        adiw r30,1\r
+\r
+        .endm\r
+# 30 "memset.S" 2\r
+\r
+\r
+\r
+; #define val_hi r23\r
+# 47 "memset.S"\r
+        .text\r
+        .global memset\r
+        .type memset, @function\r
+memset:\r
+        mov r26, r24 $ mov r27, r25\r
+# 65 "memset.S"\r
+; 8 words, (11 + len * 6) cycles\r
+        rjmp .memset_start\r
+.memset_loop:\r
+        st X+, r22\r
+.memset_start:\r
+        subi r20, lo8(1)\r
+        sbci r21, hi8(1)\r
+\r
+        brcc .memset_loop\r
+; return dest (unchanged)\r
+        ret\r
+.memset_end:\r
+        .size memset, .memset_end - memset\r
diff --git a/src/avrsample/libc/stdio_private.h b/src/avrsample/libc/stdio_private.h
new file mode 100644 (file)
index 0000000..16a8fbe
--- /dev/null
@@ -0,0 +1,67 @@
+/* Copyright (c) 2002, Joerg Wunsch
+   All rights reserved.
+
+   Redistribution and use in source and binary forms, with or without
+   modification, are permitted provided that the following conditions are met:
+
+   * Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+   * Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in
+     the documentation and/or other materials provided with the
+     distribution.
+   * Neither the name of the copyright holders nor the names of
+     contributors may be used to endorse or promote products derived
+     from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+  POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/* $Id: stdio_private.h,v 1.6 2003/01/07 22:17:24 joerg_wunsch Exp $ */
+
+#include <inttypes.h>
+#include <stdio.h>
+
+struct __file {
+       char    *buf;           /* buffer pointer */
+       unsigned char unget;    /* ungetc() buffer */
+       uint8_t flags;          /* flags, see below */
+#define __SRD  0x0001          /* OK to read */
+#define __SWR  0x0002          /* OK to write */
+#define __SSTR 0x0004          /* this is an sprintf/snprintf string */
+#define __SPGM 0x0008          /* fmt string is in progmem */
+#define __SERR 0x0010          /* found error */
+#define __SEOF 0x0020          /* found EOF */
+#define __SUNGET 0x040         /* ungetc() happened */
+#if 0
+/* possible future extensions, will require uint16_t flags */
+#define __SRW  0x0080          /* open for reading & writing */
+#define __SLBF 0x0100          /* line buffered */
+#define __SNBF 0x0200          /* unbuffered */
+#define __SMBF 0x0400          /* buf is from malloc */
+#endif
+       int     size;           /* size of buffer */
+       int     len;            /* characters read or written so far */
+       int     (*put)(char);   /* function to write one char to device */
+       int     (*get)(void);   /* function to read one char from device */
+};
+
+/* values for PRINTF_LEVEL */
+#define PRINTF_MIN 1
+#define PRINTF_STD 2
+#define PRINTF_FLT 3
+
+/* values for SCANF_LEVEL */
+#define SCANF_MIN 1
+#define SCANF_STD 2
+#define SCANF_FLT 3
diff --git a/src/avrsample/makefile b/src/avrsample/makefile
new file mode 100644 (file)
index 0000000..eda5bc8
--- /dev/null
@@ -0,0 +1,39 @@
+# Simple Makefile\r
+# Volker Oth (c) 1999\r
+\r
+\r
+########### change this lines according to your project ##################\r
+\r
+#put the name of the target mcu here (at90s8515, at90s8535, attiny22, atmega603 etc.)\r
+    MCU = at90s4433\r
+\r
+#put the name of the target file here (without extension)\r
+       TRG     = hello\r
+\r
+#put your C sourcefiles here \r
+#      SRC     = uart.c $(TRG).c\r
+       SRC     = $(TRG).c\r
+\r
+#put additional assembler source file here\r
+       ASRC    =\r
+\r
+#additional libraries and object files to link\r
+       LIB = \r
+\r
+#additional includes to compile\r
+       INC     = \r
+\r
+#compiler flags\r
+#      CPFLAGS = -g -O2 -Wall -Wstrict-prototypes -Wa,-ahlms=$(<:.c=.lst)\r
+       CPFLAGS = -g -Wall -Wstrict-prototypes -Wa,-ahlms=$(<:.c=.lst)\r
+\r
+#linker flags\r
+       LDFLAGS = -Wl,-Map=$(TRG).map,--cref\r
+\r
+########### you should not need to change the following line #############\r
+include avr_make\r
+                 \r
+###### dependecies, add any dependencies you need here ###################\r
+\r
+#uart.o     : uart.c uart.h\r
+$(TRG).o    : $(TRG).c\r
diff --git a/src/avrsample/makefile% b/src/avrsample/makefile%
new file mode 100644 (file)
index 0000000..911d00a
--- /dev/null
@@ -0,0 +1,39 @@
+# Simple Makefile\r
+# Volker Oth (c) 1999\r
+\r
+\r
+########### change this lines according to your project ##################\r
+\r
+#put the name of the target mcu here (at90s8515, at90s8535, attiny22, atmega603 etc.)\r
+    MCU = at90s4433\r
+\r
+#put the name of the target file here (without extension)\r
+       TRG     = hello\r
+\r
+#put your C sourcefiles here \r
+#      SRC     = uart.c $(TRG).c\r
+       SRC     = $(TRG).c\r
+\r
+#put additional assembler source file here\r
+       ASRC    =\r
+\r
+#additional libraries and object files to link\r
+       LIB = \r
+\r
+#additional includes to compile\r
+       INC     = \r
+\r
+#compiler flags\r
+#      CPFLAGS = -g -O2 -Wall -Wstrict-prototypes -Wa,-ahlms=$(<:.c=.lst)\r
+       CPFLAGS = -g -O2 -Wall -Wstrict-prototypes -Wa,-ahlms=$(<:.c=.lst)\r
+\r
+#linker flags\r
+       LDFLAGS = -Wl,-Map=$(TRG).map,--cref\r
+\r
+########### you should not need to change the following line #############\r
+include avr_make\r
+                 \r
+###### dependecies, add any dependencies you need here ###################\r
+\r
+#uart.o     : uart.c uart.h\r
+$(TRG).o    : $(TRG).c\r
diff --git a/src/avrsample/n.bat b/src/avrsample/n.bat
new file mode 100644 (file)
index 0000000..2ecd204
--- /dev/null
@@ -0,0 +1,2 @@
+avr-gcc -mmcu=at90s4433 -Wa,-a=nick -Wl,--oformat,ihex,-M hello.c -o hello.hex > hello.map
+copy hello.hex a:\
diff --git a/src/avrsample/n.sh b/src/avrsample/n.sh
new file mode 100644 (file)
index 0000000..556d777
--- /dev/null
@@ -0,0 +1,2 @@
+#!/bin/sh
+avr-gcc -mmcu=at90s4433 -Wl,--oformat,ihex hello.c -o hello.hex
diff --git a/src/avrsample/nick b/src/avrsample/nick
new file mode 100644 (file)
index 0000000..2ab5e80
--- /dev/null
@@ -0,0 +1,123 @@
+GAS LISTING C:\cygwin\tmp/ccmeaaaa.s                   page 1\r
+\r
+\r
+   1                           .file   "gcctest7.c"\r
+   2                           .arch at90s4433\r
+   3                   __SREG__ = 0x3f\r
+   4                   __SP_H__ = 0x3e\r
+   5                   __SP_L__ = 0x3d\r
+   6                   __tmp_reg__ = 0\r
+   7                   __zero_reg__ = 1\r
+   8                           .global __do_copy_data\r
+   9                           .global __do_clear_bss\r
+  10                           .section        .progmem.data,"a",@progbits\r
+  11                           .type   __c.0, @object\r
+  12                           .size   __c.0, 14\r
+  13                   __c.0:\r
+  14 0000 4865 6C6C            .string "Hello World !"\r
+  14      6F20 576F \r
+  14      726C 6420 \r
+  14      2100 \r
+  15                           .type   __c.1, @object\r
+  16                           .size   __c.1, 17\r
+  17                   __c.1:\r
+  18 000e 5072 6573            .string "Press any key..."\r
+  18      7320 616E \r
+  18      7920 6B65 \r
+  18      792E 2E2E \r
+  18      00\r
+  19                           .type   __c.2, @object\r
+  20                           .size   __c.2, 14\r
+  21                   __c.2:\r
+  22 001f 596F 7520            .string "You pressed '"\r
+  22      7072 6573 \r
+  22      7365 6420 \r
+  22      2700 \r
+  23                           .type   __c.3, @object\r
+  24                           .size   __c.3, 14\r
+  25                   __c.3:\r
+  26 002d 2720 7768            .string "' which is 0x"\r
+  26      6963 6820 \r
+  26      6973 2030 \r
+  26      7800 \r
+  27                           .type   __c.4, @object\r
+  28                           .size   __c.4, 17\r
+  29                   __c.4:\r
+  30 003b 2069 6E20            .string " in hexadecimal."\r
+  30      6865 7861 \r
+  30      6465 6369 \r
+  30      6D61 6C2E \r
+  30      00\r
+  31                           .text\r
+  32                   .global main\r
+  33                           .type   main, @function\r
+  34                   main:\r
+  35                   /* prologue: frame size=1 */\r
+  36 0000 C0E0                 ldi r28,lo8(__stack - 1)\r
+  37 0002 D0E0                 ldi r29,hi8(__stack - 1)\r
+  38 0004 DEBF                 out __SP_H__,r29\r
+  39 0006 CDBF                 out __SP_L__,r28\r
+  40                   /* prologue end (size=4) */\r
+\fGAS LISTING C:\cygwin\tmp/ccmeaaaa.s                  page 2\r
+\r
+\r
+  41 0008 00D0                 rcall UART_Init\r
+  42 000a 80E0                 ldi r24,lo8(__c.0)\r
+  43 000c 90E0                 ldi r25,hi8(__c.0)\r
+  44 000e 00D0                 rcall UART_PrintfProgStr\r
+  45 0010 00D0                 rcall UART_PrintfEndOfLine\r
+  46                   .L3:\r
+  47 0012 80E0                 ldi r24,lo8(__c.1)\r
+  48 0014 90E0                 ldi r25,hi8(__c.1)\r
+  49 0016 00D0                 rcall UART_PrintfProgStr\r
+  50 0018 00D0                 rcall UART_PrintfEndOfLine\r
+  51 001a 00D0                 rcall UART_ReceiveByte\r
+  52 001c 8983                 std Y+1,r24\r
+  53 001e 80E0                 ldi r24,lo8(__c.2)\r
+  54 0020 90E0                 ldi r25,hi8(__c.2)\r
+  55 0022 00D0                 rcall UART_PrintfProgStr\r
+  56 0024 8981                 ldd r24,Y+1\r
+  57 0026 00D0                 rcall UART_SendByte\r
+  58 0028 80E0                 ldi r24,lo8(__c.3)\r
+  59 002a 90E0                 ldi r25,hi8(__c.3)\r
+  60 002c 00D0                 rcall UART_PrintfProgStr\r
+  61 002e 8981                 ldd r24,Y+1\r
+  62 0030 00D0                 rcall UART_Printfu08\r
+  63 0032 80E0                 ldi r24,lo8(__c.4)\r
+  64 0034 90E0                 ldi r25,hi8(__c.4)\r
+  65 0036 00D0                 rcall UART_PrintfProgStr\r
+  66 0038 00D0                 rcall UART_PrintfEndOfLine\r
+  67 003a EBCF                 rjmp .L3\r
+  68                   /* epilogue: frame size=1 */\r
+  69                   /* epilogue: noreturn */\r
+  70                   /* epilogue end (size=0) */\r
+  71                   /* function main size 30 (26) */\r
+  72                           .size   main, .-main\r
+  73                   /* File "gcctest7.c": code   30 = 0x001e (  26), prologues   4, epilogues   0 */\r
+\fGAS LISTING C:\cygwin\tmp/ccmeaaaa.s                  page 3\r
+\r
+\r
+DEFINED SYMBOLS\r
+                            *ABS*:00000000 gcctest7.c\r
+                            *ABS*:0000003f __SREG__\r
+                            *ABS*:0000003e __SP_H__\r
+                            *ABS*:0000003d __SP_L__\r
+                            *ABS*:00000000 __tmp_reg__\r
+                            *ABS*:00000001 __zero_reg__\r
+C:\cygwin\tmp/ccmeaaaa.s:13     .progmem.data:00000000 __c.0\r
+C:\cygwin\tmp/ccmeaaaa.s:17     .progmem.data:0000000e __c.1\r
+C:\cygwin\tmp/ccmeaaaa.s:21     .progmem.data:0000001f __c.2\r
+C:\cygwin\tmp/ccmeaaaa.s:25     .progmem.data:0000002d __c.3\r
+C:\cygwin\tmp/ccmeaaaa.s:29     .progmem.data:0000003b __c.4\r
+C:\cygwin\tmp/ccmeaaaa.s:34     .text:00000000 main\r
+\r
+UNDEFINED SYMBOLS\r
+__do_copy_data\r
+__do_clear_bss\r
+__stack\r
+UART_Init\r
+UART_PrintfProgStr\r
+UART_PrintfEndOfLine\r
+UART_ReceiveByte\r
+UART_SendByte\r
+UART_Printfu08\r
diff --git a/src/avrsample/out.s b/src/avrsample/out.s
new file mode 100644 (file)
index 0000000..b4b3ac8
--- /dev/null
@@ -0,0 +1,187 @@
+#arch AT90S8515
+#include "avr.inc"
+
+       seg abs=0x0 flash.code0
+
+       add     r12, r16        ; 0000
+       eor     r12, r16        ; 0002
+       eor     r28, r0         ; 0004
+       eor     r12, r0         ; 0006
+       and     r28, r16        ; 0008
+       and     r12, r16        ; 000A
+       and     r28, r0         ; 000C
+       and     r12, r0         ; 000E
+       adc     r28, r16        ; 0010
+       adc     r12, r16        ; 0012
+       adc     r28, r0         ; 0014
+       adc     r12, r0         ; 0016
+       sub     r28, r16        ; 0018
+       sub     r12, r16        ; 001A
+       cpse    r18, r4         ; 001C
+       adc     r27, r30        ; 001E
+       rjmp    -38             ; 0020, Dest: FFFFFFFC
+       rjmp    -1154           ; 0022, Dest: FFFFFBA2
+       cpse    r6, r0          ; 0024
+       dc.W    0x00E1          ; 0026
+       in      r6, 0x0         ; 0028
+       or      r14, r2         ; 002A
+
+       brbs    0, 120          ; 002C, Dest: 00A6
+       ;brcs   120             ; 002C, Dest: 00A6
+       ;brlo   120             ; 002C, Dest: 00A6
+
+       dc.W    0x03C0          ; 002E
+       rjmp    -3798           ; 0030, Dest: FFFFF15C
+       cpi     r25, 0x16       ; 0032
+       add     r25, r2         ; 0034
+       dc.W    0x0231          ; 0036
+       in      r16, 0x7        ; 0038
+       rcall   1006            ; 003A, Dest: 042A
+       cpse    r6, r0          ; 003C
+       dc.W    0x02E1          ; 003E
+       in      r6, 0x0         ; 0040
+       dc.W    0x01C0          ; 0042
+       adc     r25, r2         ; 0044
+       dc.W    0x0231          ; 0046
+       in      r16, 0x7        ; 0048
+       ldi     r31, 0x17       ; 004A
+
+       ori     r28, 0xB0       ; 004C
+       ;sbr    r28, 0xB0       ; 004C
+
+       rcall   -3170           ; 004E, Dest: FFFFF3EE
+       rjmp    -218            ; 0050, Dest: FFFFFF78
+       rcall   -218            ; 0052, Dest: FFFFFF7A
+       rjmp    -1170           ; 0054, Dest: FFFFFBC4
+       rcall   -658            ; 0056, Dest: FFFFFDC6
+       and     r25, r23        ; 0058
+       add     r27, r22        ; 005A
+       bld     r9, 4           ; 005C
+       rcall   -642            ; 005E, Dest: FFFFFDDE
+       add     r27, r30        ; 0060
+       rjmp    -1154           ; 0062, Dest: FFFFFBE2
+       ldd     r24, Z+19       ; 0064
+       sbi     0x10, 3         ; 0066
+       ldd     r24, Z+17       ; 0068
+       sbi     0x10, 1         ; 006A
+       dc.W    0xF92F          ; 006C
+       ldi     r18, 0x8F       ; 006E
+       and     r8, r1          ; 0070
+       or      r24, r19        ; 0072
+       dc.W    0x0196          ; 0074
+       ldd     r24, Z+19       ; 0076
+       sbi     0x10, 3         ; 0078
+       and     r2, r19         ; 007A
+       sbc     r31, r4         ; 007C
+       dc.W    0x03C0          ; 007E
+       std     Z+17, r24       ; 0080
+       add     r13, r0         ; 0082
+
+       brbs    7, 114          ; 0084, Dest: 00F8
+       ;brie   114             ; 0084, Dest: 00F8
+
+       ld      r14, Z          ; 0086
+       ;ldd    r14, Z+0        ; 0086
+
+       lds     r14, 0x2396     ; 0088
+       add     r27, r22        ; 008C
+       bld     r9, 4           ; 008E
+       rcall   -642            ; 0090, Dest: FFFFFE10
+       add     r27, r30        ; 0092
+       rjmp    -1154           ; 0094, Dest: FFFFFC14
+       rcall   -222            ; 0096, Dest: FFFFFFBA
+       rjmp    -222            ; 0098, Dest: FFFFFFBC
+       sbc     r9, r5          ; 009A
+       rjmp    -218            ; 009C, Dest: FFFFFFC4
+       rcall   -218            ; 009E, Dest: FFFFFFC6
+       rjmp    -1170           ; 00A0, Dest: FFFFFC10
+       rcall   -658            ; 00A2, Dest: FFFFFE12
+       and     r25, r7         ; 00A4
+       add     r27, r22        ; 00A6
+       bld     r9, 4           ; 00A8
+       rcall   -642            ; 00AA, Dest: FFFFFE2A
+       add     r27, r30        ; 00AC
+       rjmp    -1154           ; 00AE, Dest: FFFFFC2E
+       ldd     r24, Z+19       ; 00B0
+       ldd     r9, Z+1         ; 00B2
+       or      r16, r16        ; 00B4
+       sbic    0x4, 7          ; 00B6
+       ldd     r7, Z+2         ; 00B8
+       lds     r7, 0x0097      ; 00BA
+       rjmp    -3098           ; 00BE, Dest: FFFFF4A6
+       ldd     r24, Z+17       ; 00C0
+       ldd     r9, Z+3         ; 00C2
+       mov     r0, r0          ; 00C4
+
+       ld      r14, Z          ; 00C6
+       ;ldd    r14, Z+0        ; 00C6
+
+       lds     r14, 0x2196     ; 00C8
+       add     r27, r22        ; 00CC
+       bld     r9, 4           ; 00CE
+       rcall   -642            ; 00D0, Dest: FFFFFE50
+       add     r27, r30        ; 00D2
+       rjmp    -1154           ; 00D4, Dest: FFFFFC54
+       rcall   -222            ; 00D6, Dest: FFFFFFFA
+       rjmp    -222            ; 00D8, Dest: FFFFFFFC
+       sbc     r9, r5          ; 00DA
+       rjmp    -218            ; 00DC, Dest: 0004
+       rcall   -218            ; 00DE, Dest: 0006
+       rjmp    -1170           ; 00E0, Dest: FFFFFC50
+       rcall   -658            ; 00E2, Dest: FFFFFE52
+       and     r9, r23         ; 00E4
+       add     r27, r22        ; 00E6
+       bld     r9, 4           ; 00E8
+       rcall   -642            ; 00EA, Dest: FFFFFE6A
+       add     r27, r30        ; 00EC
+       rjmp    -1154           ; 00EE, Dest: FFFFFC6E
+       ldd     r9, Z+1         ; 00F0
+       or      r16, r16        ; 00F2
+       ldd     r2, Z+19        ; 00F4
+       mov     r15, r0         ; 00F6
+       std     Y+31, r30       ; 00F8
+       dc.W    0x9FEF          ; 00FA
+       ldd     r24, Z+19       ; 00FC
+       sbi     0x10, 3         ; 00FE
+       cpc     r28, r0         ; 0100
+       ldd     r9, Z+1         ; 0102
+       mov     r0, r0          ; 0104
+       sbic    0x4, 7          ; 0106
+       ldd     r24, Z+19       ; 0108
+       sbi     0x10, 3         ; 010A
+       ldd     r24, Z+17       ; 010C
+       sbi     0x10, 1         ; 010E
+       and     r9, r22         ; 0110
+       add     r27, r22        ; 0112
+       bld     r9, 4           ; 0114
+       rcall   -642            ; 0116, Dest: FFFFFE96
+       add     r27, r30        ; 0118
+       rjmp    -1154           ; 011A, Dest: FFFFFC9A
+       rcall   -222            ; 011C, Dest: 0040
+       rjmp    -222            ; 011E, Dest: 0042
+       sbc     r9, r5          ; 0120
+       dc.W    0x9FE1          ; 0122
+       rcall   448             ; 0124, Dest: 02E6
+       rcall   -642            ; 0126, Dest: FFFFFEA6
+       rjmp    -1154           ; 0128, Dest: FFFFFCA8
+
+       andi    r29, 0xDF       ; 012A
+       ;cbr    r29, 0xDF       ; 012A
+
+       ldd     r13, Y+23       ; 012C
+       ldd     r14, Z+4        ; 012E
+       ldd     r9, Z+3         ; 0130
+       or      r16, r16        ; 0132
+       ldd     r14, Z+17       ; 0134
+       ldd     r9, Z+3         ; 0136
+       or      r0, r16         ; 0138
+       std     Z+12, r30       ; 013A
+       ldd     r9, Z+3         ; 013C
+       or      r16, r0         ; 013E
+       ldi     r30, 0x0        ; 0140
+       lds     r6, 0x85DF      ; 0142
+       dc.W    0xFFCF          ; 0146
+
+       ori     r16, 0x10       ; 0148
+       ;sbr    r16, 0x10       ; 0148
+
diff --git a/src/avrsample/r.bat b/src/avrsample/r.bat
new file mode 100644 (file)
index 0000000..43c4d94
--- /dev/null
@@ -0,0 +1 @@
+revava -e hello.hex -o hello.s
diff --git a/src/avrsample/r.sh b/src/avrsample/r.sh
new file mode 100644 (file)
index 0000000..43c4d94
--- /dev/null
@@ -0,0 +1 @@
+revava -e hello.hex -o hello.s
diff --git a/src/avrsample/x.bat b/src/avrsample/x.bat
new file mode 100644 (file)
index 0000000..fbce676
--- /dev/null
@@ -0,0 +1 @@
+avr-gcc -mmcu=at90s4433 -S hello.c
diff --git a/src/bin/avr_make b/src/bin/avr_make
new file mode 100644 (file)
index 0000000..d4049a0
--- /dev/null
@@ -0,0 +1,63 @@
+# GCC-AVR standard makefile\r
+# Based on AVRfreaks.net January 2000 sample makefile\r
+# For compilation under Microsoft Windows environment\r
+\r
+# Variables definitions\r
+       CC      = avr-gcc\r
+       AS      = avr-gcc -x assembler-with-cpp \r
+       RM      = rm -f\r
+       RN      = mv\r
+       BIN     = avr-objcopy\r
+       SIZE    = avr-size\r
+       INCDIR  = .\r
+       LIBDIR  = avr/lib\r
+       SHELL   = sh.exe\r
+\r
+# Output format (srec or ihex, avrobj is always created)\r
+       FORMAT = ihex           \r
+\r
+# Project specific object files\r
+       OBJ     = $(ASRC:.s=.o) $(SRC:.c=.o) \r
+       CPFLAGS += -mmcu=$(MCU)\r
+       ASFLAGS += -mmcu=$(MCU)\r
+       LDFLAGS += -mmcu=$(MCU)\r
+  \r
+# Define make process\r
+\r
+all:   $(TRG).obj $(TRG).elf $(TRG).rom $(TRG).eep $(TRG).ok \r
+%.o : %.c \r
+       $(CC) -c $(CPFLAGS) -I$(INCDIR) $< -o $@\r
+%.s : %.c\r
+       $(CC) -S $(CPFLAGS) -I$(INCDIR) $< -o $@\r
+%.o : %.s\r
+       $(AS) -c $(ASFLAGS) -I$(INCDIR) $< -o $@\r
+%.elf: $(OBJ)\r
+       $(CC) $(OBJ) $(LIB) $(LDFLAGS) -o $@\r
+%.obj: %.elf\r
+       $(BIN) -O avrobj -R .eeprom $< $@\r
+%.rom: %.elf\r
+       $(BIN) -O $(FORMAT) -R .eeprom $< $@\r
+%.eep: %.elf\r
+       $(BIN) -j .eeprom --set-section-flags=.eeprom="alloc,load" section-lma .eeprom=0 -O $(FORMAT) $< $@\r
+\r
+# No error message if successfully compiled\r
+%ok:\r
+       @echo "Errors: none" \r
+\r
+# Clean up directory\r
+clean:\r
+       $(RM) $(OBJ)\r
+       $(RM) $(SRC:.c=.s)\r
+       $(RM) $(SRC:.c=.lst)\r
+       $(RM) $(TRG).map\r
+       $(RM) $(TRG).elf\r
+\r
+       $(RM) $(TRG).obj\r
+       $(RM) $(TRG).a90\r
+       $(RM) $(TRG).hex        \r
+       $(RM) *.bak\r
+       $(RM) *.log\r
+       \r
+size:\r
+       $(SIZE) $(TRG).elf\r
+       \r
diff --git a/src/bin/avr_make2 b/src/bin/avr_make2
new file mode 100644 (file)
index 0000000..3f64dad
--- /dev/null
@@ -0,0 +1,64 @@
+# GCC-AVR standard makefile\r
+# Based on AVRfreaks.net January 2000 sample makefile\r
+# For compilation under Microsoft Windows environment\r
+# Modified for compilation under another drive different than $(AVR)
+\r
+# Variables definitions\r
+       CC      = $(AVR)/bin/avr-gcc\r
+       AS      = $(AVR)/bin/avr-gcc -x assembler-with-cpp      \r
+       RM      = $(AVR)/bin/rm -f\r
+       RN      = $(AVR)/bin/mv\r
+       BIN     = $(AVR)/bin/avr-objcopy\r
+       SIZE    = $(AVR)/bin/avr-size\r
+       INCDIR  = .\r
+       LIBDIR  = $(AVR)/avr/lib\r
+       SHELL   = $(AVR)/bin/sh.exe\r
+\r
+# Output format (srec or ihex, avrobj is always created)\r
+       FORMAT = ihex           \r
+\r
+# Project specific object files\r
+       OBJ     = $(ASRC:.s=.o) $(SRC:.c=.o) \r
+       CPFLAGS += -mmcu=$(MCU)\r
+       ASFLAGS += -mmcu=$(MCU)\r
+       LDFLAGS += -mmcu=$(MCU)\r
+  \r
+# Define make process\r
+\r
+all:   $(TRG).obj $(TRG).elf $(TRG).rom $(TRG).eep $(TRG).ok \r
+%.o : %.c \r
+       $(CC) -c $(CPFLAGS) -I$(INCDIR) $< -o $@\r
+%.s : %.c\r
+       $(CC) -S $(CPFLAGS) -I$(INCDIR) $< -o $@\r
+%.o : %.s\r
+       $(AS) -c $(ASFLAGS) -I$(INCDIR) $< -o $@\r
+%.elf: $(OBJ)\r
+       $(CC) $(OBJ) $(LIB) $(LDFLAGS) -o $@\r
+%.obj: %.elf\r
+       $(BIN) -O avrobj -R .eeprom $< $@\r
+%.rom: %.elf\r
+       $(BIN) -O $(FORMAT) -R .eeprom $< $@\r
+%.eep: %.elf\r
+       $(BIN) -j .eeprom --set-section-flags=.eeprom="alloc,load" section-lma .eeprom=0 -O $(FORMAT) $< $@\r
+\r
+# No error message if successfully compiled\r
+%ok:\r
+       @echo "Errors: none" \r
+\r
+# Clean up directory\r
+clean:\r
+       $(RM) $(OBJ)\r
+       $(RM) $(SRC:.c=.s)\r
+       $(RM) $(SRC:.c=.lst)\r
+       $(RM) $(TRG).map\r
+       $(RM) $(TRG).elf\r
+\r
+       $(RM) $(TRG).obj\r
+       $(RM) $(TRG).a90\r
+       $(RM) $(TRG).hex        \r
+       $(RM) *.bak\r
+       $(RM) *.log\r
+       \r
+size:\r
+       $(SIZE) $(TRG).elf\r
+       \r
diff --git a/src/bin/revava.exe b/src/bin/revava.exe
new file mode 100644 (file)
index 0000000..0dce651
Binary files /dev/null and b/src/bin/revava.exe differ
index 751a22e..48cdda0 100644 (file)
@@ -1,11 +1,11 @@
 :020000040000FA\r
 :20000000C9A6020078563412140000810081B586688A689AD1ED53B586C1ED43B786E12299\r
-:13002000B98621CF6A3E00CD5E81EB2101473E01C35E8115\r
+:13002000B98621D86A3E00CD5E81EB2104453E01C35E810B\r
 :2005C900CD8881F8FF21060039EB218184010200EDB02AC0862323E50303C501B584C53E91\r
-:2005E9000121AA44CD5E81F1F14D44E171237021000039E5210000E52AC08623234E23462C\r
-:20060900C53E00215F73CD5E81F1F1F1DD36FC60DD36FD0021000039E5210100E52AC08627\r
-:2006290023234E2346C53E00215F73CD5E81F1F1F1210200E52E08394D442AC08623235E23\r
-:2006490023563E0021C86DCD5E81F1C31F81D52AC08623235E23563E00212272CD5E81D1B2\r
+:2005E9000121AD42CD5E81F1F14D44E171237021000039E5210000E52AC08623234E23462B\r
+:20060900C53E00216873CD5E81F1F1F1DD36FC60DD36FD0021000039E5210100E52AC0861E\r
+:2006290023234E2346C53E00216873CD5E81F1F1F1210200E52E08394D442AC08623235E1A\r
+:2006490023563E0021D16DCD5E81F1C31F81D52AC08623235E23563E00212B72CD5E81D1A0\r
 :20066900C32581CD8881FCFF21000039EB218384010400EDB0DD4602DD70FEDD4604DD7044\r
 :20068900FF210400E52B2BC340464DC342462AC08623235E23563E00C34D46CD5E81F1C390\r
 :2006A9001F81CD8881FCFF21000039EB218784010400EDB0DD4602DD70FEDD4604DD70FFCA\r
@@ -19,7 +19,7 @@
 :2007A90023C3204723C369473E00C34D46CD5E81F1C31F81CD8881FCFF21000039EB2197EB\r
 :2007C90084010400EDB0DD4602DD70FEDD4604DD70FF210400E52B2BC340464DC394462A4A\r
 :2007E900C086C3D94623C3204723C369473E00C3B347CD5E81F1C31F81C5FDE5DDE5D5DDCF\r
-:20080900E13E00213772CD5E81E5DDE5C12AC08623235E23563E0021C86DCD5E81F1DDE156\r
+:20080900E13E00214072CD5E81E5DDE5C12AC08623235E23563E0021D16DCD5E81F1DDE144\r
 :20082900FDE1C1C32581CD8881F8FF21000039EB219B84010700EDB0DD4602DD70FADD4621\r
 :2008490004DD70FBDD460ADD70FCDD460CDD70FDDD460EDD70FE210700E52E02C340464D05\r
 :20086900C394462AC086C3D94623C3204723C369473E00C3B347CD5E81F1C31F81C5D5CD3B\r
 :20098900210A00ED4BC08609E5DD5E02DD56033E00213E49CDF649E1712370C31F81ED4BD2\r
 :2009A900C086094623666823234E2346237E6960CD5E814D44FD6E06FD6607A7ED42EB0167\r
 :2009C9000200CDC181DD6E04DD660519EB3E00216C46C9CD5E814D44FD6E08FD6609A7EDD8\r
-:2009E90042C9CD5E817DB4C93E0121D544CD5E814D44C9CD8881FCFFFDE5110E00CD974A3E\r
+:2009E90042C9CD5E817DB4C93E0121D842CD5E814D44C9CD8881FCFFFDE5110E00CD974A3D\r
 :200A0900DD4E0271DD46032370DD460CDD6E0AFD7502DD660BFD7403FD7004DD4610DD6ECD\r
 :200A29000EFD7505DD660FFD7406FD7007AFFD7708FD7709DD6E12FD750ADD6613FD740B98\r
 :200A4900DD6E14FD750CDD6615FD740D210C00ED4BC086097E23B6210C00ED4BC0860920FB\r
 :200A690010FDE5C1712370210A00ED4BC08609181246236668EB210800197E23B6210800F6\r
-:200A89001920EEFDE5C1712370FDE1C31F813E0121D544CD5E81E5FDE1C9FDE5DDE5C5D54F\r
+:200A89001920EEFDE5C1712370FDE1C31F813E0121D842CD5E81E5FDE1C9FDE5DDE5C5D54E\r
 :200AA900DD210000FD210000FDE5210200394E2346E1097EB72850FDE5E1095ECD40810AC3\r
 :200AC90000212C2E3149696A6B6C72FE4AF94AEF4AF94AF94AEA4AEA4AF44AF44AF44AEAA6\r
 :200AE9004A0102001812010300180D01040018080105001803010600DD09210200394E234D\r
 :200EE900FEDD66FF5E2356E1732372210800ED4BC08609E5DD4EFEDD46FF030369604E23C9\r
 :200F090046E1712370FD4E24FD4625210000CDA6813009FD5E26FD5627CD504FFDCB0B76C8\r
 :200F29002011FD7E20FDB6212809FD5E20FD5621CD504FFDE5D1CD504FDD6EF8DD66F9FDE1\r
-:200F4900E1C31F815E23563E0021DC73C35E813E00218F4DC35E81C5FDE5DDE52115001988\r
+:200F4900E1C31F815E23563E0021E573C35E813E00218F4DC35E81C5FDE5DDE5211500197F\r
 :200F690046236668E5DDE17DB42808DDE5D1CD584F18F1C32748CD88810000FDE5211500FD\r
 :200F8900DD5E02DD5603195623666AE5FDE17DB4283D210A00FDE5C109DD7E04DD56052F7D\r
 :200FA9005F7A2F577EA377237EA277210A00097EDDB60A77237EDDB60B77210A00097EDD6C\r
-:200FC900AE0C77237EDDAE0D772113000918B81177853E0021A06BCD5E81FDE1C31F81C5F1\r
+:200FC900AE0C77237EDDAE0D772113000918B81177853E0021A96BCD5E81FDE1C31F81C5E8\r
 :200FE900FDE5DDE5D5DDE12115001946236668E5FDE121200019462366680100903E80ACDC\r
 :2010090067ED42302EDD4E20DD4621210000CDA6813020DD6E20DD662129E5210800ED4BA1\r
 :20102900C086094E2346E1092B2B46DD70202366DD7421DD6E22DD66230100903E80AC677E\r
 :201BA9003E0021FE57C35E81DD5EFEDD56FF3E0021224CCD5E81DD4EFEDD46FFFDE5D1FDE7\r
 :201BC9007E1FFD6E1DFD661EC9CD5281FDE5D5FDE1DD6E0ADD660BE53E00218C55CD5E81E4\r
 :201BE900E1210302DD4E04DD4605A7ED422040FDCB0A5E283A3E08DDAE0ADDB60BFD5E20C2\r
-:201C0900FD56213E00213772200DCDEB492815CD3D5C2B3600180DCD485C233600CD3D5CB8\r
-:201C2900DD460A70210000E5010301CD3F53E1FDE1C31F81FD5E20FD56213E00213772CDAE\r
+:201C0900FD56213E00214072200DCDEB492815CD3D5C2B3600180DCD485C233600CD3D5CAF\r
+:201C2900DD460A70210000E5010301CD3F53E1FDE1C31F81FD5E20FD56213E00214072CDA5\r
 :201C49005E81FD4E20FD462109C9C5FDE5DDE521B8FF39F9D5DDE1AF7723772377237721E0\r
 :201C69000A00ED4BC086097E23666F46236668E5210E00194E2346E1A7ED422803CDE7544F\r
 :201C8900DDCB0A46CA975D21020039E52B2BCD5053E1210200394E23462B2B2BCDDB57CD3D\r
 :201CE90006DD560720073E0021784718053E0021EE46CD5E81DD5E20DD5621210A00ED4BE8\r
 :201D0900C0860946236668010500094E2346237E6960CDF649DD6E08DD6609A7ED42EB0197\r
 :201D29000200CDC1816960394623666819010700094D44210000395E235613133E00216C73\r
-:201D490046CD5E81DDCB0B462836FD210000DD5E20DD56213E00213772CDF649FDE5E1A7E6\r
+:201D490046CD5E81DDCB0B462836FD210000DD5E20DD56213E00214072CDF649FDE5E1A7DD\r
 :201D6900ED42210600300B39FDE5C109362AFD2318DC39FDE5C109360021060039EB1806EC\r
 :201D8900DD5E20DD56213E00210248CD5E8121480039F9C32748CD88810000FDE5DD6E0E58\r
 :201DA900DD660FE5DD6E0CDD660DE5DD6E0ADD660BE5DD5E02DD5603CDA95BF1F1F1E5FDD6\r
 :201E890070FD360A01FD360B00FD3617F9FD36185DFD361900FD361AFFFD361B5DFD361CD0\r
 :201EA90000FD361DF8FD361E57FD361F00C31A4CCD88810000DD6E0ADD660BE5DD5E02DD36\r
 :201EC90056033E00219B50CD5E81E1C31F81CD8881CEFFFDE5DD36D800210000E5C53E01EC\r
-:201EE90021AA44CD5E81F1F1DD75D4DD74D5DD36F02BDD36F100DD36F21ADD36F300DD3686\r
+:201EE90021AD42CD5E81F1F1DD75D4DD74D5DD36F02BDD36F100DD36F21ADD36F300DD3685\r
 :201F0900F400DD7ED8FE732018DD6ED9DD66DADD75F0DD74F1DD6EDBDD66DCDD75F2DD7449\r
 :201F2900F3DD7ED8FE422807DD7ED8FE4D204FDD4EDD0600C5CD9762D5DD4EDBDD5EF0DD9A\r
 :201F490056F1CDA062D5DD4EDADD5EF2DD56F3CD2A81D5DD5ED950DD4EF0DD46F1CD2A81DD\r
 :2021E900111400CD8F62FD7520FD7421FD6E20FD662136001804FDCB0BF6DD7EEB2E004DE4\r
 :20220900E6F0472610ED423010DD6EEADD7EEBE60F6723FD7522FD7423FDE5DD5E024BDD8A\r
 :20222900560342211D00094E2346237E6960C1CD5E81211400E52E0E394D44DD5ED4DD56C3\r
-:20224900D5CD8762F13E14ADB4CA075FDD5ED4DD56D53E00212272CD5E81DD5E02DD5603ED\r
+:20224900D5CD8762F13E14ADB4CA075FDD5ED4DD56D53E00212B72CD5E81DD5E02DD5603E4\r
 :202269003E0021E84FCD5E81DD5E024BDD560342211A00094E2346237E6960C3E8563E016E\r
-:20228900213147C35E813E0121D544C35E81DD4EDCDD5EF2DD56F3CD2A811B1B1BC9CD889E\r
+:20228900213445C35E813E0121D842C35E81DD4EDCDD5EF2DD56F3CD2A811B1B1BC9CD889C\r
 :2022A90081EAFFFDE5DD6E02DD6603E5FDE121060039EB21A784010E00EDB0FD6E26DD754D\r
 :2022C900EAFD6627DD74EB2323233E01AE23B62008C5010104CD3F53E1DD6EEADD66EB235D\r
 :2022E900232346236668CB853E02ADB4C212646F67E5E5010100FD5E11FD56123E00217FDE\r
 :2027E90086095E2356CD584F3E00218648CD5E813E00215746CD5E81D1C1C32581CD8881A4\r
 :20280900FEFFDD4E02DD4603210E00ED5BC086195E23563E0021D75ECD5E81210400ED4B15\r
 :20282900C086097E23B6C2C468210100E523394D442AC08623235E2356CD8762F13E01ADE7\r
-:20284900B420D8DD4EFE47C521D684E53E0021016ECD5E81F1F1AFDDB6FE28294FC5210EFE\r
+:20284900B420D8DD4EFE47C521D684E53E00210A6ECD5E81F1F1AFDDB6FE28294FC5210EF5\r
 :2028690000ED5BC086195E2356210E00ED4BC0860946236668011700094E2346237E6960A2\r
 :202889000101001829DD4EFFC5210E00ED5BC086195E2356210E00ED4BC086094623666863\r
 :1E28A900011700094E2346237E6960010200CD5E81E1DD46FEDD70FFC32468C31F8120\r
 :200395001B4B1B5300001B4300001B4E00001B5200001B4600001B6800001B5A00000000E7\r
 :1403B500001B45001B002F776E642F303030302E73637200DC\r
 :2028C700FDE5DDE5C521C0FF39F9D5DDE1210C00197E23666FAFB62008DD360CDEDD360D7D\r
-:2028E7008421000039362D012F00DD5E0CDD560D3E0021386BCD5E81E5FDE17DB42804FD0E\r
-:20290700231809DD6E0CDD660DE5FDE1FDE5C12100003911010019EB3E0021A075CD5E81CF\r
+:2028E7008421000039362D012F00DD5E0CDD560D3E0021416BCD5E81E5FDE17DB42804FD05\r
+:20290700231809DD6E0CDD660DE5FDE1FDE5C12100003911010019EB3E0021C574CD5E81AB\r
 :2029270021000039E5214200397E23666FC171237021400039472366682323AF772377DDC5\r
-:202947005E06DD56073E0021046BCD5E81DD5E04DD56053E0021E76DCD5E81DD5E0ADD560A\r
-:202967000B3E0021B36DCD5E81210100E5DD4E0ADD460B11E6843E0021066FCD5E81F121A3\r
-:202987000100E5DD4E00DD460111EB843E0021066FCD5E81F1214000394E2346DD5E0CDD95\r
-:2029A700560D3E00214C73CD5E81DD5E0CDD560D3E00210F73CD5E811101003E0121014715\r
+:202947005E06DD56073E00210D6BCD5E81DD5E04DD56053E0021F06DCD5E81DD5E0ADD56F8\r
+:202967000B3E0021BC6DCD5E81210100E5DD4E0ADD460B11E6843E00210F6FCD5E81F12191\r
+:202987000100E5DD4E00DD460111EB843E00210F6FCD5E81F1214000394E2346DD5E0CDD8C\r
+:2029A700560D3E00215573CD5E81DD5E0CDD560D3E00211873CD5E811101003E0121044502\r
 :2029C700CD5E8121420039F9DDE1FDE1C32581CD8881E0FFFDE5DD6E02DD6603E5FDE1219C\r
-:2029E7002600DD4E02DD4603094623666823232346236668010101A7ED42C2CA6AFD6E201D\r
+:2029E7002600DD4E02DD4603094623666823232346236668010101A7ED42C2D36AFD6E2014\r
 :202A0700FD662146DD70ECFD6E20FD66212346DD70EDDD36EE00FD6E20FD66213600210E85\r
-:202A27000039EB3E0021BC74CD5E81DD75E0DD74E1FD4E20FD46210303DD71EADD70EB7D0A\r
-:202A4700B4287123237E23666F46DD70E2DD6EE0DD66E12323462366682346DD70E3DD3679\r
-:202A6700E400210400394D44DD5EEADD56EB3E0121FD41CD5E81DD75E8DD74E9DD4EE0DD93\r
-:202A870046E1030369604E2346DD5EE8DD56E93E00216E72CD5E817DB420193E00218648C1\r
-:202AA700CD5E81010000DD5EE0DD56E13E0021C768CD5E81FDE5D1FD7E1CFD6E1AFD661BAC\r
-:202AC700CD5E81FDE1C31F81CD52813E0021BA66CD5E813E0021B466CD5E810110000936C2\r
-:1D2AE700D623366923360011F0843E00210668CD5E813E0021E167CD5E81C31F812D\r
+:202A27000039EB3E00213975CD5E81EB3E0021EC74CD5E81DD75E0DD74E1FD4E20FD462129\r
+:202A47000303DD71EADD70EB7DB4287123237E23666F46DD70E2DD6EE0DD66E12323462300\r
+:202A670066682346DD70E3DD36E400210400394D44DD5EEADD56EB3E01210040CD5E81DD96\r
+:202A870075E8DD74E9DD4EE0DD46E1030369604E2346DD5EE8DD56E93E00217772CD5E81D0\r
+:202AA7007DB420193E00218648CD5E81010000DD5EE0DD56E13E0021C768CD5E81FDE5D1AF\r
+:202AC700FD7E1CFD6E1AFD661BCD5E81FDE1C31F81CD52813E0021BA66CD5E813E0021B48A\r
+:202AE70066CD5E810110000936D623366923360011F0843E00210668CD5E813E0021E167D7\r
+:062B0700CD5E81C31F81B9\r
 :2003F2002F62696E2F736800484F4D450055534552002F776E642F6C6F676E2E7363720044\r
-:202B0400CD5281D5210600E5210700E53E00211E6BCD5E81F1F1F1C31F8121040039C5D561\r
-:142B24005E2356234D44F7300622BB8621FFFFD1C1C3258168\r
+:202B0D00CD5281D5210600E5210700E53E0021276BCD5E81F1F1F1C31F8121040039C5D54F\r
+:142B2D005E2356234D44F7300622BB8621FFFFD1C1C325815F\r
 :0B003300DDF9DDE1D1C1F1ED3939C983\r
-:202B3800CD8881FEFFDD5E02DD56033E00213772CD5E81DD5E02DD560319DD75FEDD74FF57\r
-:202B580079B02008DD6EFEDD66FF1839DD6E02DD6603DD4EFEDD46FFA7ED422825DD6EFEE6\r
-:202B7800DD66FF2BDD75FEDD74FF4E0600DD6E04DD6605A7ED422008DD6EFEDD66FF18059F\r
-:202B980018CA210000C31F81CD8881F8FFAFDD77FEDD77FFDD7E02DDB6032078115F853ED8\r
-:202BB8000021A06BCD5E817DB4201E1177853E0021A06BCD5E817DB4200F118F853E0021AF\r
-:202BD800A06BCD5E817DB4280621FFFFC3B06D2A5D85DD7502DD7403DD7E02DDB603282ECB\r
-:202BF800DD5E02DD56033E0021A06BCD5E817DB4280621FFFFC3B06D211600DD4E02DD464F\r
-:202C180003095623666ADD7502DD740318CA210000C3B06D210C00DD4E02DD4603097EE6CF\r
-:202C380080CA066D210600DD4E02DD4603095E23560A6F030A67A7ED52DD75FADD74FB7D7D\r
-:202C5800B4CA046D210600DD4E02DD46030946236668DD75F8DD74F9DD6EFADD66FBE5DDDA\r
-:202C78004EF8DD46F9210A00DD5E02DD5603195E23563E0021C86DCD5E81F1DD75FCDD747C\r
-:202C9800FD4D44210000CDA681301E210000397EDD86FC77237EDD8EFD77210200397EDD46\r
-:202CB80096FC77237EDD9EFD77DD4EFCDD46FD210000CDA68138A1DD7EFCDDA6FD3C2009F2\r
-:202CD8002ABB863E04ADB4288FDD7EFADDB6FB281B210C00DD4E02DD4603097EF60077235A\r
-:202CF8007EF60277DD36FEFFDD36FFFF186A210C00DD4E02DD4603097EE640285BDD6E022F\r
-:202D1800DD66034E2346DD6E02DD660323235623666AA7ED42DD75FADD74FB4D442100005C\r
-:202D3800CDA6813033210100E5DD4EFADD46FBA7210000ED427C079F4F41C5E5210A00DD7F\r
-:202D58004E02DD4603095E23563E0021306ECD5E81F1F1F1CB782800210C00DD4E02DD46A1\r
-:202D780003097EE63F77237EE6FA7769602323E5210400DD4E02DD460309E521060009563D\r
-:202D980023666AE56960C1712370E1712370E1712370DD6EFEDD66FFC31F81CD5281D52167\r
-:202DB8000300E53E00211E6BCD5E81F1F1C31F81CD5281DD6E0ADD660BE5C5D5212400E54E\r
-:0F2DD8003E00211E6BCD5E81F1F1F1F1C31F8131\r
+:202B4100CD8881FEFFDD5E02DD56033E00214072CD5E81DD5E02DD560319DD75FEDD74FF45\r
+:202B610079B02008DD6EFEDD66FF1839DD6E02DD6603DD4EFEDD46FFA7ED422825DD6EFEDD\r
+:202B8100DD66FF2BDD75FEDD74FF4E0600DD6E04DD6605A7ED422008DD6EFEDD66FF180596\r
+:202BA10018CA210000C31F81CD8881F8FFAFDD77FEDD77FFDD7E02DDB6032078115F853ECF\r
+:202BC1000021A96BCD5E817DB4201E1177853E0021A96BCD5E817DB4200F118F853E002194\r
+:202BE100A96BCD5E817DB4280621FFFFC3B96D2A5D85DD7502DD7403DD7E02DDB603282EB0\r
+:202C0100DD5E02DD56033E0021A96BCD5E817DB4280621FFFFC3B96D211600DD4E02DD4633\r
+:202C210003095623666ADD7502DD740318CA210000C3B96D210C00DD4E02DD4603097EE6BD\r
+:202C410080CA0F6D210600DD4E02DD4603095E23560A6F030A67A7ED52DD75FADD74FB7D6B\r
+:202C6100B4CA0D6D210600DD4E02DD46030946236668DD75F8DD74F9DD6EFADD66FBE5DDC8\r
+:202C81004EF8DD46F9210A00DD5E02DD5603195E23563E0021D16DCD5E81F1DD75FCDD746A\r
+:202CA100FD4D44210000CDA681301E210000397EDD86FC77237EDD8EFD77210200397EDD3D\r
+:202CC10096FC77237EDD9EFD77DD4EFCDD46FD210000CDA68138A1DD7EFCDDA6FD3C2009E9\r
+:202CE1002ABB863E04ADB4288FDD7EFADDB6FB281B210C00DD4E02DD4603097EF600772351\r
+:202D01007EF60277DD36FEFFDD36FFFF186A210C00DD4E02DD4603097EE640285BDD6E0225\r
+:202D2100DD66034E2346DD6E02DD660323235623666AA7ED42DD75FADD74FB4D4421000053\r
+:202D4100CDA6813033210100E5DD4EFADD46FBA7210000ED427C079F4F41C5E5210A00DD76\r
+:202D61004E02DD4603095E23563E0021396ECD5E81F1F1F1CB782800210C00DD4E02DD468F\r
+:202D810003097EE63F77237EE6FA7769602323E5210400DD4E02DD460309E5210600095634\r
+:202DA10023666AE56960C1712370E1712370E1712370DD6EFEDD66FFC31F81CD5281D5215E\r
+:202DC1000300E53E0021276BCD5E81F1F1C31F81CD5281DD6E0ADD660BE5C5D5212400E53C\r
+:0F2DE1003E0021276BCD5E81F1F1F1F1C31F811F\r
 :16003E00F5C5E5784251676BED4CED6CED5C79858257E1C1F1C922\r
-:202DE700CD5281D5210300E5210700E53E00211E6BCD5E81F1F1F1C31F81CD8881FCFF2185\r
-:202E07000E003901020009DD75FCDD74FDE5DD4E0ADD460B1177853E0021CF79CD5E81F123\r
-:202E2700DD75FEDD74FFC31F81CD5281DD6E0EDD660FE5DD6E0CDD660DE5DD6E0ADD660B29\r
-:202E4700E5D5211900E53E0121534BCD5E81F1F1F1F1F1C32282CD8881FEFF2A5D85DD759B\r
-:202E6700FEDD74FF1177853E0021A06BCD5E81118F853E0021A06BCD5E81DD7EFEDDB6FFB4\r
-:202E8700283CDD5EFEDD56FF3E0021A06BCD5E81210A00DD4EFEDD46FF095E23563E002191\r
-:202EA7002272CD5E81210A000936FF2336FF211600095623666ADD75FEDD74FF18BCC31F2B\r
-:202EC70081C5D52AA7857DB42002182E21000022A7851101003E00218A73CD5E817DB428FF\r
-:1F2EE7000C2183857EF60177237EF600770E00115D6E3E0121204BCD5E81D1C1C3258141\r
+:202DF000CD5281D5210300E5210700E53E0021276BCD5E81F1F1F1C31F81CD8881FCFF2173\r
+:202E10000E003901020009DD75FCDD74FDE5DD4E0ADD460B1177853E00215177CD5E81F19A\r
+:202E3000DD75FEDD74FFC31F81CD5281DD6E0EDD660FE5DD6E0CDD660DE5DD6E0ADD660B20\r
+:202E5000E5D5211900E53E01215649CD5E81F1F1F1F1F1C32282CD8881FEFF2A5D85DD7591\r
+:202E7000FEDD74FF1177853E0021A96BCD5E81118F853E0021A96BCD5E81DD7EFEDDB6FF99\r
+:202E9000283CDD5EFEDD56FF3E0021A96BCD5E81210A00DD4EFEDD46FF095E23563E00217F\r
+:202EB0002B72CD5E81210A000936FF2336FF211600095623666ADD75FEDD74FF18BCC31F19\r
+:202ED00081C5D52AA7857DB42002182E21000022A7851101003E00219373CD5E817DB428ED\r
+:1F2EF0000C2183857EF60177237EF600770E0011666E3E01212349CD5E81D1C1C325812E\r
 :200471000000C286C286C286C286C2870000100000000000000000000000C287C287C28717\r
 :20049100C287C28801002000000000000000000000009D859D859D859D859F8502002200C7\r
 :0C04B1000000000000000000000001003E\r
-:202F0600CD8881F2FFAFDD77F4DD77F5DD5E02DD56033E00213772CD5E81DD75F6DD74F7ED\r
-:202F260059503E00213772CD5E81DD75F8DD74F92AB986DD75F2DD74F3DD6EF2DD66F34DE9\r
-:202F4600440303DD71F2DD70F346236668DD75FADD74FB7DB4283EDD6EF6DD66F7E5DD4EB0\r
-:202F660002DD4603DD5EFADD56FB3E01215047CD5E81F17DB42014DD6EF6DD66F7DD4EFA27\r
-:202F8600DD46FB097EFE3D2002180ADD34F42003DD34F518A4DD7EFADDB6FBC2B770DD6E06\r
-:202FA600F4DD66F5232329EB3E0121D544CD5E81DD75FCDD74FD7DB4200C210C0022BB86D7\r
-:202FC60021FFFFC37F71DD6EF4DD66F529E5ED4BB986DD5EFCDD56FD3E0121D949CD5E8188\r
-:202FE600F1DD6EF8DD66F9DD4EF6DD46F709EB13133E0121D544CD5E81DD75FADD74FB7DCC\r
-:20300600B42010DD5EFCDD56FD3E0021DC73CD5E8118A7DD6EF6DD66F7E5DD4E02DD460393\r
-:20302600DD5EFADD56FB3E0121D949CD5E81F1DD6EF6DD66F7DD4EFADD46FB09363DDD6E83\r
-:20304600F8DD66F923E5DD4E04DD4605DD6EF6DD66F7DD5EFADD56FB19EB133E0121D94960\r
-:20306600CD5E81F1DD6EF4DD66F529DD4EFCDD46FD09DD5EFADD56FB732372DD6EF4DD66D0\r
-:20308600F529092323AF7723772AA9857DB4280CED5BA9853E0021DC73CD5E81DD6EFCDD4C\r
-:2030A60066FD22A985DD6EFCDD66FD22B986C37C71DD7E0ADDB60BCA7C71DD5EFADD56FBA2\r
-:2030C6003E00213772CD5E81DD75FCDD74FDDD6EF8DD66F9DD4EF6DD46F7094D4403DD6EF8\r
-:2030E600FCDD66FDA7ED423067DD6EF8DD66F9DD4EF6DD46F709EB13133E0121D544CD5EA9\r
-:2031060081DD75FEDD74FF7DB42003C3C06FDD6EF6DD66F7E5DD4E02DD4603DD5EFEDD5623\r
-:20312600FF3E0121D949CD5E81F1DD6EF6DD66F7DD4EFEDD46FF09363DDD6EF2DD66F32B8B\r
-:203146002BDD75F2DD74F3DD71FADD70FB712370DD6EF8DD66F923E5DD4E04DD4605DD6EF9\r
-:20316600F6DD66F7DD5EFADD56FB19EB133E0121D949CD5E81F1210000C31F81CD8881F82E\r
-:20318600FFDD5E02DD56033E00213772CD5E81DD75FEDD74FF2AB986DD75F8DD74F9DD7514\r
-:2031A600FADD74FBDD6EF8DD66F94D440303DD71F8DD70F946236668DD75FCDD74FD7DB41D\r
-:2031C600284DDD6EFEDD66FFE5DD4E02DD4603DD5EFCDD56FD3E01215047CD5E81F17DB485\r
-:2031E6002012DD6EFEDD66FFDD4EFCDD46FD097EFE3D2819DD6EFADD66FB4D440303DD715A\r
-:1C320600FADD70FBDD4EFCDD46FD7123701895DD6EFADD66FBAF772377C31F81CC\r
+:202F0F00CD8881F2FFAFDD77F4DD77F5DD5E02DD56033E00214072CD5E81DD75F6DD74F7DB\r
+:202F2F0059503E00214072CD5E81DD75F8DD74F92AB986DD75F2DD74F3DD6EF2DD66F34DD7\r
+:202F4F00440303DD71F2DD70F346236668DD75FADD74FB7DB4283EDD6EF6DD66F7E5DD4EA7\r
+:202F6F0002DD4603DD5EFADD56FB3E01215345CD5E81F17DB42014DD6EF6DD66F7DD4EFA1D\r
+:202F8F00DD46FB097EFE3D2002180ADD34F42003DD34F518A4DD7EFADDB6FBC2C070DD6EF4\r
+:202FAF00F4DD66F5232329EB3E0121D842CD5E81DD75FCDD74FD7DB4200C210C0022BB86CD\r
+:202FCF0021FFFFC38871DD6EF4DD66F529E5ED4BB986DD5EFCDD56FD3E0121DC47CD5E8175\r
+:202FEF00F1DD6EF8DD66F9DD4EF6DD46F709EB13133E0121D842CD5E81DD75FADD74FB7DC2\r
+:20300F00B42010DD5EFCDD56FD3E0021E573CD5E8118A7DD6EF6DD66F7E5DD4E02DD460381\r
+:20302F00DD5EFADD56FB3E0121DC47CD5E81F1DD6EF6DD66F7DD4EFADD46FB09363DDD6E79\r
+:20304F00F8DD66F923E5DD4E04DD4605DD6EF6DD66F7DD5EFADD56FB19EB133E0121DC4756\r
+:20306F00CD5E81F1DD6EF4DD66F529DD4EFCDD46FD09DD5EFADD56FB732372DD6EF4DD66C7\r
+:20308F00F529092323AF7723772AA9857DB4280CED5BA9853E0021E573CD5E81DD6EFCDD3A\r
+:2030AF0066FD22A985DD6EFCDD66FD22B986C38571DD7E0ADDB60BCA8571DD5EFADD56FB87\r
+:2030CF003E00214072CD5E81DD75FCDD74FDDD6EF8DD66F9DD4EF6DD46F7094D4403DD6EE6\r
+:2030EF00FCDD66FDA7ED423067DD6EF8DD66F9DD4EF6DD46F709EB13133E0121D842CD5E9F\r
+:20310F0081DD75FEDD74FF7DB42003C3C96FDD6EF6DD66F7E5DD4E02DD4603DD5EFEDD5611\r
+:20312F00FF3E0121DC47CD5E81F1DD6EF6DD66F7DD4EFEDD46FF09363DDD6EF2DD66F32B81\r
+:20314F002BDD75F2DD74F3DD71FADD70FB712370DD6EF8DD66F923E5DD4E04DD4605DD6EF0\r
+:20316F00F6DD66F7DD5EFADD56FB19EB133E0121DC47CD5E81F1210000C31F81CD8881F824\r
+:20318F00FFDD5E02DD56033E00214072CD5E81DD75FEDD74FF2AB986DD75F8DD74F9DD7502\r
+:2031AF00FADD74FBDD6EF8DD66F94D440303DD71F8DD70F946236668DD75FCDD74FD7DB414\r
+:2031CF00284DDD6EFEDD66FFE5DD4E02DD4603DD5EFCDD56FD3E01215345CD5E81F17DB47B\r
+:2031EF002012DD6EFEDD66FFDD4EFCDD46FD097EFE3D2819DD6EFADD66FB4D440303DD7151\r
+:1C320F00FADD70FBDD4EFCDD46FD7123701895DD6EFADD66FBAF772377C31F81C3\r
 :0204BD0000003D\r
-:20322200CD5281D5210600E53E00211E6BCD5E81F1F1C31F81CD8881FEFFDD6E02DD6603CC\r
-:20324200DD75FEDD74FFDD6EFEDD66FFAFB6280ADD34FE2003DD34FF18ECDD4E02DD460311\r
-:20326200DD6EFEDD66FFA7ED42C31F81CD8881FAFFDD6E02DD6603DD75FADD74FBDD71FC44\r
-:20328200DD70FDDD6EFCDD66FD23DD75FCDD74FD2B46DD70FFDD6EFADD66FB23DD75FADD10\r
-:2032A20074FB2B4EDD71FE79B82008AFDDB6FE280218D0DD4EFF0600DD6EFE2600A7ED42B8\r
-:0332C200C31F81A6\r
+:20322B00CD5281D5210600E53E0021276BCD5E81F1F1C31F81CD8881FEFFDD6E02DD6603BA\r
+:20324B00DD75FEDD74FFDD6EFEDD66FFAFB6280ADD34FE2003DD34FF18ECDD4E02DD460308\r
+:20326B00DD6EFEDD66FFA7ED42C31F81CD8881FAFFDD6E02DD6603DD75FADD74FBDD71FC3B\r
+:20328B00DD70FDDD6EFCDD66FD23DD75FCDD74FD2B46DD70FFDD6EFADD66FB23DD75FADD07\r
+:2032AB0074FB2B4EDD71FE79B82008AFDDB6FE280218D0DD4EFF0600DD6EFE2600A7ED42AF\r
+:0332CB00C31F819D\r
 :12005400E3F5C54E2346237BEDB12002232309C39C81B9\r
-:2032C500CD8881FEFFDD6E02DD6603DD75FEDD74FFDD6EFEDD66FFAFB6280ADD34FE20038F\r
-:2032E500DD34FF18ECDD4E02DD4603DD6EFEDD66FFA7ED42E5DD4E02DD46031102003E0078\r
-:2033050021C86DCD5E81F1C3B082CD52817BB22008DD3602FEDD360384DD5E02DD5603CDDE\r
-:20332500C572110485CDC572ED5BBB863E0121DC47CD5E81DD7502DD7403EBCDC57211074C\r
-:0733450085CDC572C31F8195\r
+:2032CE00CD8881FEFFDD6E02DD6603DD75FEDD74FFDD6EFEDD66FFAFB6280ADD34FE200386\r
+:2032EE00DD34FF18ECDD4E02DD4603DD6EFEDD66FFA7ED42E5DD4E02DD46031102003E006F\r
+:20330E0021D16DCD5E81F1C3B082CD52817BB22008DD3602FEDD360384DD5E02DD5603CDCC\r
+:20332E00CE72110485CDCE72ED5BBB863E0121DF45CD5E81DD7502DD7403EBCDCE72110727\r
+:07334E0085CDCE72C31F8183\r
 :0B0412006572726F72003A20000A0051\r
-:20334C00CD52812AB986E53E0121BD47CD5E81F1C31F81CD5281DD6E0EDD660FE5DD6E0C88\r
-:20336C00DD660DE5DD6E0ADD660BE5210F00E53E00211E6BCD5E81F1F1F1F1C31F81CD885F\r
-:20338C0081E2FF210000394D44DD5E02DD56033E0021C573CD5E817DA43C2812DD7EE6E660\r
-:2033AC00006FDD7EE7E6F0673E20ACB528052100001803210100C31F81CD5281C5D5210DFE\r
-:2033CC0000E53E00211E6BCD5E81F1F1F1C31F81CD8881FCFF21FCFFDD4E02DD460309DD0C\r
-:2033EC0075FEDD74FF23237E23B6280621FFFFC3B9742AE489DD75FCDD74FDDD4EFCDD46A7\r
-:20340C00FDDD6EFEDD66FFA7ED423817DD6EFCDD66FD232346236668DD4EFEDD46FFA7ED10\r
-:20342C00423053DD6EFCDD66FD23234E2346DD6EFCDD66FDA7ED423829DD4EFEDD46FFDD51\r
-:20344C006EFCDD66FDA7ED423816DD6EFCDD66FD23234E2346DD6EFEDD66FFA7ED4230027B\r
-:20346C001814DD6EFCDD66FD232346236668DD75FCDD74FD1885DD6EFEDD66FF2323E5DD44\r
-:20348C004EFCDD46FD030369604E2346E1712370DD6EFCDD66FD2323DD4EFEDD46FF71239F\r
-:2034AC0070DD6EFCDD66FD22E489210000C31F81CD8881FEFFDD7E02DDB603200B211600CE\r
-:2034CC0022BB8621000018473E00211E75CD5E813E00218275CD5E81DD75FEDD74FF7DB48C\r
-:2034EC00281FDD4E02DD4603DD6EFEDD66FF5E23563E00216E72CD5E817DB4200218021854\r
-:12350C00CF3E00216375CD5E81DD6EFEDD66FFC31F810D\r
+:20335500CD52812AB986E53E0121C045CD5E81F1C31F81CD5281DD6E0EDD660FE5DD6E0C7E\r
+:20337500DD660DE5DD6E0ADD660BE5210F00E53E0021276BCD5E81F1F1F1F1C31F81CD884D\r
+:2033950081E2FF210000394D44DD5E02DD56033E0021CE73CD5E817DA43C2812DD7EE6E64E\r
+:2033B500006FDD7EE7E6F0673E20ACB528052100001803210100C31F81CD5281C5D5210DF5\r
+:2033D50000E53E0021276BCD5E81F1F1F1C31F81CD8881FCFF21FCFFDD4E02DD460309DDFA\r
+:2033F50075FEDD74FF23237E23B6280621FFFFC3C2742AD688DD75FCDD74FDDD4EFCDD46A4\r
+:20341500FDDD6EFEDD66FFA7ED423817DD6EFCDD66FD232346236668DD4EFEDD46FFA7ED07\r
+:20343500423053DD6EFCDD66FD23234E2346DD6EFCDD66FDA7ED423829DD4EFEDD46FFDD48\r
+:203455006EFCDD66FDA7ED423816DD6EFCDD66FD23234E2346DD6EFEDD66FFA7ED42300272\r
+:203475001814DD6EFCDD66FD232346236668DD75FCDD74FD1885DD6EFEDD66FF2323E5DD3B\r
+:203495004EFCDD46FD030369604E2346E1712370DD6EFCDD66FD2323DD4EFEDD46FF712396\r
+:1034B50070DD6EFCDD66FD22D688210000C31F810C\r
 :19006600E1C5D5DDE5DD210000DD39E9E526806F7EED2039ED3939E3E95E\r
-:20351E00D52AAB857DA43C280CED5BAB853E00212272CD5E81210080E52AAD85E53E01218F\r
-:20353E00AA44CD5E81F1F122AB857DA43C20122ABB86E5211585E53E0021016ECD5E81F1B5\r
-:20355E00F1D1C32581D52AAB857DA43C280CED5BAB853E00212272CD5E8121FFFF22AB85DA\r
-:20357E00D1C32581D52AAB857DA43C280EED5BAB853E0021C775CD5E811803210000D1C3A2\r
-:02359E00258185\r
+:2034C500CD528159503E00214072CD5E8123E5DD4E04DD4605DD5E02DD56033E0121DC478C\r
+:2034E500CD5E81F1C31F81CD8881FEFF3E00214F75CD5E813E0021B375CD5E81DD75FEDDC5\r
+:2035050074FF7DB4281D210400DD4EFEDD46FF0946236668DD4E02DD4603A7ED42200218AA\r
+:143525000218D13E00219475CD5E81DD6EFEDD66FFC31F81A5\r
+:20007F00E3F5C54E23462378B1280D0B7B962320F57A9620F12323230909C39C81E1C5D541\r
+:1B009F00DDE5DD210000DD395E235623EB39F9EBE909097E23666FC1F1E3C99F\r
+:20353900CD5281210A00E50100003E0121274BCD5E81F1C31F81D52AAB857DA43C280CED42\r
+:203559005BAB853E00212B72CD5E81210080E52AAD85E53E0121AD42CD5E81F1F122AB8529\r
+:203579007DA43C20122ABB86E5211585E53E00210A6ECD5E81F1F1D1C32581D52AAB857D68\r
+:20359900A43C280CED5BAB853E00212B72CD5E8121FFFF22AB85D1C32581D52AAB857DA4E3\r
+:1835B9003C280EED5BAB853E0121CF4BCD5E811803210000D1C3258174\r
 :20041D002F6574632F706173737764004552524E4F202564206F70656E696E6720706173F0\r
 :07043D0073776F72640A007F\r
 :0404BF00FFFF0985AD\r
-:2035A000CD528159503E00213772CD5E8123E5DD4E04DD4605DD5E02DD56033E0121D949BA\r
-:0735C000CD5E81F1C31F8104\r
-:1D007F00E3F5C54E23462378B1280D0B7B962320F57A9620F12323230909C39C81BF\r
-:2035C700CD8881F4FF210001E501C288DD5E02DD56033E01213147CD5E81F1DD75FEDD7440\r
-:2035E700FF4D44210000CDA6813806210000C34C78010A0011C2883E01216D4BCD5E81DD32\r
-:2036070075F4DD74F57DB4285BDD6EF4DD66F523DD75F4DD74F52B3600210100E501C28867\r
-:20362700DD6EF4DD66F5A7ED42DD4EFEDD46FFA7ED427C079F4F41C5E5DD5E02DD56033E08\r
-:203647000021306ECD5E81F1F1F1DD6EF4DD66F52B2B7EFE0D200ADD6EF4DD66F52B2B36A2\r
-:2036670000C3FD76210001E501C288DD5E02DD56033E01213147CD5E81F1DD75FEDD74FF33\r
-:203687004D44210000CDA6813806210000C34C78010A0011C2883E01216D4BCD5E81DD751B\r
-:2036A700F4DD74F57DB428BC210100E5DD6EFEDD66FF7C079F5F53D5E501C288DD6EF4DD2D\r
-:2036C70066F5A7ED427C079F5F53A7C1ED42EBC1ED42E5D5210100C109EB210000C1ED4AC2\r
-:2036E700E5D5DD5E02DD56033E0021306ECD5E81F1F1F1C3CC753AC288FE2328153AC288B0\r
-:20370700FE20280E3AC288FE0A28073AC288FE092003C3CC75DD36F4C2DD36F588AFDD7785\r
-:20372700FCDD77FD010780DD6EFCDD66FD3E80AC67ED42D2F777DD5EFCDD56FDCDD0820060\r
-:20374700000700AD775A77657770777E778C779777A277DD6EF4DD66F522C2891848DD6EF5\r
-:20376700F4DD66F522C489183DDD6EF4DD66F5DD75FADD74FB182FDD6EF4DD66F5DD75F83B\r
-:20378700DD74F91821DD6EF4DD66F522CA891816DD6EF4DD66F522CC89180BDD6EF4DD66F2\r
-:2037A700F522CE891800010680DD6EFCDD66FD3E80AC67ED42302E013A00DD5EF4DD56F57E\r
-:2037C7003E01216D4BCD5E81DD75F4DD74F57DB42003C3CC75DD6EF4DD66F523DD75F4DD7D\r
-:2037E70074F52B3600DD34FC2003DD34FDC32B77210A00E5210400394D44DD5EF8DD56F9F7\r
-:203807003E0121434CCD5E81F122C889DD6EF6DD66F7AFB62803C3CC75210A00E52104005E\r
-:20382700394D44DD5EFADD56FB3E0121434CCD5E81F122C689DD6EF6DD66F7AFB62803C389\r
-:08384700CC7521C289C31F8169\r
-:1E009C00E1C5D5DDE5DD210000DD395E235623EB39F9EBE909097E23666FC1F1E3C924\r
-:20384F00CD8881FAFFAFDD77FBDD77FC59503E00213772CD5E81DD75FDDD74FEDD6E04DD15\r
-:20386F0066057EFE2D2014DD6E04DD660523DD7504DD74052B46DD700A180EAFDDB60A2829\r
-:20388F0008DD34FD2003DD34FEDD7E10DDA6113C281DDD4EFDDD46FEDD6E10DD6611CDA6E6\r
-:2038AF0081300CDD6E10DD6611DD75FDDD74FEDD4EFDDD46FEDD6E0EDD660FCDA681300CCB\r
-:2038CF00DD6EFDDD66FEDD750EDD740FDD6E0EDD660FDD75FBDD74FC211400397EDD96FDEF\r
-:2038EF0077237EDD9EFE77DD7E0EDDB60F2009DD7EFDDDB6FECAC679DD7E08DDB609203438\r
-:20390F00DD7E0EDDB60F282CDD7EFDDDB6FE280FAFDDB60A2809DD7E0CFE3020021823DDCD\r
-:20392F00460CDD70FADD6E0EDD660F2BDD750EDD740F184EDD7EFDDDB6FE2833AFDDB60A53\r
-:20394F00280CDD460ADD70FADD360A001812DD6E04DD660523DD7504DD74052B46DD70FA4B\r
-:20396F00DD6EFDDD66FE2BDD75FDDD74FE1813DD460CDD70FADD6E0EDD660F2BDD750EDD32\r
-:20398F00740FDD4E02DD4603DD5EFA16003E01219A4DCD5E81DD7EFAFE0A20183E01DDAEA5\r
-:2039AF0012DDB613200EDD5E02DD56033E0021A06BCD5E81C3F678DD6EFBDD66FCC3B082DE\r
-:2039CF00CD8881A2FFAFDD77B0DD77B1210C00DD5E02DD5603197EE6034F237EE60047DD8F\r
-:2039EF0071FDDD70FE210C00197EE6FC77237EE6FF77DD6E04DD6605AFB6CAD47EDD6E047E\r
-:203A0F00DD66057EFE25C2877E3E02DDAEFDDDB6FE200EDD5E02DD56033E0021A06BCD5E58\r
-:203A2F0081AFDD77A4DD77A5DD36B300DD36B220DD36ACFFDD36ADFFAFDD77AADD77ABDDA5\r
-:203A4F0036A8FFDD36A9FFDD36AE0ADD36AF00211B0039DD75B5DD74B6DD36B400AFDD77E5\r
-:203A6F00A6DD77A7AFDD77A2DD77A3DD34042003DD3405DD6E04DD66057EFE30380BDD6EDB\r
-:203A8F0004DD66053E39BE3002186521000039010A00CD6682DD6E04DD66054E060021D0F1\r
-:203AAF00FF094D44210000397E8177237E8877DD7EAADDB6AB280EDD6EA2DD66A3DD75A8A8\r
-:203ACF00DD74A91821DD7EA2DDB6A3200DDD7EB2FE202006DD36B230188ADD6EA2DD66A389\r
-:203AEF00DD75ACDD74ADDD34042003DD34051883DD6E04DD66055ECD4081140000202123D7\r
-:203B0F002A2B2D2E5862636468696C6F70737578837E8B7C937C167E667C5C7CE27BF77BB5\r
-:203B2F00ED7BF77BD37D527C817CD77B597B647B787B717BB57D647B497BDD6E04DD660531\r
-:203B4F002BDD7504DD7405C3877EDD36A401DD36A500C3737ADD6E04DD660546DD70B3C3F7\r
-:203B6F00737ADD36B401C3737A216800397EC60277237ECE00772B6E672B2B46236668DD02\r
-:203B8F0075A2DD74A3DD7EAADDB6AB280EDD6EA2DD66A3DD75A8DD74A9182ADD6EA2DD6659\r
-:203BAF00A3DD75ACDD74ADCB7C281ADD36A401DD36A500DD4EA2DD46A3A7210000ED42DDF7\r
-:203BCF0075ACDD74ADC3737ADD36AA01DD36AB00C3737ADD36A601DD36A700C3737AAFDD2B\r
-:203BEF0077A6DD77A7C3737A210A00E5211D0039E5DD7EA6DDB6A7281D216C00397EC604F4\r
-:203C0F0077237ECE00772B6E6701FCFF095E2356234E2346181A216C00397EC60277237E2C\r
-:203C2F00CE00772B6E672B2B5E23567A079F4F413E00212A7FCD5E81F1F1DD75B5DD74B6AF\r
-:203C4F00C33A7EDD36AE02DD36AF001837DD36AE08DD36AF00182DAFDD77A6DD77A7DD367F\r
-:203C6F00B230DD36AC05DD36AD00DD36A808DD36A900DD36AE10DD36AF001808DD36AEF0EC\r
-:203C8F00DD36AFFFDD7EA6DDB6A7281E216800397EC60477237ECE00772B6E6701FCFF0967\r
-:203CAF005E2356234E2346EB1819216800397EC60277237ECE00772B6E672B2B4623666836\r
-:203CCF00010000DD75B9DD74BADD71BBDD70BCDD5EAEDD56AFD5211D003901040009E5DDC5\r
-:203CEF004EBBDD46BCDD5EB9DD56BA3E0121F64ECD5E81F1F1DD75B5DD74B6DD36B730DDD5\r
-:203D0F0036B885AFDDB6B4CAB27D3E02DDAEAEDDB6AF200ADD36B731DD36B88518493E085B\r
-:203D2F00DDAEAEDDB6AF2018DD7EB9DDB6BADDB6BBDDB6BC2808DD36B734DD36B885182706\r
-:203D4F003E10DDAEAEDDB6AF200ADD36B736DD36B88518133E0FDDAEAEDDA6AF3C2008DDED\r
-:203D6F0036B739DD36B885DD6EB7DD66B8AFB62832DD36B200DD4EB7DD46B8211B00395DAE\r
-:203D8F00543E0021A075CD5E81DD4EB5DD46B6211B00395D543E0121334BCD5E81DD75B530\r
-:203DAF00DD74B6C33A7EDD6E04DD6605234E0600DD71A2DD70A379B02808DD34042003DD16\r
-:203DCF003405181C216800397EC60277237ECE00772B6E672B2B46236668DD75A2DD74A38D\r
-:203DEF00DD46A2DD6EB5DD66B670DD6EB5DD66B6233600AFDDB6B4280CDD6EB5DD66B646CB\r
-:203E0F00DD70B21822181C216800397EC60277237ECE00772B6E672B2B46236668DD75B52D\r
-:203E2F00DD74B6DD36B220DD36B300DD6EFDDD66FEE5DD6EA8DD66A9E5DD6EACDD66ADE5C3\r
-:203E4F00DD6EB2E5DD6EB3E5DD6EA4DD66A5E5DD4EB5DD46B6DD5E02DD5603CD4F78EB2106\r
-:203E6F000C0039F9EB4D44210E00397E8177237E8877180218021842DD4E02DD4603DD6ECF\r
-:203E8F0004DD66055E16003E01219A4DCD5E81DD34B02003DD34B1DD6E04DD66057EFE0A9D\r
-:203EAF0020183E01DDAEFDDDB6FE200EDD5E02DD56033E0021A06BCD5E81DD34042003DD97\r
-:203ECF003405C3017A210C00DD4E02DD4603097EDDB6FD77237EDDB6FE773E02DDAEFDDD00\r
-:203EEF00B6FE200EDD5E02DD56033E0021A06BCD5E813E01DDAEFDDDB6FE2016210400DDB8\r
-:1B3F0F004E02DD460309E5210600094E2346E1712370DD6EB0DD66B1C31F8115\r
+:2035D100CD8881FAFFAFDD77FBDD77FC59503E00214072CD5E81DD75FDDD74FEDD6E04DD8D\r
+:2035F10066057EFE2D2014DD6E04DD660523DD7504DD74052B46DD700A180EAFDDB60A28AA\r
+:2036110008DD34FD2003DD34FEDD7E10DDA6113C281DDD4EFDDD46FEDD6E10DD6611CDA666\r
+:2036310081300CDD6E10DD6611DD75FDDD74FEDD4EFDDD46FEDD6E0EDD660FCDA681300C4B\r
+:20365100DD6EFDDD66FEDD750EDD740FDD6E0EDD660FDD75FBDD74FC211400397EDD96FD6F\r
+:2036710077237EDD9EFE77DD7E0EDDB60F2009DD7EFDDDB6FECA4877DD7E08DDB609203438\r
+:20369100DD7E0EDDB60F282CDD7EFDDDB6FE280FAFDDB60A2809DD7E0CFE3020021823DD4E\r
+:2036B100460CDD70FADD6E0EDD660F2BDD750EDD740F184EDD7EFDDDB6FE2833AFDDB60AD4\r
+:2036D100280CDD460ADD70FADD360A001812DD6E04DD660523DD7504DD74052B46DD70FACC\r
+:2036F100DD6EFDDD66FE2BDD75FDDD74FE1813DD460CDD70FADD6E0EDD660F2BDD750EDDB3\r
+:20371100740FDD4E02DD4603DD5EFA16003E0121C049CD5E81DD7EFAFE0A20183E01DDAE03\r
+:2037310012DDB613200EDD5E02DD56033E0021A96BCD5E81C37876DD6EFBDD66FCC3B082D5\r
+:20375100CD8881A2FFAFDD77B0DD77B1210C00DD5E02DD5603197EE6034F237EE60047DD0F\r
+:2037710071FDDD70FE210C00197EE6FC77237EE6FF77DD6E04DD6605AFB6CA567CDD6E047E\r
+:20379100DD66057EFE25C2097C3E02DDAEFDDDB6FE200EDD5E02DD56033E0021A96BCD5E50\r
+:2037B10081AFDD77A4DD77A5DD36B300DD36B220DD36ACFFDD36ADFFAFDD77AADD77ABDD26\r
+:2037D10036A8FFDD36A9FFDD36AE0ADD36AF00211B0039DD75B5DD74B6DD36B400AFDD7766\r
+:2037F100A6DD77A7AFDD77A2DD77A3DD34042003DD3405DD6E04DD66057EFE30380BDD6E5C\r
+:2038110004DD66053E39BE3002186521000039010A00CD6682DD6E04DD66054E060021D071\r
+:20383100FF094D44210000397E8177237E8877DD7EAADDB6AB280EDD6EA2DD66A3DD75A828\r
+:20385100DD74A91821DD7EA2DDB6A3200DDD7EB2FE202006DD36B230188ADD6EA2DD66A309\r
+:20387100DD75ACDD74ADDD34042003DD34051883DD6E04DD66055ECD408114000020212357\r
+:203891002A2B2D2E5862636468696C6F70737578057C0D7A157A987BE879DE796479797939\r
+:2038B1006F797979557BD479037A5979DB78E678FA78F378377BE678CB78DD6E04DD660539\r
+:2038D1002BDD7504DD7405C3097CDD36A401DD36A500C3F577DD6E04DD660546DD70B3C379\r
+:2038F100F577DD36B401C3F577216800397EC60277237ECE00772B6E672B2B46236668DD85\r
+:2039110075A2DD74A3DD7EAADDB6AB280EDD6EA2DD66A3DD75A8DD74A9182ADD6EA2DD66D9\r
+:20393100A3DD75ACDD74ADCB7C281ADD36A401DD36A500DD4EA2DD46A3A7210000ED42DD77\r
+:2039510075ACDD74ADC3F577DD36AA01DD36AB00C3F577DD36A601DD36A700C3F577AFDD2E\r
+:2039710077A6DD77A7C3F577210A00E5211D0039E5DD7EA6DDB6A7281D216C00397EC604F5\r
+:2039910077237ECE00772B6E6701FCFF095E2356234E2346181A216C00397EC60277237EAD\r
+:2039B100CE00772B6E672B2B5E23567A079F4F413E0021AC7CCD5E81F1F1DD75B5DD74B6B1\r
+:2039D100C3BC7BDD36AE02DD36AF001837DD36AE08DD36AF00182DAFDD77A6DD77A7DD3681\r
+:2039F100B230DD36AC05DD36AD00DD36A808DD36A900DD36AE10DD36AF001808DD36AEF06D\r
+:203A1100DD36AFFFDD7EA6DDB6A7281E216800397EC60477237ECE00772B6E6701FCFF09E7\r
+:203A31005E2356234E2346EB1819216800397EC60277237ECE00772B6E672B2B46236668B6\r
+:203A5100010000DD75B9DD74BADD71BBDD70BCDD5EAEDD56AFD5211D003901040009E5DD45\r
+:203A71004EBBDD46BCDD5EB9DD56BA3E0121D24ACD5E81F1F1DD75B5DD74B6DD36B730DD7D\r
+:203A910036B885AFDDB6B4CA347B3E02DDAEAEDDB6AF200ADD36B731DD36B88518493E085C\r
+:203AB100DDAEAEDDB6AF2018DD7EB9DDB6BADDB6BBDDB6BC2808DD36B734DD36B885182787\r
+:203AD1003E10DDAEAEDDB6AF200ADD36B736DD36B88518133E0FDDAEAEDDA6AF3C2008DD6E\r
+:203AF10036B739DD36B885DD6EB7DD66B8AFB62832DD36B200DD4EB7DD46B8211B00395D2F\r
+:203B1100543E0021C574CD5E81DD4EB5DD46B6211B00395D543E01213649CD5E81DD75B58B\r
+:203B3100DD74B6C3BC7BDD6E04DD6605234E0600DD71A2DD70A379B02808DD34042003DD17\r
+:203B51003405181C216800397EC60277237ECE00772B6E672B2B46236668DD75A2DD74A30D\r
+:203B7100DD46A2DD6EB5DD66B670DD6EB5DD66B6233600AFDDB6B4280CDD6EB5DD66B6464B\r
+:203B9100DD70B21822181C216800397EC60277237ECE00772B6E672B2B46236668DD75B5AE\r
+:203BB100DD74B6DD36B220DD36B300DD6EFDDD66FEE5DD6EA8DD66A9E5DD6EACDD66ADE544\r
+:203BD100DD6EB2E5DD6EB3E5DD6EA4DD66A5E5DD4EB5DD46B6DD5E02DD5603CDD175EB2108\r
+:203BF1000C0039F9EB4D44210E00397E8177237E8877180218021842DD4E02DD4603DD6E50\r
+:203C110004DD66055E16003E0121C049CD5E81DD34B02003DD34B1DD6E04DD66057EFE0AFB\r
+:203C310020183E01DDAEFDDDB6FE200EDD5E02DD56033E0021A96BCD5E81DD34042003DD0E\r
+:203C51003405C38377210C00DD4E02DD4603097EDDB6FD77237EDDB6FE773E02DDAEFDDD01\r
+:203C7100B6FE200EDD5E02DD56033E0021A96BCD5E813E01DDAEFDDDB6FE2016210400DD2F\r
+:1B3C91004E02DD460309E5210600094E2346E1712370DD6EB0DD66B1C31F8196\r
 :0C044400003062003000307800305800BA\r
-:203F2A00CD8881FEFFDD36FE41DDCB0D7E2816DD36FE61DD4E0CDD460DA7210000ED42DD34\r
-:203F4A00750CDD740DDD6EFEE53E0ADDAE0CDDB60D20043E011801AF4FC5DD6E0CDD660DE5\r
-:203F6A00E5DD6E0ADD660BE5DD4E04DD4605DD5E02DD56033E01210040CD5E81F1F1F1F1F0\r
-:033F8A00C31F81D1\r
+:203CAC00CD8881FEFFDD36FE41DDCB0D7E2816DD36FE61DD4E0CDD460DA7210000ED42DDB5\r
+:203CCC00750CDD740DDD6EFEE53E0ADDAE0CDDB60D20043E011801AF4FC5DD6E0CDD660D66\r
+:203CEC00E5DD6E0ADD660BE5DD4E04DD4605DD5E02DD56033E00210F7DCD5E81F1F1F1F126\r
+:033D0C00C31F8151\r
 :1200BA00C5E5F57CEE806778EE8047F1A7ED42E1C1C9E5\r
-:20400000CD8881D6FFDD6E0ADD660BDD75F8DD74F921000039DD75FADD74FB212C0039DD69\r
-:2040200075FCDD74FD213A00397ED60A77DD4E0CDD460D212400CDA6813811010280DD6EA1\r
-:204040000CDD660D3E80AC67ED423003C38341DD6EFCDD66FD23237EE60047237EE680B01B\r
-:204060002831AFDDB60E282BDD6EF8DD66F923DD75F8DD74F92B362DDD4E04DD4605DD6EDE\r
-:2040800002DD6603CD6B83DD7502DD7403DD7104DD7005DD6EFCDD66FD23237E23B620028B\r
-:2040A000184EDD6E0CDD660D7C079F4F41C5E5DD4E04DD4605DD6E02DD6603CD0283E5DD99\r
-:2040C0006EFADD66FB23DD75FADD74FB2BC171212C0039DD5E0CDD560D7A079F4F41CDF2A6\r
-:2040E00082DD6EFCDD66FD23237E23B620B41830DD5E02DD5603DD4E0CDD460DCDB881DD41\r
-:204100006EFADD66FB23DD75FADD74FB2B73DD5E02DD5603CDEB81DD6EFCDD66FD73237265\r
-:20412000DD6EFCDD66FD7E23B620C5210000394D44DD6EFADD66FBA7ED42DD75FFAFDDB6E5\r
-:20414000FF2840DD6EFADD66FB2BDD75FADD74FB46DD70FE78FE0A300ADD7EFEC630DD77C4\r
-:20416000FE1809DD7EFEDD8610DD77FEDD6EF8DD66F923DD75F8DD74F92BDD46FE70DD35FE\r
-:20418000FF18BADD6EF8DD66F93600DD6E0ADD660BC31F81CD8881FEFFDD36FE41DDCB0BBB\r
-:2041A0007E2816DD36FE61DD4E0ADD460BA7210000ED42DD750ADD740BDD6EFEE50E01C5BD\r
-:2041C000DD6E0ADD660BE5DD6E04DD6605E53E0ADDAE0ADDB60B200DDD5E02DD56037A073F\r
-:2041E0009F4F411809DD5E02DD56030100003E01210040CD5E81F1F1F1F1C31F81CD8881B2\r
-:20420000DCFFDD36F8B9DD36F979DD36FA37DD36FB9E211000E501000011D0893E01219910\r
-:2042200049CD5E81F1210200E5DD4E04DD460511D0893E0121D949CD5E81F1DD36FE00DDC2\r
-:204240007EFEFE0E302EDD4EFE0600DD6E02DD6603097EB7281E21D289DD4EFE060009E599\r
-:20426000DD4EFE0600DD6E02DD66030946E170DD34FE18CBDD4EFE0600DD6E02DD6603091F\r
-:204280007EB72818DD4EFE0600DD6E02DD6603093AD2898632D289DD34FE18D8211000E521\r
-:2042A00001D089210A00395D543E0121D949CD5E81F1AFDD77F4DD77F5DD77F6DD77F7AFEC\r
-:2042C000DD77E0DD77E1DD77E2DD77E3AFDD77DCDD77DDDD77DEDD77DFDD36FE40AFDDB600\r
-:2042E000FECAFF4321180039DD4EFADD46FBDD5EF8DD56F9CDB78221000039E521060039FB\r
-:204300005E2356234E2346EB3E05CD0782C5E5DD6EE8DD66E9C109EBDD6EEADD66EBC1ED99\r
-:204320004AE5D5DD6EE2DD66E3E5DD6EE0DD66E1E5DD6EF4DD66F5C109EBDD6EF6DD66F766\r
-:20434000C1ED4AE5D5210E00395E2356234E2346EB3E04CD3882C5E5DD6EE4DD66E5C10913\r
-:20436000EBDD6EE6DD66E7C1ED4A4D44EBCD7982CD7982EBE1CDB78221040039E5210200BB\r
-:20438000395E2356234E2346EB3E05CD0782C5E5DD6EF0DD66F1C109EBDD6EF2DD66F3C1AD\r
-:2043A000ED4AE5D5DD6EDEDD66DFE5DD6EDCDD66DDE5DD6EF4DD66F5C109EBDD6EF6DD6600\r
-:2043C000F7C1ED4AE5D5210A00395E2356234E2346EB3E04CD3882C5E5DD6EECDD66EDC199\r
-:2043E00009EBDD6EEEDD66EFC1ED4A4D44EBCD7982CD7982EBE1CDB782DD35FEC3DD422175\r
-:20440000000039DD75FCDD74FDDD36FE02DD7EFEFE0DD2A044DD7EFEFE0820282100003999\r
-:20442000E5210600395E2356234E2346EB3E1CCD0782EBE1CD9782DD7EFCC604DD77FC3098\r
-:2044400003DD34FDDD6EFCDD66FD5E2356234E2346EB7DE63FDD77FF3E06DD6EFCDD66FD68\r
-:20446000CDDD81DD7EFFFE0C300ADD7EFFC62EDD77FF1819DD7EFFFE26300ADD7EFFC63594\r
-:20448000DD77FF1808DD7EFFC63BDD77FFDD4EFE060021D08909DD46FF70DD34FEC30D4494\r
-:0A44A000AF32DD8921D089C31F81EE\r
-:2044AA00CD5281DD6E0EDD660FE5DD6E0CDD660DE5DD6E0ADD660BE5211400E53E00211E17\r
-:0B44CA006BCD5E81F1F1F1F1C31F81A9\r
-:2000CC00F5E5CD5082EBE1F1C9F5C5E5AFCD2783F5CD5082F1B728031318067B2F5F7A2F06\r
+:203D0F00CD8881D6FFDD6E0ADD660BDD75F8DD74F921000039DD75FADD74FB212C0039DD5D\r
+:203D2F0075FCDD74FD213A00397ED60A77DD4E0CDD460D212400CDA6813811010280DD6E95\r
+:203D4F000CDD660D3E80AC67ED423003C3927EDD6EFCDD66FD23237EE60047237EE680B0C3\r
+:203D6F002831AFDDB60E282BDD6EF8DD66F923DD75F8DD74F92B362DDD4E04DD4605DD6ED2\r
+:203D8F0002DD6603CD4983DD7502DD7403DD7104DD7005DD6EFCDD66FD23237E23B62002A1\r
+:203DAF00184EDD6E0CDD660D7C079F4F41C5E5DD4E04DD4605DD6E02DD6603CDE082E5DDB0\r
+:203DCF006EFADD66FB23DD75FADD74FB2BC171212C0039DD5E0CDD560D7A079F4F41CDD0BC\r
+:203DEF0082DD6EFCDD66FD23237E23B620B41830DD5E02DD5603DD4E0CDD460DCDB881DD35\r
+:203E0F006EFADD66FB23DD75FADD74FB2B73DD5E02DD5603CDEB81DD6EFCDD66FD73237259\r
+:203E2F00DD6EFCDD66FD7E23B620C5210000394D44DD6EFADD66FBA7ED42DD75FFAFDDB6D9\r
+:203E4F00FF2840DD6EFADD66FB2BDD75FADD74FB46DD70FE78FE0A300ADD7EFEC630DD77B8\r
+:203E6F00FE1809DD7EFEDD8610DD77FEDD6EF8DD66F923DD75F8DD74F92BDD46FE70DD35F2\r
+:203E8F00FF18BADD6EF8DD66F93600DD6E0ADD660BC31F81CD8881FEFFDD36FE41DDCB0BAF\r
+:203EAF007E2816DD36FE61DD4E0ADD460BA7210000ED42DD750ADD740BDD6EFEE50E01C5B1\r
+:203ECF00DD6E0ADD660BE5DD6E04DD6605E53E0ADDAE0ADDB60B200DDD5E02DD56037A0733\r
+:1D3EEF009F4F411809DD5E02DD56030100003E00210F7DCD5E81F1F1F1F1C31F8134\r
+:20400000CD8881DCFFDD36F8B9DD36F979DD36FA37DD36FB9E211000E501000011C2883E06\r
+:2040200001219C47CD5E81F1210200E5DD4E04DD460511C2883E0121DC47CD5E81F1DD36F1\r
+:20404000FE00DD7EFEFE0E302EDD4EFE0600DD6E02DD6603097EB7281E21C488DD4EFE06BD\r
+:204060000009E5DD4EFE0600DD6E02DD66030946E170DD34FE18CBDD4EFE0600DD6E02DDA5\r
+:204080006603097EB72818DD4EFE0600DD6E02DD6603093AC4888632C488DD34FE18D821C4\r
+:2040A0001000E501C288210A00395D543E0121DC47CD5E81F1AFDD77F4DD77F5DD77F6DD24\r
+:2040C00077F7AFDD77E0DD77E1DD77E2DD77E3AFDD77DCDD77DDDD77DEDD77DFDD36FE4027\r
+:2040E000AFDDB6FECA024221180039DD4EFADD46FBDD5EF8DD56F9CDB78221000039E521F8\r
+:204100000600395E2356234E2346EB3E05CD0782C5E5DD6EE8DD66E9C109EBDD6EEADD66F5\r
+:20412000EBC1ED4AE5D5DD6EE2DD66E3E5DD6EE0DD66E1E5DD6EF4DD66F5C109EBDD6EF609\r
+:20414000DD66F7C1ED4AE5D5210E00395E2356234E2346EB3E04CD3882C5E5DD6EE4DD668A\r
+:20416000E5C109EBDD6EE6DD66E7C1ED4A4D44EBCD7982CD7982EBE1CDB78221040039E531\r
+:20418000210200395E2356234E2346EB3E05CD0782C5E5DD6EF0DD66F1C109EBDD6EF2DDA6\r
+:2041A00066F3C1ED4AE5D5DD6EDEDD66DFE5DD6EDCDD66DDE5DD6EF4DD66F5C109EBDD6E21\r
+:2041C000F6DD66F7C1ED4AE5D5210A00395E2356234E2346EB3E04CD3882C5E5DD6EECDD76\r
+:2041E00066EDC109EBDD6EEEDD66EFC1ED4A4D44EBCD7982CD7982EBE1CDB782DD35FEC3A3\r
+:20420000E04021000039DD75FCDD74FDDD36FE02DD7EFEFE0DD2A342DD7EFEFE0820282192\r
+:20422000000039E5210600395E2356234E2346EB3E1CCD0782EBE1CD9782DD7EFCC604DD04\r
+:2042400077FC3003DD34FDDD6EFCDD66FD5E2356234E2346EB7DE63FDD77FF3E06DD6EFC07\r
+:20426000DD66FDCDDD81DD7EFFFE0C300ADD7EFFC62EDD77FF1819DD7EFFFE26300ADD7E50\r
+:20428000FFC635DD77FF1808DD7EFFC63BDD77FFDD4EFE060021C28809DD46FF70DD34FEBF\r
+:0D42A000C31042AF32CF8821C288C31F81F6\r
+:2042AD00CD5281DD6E0EDD660FE5DD6E0CDD660DE5DD6E0ADD660BE5211400E53E0021270D\r
+:0B42CD006BCD5E81F1F1F1F1C31F81A8\r
+:2000CC00F5E5CD5082EBE1F1C9F5C5E5AFCD0583F5CD5082F1B728031318067B2F5F7A2F28\r
 :2000EC0057E1C1F1C95E2356234E2346EBCD0782C37082F5E5CD50827B2F5F7A2F57E1F146\r
 :01010C00C929\r
-:2044D500CD8881FAFFDD6E02DD6603232323CB3CCB1DCB3CCB1D23DD75FEDD74FF2AE489C4\r
-:2044F500DD75FCDD74FD7DB42011DD36FCE0DD36FD8921E08922E28922E489DD6EFCDD66F1\r
-:20451500FD232346236668DD75FADD74FBDD6EFADD66FB232346236668DD4EFADD46FBA78A\r
-:20453500ED42CAC545DD6EFADD66FB462366682929DD4EFADD46FB09E5030369604E2346A0\r
-:20455500E1A7ED42206ADD6EFADD66FB232346236668ED4BE489A7ED422015DD6EFADD66CD\r
-:20457500FB23234623666823234623666822E489DD6EFADD66FB23237E23666F4E2346DDCF\r
-:204595006EFADD66FB7E8177237E8877DD6EFADD66FB2323E5DD4EFADD46FB030369604E3C\r
-:2045B5002346030369604E2346E1712370C32245DD6EFADD66FB46236668DD4EFEDD46FFE3\r
-:2045D500A7ED42DA8346DD6EFADD66FB46236668DD4EFEDD46FFA7ED42201CDD6EFCDD66AC\r
-:2045F500FD2323E5DD4EFADD46FB030369604E2346E17123701856DD6EFEDD66FF2929DDA8\r
-:204615004EFADD46FB0922E489DD6EFCDD66FD2323ED5BE4897323722AE4892323E5030335\r
-:2046350069604E2346E1712370DD6EFADD66FB46236668DD4EFEDD46FFA7ED42E52AE489A9\r
-:20465500D1732372DD6EFADD66FB712370DD6EFCDD66FD22E489DD6EFADD66FB2323AF77E0\r
-:204675002377210400DD4EFADD46FB0918272AE489DD4EFADD46FBA7ED42204F1100043E69\r
-:204695000121614FCD5E81DD75FADD74FB7DA43C2006210000C31F81DD6EFADD66FB36002F\r
-:2046B500233601DD6EFADD66FB2323AF772377210400DD4EFADD46FB09EB3E0021DC73CD2B\r
-:2046D5005E812AE489DD75FADD74FBDD6EFADD66FBDD75FCDD74FDDD6EFADD66FB23234689\r
-:0C46F500236668DD75FADD74FBC3224506\r
+:2042D800CD8881FAFFDD6E02DD6603232323CB3CCB1DCB3CCB1D23DD75FEDD74FF2AD688D2\r
+:2042F800DD75FCDD74FD7DB42011DD36FCD2DD36FD8821D28822D48822D688DD6EFCDD662C\r
+:20431800FD232346236668DD75FADD74FBDD6EFADD66FB232346236668DD4EFADD46FBA789\r
+:20433800ED42CAC843DD6EFADD66FB462366682929DD4EFADD46FB09E5030369604E23469E\r
+:20435800E1A7ED42206ADD6EFADD66FB232346236668ED4BD688A7ED422015DD6EFADD66DB\r
+:20437800FB23234623666823234623666822D688DD6EFADD66FB23237E23666F4E2346DDDD\r
+:204398006EFADD66FB7E8177237E8877DD6EFADD66FB2323E5DD4EFADD46FB030369604E3B\r
+:2043B8002346030369604E2346E1712370C32543DD6EFADD66FB46236668DD4EFEDD46FFE1\r
+:2043D800A7ED42DA8644DD6EFADD66FB46236668DD4EFEDD46FFA7ED42201CDD6EFCDD66AA\r
+:2043F800FD2323E5DD4EFADD46FB030369604E2346E17123701856DD6EFEDD66FF2929DDA7\r
+:204418004EFADD46FB0922D688DD6EFCDD66FD2323ED5BD6887323722AD6882323E5030361\r
+:2044380069604E2346E1712370DD6EFADD66FB46236668DD4EFEDD46FFA7ED42E52AD688B7\r
+:20445800D1732372DD6EFADD66FB712370DD6EFCDD66FD22D688DD6EFADD66FB2323AF77EE\r
+:204478002377210400DD4EFADD46FB0918272AD688DD4EFADD46FBA7ED42204F1100043E77\r
+:204498000121574ECD5E81DD75FADD74FB7DA43C2006210000C31F81DD6EFADD66FB360039\r
+:2044B800233601DD6EFADD66FB2323AF772377210400DD4EFADD46FB09EB3E0021E573CD21\r
+:2044D8005E812AD688DD75FADD74FBDD6EFADD66FBDD75FCDD74FDDD6EFADD66FB23234697\r
+:0C44F800236668DD75FADD74FBC3254304\r
 :20010D00B7C8CB28CB19CB1CCB1D3D20F5C9B7C8FE0838096C61480600D60818F2CB38CBFB\r
 :09012D0019CB1CCB1D3D20F5C9C6\r
-:20470100CD52812ABD863ABF86B5B42812010000DD5E02DD56033ABF862ABD86CD5E81DD80\r
-:204721005E02DD56033E0121A84BCD5E81C31F81CD5281DD6E0ADD660BE5C5D5211700E5A1\r
-:0F4741003E00211E6BCD5E81F1F1F1F1C31F81AE\r
+:20450400CD52812ABD863ABF86B5B42812010000DD5E02DD56033ABF862ABD86CD5E81DD7F\r
+:204524005E02DD56033E0121AB49CD5E81C31F81CD5281DD6E0ADD660BE5C5D5211700E59F\r
+:0F4544003E0021276BCD5E81F1F1F1F1C31F81A4\r
 :20013600DDF9DDE1D13333F1ED3939C90405C8CB2ACB1B10FAC9B7C8FE083809414C652E60\r
 :0E01560000D60818F229CB11CB103D20F8C9B5\r
-:20475000CD8881FAFFDD71FADD70FBDD6E02DD6603DD75FCDD74FDDD36FE00DD36FF00DDBB\r
-:204770006E0ADD660B2BDD750ADD740B237DB4282CDD6EFCDD66FD23DD75FCDD74FD2B4621\r
-:20479000DD70FFDD6EFADD66FB23DD75FADD74FB2B4EDD71FE79B82802180218C2DD4EFF41\r
-:2047B0000600DD6EFE2600A7ED42C31F81CD5281DD6E0ADD660BE5C5D5210A00E53E00210A\r
-:0C47D0001E6BCD5E81F1F1F1F1C31F8181\r
+:20455300CD8881FAFFDD71FADD70FBDD6E02DD6603DD75FCDD74FDDD36FE00DD36FF00DDBA\r
+:204573006E0ADD660B2BDD750ADD740B237DB4282CDD6EFCDD66FD23DD75FCDD74FD2B4620\r
+:20459300DD70FFDD6EFADD66FB23DD75FADD74FB2B4EDD71FE79B82802180218C2DD4EFF40\r
+:2045B3000600DD6EFE2600A7ED42C31F81CD5281DD6E0ADD660BE5C5D5210A00E53E002109\r
+:0C45D300276BCD5E81F1F1F1F1C31F8177\r
 :160164002100003E11CB13CB123DC8CB15CB14ED4230F20918EF35\r
-:2047DC00CD888176FFAFDD77FEDD77FF2AB1857DB4282BDDCB037E200FED4BB185DD6E0227\r
-:2047FC00DD6603CDA6813803C36149DD6E02DD660329ED4BAF850946236668C39649DD4E86\r
-:20481C0002DD4603210000CDA6813803C36149210000E5213C85E53E0121AA44CD5E81F1DF\r
-:20483C00F1DD75FADD74FBCB7C2803C36149218000E5210400394D44DD5EFADD56FB3E01DD\r
-:20485C00213147CD5E81F1DD75F8DD74F94D44210000CDA681D26149AFDD77FCDD77FDDD23\r
-:20487C004EF8DD46F9DD6EFCDD66FDA7ED42D25E4921020039DD4EFCDD46FD097EFE0AC2F0\r
-:20489C00264921E689DD4EFEDD46FF09360011E6893E01214B4FCD5E81DD4E02DD4603A753\r
-:2048BC00ED42205D21000039E501200011E6893E01216D4BCD5E814D44E171237079B020CD\r
-:2048DC0010DD5EFADD56FB3E00212272CD5E811874210000397E23666F7EFE20200B210066\r
-:2048FC000039342320013418E8DD5EFADD56FB3E00212272CD5E812100003946236668180C\r
-:20491C0079AFDD77FEDD77FF182D014F00DD6EFEDD66FFA7ED42301F21020039DD4EFCDD09\r
-:20493C0046FD0946DD6EFEDD66FF23DD75FEDD74FF2B11E6891970DD34FC2003DD34FDC346\r
-:20495C007B48C34A48014E8511E6893E0021A075CD5E81210A00E511E6893E00213772CD4A\r
-:1D497C005E8101E689094D44DD5E02DD56033E01219441CD5E81F121E689C31F81FD\r
+:2045DF00CD888176FFAFDD77FEDD77FF2AB1857DB4282BDDCB037E200FED4BB185DD6E0226\r
+:2045FF00DD6603CDA6813803C36447DD6E02DD660329ED4BAF850946236668C39947DD4E83\r
+:20461F0002DD4603210000CDA6813803C36447210000E5213C85E53E0121AD42CD5E81F1DC\r
+:20463F00F1DD75FADD74FBCB7C2803C36447218000E5210400394D44DD5EFADD56FB3E01DB\r
+:20465F00213445CD5E81F1DD75F8DD74F94D44210000CDA681D26447AFDD77FCDD77FDDD20\r
+:20467F004EF8DD46F9DD6EFCDD66FDA7ED42D2614721020039DD4EFCDD46FD097EFE0AC2EE\r
+:20469F00294721D888DD4EFEDD46FF09360011D8883E00213975CD5E81DD4E02DD4603A75C\r
+:2046BF00ED42205D21000039E501200011D8883E01217049CD5E814D44E171237079B020DA\r
+:2046DF0010DD5EFADD56FB3E00212B72CD5E811874210000397E23666F7EFE20200B21005C\r
+:2046FF000039342320013418E8DD5EFADD56FB3E00212B72CD5E8121000039462366681802\r
+:20471F0079AFDD77FEDD77FF182D014F00DD6EFEDD66FFA7ED42301F21020039DD4EFCDD08\r
+:20473F0046FD0946DD6EFEDD66FF23DD75FEDD74FF2B11D8881970DD34FC2003DD34FDC354\r
+:20475F007E46C34D46014E8511D8883E0021C574CD5E81210A00E511D8883E00214072CD38\r
+:1D477F005E8101D888094D44DD5E02DD56033E0021A37ECD5E81F121D888C31F81CF\r
 :200450002F6C69622F6C69626572726F722E74787400556E6B6E6F776E206572726F7220AE\r
 :01047000008B\r
 :0404C3000000000035\r
 :13017A005E2356CD2A81722B73C9EB702B712B722B73C94F\r
-:20499900CD8881FEFFDD6E02DD6603DD75FEDD74FFDD6E0ADD660B2BDD750ADD740B237DD2\r
-:2049B900B42814DD4604DD6EFEDD66FF23DD75FEDD74FF2B7018DADD6E02DD6603C31F81F6\r
-:2049D900CD8881FCFFDD6E02DD6603DD75FCDD74FDDD71FEDD70FFDD6E0ADD660B2BDD7506\r
-:2049F9000ADD740B237DB42820DD6EFEDD66FF23DD75FEDD74FF2B46DD6EFCDD66FD23DD56\r
-:204A190075FCDD74FD2B7018CEDD6E02DD6603C31F81CD8881FAFF2AB3852BDD75FADD744E\r
-:204A3900FB21FFFF22B3853E0021000032BF8622BD86DDCBFB7E2053010500DD5EFADD56AC\r
-:204A5900FBCD2A8121368A195E23562346EBDD75FCDD74FDDD70FE110500DD4EFADD46FB65\r
-:204A7900CD2A8121398A194E2346DD5E02DD5603DD7EFEDD6EFCDD66FDCD5E81DD6EFADDD0\r
-:204A990066FB2BDD75FADD74FB18A7C31F81CD52812AB385CB7C200E010A802AB3853E8095\r
-:204AB900AC67ED42380B210C0022BB8621FFFF18533E01212B4A32BF8622BD86DD7E02DD53\r
-:204AD900B603DDB604283A010500ED5BB385CD2A8121368A19DD5604DD4E02DD46037123F5\r
-:204AF900702372010500ED5BB385CD2A8121398A19DD4E0ADD460B7123702AB3852322B3DC\r
-:1A4B190085210000C31F81CD5281210000E53E0121A74ACD5E81F1C31F8182\r
+:20479C00CD8881FEFFDD6E02DD6603DD75FEDD74FFDD6E0ADD660B2BDD750ADD740B237DD1\r
+:2047BC00B42814DD4604DD6EFEDD66FF23DD75FEDD74FF2B7018DADD6E02DD6603C31F81F5\r
+:2047DC00CD8881FCFFDD6E02DD6603DD75FCDD74FDDD71FEDD70FFDD6E0ADD660B2BDD7505\r
+:2047FC000ADD740B237DB42820DD6EFEDD66FF23DD75FEDD74FF2B46DD6EFCDD66FD23DD55\r
+:20481C0075FCDD74FD2B7018CEDD6E02DD6603C31F81CD8881FAFF2AB3852BDD75FADD744D\r
+:20483C00FB21FFFF22B3853E0021000032BF8622BD86DDCBFB7E2053010500DD5EFADD56AB\r
+:20485C00FBCD2A81212889195E23562346EBDD75FCDD74FDDD70FE110500DD4EFADD46FB73\r
+:20487C00CD2A81212B89194E2346DD5E02DD5603DD7EFEDD6EFCDD66FDCD5E81DD6EFADDDE\r
+:20489C0066FB2BDD75FADD74FB18A7C31F81CD52812AB385CB7C200E010A802AB3853E8094\r
+:2048BC00AC67ED42380B210C0022BB8621FFFF18533E01212E4832BF8622BD86DD7E02DD51\r
+:2048DC00B603DDB604283A010500ED5BB385CD2A8121288919DD5604DD4E02DD4603712303\r
+:2048FC00702372010500ED5BB385CD2A81212B8919DD4E0ADD460B7123702AB3852322B3EA\r
+:1A491C0085210000C31F81CD5281210000E53E0121AA48CD5E81F1C31F8180\r
 :0204C700000033\r
 :1E018D00EBE3F5E5210600397EAB77237EAA77D1237E73A94F237E72A847F1D1E1C99F\r
-:204B3300CD5281D53E00213772CD5E81D119EB3E0021A075CD5E81DD6E02DD6603C31F814E\r
-:1A4B530021040039D55E2356234D44F7300822BB8621FFFF4D44D1C325810E\r
+:20493600CD5281D53E00214072CD5E81D119EB3E0021C574CD5E81DD6E02DD6603C31F8120\r
+:1A49560021040039D55E2356234D44F7300822BB8621FFFF4D44D1C325810D\r
 :1901AB00F57EB3775F237EB27757237EB1774F237EB077472B2B2BF1C9BC\r
-:204B6D00CD8881FEFFDD6E02DD660346DD70FE480600DD6E04DD6605A7ED422008DD6E0201\r
-:204B8D00DD66031809AFDDB6FE2006210000C31F81DD34022003DD340318CACD5281D521F5\r
-:104BAD000B00E53E00211E6BCD5E81F1F1C31F812F\r
+:20497000CD8881FEFFDD6E02DD660346DD70FE480600DD6E04DD6605A7ED422008DD6E0200\r
+:20499000DD66031809AFDDB6FE2006210000C31F81DD34022003DD340318CACD5281D521F4\r
+:1049B0000B00E53E0021276BCD5E81F1F1C31F8125\r
 :2001C400DDF9DDE1D1C1C9F57E83775F237E8A7757237E89774F237E8877472B2B2BF1C955\r
-:204BBD00CD8881FEFFDD36FEFFDD36FFFFDD5E02160021B585197EE608280FDD4E02060047\r
-:204BDD0021D0FF09DD75FEDD74FFDD4E02060021B585097EE604280FDD4E02060021A9FFED\r
-:204BFD0009DD75FEDD74FFDD4E02060021B585097EE602280FDD4E02060021B0FF09DD755D\r
-:204C1D00FEDD74FFDD4E04DD4605DD6EFEDD66FFCDA6813808DD36FEFFDD36FFFFDD6EFEA9\r
-:204C3D00DD66FFC3B082CD8881FAFF110280DD6E0ADD660B3E80AC67ED52380EDD4E0ADDB3\r
-:204C5D00460B212400CDA6813007AFDD770ADD770BDD6E02DD66034E060021B585097EE65B\r
-:204C7D0010280ADD34022003DD340318E4DD6E02DD66037EFE2B200ADD34022003DD3403E1\r
-:204C9D00186DDD7E0ADDB60B2065DD6E02DD66037EFE30205ADD6E02DD6603237EEE20FEF1\r
-:204CBD00582017DD360A10DD360B00210800397EC60277237ECE00771835DD6E02DD660318\r
-:204CDD00237EEE20FE422017DD360A02DD360B00210800397EC60277237ECE00771810DD4A\r
-:204CFD00360A08DD360B00DD34022003DD3403DD7E0ADDB60B2008DD360A0ADD360B00AFC8\r
-:204D1D00DD77FADD77FBDD77FCDD77FDDD4E0ADD460BDD6E02DD66035ECDBD4BDD75FEDDE2\r
-:204D3D0074FF7DA43C282E21000039DD5E0ADD560B7A079F4F41CDD58321000039DD5EFEEB\r
-:204D5D00DD56FF7A079F4F41CDB782DD34022003DD340318B7DD7E04DDB6052811DD6E02B8\r
-:204D7D00DD6603E5DD6E04DD6605C1712370DD4EFCDD46FDDD6EFADD66FBC32282CD888188\r
-:204D9D00FEFF3E0021C86ECD5E81210C000946236668DD75FEDD74FF7DE6402818DD5E0489\r
-:204DBD00DD56053E0021A06BCD5E817DB4280621FFFFC3A94EDD7EFEE6206FDD7EFFE6033F\r
-:204DDD00673E20ADB4280621FFFFC3A94E210800DD4E04DD4605095E23560A6F030A67A795\r
-:204DFD00ED523818DD5E04DD56053E0021A06BCD5E817DB4280621FFFFC3A94EDD6E04DD16\r
-:204E1D0066054E234603702B710B6960DD460270210C00DD4E04DD4605097EF68077237E42\r
-:204E3D00F600773E0ADDAE02DDB6032007DD7EFEE6012007DD7EFEE6022817DD5E04DD56FD\r
-:204E5D00053E0021A06BCD5E817DB4280521FFFF183ADD7EFEE6032818210400DD4E04DD98\r
-:204E7D00460509E5210600094E2346E17123701816210400DD4E04DD460509E52108000946\r
-:204E9D004E2346E1712370DD6E022600C31F81CD5281160021B585197EE604280EDD7E025E\r
-:204EBD00EE206FDD7E03EE00671806DD6E02DD6603C31F81CD5281160021B585197EE60201\r
-:194EDD00280EDD7E02EE206FDD7E03EE00671806DD6E02DD6603C31F81E5\r
+:2049C000CD8881FEFF3E0021D16ECD5E81210C000946236668DD75FEDD74FF7DE6402818CA\r
+:2049E000DD5E04DD56053E0021A96BCD5E817DB4280621FFFFC3CF4ADD7EFEE6206FDD7E9E\r
+:204A0000FFE603673E20ADB4280621FFFFC3CF4A210800DD4E04DD4605095E23560A6F0383\r
+:204A20000A67A7ED523818DD5E04DD56053E0021A96BCD5E817DB4280621FFFFC3CF4ADD02\r
+:204A40006E04DD66054E234603702B710B6960DD460270210C00DD4E04DD4605097EF680EC\r
+:204A600077237EF600773E0ADDAE02DDB6032007DD7EFEE6012007DD7EFEE6022817DD5EFD\r
+:204A800004DD56053E0021A96BCD5E817DB4280521FFFF183ADD7EFEE6032818210400DD68\r
+:204AA0004E04DD460509E5210600094E2346E17123701816210400DD4E04DD460509E52109\r
+:204AC0000800094E2346E1712370DD6E022600C31F81CD8881FEFFDD36FE41DDCB0D7E28D3\r
+:204AE00016DD36FE61DD4E0CDD460DA7210000ED42DD750CDD740DDD6EFEE50E00C5DD6EC8\r
+:204B00000CDD660DE5DD6E0ADD660BE5DD4E04DD4605DD5E02DD56033E00210F7DCD5E816B\r
+:204B2000F1F1F1F1C31F81CD8881F8FFAFDD77FCDD77FDDD6E02DD6603DD75FEDD74FFDD21\r
+:204B40006EFEDD66FF4E060021B585097EE610280ADD34FE2003DD34FF18E4DD6EFEDD667F\r
+:204B6000FF7EFE2D2012DD34FC2003DD34FDDD34FE2003DD34FF1813DD6EFEDD66FF7EFEA9\r
+:204B80002B2008DD34FE2003DD34FFDD6E0ADD660BE5DD4E04DD4605DD5EFEDD56FF3E01F7\r
+:204BA00021F24ECD5E81F1DD75F8DD74F9DD71FADD70FBDD7EFCDDB6FD2805CD4983180C02\r
+:0F4BC000DD4EFADD46FBDD6EF8DD66F9C32282BD\r
+:1001E400C5D55E2356234E2346EBCD2183C3C2835C\r
+:204BCF00CD8881F4FF210001E5015A89DD5E02DD56033E01213445CD5E81F1DD75FEDD7488\r
+:204BEF00FF4D44210000CDA6813806210000C3544E010A00115A893E01217049CD5E81DD9C\r
+:204C0F0075F4DD74F57DB4285BDD6EF4DD66F523DD75F4DD74F52B3600210100E5015A89B0\r
+:204C2F00DD6EF4DD66F5A7ED42DD4EFEDD46FFA7ED427C079F4F41C5E5DD5E02DD56033EEA\r
+:204C4F000021396ECD5E81F1F1F1DD6EF4DD66F52B2B7EFE0D200ADD6EF4DD66F52B2B367B\r
+:204C6F0000C3054D210001E5015A89DD5E02DD56033E01213445CD5E81F1DD75FEDD74FF9C\r
+:204C8F004D44210000CDA6813806210000C3544E010A00115A893E01217049CD5E81DD7585\r
+:204CAF00F4DD74F57DB428BC210100E5DD6EFEDD66FF7C079F5F53D5E5015A89DD6EF4DD76\r
+:204CCF0066F5A7ED427C079F5F53A7C1ED42EBC1ED42E5D5210100C109EB210000C1ED4AA4\r
+:204CEF00E5D5DD5E02DD56033E0021396ECD5E81F1F1F1C3D44B3A5A89FE2328153A5A8979\r
+:204D0F00FE20280E3A5A89FE0A28073A5A89FE092003C3D44BDD36F45ADD36F589AFDD77BE\r
+:204D2F00FCDD77FD010780DD6EFCDD66FD3E80AC67ED42D2FF4DDD5EFCDD56FDCDCB830068\r
+:204D4F00000700B54D624D6D4D784D864D944D9F4DAA4DDD6EF4DD66F5225A8A1848DD6E4E\r
+:204D6F00F4DD66F5225C8A183DDD6EF4DD66F5DD75FADD74FB182FDD6EF4DD66F5DD75F884\r
+:204D8F00DD74F91821DD6EF4DD66F522628A1816DD6EF4DD66F522648A180BDD6EF4DD66A2\r
+:204DAF00F522668A1800010680DD6EFCDD66FD3E80AC67ED42302E013A00DD5EF4DD56F5C7\r
+:204DCF003E01217049CD5E81DD75F4DD74F57DB42003C3D44BDD6EF4DD66F523DD75F4DD80\r
+:204DEF0074F52B3600DD34FC2003DD34FDC3334D210A00E5210400394D44DD5EF8DD56F9FB\r
+:204E0F003E0121F24ECD5E81F122608ADD6EF6DD66F7AFB62803C3D44B210A00E521040018\r
+:204E2F00394D44DD5EFADD56FB3E0121F24ECD5E81F1225E8ADD6EF6DD66F7AFB62803C321\r
+:084E4F00D44B215A8AC31F81D4\r
+:2001F400EBE3F5DDE5DD210000DD39C5D5DD5609DD7409DD5E08DD7508CD5B83DDF9DDE146\r
+:20021400F1D13333C9CB782809AF914F3E0098473E01CB7AC8F5AF935F3E009A57F1EE01C8\r
+:20023400C9EBE3F5DDE5DD210000DD39C5D5DD5609DD7409DD5E08DD7508CD5B83E1C1CD61\r
+:09025400B383DDE1F1D13333C9BC\r
+:154E5700CD5281D5211800E53E0021276BCD5E81F1F1C31F81D1\r
+:20025D00F5AF956F3E009C673E00994F3E009847F1C9F5210000010000DD36F82118021925\r
+:20027D0037DDCBFC16DDCBFD16DDCBFE16DDCBFF16DD35F8282ECB11CB10CB15CB14ED5227\r
+:20029D0038DD201078DD960738D5200879DD960638CD180479DD96064F78DD9E074730C14F\r
+:2002BD002BA718BDF1E56069C1C9F57D2F6F7C2F67792F4F782F47F1C9EB702B712B722BD1\r
+:0202DD0073C9E3\r
+:204E6C00CD8881FEFFDD36FEFFDD36FFFFDD5E02160021B585197EE608280FDD4E02060095\r
+:204E8C0021D0FF09DD75FEDD74FFDD4E02060021B585097EE604280FDD4E02060021A9FF3B\r
+:204EAC0009DD75FEDD74FFDD4E02060021B585097EE602280FDD4E02060021B0FF09DD75AB\r
+:204ECC00FEDD74FFDD4E04DD4605DD6EFEDD66FFCDA6813808DD36FEFFDD36FFFFDD6EFEF8\r
+:204EEC00DD66FFC3B082CD8881FAFF110280DD6E0ADD660B3E80AC67ED52380EDD4E0ADD02\r
+:204F0C00460B212400CDA6813007AFDD770ADD770BDD6E02DD66034E060021B585097EE6A9\r
+:204F2C0010280ADD34022003DD340318E4DD6E02DD66037EFE2B200ADD34022003DD34032F\r
+:204F4C00186DDD7E0ADDB60B2065DD6E02DD66037EFE30205ADD6E02DD6603237EEE20FE3F\r
+:204F6C00582017DD360A10DD360B00210800397EC60277237ECE00771835DD6E02DD660366\r
+:204F8C00237EEE20FE422017DD360A02DD360B00210800397EC60277237ECE00771810DD98\r
+:204FAC00360A08DD360B00DD34022003DD3403DD7E0ADDB60B2008DD360A0ADD360B00AF16\r
+:204FCC00DD77FADD77FBDD77FCDD77FDDD4E0ADD460BDD6E02DD66035ECD6C4EDD75FEDD7F\r
+:204FEC0074FF7DA43C282E21000039DD5E0ADD560B7A079F4F41CDED8321000039DD5EFE22\r
+:20500C00DD56FF7A079F4F41CDB782DD34022003DD340318B7DD7E04DDB6052811DD6E0206\r
+:20502C00DD6603E5DD6E04DD6605C1712370DD4EFCDD46FDDD6EFADD66FBC32282CD52810C\r
+:20504C00160021B585197EE604280EDD7E02EE206FDD7E03EE00671806DD6E02DD6603C31B\r
+:20506C001F81CD5281160021B585197EE602280EDD7E02EE206FDD7E03EE00671806DD6EC8\r
+:07508C0002DD6603C31F8172\r
 :2004C9000101010101010101011111111111010101010101010101010101010101010101A3\r
 :2004E900102020202020202020202020202020204848484848484848484820202020202073\r
 :2005090020424242424242020202020202020202020202020202020202020220202020205E\r
 :20056900000000000000000000000000000000000000000000000000000000000000000072\r
 :20058900000000000000000000000000000000000000000000000000000000000000000052\r
 :2005A900000000000000000000000000000000000000000000000000000000000000000032\r
-:204EF600CD8881FEFFDD36FE41DDCB0D7E2816DD36FE61DD4E0CDD460DA7210000ED42DD59\r
-:204F1600750CDD740DDD6EFEE50E00C5DD6E0CDD660DE5DD6E0ADD660BE5DD4E04DD460530\r
-:154F3600DD5E02DD56033E01210040CD5E81F1F1F1F1C31F8180\r
-:2001E400E3F5D57B96235F7A9E23577B96237A9E23C3E4823004EB2329195E2356EBD1F189\r
-:12020400E3C9C5D55E2356234E2346EBCD4383C37884B4\r
-:164F4B00CD5281210A00E50100003E0121764FCD5E81F1C31F817A\r
-:20021600EBE3F5DDE5DD210000DD39C5D5DD5609DD7409DD5E08DD7508CD7D83DDF9DDE101\r
-:20023600F1D13333C9CB782809AF914F3E0098473E01CB7AC8F5AF935F3E009A57F1EE01A6\r
-:20025600C9EBE3F5DDE5DD210000DD39C5D5DD5609DD7409DD5E08DD7508CD7D83E1C1CD1D\r
-:090276006984DDE1F1D13333C9E3\r
-:154F6100CD5281D5211800E53E00211E6BCD5E81F1F1C31F81CF\r
-:20027F00F5AF956F3E009C673E00994F3E009847F1C9F5210000010000DD36F82118021903\r
-:20029F0037DDCBFC16DDCBFD16DDCBFE16DDCBFF16DD35F8282ECB11CB10CB15CB14ED5205\r
-:2002BF0038DD201078DD960738D5200879DD960638CD180479DD96064F78DD9E074730C12D\r
-:2002DF002BA718BDF1E56069C1C9C5D55E2356234E2346EBCDE583C37884E3D5DDE5DD218D\r
-:2002FF000000DD39DD5609DD7409DD5E08DD7508D5C5F5DD6E0462ED6CDD5605ED5C19590A\r
-:20031F00DD5607ED5C19DD5E0650ED5C19E5DD5E04DD56FEED5CDD6E05DD6607ED6C19DDA8\r
-:20033F004606ED4C09E5DD5E04DD5607ED5CDD6E05DD6606ED6CAF1917F5DD5E04DD56062B\r
-:20035F00ED5C4A0600AF091755C14CE10984C1814D47EBF1D1D1DDE1D133333333C9F57D5C\r
-:16037F002F6F7C2F67792F4F782F47F1C9EB702B712B722B73C91E\r
-:204F7600CD8881F8FFAFDD77FCDD77FDDD6E02DD6603DD75FEDD74FFDD6EFEDD66FF4E06EC\r
-:204F96000021B585097EE610280ADD34FE2003DD34FF18E4DD6EFEDD66FF7EFE2D2012DD70\r
-:204FB60034FC2003DD34FDDD34FE2003DD34FF1813DD6EFEDD66FF7EFE2B2008DD34FE2084\r
-:204FD60003DD34FFDD6E0ADD660BE5DD4E04DD4605DD5EFEDD56FF3E0121434CCD5E81F1D2\r
-:204FF600DD75F8DD74F9DD71FADD70FBDD7EFCDDB6FD2805CD6B83180CDD4EFADD46FBDD64\r
-:085016006EF8DD66F9C3228289\r
+:2002DF00E3F5D57B96235F7A9E23577B96237A9E23C3DF833004EB2329195E2356EBD1F191\r
+:2002FF00E3C9C5D55E2356234E2346EBCDFD83C3C283E3D5DDE5DD210000DD39DD5609DD01\r
+:20031F007409DD5E08DD7508D5C5F5DD6E0462ED6CDD5605ED5C1959DD5607ED5C19DD5E41\r
+:20033F000650ED5C19E5DD5E04DD56FEED5CDD6E05DD6607ED6C19DD4606ED4C09E5DD5EB1\r
+:20035F0004DD5607ED5CDD6E05DD6606ED6CAF1917F5DD5E04DD5606ED5C4A0600AF091751\r
+:16037F0055C14CE10984C1814D47EBF1D1D1DDE1D133333333C920\r
 :00000001FF\r
index e915791..c89a398 100644 (file)
@@ -17,7 +17,7 @@ Area                       Addr        Size        Decimal Bytes (Attributes)
      000086B5  s_UDATA0  |    000086B5  e_CCSTR   |    000086B5  e_ECSTR  \r
      000086B5  s_CCSTR   |    000086B5  e_CDATA0  |    000086B5  s_ECSTR  \r
      000086B5  e_IDATA0  |    00008A68  e_UDATA0  |    00008A68  s_CSTACK \r
-     00009A68  e_CSTACK  |    0000C073  l_CODE    |    00010073  e_CODE   \r
+     00009A68  e_CSTACK  |    0000C0F4  l_CODE    |    000100F4  e_CODE   \r
 Hexadecimal  [32-Bits]\r
 \r
 Area                       Addr        Size        Decimal Bytes (Attributes)\r
@@ -43,10 +43,10 @@ RCODE                  00008100    00000381 =         897. bytes (REL,CON)
      0000822E  ?SS_RSH_L |    00008238  ?L_LSH_L0 |    00008250  ?S_DIVMOD\r
      00008266  ?S_MULASG |    00008270  ?L_END_AS |    00008279  ?L_XOR_L0\r
      00008297  ?L_ORASG_ |    000082B0  ?LEAVE_DI |    000082B7  ?L_ADDASG\r
-     000082D0  ?S_S_SWIT |    000082E4  ?S_SWITCH |    000082F2  ?UL_DIVAS\r
-     00008302  ?UL_MOD_L |    00008327  ?S_FIND_S |    00008343  ?UL_DIV_L\r
-     0000836B  ?L_NEG_L0 |    0000837D  ?L_DIVMOD |    000083D5  ?L_MULASG\r
-     000083E5  ?L_MUL_L0 |    00008469  ?L_NOT_L0 |    00008478  ?L_END_MU\r
+     000082D0  ?UL_DIVAS |    000082E0  ?UL_MOD_L |    00008305  ?S_FIND_S\r
+     00008321  ?UL_DIV_L |    00008349  ?L_NEG_L0 |    0000835B  ?L_DIVMOD\r
+     000083B3  ?L_NOT_L0 |    000083C2  ?L_END_MU |    000083CB  ?S_S_SWIT\r
+     000083DF  ?S_SWITCH |    000083ED  ?L_MULASG |    000083FD  ?L_MUL_L0\r
 Hexadecimal  [32-Bits]\r
 \r
 Area                       Addr        Size        Decimal Bytes (Attributes)\r
@@ -102,7 +102,7 @@ Hexadecimal  [32-Bits]
 \r
 Area                       Addr        Size        Decimal Bytes (Attributes)\r
 --------------------       ----        ----        ------- ----- ------------\r
-CODE                   00004000    0000C073 =       49267. bytes (NUL,CON)\r
+CODE                   00004000    0000C0F4 =       49396. bytes (NUL,CON)\r
 \r
         Value  Global            Value  Global            Value  Global    \r
         -----  ------            -----  ------            -----  ------    \r
@@ -127,26 +127,26 @@ CODE                   00004000    0000C073 =       49267. bytes (NUL,CON)
      00005EB9  rootWindo |    00005ED7  screenbui |    000062A7  root_acti\r
      000065DF  read_stri |    000066B4  gui_globa |    000066BA  GUIinit  \r
      000067E1  GUIunit   |    00006806  GUIgo     |    000068C7  login    \r
-     000069D6  login_act |    00006ACF  main      |    00006B04  setgid   \r
-     00006B1E  unix      |    00006B38  strrchr   |    00006BA0  fflush   \r
-     00006DB3  chdir     |    00006DC8  _write    |    00006DE7  setuid   \r
-     00006E01  printf    |    00006E30  lseek     |    00006E5D  __stdio_c\r
-     00006EC8  __stdio_i |    00006F06  setenv    |    00007182  unsetenv \r
-     00007222  close     |    00007237  strlen    |    0000726E  strcmp   \r
-     0000730F  perror    |    0000734C  execv     |    0000735F  ioctl    \r
-     0000738A  isatty    |    000073C5  fstat     |    000073DC  free     \r
-     000074BC  getpwnam  |    0000751E  setpwent  |    00007563  endpwent \r
-     00007582  getpwent  |    000075A0  strcpy    |    000075C7  __getpwen\r
-     000079CF  vfprintf  |    00007F2A  ltoa      |    00014000  __longtoa\r
-     00014194  itoa      |    000141FD  crypt     |    000144AA  open     \r
-     000144D5  malloc    |    00014701  exit      |    00014731  _read    \r
-     00014750  memcmp    |    000147BD  execve    |    000147DC  strerror \r
-     00014999  memset    |    000149D9  memcpy    |    00014AA7  on_exit  \r
-     00014B20  atexit    |    00014B33  strcat    |    00014B53  unix_long\r
-     00014B6D  strchr    |    00014BA8  _exit     |    00014C43  strtoul  \r
-     00014D9A  fputc     |    00014EAC  toupper   |    00014ED1  tolower  \r
-     00014EF6  ultoa     |    00014F4B  atoi      |    00014F61  sbrk     \r
-     00014F76  strtol   \r
+     000069D6  login_act |    00006AD8  main      |    00006B0D  setgid   \r
+     00006B27  unix      |    00006B41  strrchr   |    00006BA9  fflush   \r
+     00006DBC  chdir     |    00006DD1  _write    |    00006DF0  setuid   \r
+     00006E0A  printf    |    00006E39  lseek     |    00006E66  __stdio_c\r
+     00006ED1  __stdio_i |    00006F0F  setenv    |    0000718B  unsetenv \r
+     0000722B  close     |    00007240  strlen    |    00007277  strcmp   \r
+     00007318  perror    |    00007355  execv     |    00007368  ioctl    \r
+     00007393  isatty    |    000073CE  fstat     |    000073E5  free     \r
+     000074C5  strcpy    |    000074EC  getpwuid  |    00007539  atoi     \r
+     0000754F  setpwent  |    00007594  endpwent  |    000075B3  getpwent \r
+     00007751  vfprintf  |    00007CAC  ltoa      |    00007D0F  __longtoa\r
+     00007EA3  itoa      |    00014000  crypt     |    000142AD  open     \r
+     000142D8  malloc    |    00014504  exit      |    00014534  _read    \r
+     00014553  memcmp    |    000145C0  execve    |    000145DF  strerror \r
+     0001479C  memset    |    000147DC  memcpy    |    000148AA  on_exit  \r
+     00014923  atexit    |    00014936  strcat    |    00014956  unix_long\r
+     00014970  strchr    |    000149AB  _exit     |    000149C0  fputc    \r
+     00014AD2  ultoa     |    00014B27  strtol    |    00014BCF  __getpwen\r
+     00014E57  sbrk      |    00014EF2  strtoul   |    00015049  toupper  \r
+     0001506E  tolower  \r
 Hexadecimal  [32-Bits]\r
 \r
 Area                       Addr        Size        Decimal Bytes (Attributes)\r
@@ -157,7 +157,7 @@ UDATA0                 000086B5    000003B3 =         947. bytes (REL,CON)
         -----  ------            -----  ------            -----  ------    \r
      000086B5  _argc     |    000086B7  _argv     |    000086B9  environ  \r
      000086BB  errno     |    000086BD  __cleanup |    000086C0  global   \r
-     000089E0  __malloc_ |    000089E4  __malloc_ |    00008A36  __on_exit\r
+     000088D2  __malloc_ |    000088D6  __malloc_ |    00008928  __on_exit\r
 Hexadecimal  [32-Bits]\r
 \r
 Area                       Addr        Size        Decimal Bytes (Attributes)\r
@@ -199,15 +199,15 @@ Libraries Linked                          [ object file ]
 ..\..\lib\libcb.lib                       [ relcb\isatty.rel ]\r
 ..\..\lib\libsysb.lib                     [ relsysb\fstat.rel ]\r
 ..\..\lib\libcb.lib                       [ relcb\free.rel ]\r
-..\..\lib\libcb.lib                       [ relcb\getpwnam.rel ]\r
 ..\..\lib\libiar.lib                      [ reliar\ENTPARMDIRECT.rel ]\r
 ..\..\lib\libiar.lib                      [ reliar\BANKCALLDIRECT.rel ]\r
-..\..\lib\libcb.lib                       [ relcb\setpwent.rel ]\r
 ..\..\lib\libcb.lib                       [ relcb\strcpy.rel ]\r
+..\..\lib\libcb.lib                       [ relcb\getpwuid.rel ]\r
 ..\..\lib\libiar.lib                      [ reliar\SVSWITCH.rel ]\r
-..\..\lib\libcb.lib                       [ relcb\getpwent.rel ]\r
 ..\..\lib\libiar.lib                      [ reliar\ENTAUTODIRECT.rel ]\r
 ..\..\lib\libiar.lib                      [ reliar\VSWITCHEND.rel ]\r
+..\..\lib\libcb.lib                       [ relcb\atoi.rel ]\r
+..\..\lib\libcb.lib                       [ relcb\setpwent.rel ]\r
 ..\..\lib\libcb.lib                       [ relcb\vfprintf.rel ]\r
 ..\..\lib\libcb.lib                       [ relcb\ltoa.rel ]\r
 ..\..\lib\libiar.lib                      [ reliar\SSCMP.rel ]\r
@@ -244,25 +244,25 @@ Libraries Linked                          [ object file ]
 ..\..\lib\libsysb.lib                     [ relsysb\_exit.rel ]\r
 ..\..\lib\libiar.lib                      [ reliar\LEAVEDIRECT.rel ]\r
 ..\..\lib\libiar.lib                      [ reliar\LADDASG.rel ]\r
-..\..\lib\libcb.lib                       [ relcb\strtoul.rel ]\r
 ..\..\lib\libcb.lib                       [ relcb\fputc.rel ]\r
-..\..\lib\libcb.lib                       [ relcb\ctype.rel ]\r
 ..\..\lib\libcb.lib                       [ relcb\ultoa.rel ]\r
-..\..\lib\libiar.lib                      [ reliar\SSSWITCH.rel ]\r
-..\..\lib\libiar.lib                      [ reliar\SSWITCHEND.rel ]\r
+..\..\lib\libcb.lib                       [ relcb\strtol.rel ]\r
 ..\..\lib\libiar.lib                      [ reliar\ULDIVASG.rel ]\r
-..\..\lib\libcb.lib                       [ relcb\atoi.rel ]\r
+..\..\lib\libcb.lib                       [ relcb\getpwent.rel ]\r
 ..\..\lib\libiar.lib                      [ reliar\ULMOD.rel ]\r
 ..\..\lib\libiar.lib                      [ reliar\SFINDSIGN.rel ]\r
 ..\..\lib\libiar.lib                      [ reliar\ULDIV.rel ]\r
 ..\..\lib\libsysb.lib                     [ relsysb\sbrk.rel ]\r
 ..\..\lib\libiar.lib                      [ reliar\LNEG.rel ]\r
 ..\..\lib\libiar.lib                      [ reliar\LDIVMOD.rel ]\r
-..\..\lib\libiar.lib                      [ reliar\LMULASG.rel ]\r
-..\..\lib\libiar.lib                      [ reliar\LMUL.rel ]\r
 ..\..\lib\libiar.lib                      [ reliar\LNOT.rel ]\r
 ..\..\lib\libiar.lib                      [ reliar\LENDMULDIVASG.rel ]\r
-..\..\lib\libcb.lib                       [ relcb\strtol.rel ]\r
+..\..\lib\libcb.lib                       [ relcb\strtoul.rel ]\r
+..\..\lib\libcb.lib                       [ relcb\ctype.rel ]\r
+..\..\lib\libiar.lib                      [ reliar\SSSWITCH.rel ]\r
+..\..\lib\libiar.lib                      [ reliar\SSWITCHEND.rel ]\r
+..\..\lib\libiar.lib                      [ reliar\LMULASG.rel ]\r
+..\..\lib\libiar.lib                      [ reliar\LMUL.rel ]\r
 \r
 \r
 User Base Address Definitions\r
index 598cf05..6237188 100644 (file)
@@ -66,7 +66,7 @@ void login_actionhandler(struct Component* this){
                lbuf[1]=disp->label[1];\r
                lbuf[2]=0;\r
                disp->label[0]=0;\r
-               pwd = getpwnam(lbuf);\r
+               pwd = getpwuid(atoi(lbuf));\r
                pbuf=disp->label+2;\r
                if (pwd != NULL) {\r
                        salt[0] = pwd->pw_passwd[0];\r
diff --git a/src/gui/login.c.org b/src/gui/login.c.org
new file mode 100644 (file)
index 0000000..598cf05
--- /dev/null
@@ -0,0 +1,93 @@
+/* login.c\r
+ * descripton:  login into a user account\r
+ * author:      Alistair Riddoch\r
+ * modification: David Murn <scuffer@hups.apana.org.au>\r
+ *              Added password entry\r
+ * modification: Shane Kerr <kerr@wizard.net>\r
+ *              More work on password entry\r
+ */\r
+\r
+/* todo:  add a timeout for serial and network logins */\r
+/* ???   need a signal mechanism (i.e. alarm() and SIGALRM) */\r
+/*       real getpass() ! */\r
+\r
+#include <unistd.h>\r
+#include <stdlib.h>\r
+#include <string.h>\r
+#include <stdio.h>\r
+#include <pwd.h>\r
+#include <wnd.h>\r
+\r
+void login(pwd, argv)\r
+       struct passwd *pwd;\r
+       char **argv;\r
+{\r
+       char pname[64];\r
+       char *bname;\r
+\r
+#if 1  /* addition by Nick, please see linux manpage passwd.5 */\r
+       if (!*pwd->pw_shell)\r
+               {\r
+               pwd->pw_shell = "/bin/sh";\r
+               }\r
+#endif\r
+\r
+/*     chown("/dev/tty",pwd->pw_uid,pwd->pw_gid); */\r
+       pname[0] = '-';\r
+       if ((bname = strrchr(pwd->pw_shell, '/')) != NULL)\r
+               bname++;\r
+       else    bname = pwd->pw_shell;\r
+       strcpy(pname+1, bname);\r
+       argv[0] = pname;\r
+       argv[1] = NULL;\r
+       /* we must set first GID, because we're still root\r
+          if UID is set first and we aren't logging as root,\r
+          we won't have permission to change our GID */\r
+       setgid(pwd->pw_gid);\r
+       setuid(pwd->pw_uid);\r
+       chdir(pwd->pw_dir);\r
+       setenv("HOME", pwd->pw_dir, 1);\r
+       setenv("USER", pwd->pw_name, 1);\r
+       execv(pwd->pw_shell, argv);\r
+       perror(pwd->pw_shell);\r
+       exit(1);\r
+}\r
+\r
+void login_actionhandler(struct Component* this){\r
+       char lbuf[20], *pbuf, salt[3], *s;\r
+       struct passwd *pwd;\r
+       int n;\r
+       struct ActionXDS *act;\r
+       struct Component* disp=this;\r
+\r
+       act=(struct ActionXDS*) (this->xds);\r
+       if(act->action==0x0101){\r
+               lbuf[0]=disp->label[0];\r
+               lbuf[1]=disp->label[1];\r
+               lbuf[2]=0;\r
+               disp->label[0]=0;\r
+               pwd = getpwnam(lbuf);\r
+               pbuf=disp->label+2;\r
+               if (pwd != NULL) {\r
+                       salt[0] = pwd->pw_passwd[0];\r
+                       salt[1] = pwd->pw_passwd[1];\r
+                       salt[2] = 0;\r
+                       s = crypt(pbuf, salt);\r
+                       if (!strcmp(s, pwd->pw_passwd)){\r
+                               ClearScreen();\r
+                               login(pwd, NULL);\r
+                       }\r
+               }\r
+               disp->paint(disp);\r
+       }\r
+}\r
+\r
+void main(int argc, char** argv)\r
+{\r
+       GUIinit();\r
+       gui_globals()->actionhandler=login_actionhandler;\r
+       GUIgo("/wnd/logn.scr");\r
+       GUIunit();\r
+}\r
+\r
+\r
index bd842b1..a759525 100644 (file)
                                       5        EXTERN  GUIgo\r
                                       6        EXTERN  GUIinit\r
                                       7        EXTERN  GUIunit\r
-                                      8        EXTERN  chdir\r
-                                      9        EXTERN  crypt\r
-                                     10        EXTERN  execv\r
-                                     11        EXTERN  exit\r
-                                     12        EXTERN  getpwnam\r
-                                     13        EXTERN  gui_globals\r
-                                     14        PUBLIC  login\r
-                                     15        PUBLIC  login_actionhandler\r
-                                     16        PUBLIC  main\r
-                                     17        EXTERN  perror\r
-                                     18        EXTERN  setenv\r
-                                     19        EXTERN  setgid\r
-                                     20        EXTERN  setuid\r
-                                     21        EXTERN  strcmp\r
-                                     22        EXTERN  strcpy\r
-                                     23        EXTERN  strrchr\r
-                                     24        EXTERN  ?CL64180B_4_06_L00\r
-                                     25        EXTERN  ?BANK_CALL_DIRECT_L08\r
-                                     26        EXTERN  ?BANK_LEAVE_DIRECT_L08\r
-                                     27        EXTERN  ?BANK_FAST_LEAVE_L08\r
-                                     28        EXTERN  ?ENT_PARM_DIRECT_L09\r
-                                     29        EXTERN  ?ENT_AUTO_DIRECT_L09\r
-                                     30        RSEG    CODE\r
-    00000000                         31 login:\r
-    00000000 FD E5                   32        PUSH    IY\r
-    00000002 DD E5                   33        PUSH    IX\r
-    00000004 C5                      34        PUSH    BC\r
-    00000005 21 C0 FF                35        LD      HL,65472\r
-    00000008 39                      36        ADD     HL,SP\r
-    00000009 F9                      37        LD      SP,HL\r
-    0000000A D5                      38        PUSH    DE\r
-    0000000B DD E1                   39        POP     IX\r
-    0000000D 21 0C 00                40        LD      HL,12\r
-    00000010 19                      41        ADD     HL,DE\r
-    00000011 7E                      42        LD      A,(HL)\r
-    00000012 23                      43        INC     HL\r
-    00000013 66                      44        LD      H,(HL)\r
-    00000014 6F                      45        LD      L,A\r
-    00000015 AF                      46        XOR     A\r
-    00000016 B6                      47        OR      (HL)\r
-    00000017 20 08                   48        JR      NZ,?0001\r
-    00000019                         49 ?0000:\r
-    00000019 DD 36 0C 00             50        LD      (IX+12),LOW(?0002)\r
-    0000001D DD 36 0D 00             51        LD      (IX+13),HIGH(?0002)\r
-    00000021                         52 ?0001:\r
-    00000021 21 00 00                53        LD      HL,0\r
-    00000024 39                      54        ADD     HL,SP\r
-    00000025 36 2D                   55        LD      (HL),45\r
-    00000027 01 2F 00                56        LD      BC,47\r
-    0000002A DD 5E 0C                57        LD      E,(IX+12)\r
-    0000002D DD 56 0D                58        LD      D,(IX+13)\r
-    00000030 3E 00                   59        LD      A,BYTE3 strrchr\r
-    00000032 21 00 00                60        LD      HL,LWRD strrchr\r
-    00000035 CD 00 00                61        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    00000038 E5                      62        PUSH    HL\r
-    00000039 FD E1                   63        POP     IY\r
-    0000003B 7D                      64        LD      A,L\r
-    0000003C B4                      65        OR      H\r
-    0000003D 28 04                   66        JR      Z,?0004\r
-    0000003F                         67 ?0003:\r
-    0000003F FD 23                   68        INC     IY\r
-    00000041 18 09                   69        JR      ?0005\r
-    00000043                         70 ?0004:\r
-    00000043 DD 6E 0C                71        LD      L,(IX+12)\r
-    00000046 DD 66 0D                72        LD      H,(IX+13)\r
-    00000049 E5                      73        PUSH    HL\r
-    0000004A FD E1                   74        POP     IY\r
-    0000004C                         75 ?0005:\r
-    0000004C FD E5                   76        PUSH    IY\r
-    0000004E C1                      77        POP     BC\r
-    0000004F 21 00 00                78        LD      HL,0\r
-    00000052 39                      79        ADD     HL,SP\r
-    00000053 11 01 00                80        LD      DE,1\r
-    00000056 19                      81        ADD     HL,DE\r
-    00000057 EB                      82        EX      DE,HL\r
-    00000058 3E 00                   83        LD      A,BYTE3 strcpy\r
-    0000005A 21 00 00                84        LD      HL,LWRD strcpy\r
-    0000005D CD 00 00                85        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    00000060 21 00 00                86        LD      HL,0\r
-    00000063 39                      87        ADD     HL,SP\r
-    00000064 E5                      88        PUSH    HL\r
-    00000065 21 42 00                89        LD      HL,66\r
-    00000068 39                      90        ADD     HL,SP\r
-    00000069 7E                      91        LD      A,(HL)\r
-    0000006A 23                      92        INC     HL\r
-    0000006B 66                      93        LD      H,(HL)\r
-    0000006C 6F                      94        LD      L,A\r
-    0000006D C1                      95        POP     BC\r
-    0000006E 71                      96        LD      (HL),C\r
-    0000006F 23                      97        INC     HL\r
-    00000070 70                      98        LD      (HL),B\r
-    00000071 21 40 00                99        LD      HL,64\r
-    00000074 39                     100        ADD     HL,SP\r
-    00000075 47                     101        LD      B,A\r
-    00000076 23                     102        INC     HL\r
-    00000077 66                     103        LD      H,(HL)\r
-    00000078 68                     104        LD      L,B\r
-    00000079 23                     105        INC     HL\r
-    0000007A 23                     106        INC     HL\r
-    0000007B AF                     107        XOR     A\r
-    0000007C 77                     108        LD      (HL),A\r
-    0000007D 23                     109        INC     HL\r
-    0000007E 77                     110        LD      (HL),A\r
-    0000007F DD 5E 06               111        LD      E,(IX+6)\r
-    00000082 DD 56 07               112        LD      D,(IX+7)\r
-    00000085 3E 00                  113        LD      A,BYTE3 setgid\r
-    00000087 21 00 00               114        LD      HL,LWRD setgid\r
-    0000008A CD 00 00               115        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    0000008D DD 5E 04               116        LD      E,(IX+4)\r
-    00000090 DD 56 05               117        LD      D,(IX+5)\r
-    00000093 3E 00                  118        LD      A,BYTE3 setuid\r
-    00000095 21 00 00               119        LD      HL,LWRD setuid\r
-    00000098 CD 00 00               120        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    0000009B DD 5E 0A               121        LD      E,(IX+10)\r
-    0000009E DD 56 0B               122        LD      D,(IX+11)\r
-    000000A1 3E 00                  123        LD      A,BYTE3 chdir\r
-    000000A3 21 00 00               124        LD      HL,LWRD chdir\r
-    000000A6 CD 00 00               125        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    000000A9 21 01 00               126        LD      HL,1\r
-    000000AC E5                     127        PUSH    HL\r
-    000000AD DD 4E 0A               128        LD      C,(IX+10)\r
-    000000B0 DD 46 0B               129        LD      B,(IX+11)\r
-    000000B3 11 08 00               130        LD      DE,?0006\r
-    000000B6 3E 00                  131        LD      A,BYTE3 setenv\r
-    000000B8 21 00 00               132        LD      HL,LWRD setenv\r
-    000000BB CD 00 00               133        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    000000BE F1                     134        POP     AF\r
-    000000BF 21 01 00               135        LD      HL,1\r
-    000000C2 E5                     136        PUSH    HL\r
-    000000C3 DD 4E 00               137        LD      C,(IX+0)\r
-    000000C6 DD 46 01               138        LD      B,(IX+1)\r
-    000000C9 11 0D 00               139        LD      DE,?0007\r
-    000000CC 3E 00                  140        LD      A,BYTE3 setenv\r
-    000000CE 21 00 00               141        LD      HL,LWRD setenv\r
-    000000D1 CD 00 00               142        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    000000D4 F1                     143        POP     AF\r
-    000000D5 21 40 00               144        LD      HL,64\r
-    000000D8 39                     145        ADD     HL,SP\r
-    000000D9 4E                     146        LD      C,(HL)\r
-    000000DA 23                     147        INC     HL\r
-    000000DB 46                     148        LD      B,(HL)\r
-    000000DC DD 5E 0C               149        LD      E,(IX+12)\r
-    000000DF DD 56 0D               150        LD      D,(IX+13)\r
-    000000E2 3E 00                  151        LD      A,BYTE3 execv\r
-    000000E4 21 00 00               152        LD      HL,LWRD execv\r
-    000000E7 CD 00 00               153        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    000000EA DD 5E 0C               154        LD      E,(IX+12)\r
-    000000ED DD 56 0D               155        LD      D,(IX+13)\r
-    000000F0 3E 00                  156        LD      A,BYTE3 perror\r
-    000000F2 21 00 00               157        LD      HL,LWRD perror\r
-    000000F5 CD 00 00               158        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    000000F8 11 01 00               159        LD      DE,1\r
-    000000FB 3E 00                  160        LD      A,BYTE3 exit\r
-    000000FD 21 00 00               161        LD      HL,LWRD exit\r
-    00000100 CD 00 00               162        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    00000103 21 42 00               163        LD      HL,66\r
-    00000106 39                     164        ADD     HL,SP\r
-    00000107 F9                     165        LD      SP,HL\r
-    00000108 DD E1                  166        POP     IX\r
-    0000010A FD E1                  167        POP     IY\r
-    0000010C C3 00 00               168        JP      LWRD ?BANK_FAST_LEAVE_L08\r
-    0000010F                        169 login_actionhandler:\r
-    0000010F CD 00 00               170        CALL    LWRD ?ENT_AUTO_DIRECT_L09\r
-    00000112 E0 FF                  171        DEFW    -32\r
-    00000114 FD E5                  172        PUSH    IY\r
-    00000116 DD 6E 02               173        LD      L,(IX+2)\r
-    00000119 DD 66 03               174        LD      H,(IX+3)\r
-    0000011C E5                     175        PUSH    HL\r
-    0000011D FD E1                  176        POP     IY\r
-    0000011F 21 26 00               177        LD      HL,38\r
-    00000122 DD 4E 02               178        LD      C,(IX+2)\r
-    00000125 DD 46 03               179        LD      B,(IX+3)\r
-    00000128 09                     180        ADD     HL,BC\r
-    00000129 46                     181        LD      B,(HL)\r
-    0000012A 23                     182        INC     HL\r
-    0000012B 66                     183        LD      H,(HL)\r
-    0000012C 68                     184        LD      L,B\r
-    0000012D 23                     185        INC     HL\r
-    0000012E 23                     186        INC     HL\r
-    0000012F 23                     187        INC     HL\r
-    00000130 46                     188        LD      B,(HL)\r
-    00000131 23                     189        INC     HL\r
-    00000132 66                     190        LD      H,(HL)\r
-    00000133 68                     191        LD      L,B\r
-    00000134 01 01 01               192        LD      BC,257\r
-    00000137 A7                     193        AND     A\r
-    00000138 ED 42                  194        SBC     HL,BC\r
-    0000013A C2 03 02               195        JP      NZ,?0009\r
-    0000013D                        196 ?0008:\r
-    0000013D FD 6E 20               197        LD      L,(IY+32)\r
-    00000140 FD 66 21               198        LD      H,(IY+33)\r
-    00000143 46                     199        LD      B,(HL)\r
-    00000144 DD 70 EC               200        LD      (IX-20),B\r
-    00000147 FD 6E 20               201        LD      L,(IY+32)\r
-    0000014A FD 66 21               202        LD      H,(IY+33)\r
-    0000014D 23                     203        INC     HL\r
-    0000014E 46                     204        LD      B,(HL)\r
-    0000014F DD 70 ED               205        LD      (IX-19),B\r
-    00000152 DD 36 EE 00            206        LD      (IX-18),0\r
-    00000156 FD 6E 20               207        LD      L,(IY+32)\r
-    00000159 FD 66 21               208        LD      H,(IY+33)\r
-    0000015C 36 00                  209        LD      (HL),0\r
-    0000015E 21 0E 00               210        LD      HL,14\r
-    00000161 39                     211        ADD     HL,SP\r
-    00000162 EB                     212        EX      DE,HL\r
-    00000163 3E 00                  213        LD      A,BYTE3 getpwnam\r
-    00000165 21 00 00               214        LD      HL,LWRD getpwnam\r
-    00000168 CD 00 00               215        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    0000016B DD 75 E0               216        LD      (IX-32),L\r
-    0000016E DD 74 E1               217        LD      (IX-31),H\r
-    00000171 FD 4E 20               218        LD      C,(IY+32)\r
-    00000174 FD 46 21               219        LD      B,(IY+33)\r
-    00000177 03                     220        INC     BC\r
-    00000178 03                     221        INC     BC\r
-    00000179 DD 71 EA               222        LD      (IX-22),C\r
-    0000017C DD 70 EB               223        LD      (IX-21),B\r
-    0000017F 7D                     224        LD      A,L\r
-    00000180 B4                     225        OR      H\r
-    00000181 28 71                  226        JR      Z,?0013\r
-    00000183                        227 ?0010:\r
-    00000183 23                     228        INC     HL\r
-    00000184 23                     229        INC     HL\r
-    00000185 7E                     230        LD      A,(HL)\r
-    00000186 23                     231        INC     HL\r
-    00000187 66                     232        LD      H,(HL)\r
-    00000188 6F                     233        LD      L,A\r
-    00000189 46                     234        LD      B,(HL)\r
-    0000018A DD 70 E2               235        LD      (IX-30),B\r
-    0000018D DD 6E E0               236        LD      L,(IX-32)\r
-    00000190 DD 66 E1               237        LD      H,(IX-31)\r
-    00000193 23                     238        INC     HL\r
-    00000194 23                     239        INC     HL\r
-    00000195 46                     240        LD      B,(HL)\r
-    00000196 23                     241        INC     HL\r
-    00000197 66                     242        LD      H,(HL)\r
-    00000198 68                     243        LD      L,B\r
-    00000199 23                     244        INC     HL\r
-    0000019A 46                     245        LD      B,(HL)\r
-    0000019B DD 70 E3               246        LD      (IX-29),B\r
-    0000019E DD 36 E4 00            247        LD      (IX-28),0\r
-    000001A2 21 04 00               248        LD      HL,4\r
-    000001A5 39                     249        ADD     HL,SP\r
-    000001A6 4D                     250        LD      C,L\r
-    000001A7 44                     251        LD      B,H\r
-    000001A8 DD 5E EA               252        LD      E,(IX-22)\r
-    000001AB DD 56 EB               253        LD      D,(IX-21)\r
-    000001AE 3E 00                  254        LD      A,BYTE3 crypt\r
-    000001B0 21 00 00               255        LD      HL,LWRD crypt\r
-    000001B3 CD 00 00               256        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    000001B6 DD 75 E8               257        LD      (IX-24),L\r
-    000001B9 DD 74 E9               258        LD      (IX-23),H\r
-    000001BC DD 4E E0               259        LD      C,(IX-32)\r
-    000001BF DD 46 E1               260        LD      B,(IX-31)\r
-    000001C2 03                     261        INC     BC\r
-    000001C3 03                     262        INC     BC\r
-    000001C4 69                     263        LD      L,C\r
-    000001C5 60                     264        LD      H,B\r
-    000001C6 4E                     265        LD      C,(HL)\r
-    000001C7 23                     266        INC     HL\r
-    000001C8 46                     267        LD      B,(HL)\r
-    000001C9 DD 5E E8               268        LD      E,(IX-24)\r
-    000001CC DD 56 E9               269        LD      D,(IX-23)\r
-    000001CF 3E 00                  270        LD      A,BYTE3 strcmp\r
-    000001D1 21 00 00               271        LD      HL,LWRD strcmp\r
-    000001D4 CD 00 00               272        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    000001D7 7D                     273        LD      A,L\r
-    000001D8 B4                     274        OR      H\r
-    000001D9 20 19                  275        JR      NZ,?0013\r
-    000001DB                        276 ?0012:\r
-    000001DB 3E 00                  277        LD      A,BYTE3 ClearScreen\r
-    000001DD 21 00 00               278        LD      HL,LWRD ClearScreen\r
-    000001E0 CD 00 00               279        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    000001E3 01 00 00               280        LD      BC,0\r
-    000001E6 DD 5E E0               281        LD      E,(IX-32)\r
-    000001E9 DD 56 E1               282        LD      D,(IX-31)\r
-    000001EC 3E 00                  283        LD      A,BYTE3 login\r
-    000001EE 21 00 00               284        LD      HL,LWRD login\r
-    000001F1 CD 00 00               285        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    000001F4                        286 ?0013:\r
-    000001F4                        287 ?0011:\r
-    000001F4 FD E5                  288        PUSH    IY\r
-    000001F6 D1                     289        POP     DE\r
-    000001F7 FD 7E 1C               290        LD      A,(IY+28)\r
-    000001FA FD 6E 1A               291        LD      L,(IY+26)\r
-    000001FD FD 66 1B               292        LD      H,(IY+27)\r
-    00000200 CD 00 00               293        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    00000203                        294 ?0009:\r
-    00000203 FD E1                  295        POP     IY\r
-    00000205 C3 00 00               296        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
-    00000208                        297 main:\r
-    00000208 CD 00 00               298        CALL    LWRD ?ENT_PARM_DIRECT_L09\r
-    0000020B 3E 00                  299        LD      A,BYTE3 GUIinit\r
-    0000020D 21 00 00               300        LD      HL,LWRD GUIinit\r
-    00000210 CD 00 00               301        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    00000213 3E 00                  302        LD      A,BYTE3 gui_globals\r
-    00000215 21 00 00               303        LD      HL,LWRD gui_globals\r
-    00000218 CD 00 00               304        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    0000021B 01 10 00               305        LD      BC,16\r
-    0000021E 09                     306        ADD     HL,BC\r
-    0000021F 36 0F                  307        LD      (HL),LOW(login_actionhandler)\r
-    00000221 23                     308        INC     HL\r
-    00000222 36 01                  309        LD      (HL),HIGH(login_actionhandler)\r
-    00000224 23                     310        INC     HL\r
-    00000225 36 0F                  311        LD      (HL),BYTE3 login_actionhandler\r
-    00000227 11 12 00               312        LD      DE,?0014\r
-    0000022A 3E 00                  313        LD      A,BYTE3 GUIgo\r
-    0000022C 21 00 00               314        LD      HL,LWRD GUIgo\r
-    0000022F CD 00 00               315        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    00000232 3E 00                  316        LD      A,BYTE3 GUIunit\r
-    00000234 21 00 00               317        LD      HL,LWRD GUIunit\r
-    00000237 CD 00 00               318        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    0000023A C3 00 00               319        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
-                                    320        RSEG    CSTR\r
-    00000000                        321 ?0002:\r
-    00000000 2F 62 69 6E 2F 73 68   322        DEFB    '/bin/sh'\r
-    00000007 00                     323        DEFB    0\r
-    00000008                        324 ?0006:\r
-    00000008 48 4F 4D 45            325        DEFB    'HOME'\r
-    0000000C 00                     326        DEFB    0\r
-    0000000D                        327 ?0007:\r
-    0000000D 55 53 45 52            328        DEFB    'USER'\r
-    00000011 00                     329        DEFB    0\r
-    00000012                        330 ?0014:\r
-    00000012 2F 77 6E 64 2F 6C 6F   331        DEFB    '/wnd/logn.scr'\r
+                                      8        EXTERN  atoi\r
+                                      9        EXTERN  chdir\r
+                                     10        EXTERN  crypt\r
+                                     11        EXTERN  execv\r
+                                     12        EXTERN  exit\r
+                                     13        EXTERN  getpwuid\r
+                                     14        EXTERN  gui_globals\r
+                                     15        PUBLIC  login\r
+                                     16        PUBLIC  login_actionhandler\r
+                                     17        PUBLIC  main\r
+                                     18        EXTERN  perror\r
+                                     19        EXTERN  setenv\r
+                                     20        EXTERN  setgid\r
+                                     21        EXTERN  setuid\r
+                                     22        EXTERN  strcmp\r
+                                     23        EXTERN  strcpy\r
+                                     24        EXTERN  strrchr\r
+                                     25        EXTERN  ?CL64180B_4_06_L00\r
+                                     26        EXTERN  ?BANK_CALL_DIRECT_L08\r
+                                     27        EXTERN  ?BANK_LEAVE_DIRECT_L08\r
+                                     28        EXTERN  ?BANK_FAST_LEAVE_L08\r
+                                     29        EXTERN  ?ENT_PARM_DIRECT_L09\r
+                                     30        EXTERN  ?ENT_AUTO_DIRECT_L09\r
+                                     31        RSEG    CODE\r
+    00000000                         32 login:\r
+    00000000 FD E5                   33        PUSH    IY\r
+    00000002 DD E5                   34        PUSH    IX\r
+    00000004 C5                      35        PUSH    BC\r
+    00000005 21 C0 FF                36        LD      HL,65472\r
+    00000008 39                      37        ADD     HL,SP\r
+    00000009 F9                      38        LD      SP,HL\r
+    0000000A D5                      39        PUSH    DE\r
+    0000000B DD E1                   40        POP     IX\r
+    0000000D 21 0C 00                41        LD      HL,12\r
+    00000010 19                      42        ADD     HL,DE\r
+    00000011 7E                      43        LD      A,(HL)\r
+    00000012 23                      44        INC     HL\r
+    00000013 66                      45        LD      H,(HL)\r
+    00000014 6F                      46        LD      L,A\r
+    00000015 AF                      47        XOR     A\r
+    00000016 B6                      48        OR      (HL)\r
+    00000017 20 08                   49        JR      NZ,?0001\r
+    00000019                         50 ?0000:\r
+    00000019 DD 36 0C 00             51        LD      (IX+12),LOW(?0002)\r
+    0000001D DD 36 0D 00             52        LD      (IX+13),HIGH(?0002)\r
+    00000021                         53 ?0001:\r
+    00000021 21 00 00                54        LD      HL,0\r
+    00000024 39                      55        ADD     HL,SP\r
+    00000025 36 2D                   56        LD      (HL),45\r
+    00000027 01 2F 00                57        LD      BC,47\r
+    0000002A DD 5E 0C                58        LD      E,(IX+12)\r
+    0000002D DD 56 0D                59        LD      D,(IX+13)\r
+    00000030 3E 00                   60        LD      A,BYTE3 strrchr\r
+    00000032 21 00 00                61        LD      HL,LWRD strrchr\r
+    00000035 CD 00 00                62        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    00000038 E5                      63        PUSH    HL\r
+    00000039 FD E1                   64        POP     IY\r
+    0000003B 7D                      65        LD      A,L\r
+    0000003C B4                      66        OR      H\r
+    0000003D 28 04                   67        JR      Z,?0004\r
+    0000003F                         68 ?0003:\r
+    0000003F FD 23                   69        INC     IY\r
+    00000041 18 09                   70        JR      ?0005\r
+    00000043                         71 ?0004:\r
+    00000043 DD 6E 0C                72        LD      L,(IX+12)\r
+    00000046 DD 66 0D                73        LD      H,(IX+13)\r
+    00000049 E5                      74        PUSH    HL\r
+    0000004A FD E1                   75        POP     IY\r
+    0000004C                         76 ?0005:\r
+    0000004C FD E5                   77        PUSH    IY\r
+    0000004E C1                      78        POP     BC\r
+    0000004F 21 00 00                79        LD      HL,0\r
+    00000052 39                      80        ADD     HL,SP\r
+    00000053 11 01 00                81        LD      DE,1\r
+    00000056 19                      82        ADD     HL,DE\r
+    00000057 EB                      83        EX      DE,HL\r
+    00000058 3E 00                   84        LD      A,BYTE3 strcpy\r
+    0000005A 21 00 00                85        LD      HL,LWRD strcpy\r
+    0000005D CD 00 00                86        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    00000060 21 00 00                87        LD      HL,0\r
+    00000063 39                      88        ADD     HL,SP\r
+    00000064 E5                      89        PUSH    HL\r
+    00000065 21 42 00                90        LD      HL,66\r
+    00000068 39                      91        ADD     HL,SP\r
+    00000069 7E                      92        LD      A,(HL)\r
+    0000006A 23                      93        INC     HL\r
+    0000006B 66                      94        LD      H,(HL)\r
+    0000006C 6F                      95        LD      L,A\r
+    0000006D C1                      96        POP     BC\r
+    0000006E 71                      97        LD      (HL),C\r
+    0000006F 23                      98        INC     HL\r
+    00000070 70                      99        LD      (HL),B\r
+    00000071 21 40 00               100        LD      HL,64\r
+    00000074 39                     101        ADD     HL,SP\r
+    00000075 47                     102        LD      B,A\r
+    00000076 23                     103        INC     HL\r
+    00000077 66                     104        LD      H,(HL)\r
+    00000078 68                     105        LD      L,B\r
+    00000079 23                     106        INC     HL\r
+    0000007A 23                     107        INC     HL\r
+    0000007B AF                     108        XOR     A\r
+    0000007C 77                     109        LD      (HL),A\r
+    0000007D 23                     110        INC     HL\r
+    0000007E 77                     111        LD      (HL),A\r
+    0000007F DD 5E 06               112        LD      E,(IX+6)\r
+    00000082 DD 56 07               113        LD      D,(IX+7)\r
+    00000085 3E 00                  114        LD      A,BYTE3 setgid\r
+    00000087 21 00 00               115        LD      HL,LWRD setgid\r
+    0000008A CD 00 00               116        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    0000008D DD 5E 04               117        LD      E,(IX+4)\r
+    00000090 DD 56 05               118        LD      D,(IX+5)\r
+    00000093 3E 00                  119        LD      A,BYTE3 setuid\r
+    00000095 21 00 00               120        LD      HL,LWRD setuid\r
+    00000098 CD 00 00               121        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    0000009B DD 5E 0A               122        LD      E,(IX+10)\r
+    0000009E DD 56 0B               123        LD      D,(IX+11)\r
+    000000A1 3E 00                  124        LD      A,BYTE3 chdir\r
+    000000A3 21 00 00               125        LD      HL,LWRD chdir\r
+    000000A6 CD 00 00               126        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    000000A9 21 01 00               127        LD      HL,1\r
+    000000AC E5                     128        PUSH    HL\r
+    000000AD DD 4E 0A               129        LD      C,(IX+10)\r
+    000000B0 DD 46 0B               130        LD      B,(IX+11)\r
+    000000B3 11 08 00               131        LD      DE,?0006\r
+    000000B6 3E 00                  132        LD      A,BYTE3 setenv\r
+    000000B8 21 00 00               133        LD      HL,LWRD setenv\r
+    000000BB CD 00 00               134        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    000000BE F1                     135        POP     AF\r
+    000000BF 21 01 00               136        LD      HL,1\r
+    000000C2 E5                     137        PUSH    HL\r
+    000000C3 DD 4E 00               138        LD      C,(IX+0)\r
+    000000C6 DD 46 01               139        LD      B,(IX+1)\r
+    000000C9 11 0D 00               140        LD      DE,?0007\r
+    000000CC 3E 00                  141        LD      A,BYTE3 setenv\r
+    000000CE 21 00 00               142        LD      HL,LWRD setenv\r
+    000000D1 CD 00 00               143        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    000000D4 F1                     144        POP     AF\r
+    000000D5 21 40 00               145        LD      HL,64\r
+    000000D8 39                     146        ADD     HL,SP\r
+    000000D9 4E                     147        LD      C,(HL)\r
+    000000DA 23                     148        INC     HL\r
+    000000DB 46                     149        LD      B,(HL)\r
+    000000DC DD 5E 0C               150        LD      E,(IX+12)\r
+    000000DF DD 56 0D               151        LD      D,(IX+13)\r
+    000000E2 3E 00                  152        LD      A,BYTE3 execv\r
+    000000E4 21 00 00               153        LD      HL,LWRD execv\r
+    000000E7 CD 00 00               154        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    000000EA DD 5E 0C               155        LD      E,(IX+12)\r
+    000000ED DD 56 0D               156        LD      D,(IX+13)\r
+    000000F0 3E 00                  157        LD      A,BYTE3 perror\r
+    000000F2 21 00 00               158        LD      HL,LWRD perror\r
+    000000F5 CD 00 00               159        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    000000F8 11 01 00               160        LD      DE,1\r
+    000000FB 3E 00                  161        LD      A,BYTE3 exit\r
+    000000FD 21 00 00               162        LD      HL,LWRD exit\r
+    00000100 CD 00 00               163        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    00000103 21 42 00               164        LD      HL,66\r
+    00000106 39                     165        ADD     HL,SP\r
+    00000107 F9                     166        LD      SP,HL\r
+    00000108 DD E1                  167        POP     IX\r
+    0000010A FD E1                  168        POP     IY\r
+    0000010C C3 00 00               169        JP      LWRD ?BANK_FAST_LEAVE_L08\r
+    0000010F                        170 login_actionhandler:\r
+    0000010F CD 00 00               171        CALL    LWRD ?ENT_AUTO_DIRECT_L09\r
+    00000112 E0 FF                  172        DEFW    -32\r
+    00000114 FD E5                  173        PUSH    IY\r
+    00000116 DD 6E 02               174        LD      L,(IX+2)\r
+    00000119 DD 66 03               175        LD      H,(IX+3)\r
+    0000011C E5                     176        PUSH    HL\r
+    0000011D FD E1                  177        POP     IY\r
+    0000011F 21 26 00               178        LD      HL,38\r
+    00000122 DD 4E 02               179        LD      C,(IX+2)\r
+    00000125 DD 46 03               180        LD      B,(IX+3)\r
+    00000128 09                     181        ADD     HL,BC\r
+    00000129 46                     182        LD      B,(HL)\r
+    0000012A 23                     183        INC     HL\r
+    0000012B 66                     184        LD      H,(HL)\r
+    0000012C 68                     185        LD      L,B\r
+    0000012D 23                     186        INC     HL\r
+    0000012E 23                     187        INC     HL\r
+    0000012F 23                     188        INC     HL\r
+    00000130 46                     189        LD      B,(HL)\r
+    00000131 23                     190        INC     HL\r
+    00000132 66                     191        LD      H,(HL)\r
+    00000133 68                     192        LD      L,B\r
+    00000134 01 01 01               193        LD      BC,257\r
+    00000137 A7                     194        AND     A\r
+    00000138 ED 42                  195        SBC     HL,BC\r
+    0000013A C2 0C 02               196        JP      NZ,?0009\r
+    0000013D                        197 ?0008:\r
+    0000013D FD 6E 20               198        LD      L,(IY+32)\r
+    00000140 FD 66 21               199        LD      H,(IY+33)\r
+    00000143 46                     200        LD      B,(HL)\r
+    00000144 DD 70 EC               201        LD      (IX-20),B\r
+    00000147 FD 6E 20               202        LD      L,(IY+32)\r
+    0000014A FD 66 21               203        LD      H,(IY+33)\r
+    0000014D 23                     204        INC     HL\r
+    0000014E 46                     205        LD      B,(HL)\r
+    0000014F DD 70 ED               206        LD      (IX-19),B\r
+    00000152 DD 36 EE 00            207        LD      (IX-18),0\r
+    00000156 FD 6E 20               208        LD      L,(IY+32)\r
+    00000159 FD 66 21               209        LD      H,(IY+33)\r
+    0000015C 36 00                  210        LD      (HL),0\r
+    0000015E 21 0E 00               211        LD      HL,14\r
+    00000161 39                     212        ADD     HL,SP\r
+    00000162 EB                     213        EX      DE,HL\r
+    00000163 3E 00                  214        LD      A,BYTE3 atoi\r
+    00000165 21 00 00               215        LD      HL,LWRD atoi\r
+    00000168 CD 00 00               216        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    0000016B EB                     217        EX      DE,HL\r
+    0000016C 3E 00                  218        LD      A,BYTE3 getpwuid\r
+    0000016E 21 00 00               219        LD      HL,LWRD getpwuid\r
+    00000171 CD 00 00               220        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    00000174 DD 75 E0               221        LD      (IX-32),L\r
+    00000177 DD 74 E1               222        LD      (IX-31),H\r
+    0000017A FD 4E 20               223        LD      C,(IY+32)\r
+    0000017D FD 46 21               224        LD      B,(IY+33)\r
+    00000180 03                     225        INC     BC\r
+    00000181 03                     226        INC     BC\r
+    00000182 DD 71 EA               227        LD      (IX-22),C\r
+    00000185 DD 70 EB               228        LD      (IX-21),B\r
+    00000188 7D                     229        LD      A,L\r
+    00000189 B4                     230        OR      H\r
+    0000018A 28 71                  231        JR      Z,?0013\r
+    0000018C                        232 ?0010:\r
+    0000018C 23                     233        INC     HL\r
+    0000018D 23                     234        INC     HL\r
+    0000018E 7E                     235        LD      A,(HL)\r
+    0000018F 23                     236        INC     HL\r
+    00000190 66                     237        LD      H,(HL)\r
+    00000191 6F                     238        LD      L,A\r
+    00000192 46                     239        LD      B,(HL)\r
+    00000193 DD 70 E2               240        LD      (IX-30),B\r
+    00000196 DD 6E E0               241        LD      L,(IX-32)\r
+    00000199 DD 66 E1               242        LD      H,(IX-31)\r
+    0000019C 23                     243        INC     HL\r
+    0000019D 23                     244        INC     HL\r
+    0000019E 46                     245        LD      B,(HL)\r
+    0000019F 23                     246        INC     HL\r
+    000001A0 66                     247        LD      H,(HL)\r
+    000001A1 68                     248        LD      L,B\r
+    000001A2 23                     249        INC     HL\r
+    000001A3 46                     250        LD      B,(HL)\r
+    000001A4 DD 70 E3               251        LD      (IX-29),B\r
+    000001A7 DD 36 E4 00            252        LD      (IX-28),0\r
+    000001AB 21 04 00               253        LD      HL,4\r
+    000001AE 39                     254        ADD     HL,SP\r
+    000001AF 4D                     255        LD      C,L\r
+    000001B0 44                     256        LD      B,H\r
+    000001B1 DD 5E EA               257        LD      E,(IX-22)\r
+    000001B4 DD 56 EB               258        LD      D,(IX-21)\r
+    000001B7 3E 00                  259        LD      A,BYTE3 crypt\r
+    000001B9 21 00 00               260        LD      HL,LWRD crypt\r
+    000001BC CD 00 00               261        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    000001BF DD 75 E8               262        LD      (IX-24),L\r
+    000001C2 DD 74 E9               263        LD      (IX-23),H\r
+    000001C5 DD 4E E0               264        LD      C,(IX-32)\r
+    000001C8 DD 46 E1               265        LD      B,(IX-31)\r
+    000001CB 03                     266        INC     BC\r
+    000001CC 03                     267        INC     BC\r
+    000001CD 69                     268        LD      L,C\r
+    000001CE 60                     269        LD      H,B\r
+    000001CF 4E                     270        LD      C,(HL)\r
+    000001D0 23                     271        INC     HL\r
+    000001D1 46                     272        LD      B,(HL)\r
+    000001D2 DD 5E E8               273        LD      E,(IX-24)\r
+    000001D5 DD 56 E9               274        LD      D,(IX-23)\r
+    000001D8 3E 00                  275        LD      A,BYTE3 strcmp\r
+    000001DA 21 00 00               276        LD      HL,LWRD strcmp\r
+    000001DD CD 00 00               277        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    000001E0 7D                     278        LD      A,L\r
+    000001E1 B4                     279        OR      H\r
+    000001E2 20 19                  280        JR      NZ,?0013\r
+    000001E4                        281 ?0012:\r
+    000001E4 3E 00                  282        LD      A,BYTE3 ClearScreen\r
+    000001E6 21 00 00               283        LD      HL,LWRD ClearScreen\r
+    000001E9 CD 00 00               284        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    000001EC 01 00 00               285        LD      BC,0\r
+    000001EF DD 5E E0               286        LD      E,(IX-32)\r
+    000001F2 DD 56 E1               287        LD      D,(IX-31)\r
+    000001F5 3E 00                  288        LD      A,BYTE3 login\r
+    000001F7 21 00 00               289        LD      HL,LWRD login\r
+    000001FA CD 00 00               290        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    000001FD                        291 ?0013:\r
+    000001FD                        292 ?0011:\r
+    000001FD FD E5                  293        PUSH    IY\r
+    000001FF D1                     294        POP     DE\r
+    00000200 FD 7E 1C               295        LD      A,(IY+28)\r
+    00000203 FD 6E 1A               296        LD      L,(IY+26)\r
+    00000206 FD 66 1B               297        LD      H,(IY+27)\r
+    00000209 CD 00 00               298        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    0000020C                        299 ?0009:\r
+    0000020C FD E1                  300        POP     IY\r
+    0000020E C3 00 00               301        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
+    00000211                        302 main:\r
+    00000211 CD 00 00               303        CALL    LWRD ?ENT_PARM_DIRECT_L09\r
+    00000214 3E 00                  304        LD      A,BYTE3 GUIinit\r
+    00000216 21 00 00               305        LD      HL,LWRD GUIinit\r
+    00000219 CD 00 00               306        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    0000021C 3E 00                  307        LD      A,BYTE3 gui_globals\r
+    0000021E 21 00 00               308        LD      HL,LWRD gui_globals\r
+    00000221 CD 00 00               309        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    00000224 01 10 00               310        LD      BC,16\r
+    00000227 09                     311        ADD     HL,BC\r
+    00000228 36 0F                  312        LD      (HL),LOW(login_actionhandler)\r
+    0000022A 23                     313        INC     HL\r
+    0000022B 36 01                  314        LD      (HL),HIGH(login_actionhandler)\r
+    0000022D 23                     315        INC     HL\r
+    0000022E 36 0F                  316        LD      (HL),BYTE3 login_actionhandler\r
+    00000230 11 12 00               317        LD      DE,?0014\r
+    00000233 3E 00                  318        LD      A,BYTE3 GUIgo\r
+    00000235 21 00 00               319        LD      HL,LWRD GUIgo\r
+    00000238 CD 00 00               320        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    0000023B 3E 00                  321        LD      A,BYTE3 GUIunit\r
+    0000023D 21 00 00               322        LD      HL,LWRD GUIunit\r
+    00000240 CD 00 00               323        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    00000243 C3 00 00               324        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
+                                    325        RSEG    CSTR\r
+    00000000                        326 ?0002:\r
+    00000000 2F 62 69 6E 2F 73 68   327        DEFB    '/bin/sh'\r
+    00000007 00                     328        DEFB    0\r
+    00000008                        329 ?0006:\r
+    00000008 48 4F 4D 45            330        DEFB    'HOME'\r
+    0000000C 00                     331        DEFB    0\r
+    0000000D                        332 ?0007:\r
+    0000000D 55 53 45 52            333        DEFB    'USER'\r
+    00000011 00                     334        DEFB    0\r
+    00000012                        335 ?0014:\r
+    00000012 2F 77 6E 64 2F 6C 6F   336        DEFB    '/wnd/logn.scr'\r
              67 6E 2E 73 63 72\r
-    0000001F 00                     332        DEFB    0\r
-    00000020                        333        END\r
+    0000001F 00                     337        DEFB    0\r
+    00000020                        338        END\r
 \fASxxxx Assembler V03.11  (Zilog Z80 / Hitachi HD64180), page 1.\r
 Hexadecimal [32-Bits]\r
 \r
@@ -342,28 +347,28 @@ Symbol Table
   1 ?0003               0000003F R   |   1 ?0004               00000043 R\r
   1 ?0005               0000004C R   |   2 ?0006               00000008 R\r
   2 ?0007               0000000D R   |   1 ?0008               0000013D R\r
-  1 ?0009               00000203 R   |   1 ?0010               00000183 R\r
-  1 ?0011               000001F4 R   |   1 ?0012               000001DB R\r
-  1 ?0013               000001F4 R   |   2 ?0014               00000012 R\r
+  1 ?0009               0000020C R   |   1 ?0010               0000018C R\r
+  1 ?0011               000001FD R   |   1 ?0012               000001E4 R\r
+  1 ?0013               000001FD R   |   2 ?0014               00000012 R\r
     ?BANK_CALL_DIR      ******** GX  |     ?BANK_FAST_LEA      ******** GX\r
     ?BANK_LEAVE_DI      ******** GX  |     ?CL64180B_4_06      ******** GX\r
     ?ENT_AUTO_DIRE      ******** GX  |     ?ENT_PARM_DIRE      ******** GX\r
     ClearScreen         ******** GX  |     GUIgo               ******** GX\r
     GUIinit             ******** GX  |     GUIunit             ******** GX\r
-    chdir               ******** GX  |     crypt               ******** GX\r
-    execv               ******** GX  |     exit                ******** GX\r
-    getpwnam            ******** GX  |     gui_globals         ******** GX\r
-  1 login               00000000 GR  |   1 login_actionha      0000010F GR\r
-  1 main                00000208 GR  |     perror              ******** GX\r
-    setenv              ******** GX  |     setgid              ******** GX\r
-    setuid              ******** GX  |     strcmp              ******** GX\r
-    strcpy              ******** GX  |     strrchr             ******** GX\r
-\r
+    atoi                ******** GX  |     chdir               ******** GX\r
+    crypt               ******** GX  |     execv               ******** GX\r
+    exit                ******** GX  |     getpwuid            ******** GX\r
+    gui_globals         ******** GX  |   1 login               00000000 GR\r
+  1 login_actionha      0000010F GR  |   1 main                00000211 GR\r
+    perror              ******** GX  |     setenv              ******** GX\r
+    setgid              ******** GX  |     setuid              ******** GX\r
+    strcmp              ******** GX  |     strcpy              ******** GX\r
+    strrchr             ******** GX\r
 \fASxxxx Assembler V03.11  (Zilog Z80 / Hitachi HD64180), page 2.\r
 Hexadecimal [32-Bits]\r
 \r
 Area Table\r
 \r
    0 _DEFAULT         size        0   flags   0\r
-   1 CODE             size      23D   flags   0\r
+   1 CODE             size      246   flags   0\r
    2 CSTR             size       20   flags   0\r
index ca89380..5ceecf2 100644 (file)
@@ -1,5 +1,5 @@
 XL4\r
-H 3 areas 1B global symbols\r
+H 3 areas 1C global symbols\r
 M login\r
 S setgid Ref00000000\r
 S GUIunit Ref00000000\r
@@ -17,19 +17,20 @@ S execv Ref00000000
 S GUIgo Ref00000000\r
 S ?ENT_PARM_DIRECT_L09 Ref00000000\r
 S ?BANK_CALL_DIRECT_L08 Ref00000000\r
-S getpwnam Ref00000000\r
 S strcpy Ref00000000\r
+S getpwuid Ref00000000\r
 S ?ENT_AUTO_DIRECT_L09 Ref00000000\r
+S atoi Ref00000000\r
 S crypt Ref00000000\r
 S ?CL64180B_4_06_L00 Ref00000000\r
 S GUIinit Ref00000000\r
 S exit Ref00000000\r
 S .__.ABS. Def00000000\r
 A _DEFAULT size 0 flags 0\r
-A CODE size 23D flags 0\r
+A CODE size 246 flags 0\r
 S login_actionhandler Def0000010F\r
 S login Def00000000\r
-S main Def00000208\r
+S main Def00000211\r
 A CSTR size 20 flags 0\r
 T 00 00 00 00\r
 R 00 00 01 00\r
@@ -68,7 +69,7 @@ R 00 00 01 00
 T 4C 00 00 00 FD E5 C1 21 00 00 39 11 01 00 19\r
 R 00 00 01 00\r
 T 57 00 00 00 EB 3E 00 00 00 00 21 00 00 00 00\r
-R 00 00 01 00 2B 06 11 00 02 0B 11 00\r
+R 00 00 01 00 2B 06 10 00 02 0B 10 00\r
 T 5D 00 00 00 CD 00 00 00 00 21 00 00 39 E5 21\r
 R 00 00 01 00 02 05 0F 00\r
 T 66 00 00 00 42 00 39 7E 23 66 6F C1 71 23 70\r
@@ -112,7 +113,7 @@ R 00 00 01 00 2B 04 0B 00 02 09 0B 00
 T F6 00 00 00 00 00 00 00 11 01 00 3E\r
 R 00 00 01 00 02 04 0F 00\r
 T FC 00 00 00 00 00 00 00 21 00 00 00 00 CD\r
-R 00 00 01 00 2B 04 16 00 02 09 16 00\r
+R 00 00 01 00 2B 04 17 00 02 09 17 00\r
 T 01 01 00 00 00 00 00 00 21 42 00 39 F9 DD E1\r
 R 00 00 01 00 02 04 0F 00\r
 T 0A 01 00 00 FD E1 C3 00 00 00 00\r
@@ -127,7 +128,7 @@ T 23 01 00 00 4E 02 DD 46 03 09 46 23 66 68 23
 R 00 00 01 00\r
 T 2E 01 00 00 23 23 46 23 66 68 01 01 01 A7 ED\r
 R 00 00 01 00\r
-T 39 01 00 00 42 C2 03 02 00 00\r
+T 39 01 00 00 42 C2 0C 02 00 00\r
 R 00 00 01 00 00 06 01 00\r
 T 3D 01 00 00\r
 R 00 00 01 00\r
@@ -138,78 +139,82 @@ R 00 00 01 00
 T 53 01 00 00 36 EE 00 FD 6E 20 FD 66 21 36 00\r
 R 00 00 01 00\r
 T 5E 01 00 00 21 0E 00 39 EB 3E 00 00 00 00 21\r
-R 00 00 01 00 2B 0A 10 00\r
-T 66 01 00 00 00 00 00 00 CD 00 00 00 00 DD 75\r
-R 00 00 01 00 02 04 10 00 02 09 0F 00\r
-T 6D 01 00 00 E0 DD 74 E1 FD 4E 20 FD 46 21 03\r
+R 00 00 01 00 2B 0A 13 00\r
+T 66 01 00 00 00 00 00 00 CD 00 00 00 00 EB 3E\r
+R 00 00 01 00 02 04 13 00 02 09 0F 00\r
+T 6D 01 00 00 00 00 00 00 21 00 00 00 00 CD\r
+R 00 00 01 00 2B 04 11 00 02 09 11 00\r
+T 72 01 00 00 00 00 00 00 DD 75 E0 DD 74 E1 FD\r
+R 00 00 01 00 02 04 0F 00\r
+T 7B 01 00 00 4E 20 FD 46 21 03 03 DD 71 EA DD\r
 R 00 00 01 00\r
-T 78 01 00 00 03 DD 71 EA DD 70 EB 7D B4 28 71\r
+T 86 01 00 00 70 EB 7D B4 28 71\r
 R 00 00 01 00\r
-T 83 01 00 00\r
+T 8C 01 00 00\r
 R 00 00 01 00\r
-T 83 01 00 00 23 23 7E 23 66 6F 46 DD 70 E2 DD\r
+T 8C 01 00 00 23 23 7E 23 66 6F 46 DD 70 E2 DD\r
 R 00 00 01 00\r
-T 8E 01 00 00 6E E0 DD 66 E1 23 23 46 23 66 68\r
+T 97 01 00 00 6E E0 DD 66 E1 23 23 46 23 66 68\r
 R 00 00 01 00\r
-T 99 01 00 00 23 46 DD 70 E3 DD 36 E4 00 21\r
+T A2 01 00 00 23 46 DD 70 E3 DD 36 E4 00 21\r
 R 00 00 01 00\r
-T A3 01 00 00 04 00 39 4D 44 DD 5E EA DD 56 EB\r
+T AC 01 00 00 04 00 39 4D 44 DD 5E EA DD 56 EB\r
 R 00 00 01 00\r
-T AE 01 00 00 3E 00 00 00 00 21 00 00 00 00 CD\r
-R 00 00 01 00 2B 05 13 00 02 0A 13 00\r
-T B4 01 00 00 00 00 00 00 DD 75 E8 DD 74 E9 DD\r
+T B7 01 00 00 3E 00 00 00 00 21 00 00 00 00 CD\r
+R 00 00 01 00 2B 05 14 00 02 0A 14 00\r
+T BD 01 00 00 00 00 00 00 DD 75 E8 DD 74 E9 DD\r
 R 00 00 01 00 02 04 0F 00\r
-T BD 01 00 00 4E E0 DD 46 E1 03 03 69 60 4E 23\r
+T C6 01 00 00 4E E0 DD 46 E1 03 03 69 60 4E 23\r
 R 00 00 01 00\r
-T C8 01 00 00 46 DD 5E E8 DD 56 E9 3E\r
+T D1 01 00 00 46 DD 5E E8 DD 56 E9 3E\r
 R 00 00 01 00\r
-T D0 01 00 00 00 00 00 00 21 00 00 00 00 CD\r
+T D9 01 00 00 00 00 00 00 21 00 00 00 00 CD\r
 R 00 00 01 00 2B 04 0A 00 02 09 0A 00\r
-T D5 01 00 00 00 00 00 00 7D B4 20 19\r
+T DE 01 00 00 00 00 00 00 7D B4 20 19\r
 R 00 00 01 00 02 04 0F 00\r
-T DB 01 00 00\r
+T E4 01 00 00\r
 R 00 00 01 00\r
-T DB 01 00 00 3E 00 00 00 00 21 00 00 00 00 CD\r
+T E4 01 00 00 3E 00 00 00 00 21 00 00 00 00 CD\r
 R 00 00 01 00 2B 05 03 00 02 0A 03 00\r
-T E1 01 00 00 00 00 00 00 01 00 00 DD 5E E0 DD\r
+T EA 01 00 00 00 00 00 00 01 00 00 DD 5E E0 DD\r
 R 00 00 01 00 02 04 0F 00\r
-T EA 01 00 00 56 E1 3E 00 00 00 00 21\r
+T F3 01 00 00 56 E1 3E 00 00 00 00 21\r
 R 00 00 01 00 29 07 01 00\r
-T EF 01 00 00 00 00 00 00 CD 00 00 00 00\r
+T F8 01 00 00 00 00 00 00 CD 00 00 00 00\r
 R 00 00 01 00 00 04 01 00 02 09 0F 00\r
-T F4 01 00 00\r
+T FD 01 00 00\r
 R 00 00 01 00\r
-T F4 01 00 00\r
+T FD 01 00 00\r
 R 00 00 01 00\r
-T F4 01 00 00 FD E5 D1 FD 7E 1C FD 6E 1A FD 66\r
+T FD 01 00 00 FD E5 D1 FD 7E 1C FD 6E 1A FD 66\r
 R 00 00 01 00\r
-T FF 01 00 00 1B CD 00 00 00 00\r
+T 08 02 00 00 1B CD 00 00 00 00\r
 R 00 00 01 00 02 06 0F 00\r
-T 03 02 00 00\r
+T 0C 02 00 00\r
 R 00 00 01 00\r
-T 03 02 00 00 FD E1 C3 00 00 00 00\r
+T 0C 02 00 00 FD E1 C3 00 00 00 00\r
 R 00 00 01 00 02 07 08 00\r
-T 08 02 00 00\r
+T 11 02 00 00\r
 R 00 00 01 00\r
-T 08 02 00 00 CD 00 00 00 00 3E 00 00 00 00 21\r
-R 00 00 01 00 02 05 0E 00 2B 0A 15 00\r
-T 0E 02 00 00 00 00 00 00 CD 00 00 00 00 3E\r
-R 00 00 01 00 02 04 15 00 02 09 0F 00\r
-T 14 02 00 00 00 00 00 00 21 00 00 00 00 CD\r
+T 11 02 00 00 CD 00 00 00 00 3E 00 00 00 00 21\r
+R 00 00 01 00 02 05 0E 00 2B 0A 16 00\r
+T 17 02 00 00 00 00 00 00 CD 00 00 00 00 3E\r
+R 00 00 01 00 02 04 16 00 02 09 0F 00\r
+T 1D 02 00 00 00 00 00 00 21 00 00 00 00 CD\r
 R 00 00 01 00 2B 04 05 00 02 09 05 00\r
-T 19 02 00 00 00 00 00 00 01 10 00 09 36\r
+T 22 02 00 00 00 00 00 00 01 10 00 09 36\r
 R 00 00 01 00 02 04 0F 00\r
-T 20 02 00 00 0F 01 00 00 23 36 0F 01 00 00 23\r
+T 29 02 00 00 0F 01 00 00 23 36 0F 01 00 00 23\r
 R 00 00 01 00 09 04 01 00 89 0A 01 00\r
-T 25 02 00 00 36 0F 01 00 00 11 12 00 00 00 3E\r
+T 2E 02 00 00 36 0F 01 00 00 11 12 00 00 00 3E\r
 R 00 00 01 00 29 05 01 00 00 0A 02 00\r
-T 2B 02 00 00 00 00 00 00 21 00 00 00 00 CD\r
+T 34 02 00 00 00 00 00 00 21 00 00 00 00 CD\r
 R 00 00 01 00 2B 04 0D 00 02 09 0D 00\r
-T 30 02 00 00 00 00 00 00 3E 00 00 00 00 21\r
+T 39 02 00 00 00 00 00 00 3E 00 00 00 00 21\r
 R 00 00 01 00 02 04 0F 00 2B 09 01 00\r
-T 35 02 00 00 00 00 00 00 CD 00 00 00 00 C3\r
+T 3E 02 00 00 00 00 00 00 CD 00 00 00 00 C3\r
 R 00 00 01 00 02 04 01 00 02 09 0F 00\r
-T 3B 02 00 00 00 00 00 00\r
+T 44 02 00 00 00 00 00 00\r
 R 00 00 01 00 02 04 08 00\r
 T 00 00 00 00\r
 R 00 00 02 00\r
index 1be30eb..a448d5a 100644 (file)
                                       5        EXTERN  GUIgo\r
                                       6        EXTERN  GUIinit\r
                                       7        EXTERN  GUIunit\r
-                                      8        EXTERN  chdir\r
-                                      9        EXTERN  crypt\r
-                                     10        EXTERN  execv\r
-                                     11        EXTERN  exit\r
-                                     12        EXTERN  getpwnam\r
-                                     13        EXTERN  gui_globals\r
-                                     14        PUBLIC  login\r
-                                     15        PUBLIC  login_actionhandler\r
-                                     16        PUBLIC  main\r
-                                     17        EXTERN  perror\r
-                                     18        EXTERN  setenv\r
-                                     19        EXTERN  setgid\r
-                                     20        EXTERN  setuid\r
-                                     21        EXTERN  strcmp\r
-                                     22        EXTERN  strcpy\r
-                                     23        EXTERN  strrchr\r
-                                     24        EXTERN  ?CL64180B_4_06_L00\r
-                                     25        EXTERN  ?BANK_CALL_DIRECT_L08\r
-                                     26        EXTERN  ?BANK_LEAVE_DIRECT_L08\r
-                                     27        EXTERN  ?BANK_FAST_LEAVE_L08\r
-                                     28        EXTERN  ?ENT_PARM_DIRECT_L09\r
-                                     29        EXTERN  ?ENT_AUTO_DIRECT_L09\r
-                                     30        RSEG    CODE\r
-    000068C7                         31 login:\r
-    000068C7 FD E5                   32        PUSH    IY\r
-    000068C9 DD E5                   33        PUSH    IX\r
-    000068CB C5                      34        PUSH    BC\r
-    000068CC 21 C0 FF                35        LD      HL,65472\r
-    000068CF 39                      36        ADD     HL,SP\r
-    000068D0 F9                      37        LD      SP,HL\r
-    000068D1 D5                      38        PUSH    DE\r
-    000068D2 DD E1                   39        POP     IX\r
-    000068D4 21 0C 00                40        LD      HL,12\r
-    000068D7 19                      41        ADD     HL,DE\r
-    000068D8 7E                      42        LD      A,(HL)\r
-    000068D9 23                      43        INC     HL\r
-    000068DA 66                      44        LD      H,(HL)\r
-    000068DB 6F                      45        LD      L,A\r
-    000068DC AF                      46        XOR     A\r
-    000068DD B6                      47        OR      (HL)\r
-    000068DE 20 08                   48        JR      NZ,?0001\r
-    000068E0                         49 ?0000:\r
-    000068E0 DD 36 0C DE             50        LD      (IX+12),LOW(?0002)\r
-    000068E4 DD 36 0D 84             51        LD      (IX+13),HIGH(?0002)\r
-    000068E8                         52 ?0001:\r
-    000068E8 21 00 00                53        LD      HL,0\r
-    000068EB 39                      54        ADD     HL,SP\r
-    000068EC 36 2D                   55        LD      (HL),45\r
-    000068EE 01 2F 00                56        LD      BC,47\r
-    000068F1 DD 5E 0C                57        LD      E,(IX+12)\r
-    000068F4 DD 56 0D                58        LD      D,(IX+13)\r
-    000068F7 3E 00                   59        LD      A,BYTE3 strrchr\r
-    000068F9 21 38 6B                60        LD      HL,LWRD strrchr\r
-    000068FC CD 5E 81                61        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    000068FF E5                      62        PUSH    HL\r
-    00006900 FD E1                   63        POP     IY\r
-    00006902 7D                      64        LD      A,L\r
-    00006903 B4                      65        OR      H\r
-    00006904 28 04                   66        JR      Z,?0004\r
-    00006906                         67 ?0003:\r
-    00006906 FD 23                   68        INC     IY\r
-    00006908 18 09                   69        JR      ?0005\r
-    0000690A                         70 ?0004:\r
-    0000690A DD 6E 0C                71        LD      L,(IX+12)\r
-    0000690D DD 66 0D                72        LD      H,(IX+13)\r
-    00006910 E5                      73        PUSH    HL\r
-    00006911 FD E1                   74        POP     IY\r
-    00006913                         75 ?0005:\r
-    00006913 FD E5                   76        PUSH    IY\r
-    00006915 C1                      77        POP     BC\r
-    00006916 21 00 00                78        LD      HL,0\r
-    00006919 39                      79        ADD     HL,SP\r
-    0000691A 11 01 00                80        LD      DE,1\r
-    0000691D 19                      81        ADD     HL,DE\r
-    0000691E EB                      82        EX      DE,HL\r
-    0000691F 3E 00                   83        LD      A,BYTE3 strcpy\r
-    00006921 21 A0 75                84        LD      HL,LWRD strcpy\r
-    00006924 CD 5E 81                85        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    00006927 21 00 00                86        LD      HL,0\r
-    0000692A 39                      87        ADD     HL,SP\r
-    0000692B E5                      88        PUSH    HL\r
-    0000692C 21 42 00                89        LD      HL,66\r
-    0000692F 39                      90        ADD     HL,SP\r
-    00006930 7E                      91        LD      A,(HL)\r
-    00006931 23                      92        INC     HL\r
-    00006932 66                      93        LD      H,(HL)\r
-    00006933 6F                      94        LD      L,A\r
-    00006934 C1                      95        POP     BC\r
-    00006935 71                      96        LD      (HL),C\r
-    00006936 23                      97        INC     HL\r
-    00006937 70                      98        LD      (HL),B\r
-    00006938 21 40 00                99        LD      HL,64\r
-    0000693B 39                     100        ADD     HL,SP\r
-    0000693C 47                     101        LD      B,A\r
-    0000693D 23                     102        INC     HL\r
-    0000693E 66                     103        LD      H,(HL)\r
-    0000693F 68                     104        LD      L,B\r
-    00006940 23                     105        INC     HL\r
-    00006941 23                     106        INC     HL\r
-    00006942 AF                     107        XOR     A\r
-    00006943 77                     108        LD      (HL),A\r
-    00006944 23                     109        INC     HL\r
-    00006945 77                     110        LD      (HL),A\r
-    00006946 DD 5E 06               111        LD      E,(IX+6)\r
-    00006949 DD 56 07               112        LD      D,(IX+7)\r
-    0000694C 3E 00                  113        LD      A,BYTE3 setgid\r
-    0000694E 21 04 6B               114        LD      HL,LWRD setgid\r
-    00006951 CD 5E 81               115        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    00006954 DD 5E 04               116        LD      E,(IX+4)\r
-    00006957 DD 56 05               117        LD      D,(IX+5)\r
-    0000695A 3E 00                  118        LD      A,BYTE3 setuid\r
-    0000695C 21 E7 6D               119        LD      HL,LWRD setuid\r
-    0000695F CD 5E 81               120        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    00006962 DD 5E 0A               121        LD      E,(IX+10)\r
-    00006965 DD 56 0B               122        LD      D,(IX+11)\r
-    00006968 3E 00                  123        LD      A,BYTE3 chdir\r
-    0000696A 21 B3 6D               124        LD      HL,LWRD chdir\r
-    0000696D CD 5E 81               125        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    00006970 21 01 00               126        LD      HL,1\r
-    00006973 E5                     127        PUSH    HL\r
-    00006974 DD 4E 0A               128        LD      C,(IX+10)\r
-    00006977 DD 46 0B               129        LD      B,(IX+11)\r
-    0000697A 11 E6 84               130        LD      DE,?0006\r
-    0000697D 3E 00                  131        LD      A,BYTE3 setenv\r
-    0000697F 21 06 6F               132        LD      HL,LWRD setenv\r
-    00006982 CD 5E 81               133        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    00006985 F1                     134        POP     AF\r
-    00006986 21 01 00               135        LD      HL,1\r
-    00006989 E5                     136        PUSH    HL\r
-    0000698A DD 4E 00               137        LD      C,(IX+0)\r
-    0000698D DD 46 01               138        LD      B,(IX+1)\r
-    00006990 11 EB 84               139        LD      DE,?0007\r
-    00006993 3E 00                  140        LD      A,BYTE3 setenv\r
-    00006995 21 06 6F               141        LD      HL,LWRD setenv\r
-    00006998 CD 5E 81               142        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    0000699B F1                     143        POP     AF\r
-    0000699C 21 40 00               144        LD      HL,64\r
-    0000699F 39                     145        ADD     HL,SP\r
-    000069A0 4E                     146        LD      C,(HL)\r
-    000069A1 23                     147        INC     HL\r
-    000069A2 46                     148        LD      B,(HL)\r
-    000069A3 DD 5E 0C               149        LD      E,(IX+12)\r
-    000069A6 DD 56 0D               150        LD      D,(IX+13)\r
-    000069A9 3E 00                  151        LD      A,BYTE3 execv\r
-    000069AB 21 4C 73               152        LD      HL,LWRD execv\r
-    000069AE CD 5E 81               153        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    000069B1 DD 5E 0C               154        LD      E,(IX+12)\r
-    000069B4 DD 56 0D               155        LD      D,(IX+13)\r
-    000069B7 3E 00                  156        LD      A,BYTE3 perror\r
-    000069B9 21 0F 73               157        LD      HL,LWRD perror\r
-    000069BC CD 5E 81               158        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    000069BF 11 01 00               159        LD      DE,1\r
-    000069C2 3E 01                  160        LD      A,BYTE3 exit\r
-    000069C4 21 01 47               161        LD      HL,LWRD exit\r
-    000069C7 CD 5E 81               162        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    000069CA 21 42 00               163        LD      HL,66\r
-    000069CD 39                     164        ADD     HL,SP\r
-    000069CE F9                     165        LD      SP,HL\r
-    000069CF DD E1                  166        POP     IX\r
-    000069D1 FD E1                  167        POP     IY\r
-    000069D3 C3 25 81               168        JP      LWRD ?BANK_FAST_LEAVE_L08\r
-    000069D6                        169 login_actionhandler:\r
-    000069D6 CD 88 81               170        CALL    LWRD ?ENT_AUTO_DIRECT_L09\r
-    000069D9 E0 FF                  171        DEFW    -32\r
-    000069DB FD E5                  172        PUSH    IY\r
-    000069DD DD 6E 02               173        LD      L,(IX+2)\r
-    000069E0 DD 66 03               174        LD      H,(IX+3)\r
-    000069E3 E5                     175        PUSH    HL\r
-    000069E4 FD E1                  176        POP     IY\r
-    000069E6 21 26 00               177        LD      HL,38\r
-    000069E9 DD 4E 02               178        LD      C,(IX+2)\r
-    000069EC DD 46 03               179        LD      B,(IX+3)\r
-    000069EF 09                     180        ADD     HL,BC\r
-    000069F0 46                     181        LD      B,(HL)\r
-    000069F1 23                     182        INC     HL\r
-    000069F2 66                     183        LD      H,(HL)\r
-    000069F3 68                     184        LD      L,B\r
-    000069F4 23                     185        INC     HL\r
-    000069F5 23                     186        INC     HL\r
-    000069F6 23                     187        INC     HL\r
-    000069F7 46                     188        LD      B,(HL)\r
-    000069F8 23                     189        INC     HL\r
-    000069F9 66                     190        LD      H,(HL)\r
-    000069FA 68                     191        LD      L,B\r
-    000069FB 01 01 01               192        LD      BC,257\r
-    000069FE A7                     193        AND     A\r
-    000069FF ED 42                  194        SBC     HL,BC\r
-    00006A01 C2 CA 6A               195        JP      NZ,?0009\r
-    00006A04                        196 ?0008:\r
-    00006A04 FD 6E 20               197        LD      L,(IY+32)\r
-    00006A07 FD 66 21               198        LD      H,(IY+33)\r
-    00006A0A 46                     199        LD      B,(HL)\r
-    00006A0B DD 70 EC               200        LD      (IX-20),B\r
-    00006A0E FD 6E 20               201        LD      L,(IY+32)\r
-    00006A11 FD 66 21               202        LD      H,(IY+33)\r
-    00006A14 23                     203        INC     HL\r
-    00006A15 46                     204        LD      B,(HL)\r
-    00006A16 DD 70 ED               205        LD      (IX-19),B\r
-    00006A19 DD 36 EE 00            206        LD      (IX-18),0\r
-    00006A1D FD 6E 20               207        LD      L,(IY+32)\r
-    00006A20 FD 66 21               208        LD      H,(IY+33)\r
-    00006A23 36 00                  209        LD      (HL),0\r
-    00006A25 21 0E 00               210        LD      HL,14\r
-    00006A28 39                     211        ADD     HL,SP\r
-    00006A29 EB                     212        EX      DE,HL\r
-    00006A2A 3E 00                  213        LD      A,BYTE3 getpwnam\r
-    00006A2C 21 BC 74               214        LD      HL,LWRD getpwnam\r
-    00006A2F CD 5E 81               215        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    00006A32 DD 75 E0               216        LD      (IX-32),L\r
-    00006A35 DD 74 E1               217        LD      (IX-31),H\r
-    00006A38 FD 4E 20               218        LD      C,(IY+32)\r
-    00006A3B FD 46 21               219        LD      B,(IY+33)\r
-    00006A3E 03                     220        INC     BC\r
-    00006A3F 03                     221        INC     BC\r
-    00006A40 DD 71 EA               222        LD      (IX-22),C\r
-    00006A43 DD 70 EB               223        LD      (IX-21),B\r
-    00006A46 7D                     224        LD      A,L\r
-    00006A47 B4                     225        OR      H\r
-    00006A48 28 71                  226        JR      Z,?0013\r
-    00006A4A                        227 ?0010:\r
-    00006A4A 23                     228        INC     HL\r
-    00006A4B 23                     229        INC     HL\r
-    00006A4C 7E                     230        LD      A,(HL)\r
-    00006A4D 23                     231        INC     HL\r
-    00006A4E 66                     232        LD      H,(HL)\r
-    00006A4F 6F                     233        LD      L,A\r
-    00006A50 46                     234        LD      B,(HL)\r
-    00006A51 DD 70 E2               235        LD      (IX-30),B\r
-    00006A54 DD 6E E0               236        LD      L,(IX-32)\r
-    00006A57 DD 66 E1               237        LD      H,(IX-31)\r
-    00006A5A 23                     238        INC     HL\r
-    00006A5B 23                     239        INC     HL\r
-    00006A5C 46                     240        LD      B,(HL)\r
-    00006A5D 23                     241        INC     HL\r
-    00006A5E 66                     242        LD      H,(HL)\r
-    00006A5F 68                     243        LD      L,B\r
-    00006A60 23                     244        INC     HL\r
-    00006A61 46                     245        LD      B,(HL)\r
-    00006A62 DD 70 E3               246        LD      (IX-29),B\r
-    00006A65 DD 36 E4 00            247        LD      (IX-28),0\r
-    00006A69 21 04 00               248        LD      HL,4\r
-    00006A6C 39                     249        ADD     HL,SP\r
-    00006A6D 4D                     250        LD      C,L\r
-    00006A6E 44                     251        LD      B,H\r
-    00006A6F DD 5E EA               252        LD      E,(IX-22)\r
-    00006A72 DD 56 EB               253        LD      D,(IX-21)\r
-    00006A75 3E 01                  254        LD      A,BYTE3 crypt\r
-    00006A77 21 FD 41               255        LD      HL,LWRD crypt\r
-    00006A7A CD 5E 81               256        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    00006A7D DD 75 E8               257        LD      (IX-24),L\r
-    00006A80 DD 74 E9               258        LD      (IX-23),H\r
-    00006A83 DD 4E E0               259        LD      C,(IX-32)\r
-    00006A86 DD 46 E1               260        LD      B,(IX-31)\r
-    00006A89 03                     261        INC     BC\r
-    00006A8A 03                     262        INC     BC\r
-    00006A8B 69                     263        LD      L,C\r
-    00006A8C 60                     264        LD      H,B\r
-    00006A8D 4E                     265        LD      C,(HL)\r
-    00006A8E 23                     266        INC     HL\r
-    00006A8F 46                     267        LD      B,(HL)\r
-    00006A90 DD 5E E8               268        LD      E,(IX-24)\r
-    00006A93 DD 56 E9               269        LD      D,(IX-23)\r
-    00006A96 3E 00                  270        LD      A,BYTE3 strcmp\r
-    00006A98 21 6E 72               271        LD      HL,LWRD strcmp\r
-    00006A9B CD 5E 81               272        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    00006A9E 7D                     273        LD      A,L\r
-    00006A9F B4                     274        OR      H\r
-    00006AA0 20 19                  275        JR      NZ,?0013\r
-    00006AA2                        276 ?0012:\r
-    00006AA2 3E 00                  277        LD      A,BYTE3 ClearScreen\r
-    00006AA4 21 86 48               278        LD      HL,LWRD ClearScreen\r
-    00006AA7 CD 5E 81               279        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    00006AAA 01 00 00               280        LD      BC,0\r
-    00006AAD DD 5E E0               281        LD      E,(IX-32)\r
-    00006AB0 DD 56 E1               282        LD      D,(IX-31)\r
-    00006AB3 3E 00                  283        LD      A,BYTE3 login\r
-    00006AB5 21 C7 68               284        LD      HL,LWRD login\r
-    00006AB8 CD 5E 81               285        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    00006ABB                        286 ?0013:\r
-    00006ABB                        287 ?0011:\r
-    00006ABB FD E5                  288        PUSH    IY\r
-    00006ABD D1                     289        POP     DE\r
-    00006ABE FD 7E 1C               290        LD      A,(IY+28)\r
-    00006AC1 FD 6E 1A               291        LD      L,(IY+26)\r
-    00006AC4 FD 66 1B               292        LD      H,(IY+27)\r
-    00006AC7 CD 5E 81               293        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    00006ACA                        294 ?0009:\r
-    00006ACA FD E1                  295        POP     IY\r
-    00006ACC C3 1F 81               296        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
-    00006ACF                        297 main:\r
-    00006ACF CD 52 81               298        CALL    LWRD ?ENT_PARM_DIRECT_L09\r
-    00006AD2 3E 00                  299        LD      A,BYTE3 GUIinit\r
-    00006AD4 21 BA 66               300        LD      HL,LWRD GUIinit\r
-    00006AD7 CD 5E 81               301        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    00006ADA 3E 00                  302        LD      A,BYTE3 gui_globals\r
-    00006ADC 21 B4 66               303        LD      HL,LWRD gui_globals\r
-    00006ADF CD 5E 81               304        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    00006AE2 01 10 00               305        LD      BC,16\r
-    00006AE5 09                     306        ADD     HL,BC\r
-    00006AE6 36 D6                  307        LD      (HL),LOW(login_actionhandler)\r
-    00006AE8 23                     308        INC     HL\r
-    00006AE9 36 69                  309        LD      (HL),HIGH(login_actionhandler)\r
-    00006AEB 23                     310        INC     HL\r
-    00006AEC 36 00                  311        LD      (HL),BYTE3 login_actionhandler\r
-    00006AEE 11 F0 84               312        LD      DE,?0014\r
-    00006AF1 3E 00                  313        LD      A,BYTE3 GUIgo\r
-    00006AF3 21 06 68               314        LD      HL,LWRD GUIgo\r
-    00006AF6 CD 5E 81               315        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    00006AF9 3E 00                  316        LD      A,BYTE3 GUIunit\r
-    00006AFB 21 E1 67               317        LD      HL,LWRD GUIunit\r
-    00006AFE CD 5E 81               318        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    00006B01 C3 1F 81               319        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
-                                    320        RSEG    CSTR\r
-    000084DE                        321 ?0002:\r
-    000084DE 2F 62 69 6E 2F 73 68   322        DEFB    '/bin/sh'\r
-    000084E5 00                     323        DEFB    0\r
-    000084E6                        324 ?0006:\r
-    000084E6 48 4F 4D 45            325        DEFB    'HOME'\r
-    000084EA 00                     326        DEFB    0\r
-    000084EB                        327 ?0007:\r
-    000084EB 55 53 45 52            328        DEFB    'USER'\r
-    000084EF 00                     329        DEFB    0\r
-    000084F0                        330 ?0014:\r
-    000084F0 2F 77 6E 64 2F 6C 6F   331        DEFB    '/wnd/logn.scr'\r
+                                      8        EXTERN  atoi\r
+                                      9        EXTERN  chdir\r
+                                     10        EXTERN  crypt\r
+                                     11        EXTERN  execv\r
+                                     12        EXTERN  exit\r
+                                     13        EXTERN  getpwuid\r
+                                     14        EXTERN  gui_globals\r
+                                     15        PUBLIC  login\r
+                                     16        PUBLIC  login_actionhandler\r
+                                     17        PUBLIC  main\r
+                                     18        EXTERN  perror\r
+                                     19        EXTERN  setenv\r
+                                     20        EXTERN  setgid\r
+                                     21        EXTERN  setuid\r
+                                     22        EXTERN  strcmp\r
+                                     23        EXTERN  strcpy\r
+                                     24        EXTERN  strrchr\r
+                                     25        EXTERN  ?CL64180B_4_06_L00\r
+                                     26        EXTERN  ?BANK_CALL_DIRECT_L08\r
+                                     27        EXTERN  ?BANK_LEAVE_DIRECT_L08\r
+                                     28        EXTERN  ?BANK_FAST_LEAVE_L08\r
+                                     29        EXTERN  ?ENT_PARM_DIRECT_L09\r
+                                     30        EXTERN  ?ENT_AUTO_DIRECT_L09\r
+                                     31        RSEG    CODE\r
+    000068C7                         32 login:\r
+    000068C7 FD E5                   33        PUSH    IY\r
+    000068C9 DD E5                   34        PUSH    IX\r
+    000068CB C5                      35        PUSH    BC\r
+    000068CC 21 C0 FF                36        LD      HL,65472\r
+    000068CF 39                      37        ADD     HL,SP\r
+    000068D0 F9                      38        LD      SP,HL\r
+    000068D1 D5                      39        PUSH    DE\r
+    000068D2 DD E1                   40        POP     IX\r
+    000068D4 21 0C 00                41        LD      HL,12\r
+    000068D7 19                      42        ADD     HL,DE\r
+    000068D8 7E                      43        LD      A,(HL)\r
+    000068D9 23                      44        INC     HL\r
+    000068DA 66                      45        LD      H,(HL)\r
+    000068DB 6F                      46        LD      L,A\r
+    000068DC AF                      47        XOR     A\r
+    000068DD B6                      48        OR      (HL)\r
+    000068DE 20 08                   49        JR      NZ,?0001\r
+    000068E0                         50 ?0000:\r
+    000068E0 DD 36 0C DE             51        LD      (IX+12),LOW(?0002)\r
+    000068E4 DD 36 0D 84             52        LD      (IX+13),HIGH(?0002)\r
+    000068E8                         53 ?0001:\r
+    000068E8 21 00 00                54        LD      HL,0\r
+    000068EB 39                      55        ADD     HL,SP\r
+    000068EC 36 2D                   56        LD      (HL),45\r
+    000068EE 01 2F 00                57        LD      BC,47\r
+    000068F1 DD 5E 0C                58        LD      E,(IX+12)\r
+    000068F4 DD 56 0D                59        LD      D,(IX+13)\r
+    000068F7 3E 00                   60        LD      A,BYTE3 strrchr\r
+    000068F9 21 41 6B                61        LD      HL,LWRD strrchr\r
+    000068FC CD 5E 81                62        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    000068FF E5                      63        PUSH    HL\r
+    00006900 FD E1                   64        POP     IY\r
+    00006902 7D                      65        LD      A,L\r
+    00006903 B4                      66        OR      H\r
+    00006904 28 04                   67        JR      Z,?0004\r
+    00006906                         68 ?0003:\r
+    00006906 FD 23                   69        INC     IY\r
+    00006908 18 09                   70        JR      ?0005\r
+    0000690A                         71 ?0004:\r
+    0000690A DD 6E 0C                72        LD      L,(IX+12)\r
+    0000690D DD 66 0D                73        LD      H,(IX+13)\r
+    00006910 E5                      74        PUSH    HL\r
+    00006911 FD E1                   75        POP     IY\r
+    00006913                         76 ?0005:\r
+    00006913 FD E5                   77        PUSH    IY\r
+    00006915 C1                      78        POP     BC\r
+    00006916 21 00 00                79        LD      HL,0\r
+    00006919 39                      80        ADD     HL,SP\r
+    0000691A 11 01 00                81        LD      DE,1\r
+    0000691D 19                      82        ADD     HL,DE\r
+    0000691E EB                      83        EX      DE,HL\r
+    0000691F 3E 00                   84        LD      A,BYTE3 strcpy\r
+    00006921 21 C5 74                85        LD      HL,LWRD strcpy\r
+    00006924 CD 5E 81                86        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    00006927 21 00 00                87        LD      HL,0\r
+    0000692A 39                      88        ADD     HL,SP\r
+    0000692B E5                      89        PUSH    HL\r
+    0000692C 21 42 00                90        LD      HL,66\r
+    0000692F 39                      91        ADD     HL,SP\r
+    00006930 7E                      92        LD      A,(HL)\r
+    00006931 23                      93        INC     HL\r
+    00006932 66                      94        LD      H,(HL)\r
+    00006933 6F                      95        LD      L,A\r
+    00006934 C1                      96        POP     BC\r
+    00006935 71                      97        LD      (HL),C\r
+    00006936 23                      98        INC     HL\r
+    00006937 70                      99        LD      (HL),B\r
+    00006938 21 40 00               100        LD      HL,64\r
+    0000693B 39                     101        ADD     HL,SP\r
+    0000693C 47                     102        LD      B,A\r
+    0000693D 23                     103        INC     HL\r
+    0000693E 66                     104        LD      H,(HL)\r
+    0000693F 68                     105        LD      L,B\r
+    00006940 23                     106        INC     HL\r
+    00006941 23                     107        INC     HL\r
+    00006942 AF                     108        XOR     A\r
+    00006943 77                     109        LD      (HL),A\r
+    00006944 23                     110        INC     HL\r
+    00006945 77                     111        LD      (HL),A\r
+    00006946 DD 5E 06               112        LD      E,(IX+6)\r
+    00006949 DD 56 07               113        LD      D,(IX+7)\r
+    0000694C 3E 00                  114        LD      A,BYTE3 setgid\r
+    0000694E 21 0D 6B               115        LD      HL,LWRD setgid\r
+    00006951 CD 5E 81               116        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    00006954 DD 5E 04               117        LD      E,(IX+4)\r
+    00006957 DD 56 05               118        LD      D,(IX+5)\r
+    0000695A 3E 00                  119        LD      A,BYTE3 setuid\r
+    0000695C 21 F0 6D               120        LD      HL,LWRD setuid\r
+    0000695F CD 5E 81               121        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    00006962 DD 5E 0A               122        LD      E,(IX+10)\r
+    00006965 DD 56 0B               123        LD      D,(IX+11)\r
+    00006968 3E 00                  124        LD      A,BYTE3 chdir\r
+    0000696A 21 BC 6D               125        LD      HL,LWRD chdir\r
+    0000696D CD 5E 81               126        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    00006970 21 01 00               127        LD      HL,1\r
+    00006973 E5                     128        PUSH    HL\r
+    00006974 DD 4E 0A               129        LD      C,(IX+10)\r
+    00006977 DD 46 0B               130        LD      B,(IX+11)\r
+    0000697A 11 E6 84               131        LD      DE,?0006\r
+    0000697D 3E 00                  132        LD      A,BYTE3 setenv\r
+    0000697F 21 0F 6F               133        LD      HL,LWRD setenv\r
+    00006982 CD 5E 81               134        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    00006985 F1                     135        POP     AF\r
+    00006986 21 01 00               136        LD      HL,1\r
+    00006989 E5                     137        PUSH    HL\r
+    0000698A DD 4E 00               138        LD      C,(IX+0)\r
+    0000698D DD 46 01               139        LD      B,(IX+1)\r
+    00006990 11 EB 84               140        LD      DE,?0007\r
+    00006993 3E 00                  141        LD      A,BYTE3 setenv\r
+    00006995 21 0F 6F               142        LD      HL,LWRD setenv\r
+    00006998 CD 5E 81               143        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    0000699B F1                     144        POP     AF\r
+    0000699C 21 40 00               145        LD      HL,64\r
+    0000699F 39                     146        ADD     HL,SP\r
+    000069A0 4E                     147        LD      C,(HL)\r
+    000069A1 23                     148        INC     HL\r
+    000069A2 46                     149        LD      B,(HL)\r
+    000069A3 DD 5E 0C               150        LD      E,(IX+12)\r
+    000069A6 DD 56 0D               151        LD      D,(IX+13)\r
+    000069A9 3E 00                  152        LD      A,BYTE3 execv\r
+    000069AB 21 55 73               153        LD      HL,LWRD execv\r
+    000069AE CD 5E 81               154        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    000069B1 DD 5E 0C               155        LD      E,(IX+12)\r
+    000069B4 DD 56 0D               156        LD      D,(IX+13)\r
+    000069B7 3E 00                  157        LD      A,BYTE3 perror\r
+    000069B9 21 18 73               158        LD      HL,LWRD perror\r
+    000069BC CD 5E 81               159        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    000069BF 11 01 00               160        LD      DE,1\r
+    000069C2 3E 01                  161        LD      A,BYTE3 exit\r
+    000069C4 21 04 45               162        LD      HL,LWRD exit\r
+    000069C7 CD 5E 81               163        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    000069CA 21 42 00               164        LD      HL,66\r
+    000069CD 39                     165        ADD     HL,SP\r
+    000069CE F9                     166        LD      SP,HL\r
+    000069CF DD E1                  167        POP     IX\r
+    000069D1 FD E1                  168        POP     IY\r
+    000069D3 C3 25 81               169        JP      LWRD ?BANK_FAST_LEAVE_L08\r
+    000069D6                        170 login_actionhandler:\r
+    000069D6 CD 88 81               171        CALL    LWRD ?ENT_AUTO_DIRECT_L09\r
+    000069D9 E0 FF                  172        DEFW    -32\r
+    000069DB FD E5                  173        PUSH    IY\r
+    000069DD DD 6E 02               174        LD      L,(IX+2)\r
+    000069E0 DD 66 03               175        LD      H,(IX+3)\r
+    000069E3 E5                     176        PUSH    HL\r
+    000069E4 FD E1                  177        POP     IY\r
+    000069E6 21 26 00               178        LD      HL,38\r
+    000069E9 DD 4E 02               179        LD      C,(IX+2)\r
+    000069EC DD 46 03               180        LD      B,(IX+3)\r
+    000069EF 09                     181        ADD     HL,BC\r
+    000069F0 46                     182        LD      B,(HL)\r
+    000069F1 23                     183        INC     HL\r
+    000069F2 66                     184        LD      H,(HL)\r
+    000069F3 68                     185        LD      L,B\r
+    000069F4 23                     186        INC     HL\r
+    000069F5 23                     187        INC     HL\r
+    000069F6 23                     188        INC     HL\r
+    000069F7 46                     189        LD      B,(HL)\r
+    000069F8 23                     190        INC     HL\r
+    000069F9 66                     191        LD      H,(HL)\r
+    000069FA 68                     192        LD      L,B\r
+    000069FB 01 01 01               193        LD      BC,257\r
+    000069FE A7                     194        AND     A\r
+    000069FF ED 42                  195        SBC     HL,BC\r
+    00006A01 C2 D3 6A               196        JP      NZ,?0009\r
+    00006A04                        197 ?0008:\r
+    00006A04 FD 6E 20               198        LD      L,(IY+32)\r
+    00006A07 FD 66 21               199        LD      H,(IY+33)\r
+    00006A0A 46                     200        LD      B,(HL)\r
+    00006A0B DD 70 EC               201        LD      (IX-20),B\r
+    00006A0E FD 6E 20               202        LD      L,(IY+32)\r
+    00006A11 FD 66 21               203        LD      H,(IY+33)\r
+    00006A14 23                     204        INC     HL\r
+    00006A15 46                     205        LD      B,(HL)\r
+    00006A16 DD 70 ED               206        LD      (IX-19),B\r
+    00006A19 DD 36 EE 00            207        LD      (IX-18),0\r
+    00006A1D FD 6E 20               208        LD      L,(IY+32)\r
+    00006A20 FD 66 21               209        LD      H,(IY+33)\r
+    00006A23 36 00                  210        LD      (HL),0\r
+    00006A25 21 0E 00               211        LD      HL,14\r
+    00006A28 39                     212        ADD     HL,SP\r
+    00006A29 EB                     213        EX      DE,HL\r
+    00006A2A 3E 00                  214        LD      A,BYTE3 atoi\r
+    00006A2C 21 39 75               215        LD      HL,LWRD atoi\r
+    00006A2F CD 5E 81               216        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    00006A32 EB                     217        EX      DE,HL\r
+    00006A33 3E 00                  218        LD      A,BYTE3 getpwuid\r
+    00006A35 21 EC 74               219        LD      HL,LWRD getpwuid\r
+    00006A38 CD 5E 81               220        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    00006A3B DD 75 E0               221        LD      (IX-32),L\r
+    00006A3E DD 74 E1               222        LD      (IX-31),H\r
+    00006A41 FD 4E 20               223        LD      C,(IY+32)\r
+    00006A44 FD 46 21               224        LD      B,(IY+33)\r
+    00006A47 03                     225        INC     BC\r
+    00006A48 03                     226        INC     BC\r
+    00006A49 DD 71 EA               227        LD      (IX-22),C\r
+    00006A4C DD 70 EB               228        LD      (IX-21),B\r
+    00006A4F 7D                     229        LD      A,L\r
+    00006A50 B4                     230        OR      H\r
+    00006A51 28 71                  231        JR      Z,?0013\r
+    00006A53                        232 ?0010:\r
+    00006A53 23                     233        INC     HL\r
+    00006A54 23                     234        INC     HL\r
+    00006A55 7E                     235        LD      A,(HL)\r
+    00006A56 23                     236        INC     HL\r
+    00006A57 66                     237        LD      H,(HL)\r
+    00006A58 6F                     238        LD      L,A\r
+    00006A59 46                     239        LD      B,(HL)\r
+    00006A5A DD 70 E2               240        LD      (IX-30),B\r
+    00006A5D DD 6E E0               241        LD      L,(IX-32)\r
+    00006A60 DD 66 E1               242        LD      H,(IX-31)\r
+    00006A63 23                     243        INC     HL\r
+    00006A64 23                     244        INC     HL\r
+    00006A65 46                     245        LD      B,(HL)\r
+    00006A66 23                     246        INC     HL\r
+    00006A67 66                     247        LD      H,(HL)\r
+    00006A68 68                     248        LD      L,B\r
+    00006A69 23                     249        INC     HL\r
+    00006A6A 46                     250        LD      B,(HL)\r
+    00006A6B DD 70 E3               251        LD      (IX-29),B\r
+    00006A6E DD 36 E4 00            252        LD      (IX-28),0\r
+    00006A72 21 04 00               253        LD      HL,4\r
+    00006A75 39                     254        ADD     HL,SP\r
+    00006A76 4D                     255        LD      C,L\r
+    00006A77 44                     256        LD      B,H\r
+    00006A78 DD 5E EA               257        LD      E,(IX-22)\r
+    00006A7B DD 56 EB               258        LD      D,(IX-21)\r
+    00006A7E 3E 01                  259        LD      A,BYTE3 crypt\r
+    00006A80 21 00 40               260        LD      HL,LWRD crypt\r
+    00006A83 CD 5E 81               261        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    00006A86 DD 75 E8               262        LD      (IX-24),L\r
+    00006A89 DD 74 E9               263        LD      (IX-23),H\r
+    00006A8C DD 4E E0               264        LD      C,(IX-32)\r
+    00006A8F DD 46 E1               265        LD      B,(IX-31)\r
+    00006A92 03                     266        INC     BC\r
+    00006A93 03                     267        INC     BC\r
+    00006A94 69                     268        LD      L,C\r
+    00006A95 60                     269        LD      H,B\r
+    00006A96 4E                     270        LD      C,(HL)\r
+    00006A97 23                     271        INC     HL\r
+    00006A98 46                     272        LD      B,(HL)\r
+    00006A99 DD 5E E8               273        LD      E,(IX-24)\r
+    00006A9C DD 56 E9               274        LD      D,(IX-23)\r
+    00006A9F 3E 00                  275        LD      A,BYTE3 strcmp\r
+    00006AA1 21 77 72               276        LD      HL,LWRD strcmp\r
+    00006AA4 CD 5E 81               277        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    00006AA7 7D                     278        LD      A,L\r
+    00006AA8 B4                     279        OR      H\r
+    00006AA9 20 19                  280        JR      NZ,?0013\r
+    00006AAB                        281 ?0012:\r
+    00006AAB 3E 00                  282        LD      A,BYTE3 ClearScreen\r
+    00006AAD 21 86 48               283        LD      HL,LWRD ClearScreen\r
+    00006AB0 CD 5E 81               284        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    00006AB3 01 00 00               285        LD      BC,0\r
+    00006AB6 DD 5E E0               286        LD      E,(IX-32)\r
+    00006AB9 DD 56 E1               287        LD      D,(IX-31)\r
+    00006ABC 3E 00                  288        LD      A,BYTE3 login\r
+    00006ABE 21 C7 68               289        LD      HL,LWRD login\r
+    00006AC1 CD 5E 81               290        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    00006AC4                        291 ?0013:\r
+    00006AC4                        292 ?0011:\r
+    00006AC4 FD E5                  293        PUSH    IY\r
+    00006AC6 D1                     294        POP     DE\r
+    00006AC7 FD 7E 1C               295        LD      A,(IY+28)\r
+    00006ACA FD 6E 1A               296        LD      L,(IY+26)\r
+    00006ACD FD 66 1B               297        LD      H,(IY+27)\r
+    00006AD0 CD 5E 81               298        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    00006AD3                        299 ?0009:\r
+    00006AD3 FD E1                  300        POP     IY\r
+    00006AD5 C3 1F 81               301        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
+    00006AD8                        302 main:\r
+    00006AD8 CD 52 81               303        CALL    LWRD ?ENT_PARM_DIRECT_L09\r
+    00006ADB 3E 00                  304        LD      A,BYTE3 GUIinit\r
+    00006ADD 21 BA 66               305        LD      HL,LWRD GUIinit\r
+    00006AE0 CD 5E 81               306        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    00006AE3 3E 00                  307        LD      A,BYTE3 gui_globals\r
+    00006AE5 21 B4 66               308        LD      HL,LWRD gui_globals\r
+    00006AE8 CD 5E 81               309        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    00006AEB 01 10 00               310        LD      BC,16\r
+    00006AEE 09                     311        ADD     HL,BC\r
+    00006AEF 36 D6                  312        LD      (HL),LOW(login_actionhandler)\r
+    00006AF1 23                     313        INC     HL\r
+    00006AF2 36 69                  314        LD      (HL),HIGH(login_actionhandler)\r
+    00006AF4 23                     315        INC     HL\r
+    00006AF5 36 00                  316        LD      (HL),BYTE3 login_actionhandler\r
+    00006AF7 11 F0 84               317        LD      DE,?0014\r
+    00006AFA 3E 00                  318        LD      A,BYTE3 GUIgo\r
+    00006AFC 21 06 68               319        LD      HL,LWRD GUIgo\r
+    00006AFF CD 5E 81               320        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    00006B02 3E 00                  321        LD      A,BYTE3 GUIunit\r
+    00006B04 21 E1 67               322        LD      HL,LWRD GUIunit\r
+    00006B07 CD 5E 81               323        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    00006B0A C3 1F 81               324        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
+                                    325        RSEG    CSTR\r
+    000084DE                        326 ?0002:\r
+    000084DE 2F 62 69 6E 2F 73 68   327        DEFB    '/bin/sh'\r
+    000084E5 00                     328        DEFB    0\r
+    000084E6                        329 ?0006:\r
+    000084E6 48 4F 4D 45            330        DEFB    'HOME'\r
+    000084EA 00                     331        DEFB    0\r
+    000084EB                        332 ?0007:\r
+    000084EB 55 53 45 52            333        DEFB    'USER'\r
+    000084EF 00                     334        DEFB    0\r
+    000084F0                        335 ?0014:\r
+    000084F0 2F 77 6E 64 2F 6C 6F   336        DEFB    '/wnd/logn.scr'\r
              67 6E 2E 73 63 72\r
-    000084FD 00                     332        DEFB    0\r
-    00000020                        333        END\r
+    000084FD 00                     337        DEFB    0\r
+    00000020                        338        END\r
 \fASxxxx Assembler V03.11  (Zilog Z80 / Hitachi HD64180), page 1.\r
 Hexadecimal [32-Bits]\r
 \r
@@ -342,28 +347,28 @@ Symbol Table
   1 ?0003               0000003F R   |   1 ?0004               00000043 R\r
   1 ?0005               0000004C R   |   2 ?0006               00000008 R\r
   2 ?0007               0000000D R   |   1 ?0008               0000013D R\r
-  1 ?0009               00000203 R   |   1 ?0010               00000183 R\r
-  1 ?0011               000001F4 R   |   1 ?0012               000001DB R\r
-  1 ?0013               000001F4 R   |   2 ?0014               00000012 R\r
+  1 ?0009               0000020C R   |   1 ?0010               0000018C R\r
+  1 ?0011               000001FD R   |   1 ?0012               000001E4 R\r
+  1 ?0013               000001FD R   |   2 ?0014               00000012 R\r
     ?BANK_CALL_DIR      ******** GX  |     ?BANK_FAST_LEA      ******** GX\r
     ?BANK_LEAVE_DI      ******** GX  |     ?CL64180B_4_06      ******** GX\r
     ?ENT_AUTO_DIRE      ******** GX  |     ?ENT_PARM_DIRE      ******** GX\r
     ClearScreen         ******** GX  |     GUIgo               ******** GX\r
     GUIinit             ******** GX  |     GUIunit             ******** GX\r
-    chdir               ******** GX  |     crypt               ******** GX\r
-    execv               ******** GX  |     exit                ******** GX\r
-    getpwnam            ******** GX  |     gui_globals         ******** GX\r
-  1 login               00000000 GR  |   1 login_actionha      0000010F GR\r
-  1 main                00000208 GR  |     perror              ******** GX\r
-    setenv              ******** GX  |     setgid              ******** GX\r
-    setuid              ******** GX  |     strcmp              ******** GX\r
-    strcpy              ******** GX  |     strrchr             ******** GX\r
-\r
+    atoi                ******** GX  |     chdir               ******** GX\r
+    crypt               ******** GX  |     execv               ******** GX\r
+    exit                ******** GX  |     getpwuid            ******** GX\r
+    gui_globals         ******** GX  |   1 login               00000000 GR\r
+  1 login_actionha      0000010F GR  |   1 main                00000211 GR\r
+    perror              ******** GX  |     setenv              ******** GX\r
+    setgid              ******** GX  |     setuid              ******** GX\r
+    strcmp              ******** GX  |     strcpy              ******** GX\r
+    strrchr             ******** GX\r
 \fASxxxx Assembler V03.11  (Zilog Z80 / Hitachi HD64180), page 2.\r
 Hexadecimal [32-Bits]\r
 \r
 Area Table\r
 \r
    0 _DEFAULT         size        0   flags   0\r
-   1 CODE             size      23D   flags   0\r
+   1 CODE             size      246   flags   0\r
    2 CSTR             size       20   flags   0\r
index c8061db..90e53fb 100644 (file)
@@ -5,11 +5,12 @@
        EXTERN  GUIgo\r
        EXTERN  GUIinit\r
        EXTERN  GUIunit\r
+       EXTERN  atoi\r
        EXTERN  chdir\r
        EXTERN  crypt\r
        EXTERN  execv\r
        EXTERN  exit\r
-       EXTERN  getpwnam\r
+       EXTERN  getpwuid\r
        EXTERN  gui_globals\r
        PUBLIC  login\r
        PUBLIC  login_actionhandler\r
@@ -210,8 +211,12 @@ login_actionhandler:
        LD      HL,14\r
        ADD     HL,SP\r
        EX      DE,HL\r
-       LD      A,BYTE3 getpwnam\r
-       LD      HL,LWRD getpwnam\r
+       LD      A,BYTE3 atoi\r
+       LD      HL,LWRD atoi\r
+       CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+       EX      DE,HL\r
+       LD      A,BYTE3 getpwuid\r
+       LD      HL,LWRD getpwuid\r
        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
        LD      (IX-32),L\r
        LD      (IX-31),H\r
index f0537c0..9d43b4e 100644 (file)
                                      91        EXTERN  ?ENT_PARM_DIRECT_L09\r
                                      92        EXTERN  ?ENT_AUTO_DIRECT_L09\r
                                      93        RSEG    CODE\r
-    00004648                         94 GraphicsOpen:\r
-    00004648 CD 7A 82                95        CALL    LWRD ?ENT_AUTO_DIRECT_L09\r
-    0000464B F8 FF                   96        DEFW    65528\r
-    0000464D 21 06 00                97        LD      HL,6\r
-    00004650 39                      98        ADD     HL,SP\r
-    00004651 EB                      99        EX      DE,HL\r
-    00004652 21 AF 84               100        LD      HL,?0000\r
-    00004655 01 02 00               101        LD      BC,2\r
-    00004658 ED B0                  102        LDIR\r
-    0000465A 2A 3F 87               103        LD      HL,(global)\r
-    0000465D 23                     104        INC     HL\r
-    0000465E 23                     105        INC     HL\r
-    0000465F E5                     106        PUSH    HL\r
-    00004660 03                     107        INC     BC\r
-    00004661 03                     108        INC     BC\r
-    00004662 C5                     109        PUSH    BC\r
-    00004663 01 E3 84               110        LD      BC,?0001\r
-    00004666 C5                     111        PUSH    BC\r
-    00004667 3E 00                  112        LD      A,BYTE3 open\r
-    00004669 21 CD 7E               113        LD      HL,LWRD open\r
-    0000466C CD FB 81               114        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    0000466F F1                     115        POP     AF\r
-    00004670 F1                     116        POP     AF\r
-    00004671 4D                     117        LD      C,L\r
-    00004672 44                     118        LD      B,H\r
-    00004673 E1                     119        POP     HL\r
-    00004674 71                     120        LD      (HL),C\r
-    00004675 23                     121        INC     HL\r
-    00004676 70                     122        LD      (HL),B\r
-    00004677 21 00 00               123        LD      HL,0\r
-    0000467A 39                     124        ADD     HL,SP\r
-    0000467B E5                     125        PUSH    HL\r
-    0000467C 21 00 00               126        LD      HL,0\r
-    0000467F E5                     127        PUSH    HL\r
-    00004680 2A 3F 87               128        LD      HL,(global)\r
-    00004683 23                     129        INC     HL\r
-    00004684 23                     130        INC     HL\r
-    00004685 4E                     131        LD      C,(HL)\r
-    00004686 23                     132        INC     HL\r
-    00004687 46                     133        LD      B,(HL)\r
-    00004688 C5                     134        PUSH    BC\r
-    00004689 3E 00                  135        LD      A,BYTE3 ioctl\r
-    0000468B 21 E2 73               136        LD      HL,LWRD ioctl\r
-    0000468E CD FB 81               137        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    00004691 F1                     138        POP     AF\r
-    00004692 F1                     139        POP     AF\r
-    00004693 F1                     140        POP     AF\r
-    00004694 DD 36 FC 60            141        LD      (IX-4),96\r
-    00004698 DD 36 FD 00            142        LD      (IX-3),0\r
-    0000469C 21 00 00               143        LD      HL,0\r
-    0000469F 39                     144        ADD     HL,SP\r
-    000046A0 E5                     145        PUSH    HL\r
-    000046A1 21 01 00               146        LD      HL,1\r
-    000046A4 E5                     147        PUSH    HL\r
-    000046A5 2A 3F 87               148        LD      HL,(global)\r
-    000046A8 23                     149        INC     HL\r
-    000046A9 23                     150        INC     HL\r
-    000046AA 4E                     151        LD      C,(HL)\r
-    000046AB 23                     152        INC     HL\r
-    000046AC 46                     153        LD      B,(HL)\r
-    000046AD C5                     154        PUSH    BC\r
-    000046AE 3E 00                  155        LD      A,BYTE3 ioctl\r
-    000046B0 21 E2 73               156        LD      HL,LWRD ioctl\r
-    000046B3 CD FB 81               157        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    000046B6 F1                     158        POP     AF\r
-    000046B7 F1                     159        POP     AF\r
-    000046B8 F1                     160        POP     AF\r
-    000046B9 21 02 00               161        LD      HL,2\r
-    000046BC E5                     162        PUSH    HL\r
-    000046BD 2E 08                  163        LD      L,8\r
-    000046BF                        164 ?0372:\r
-    000046BF 39                     165        ADD     HL,SP\r
-    000046C0 4D                     166        LD      C,L\r
-    000046C1                        167 ?0427:\r
-    000046C1 44                     168        LD      B,H\r
-    000046C2 2A 3F 87               169        LD      HL,(global)\r
-    000046C5                        170 ?0428:\r
-    000046C5 23                     171        INC     HL\r
-    000046C6 23                     172        INC     HL\r
-    000046C7                        173 ?0429:\r
-    000046C7 5E                     174        LD      E,(HL)\r
-    000046C8 23                     175        INC     HL\r
-    000046C9                        176 ?0430:\r
-    000046C9 56                     177        LD      D,(HL)\r
-    000046CA 3E 00                  178        LD      A,BYTE3 _write\r
-    000046CC                        179 ?0431:\r
-    000046CC 21 72 72               180        LD      HL,LWRD _write\r
-    000046CF CD FB 81               181        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    000046D2 F1                     182        POP     AF\r
-    000046D3 C3 A3 81               183        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
-    000046D6                        184 GraphicsClose:\r
-    000046D6 D5                     185        PUSH    DE\r
-    000046D7 2A 3F 87               186        LD      HL,(global)\r
-    000046DA 23                     187        INC     HL\r
-    000046DB 23                     188        INC     HL\r
-    000046DC 5E                     189        LD      E,(HL)\r
-    000046DD 23                     190        INC     HL\r
-    000046DE 56                     191        LD      D,(HL)\r
-    000046DF 3E 00                  192        LD      A,BYTE3 close\r
-    000046E1 21 96 73               193        LD      HL,LWRD close\r
-    000046E4 CD FB 81               194        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    000046E7 D1                     195        POP     DE\r
-    000046E8 C3 A9 81               196        JP      LWRD ?BANK_FAST_LEAVE_L08\r
-    000046EB                        197 Move:\r
-    000046EB CD 7A 82               198        CALL    LWRD ?ENT_AUTO_DIRECT_L09\r
-    000046EE FC FF                  199        DEFW    65532\r
-    000046F0 21 00 00               200        LD      HL,0\r
-    000046F3 39                     201        ADD     HL,SP\r
-    000046F4 EB                     202        EX      DE,HL\r
-    000046F5 21 B1 84               203        LD      HL,?0002\r
-    000046F8 01 04 00               204        LD      BC,4\r
-    000046FB ED B0                  205        LDIR\r
-    000046FD DD 46 02               206        LD      B,(IX+2)\r
-    00004700 DD 70 FE               207        LD      (IX-2),B\r
-    00004703 DD 46 04               208        LD      B,(IX+4)\r
-    00004706 DD 70 FF               209        LD      (IX-1),B\r
-    00004709 21 04 00               210        LD      HL,4\r
-    0000470C E5                     211        PUSH    HL\r
-    0000470D 2B                     212        DEC     HL\r
-    0000470E 2B                     213        DEC     HL\r
-    0000470F C3 BF 46               214        JP      LWRD ?0372\r
-    00004712 4D                     215        LD      C,L\r
-    00004713                        216 ?0381:\r
-    00004713 C3 C1 46               217        JP      LWRD ?0427\r
-    00004716 2A 3F 87               218        LD      HL,(global)\r
-    00004719 23                     219        INC     HL\r
-    0000471A 23                     220        INC     HL\r
-    0000471B                        221 ?0432:\r
-    0000471B 5E                     222        LD      E,(HL)\r
-    0000471C 23                     223        INC     HL\r
-    0000471D                        224 ?0433:\r
-    0000471D 56                     225        LD      D,(HL)\r
-    0000471E 3E 00                  226        LD      A,BYTE3 _write\r
-    00004720                        227 ?0434:\r
-    00004720 C3 CC 46               228        JP      LWRD ?0431\r
-    00004723 CD FB 81               229        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    00004726 F1                     230        POP     AF\r
-    00004727 C3 A3 81               231        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
-    0000472A                        232 ClearRect:\r
-    0000472A CD 7A 82               233        CALL    LWRD ?ENT_AUTO_DIRECT_L09\r
-    0000472D FC FF                  234        DEFW    65532\r
-    0000472F 21 00 00               235        LD      HL,0\r
-    00004732 39                     236        ADD     HL,SP\r
-    00004733 EB                     237        EX      DE,HL\r
-    00004734 21 B5 84               238        LD      HL,?0003\r
-    00004737 01 04 00               239        LD      BC,4\r
-    0000473A ED B0                  240        LDIR\r
-    0000473C DD 46 02               241        LD      B,(IX+2)\r
-    0000473F DD 70 FE               242        LD      (IX-2),B\r
-    00004742 DD 46 04               243        LD      B,(IX+4)\r
-    00004745 DD 70 FF               244        LD      (IX-1),B\r
-    00004748 21 04 00               245        LD      HL,4\r
-    0000474B E5                     246        PUSH    HL\r
-    0000474C 2B                     247        DEC     HL\r
-    0000474D 2B                     248        DEC     HL\r
-    0000474E C3 BF 46               249        JP      LWRD ?0372\r
-    00004751 4D                     250        LD      C,L\r
-    00004752 C3 13 47               251        JP      LWRD ?0381\r
-    00004755 2A 3F 87               252        LD      HL,(global)\r
-    00004758                        253 ?0389:\r
-    00004758 C3 C5 46               254        JP      LWRD ?0428\r
-    0000475B 23                     255        INC     HL\r
-    0000475C C3 1B 47               256        JP      LWRD ?0432\r
-    0000475F 23                     257        INC     HL\r
-    00004760 56                     258        LD      D,(HL)\r
-    00004761 3E 00                  259        LD      A,BYTE3 _write\r
-    00004763                        260 ?0435:\r
-    00004763 C3 CC 46               261        JP      LWRD ?0431\r
-    00004766 CD FB 81               262        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    00004769 F1                     263        POP     AF\r
-    0000476A C3 A3 81               264        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
-    0000476D                        265 DrawRectNC:\r
-    0000476D CD 7A 82               266        CALL    LWRD ?ENT_AUTO_DIRECT_L09\r
-    00004770 FC FF                  267        DEFW    65532\r
-    00004772 21 00 00               268        LD      HL,0\r
-    00004775 39                     269        ADD     HL,SP\r
-    00004776 EB                     270        EX      DE,HL\r
-    00004777 21 B9 84               271        LD      HL,?0004\r
-    0000477A 01 04 00               272        LD      BC,4\r
-    0000477D ED B0                  273        LDIR\r
-    0000477F DD 46 02               274        LD      B,(IX+2)\r
-    00004782 DD 70 FE               275        LD      (IX-2),B\r
-    00004785 DD 46 04               276        LD      B,(IX+4)\r
-    00004788 DD 70 FF               277        LD      (IX-1),B\r
-    0000478B 21 04 00               278        LD      HL,4\r
-    0000478E E5                     279        PUSH    HL\r
-    0000478F 2B                     280        DEC     HL\r
-    00004790 2B                     281        DEC     HL\r
-    00004791 C3 BF 46               282        JP      LWRD ?0372\r
-    00004794 4D                     283        LD      C,L\r
-    00004795 C3 13 47               284        JP      LWRD ?0381\r
-    00004798 2A 3F 87               285        LD      HL,(global)\r
-    0000479B C3 58 47               286        JP      LWRD ?0389\r
-    0000479E 23                     287        INC     HL\r
-    0000479F                        288 ?0396:\r
-    0000479F C3 C7 46               289        JP      LWRD ?0429\r
-    000047A2 23                     290        INC     HL\r
-    000047A3 C3 1D 47               291        JP      LWRD ?0433\r
-    000047A6 3E 00                  292        LD      A,BYTE3 _write\r
-    000047A8 C3 63 47               293        JP      LWRD ?0435\r
-    000047AB CD FB 81               294        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    000047AE F1                     295        POP     AF\r
-    000047AF C3 A3 81               296        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
-    000047B2                        297 FillRect:\r
-    000047B2 CD 7A 82               298        CALL    LWRD ?ENT_AUTO_DIRECT_L09\r
-    000047B5 FC FF                  299        DEFW    65532\r
-    000047B7 21 00 00               300        LD      HL,0\r
-    000047BA 39                     301        ADD     HL,SP\r
-    000047BB EB                     302        EX      DE,HL\r
-    000047BC 21 BD 84               303        LD      HL,?0005\r
-    000047BF 01 04 00               304        LD      BC,4\r
-    000047C2 ED B0                  305        LDIR\r
-    000047C4 DD 46 02               306        LD      B,(IX+2)\r
-    000047C7 DD 70 FE               307        LD      (IX-2),B\r
-    000047CA DD 46 04               308        LD      B,(IX+4)\r
-    000047CD DD 70 FF               309        LD      (IX-1),B\r
-    000047D0 21 04 00               310        LD      HL,4\r
-    000047D3 E5                     311        PUSH    HL\r
-    000047D4 2B                     312        DEC     HL\r
-    000047D5 2B                     313        DEC     HL\r
-    000047D6 C3 BF 46               314        JP      LWRD ?0372\r
-    000047D9 4D                     315        LD      C,L\r
-    000047DA C3 13 47               316        JP      LWRD ?0381\r
-    000047DD 2A 3F 87               317        LD      HL,(global)\r
-    000047E0 C3 58 47               318        JP      LWRD ?0389\r
-    000047E3 23                     319        INC     HL\r
-    000047E4 C3 9F 47               320        JP      LWRD ?0396\r
-    000047E7 23                     321        INC     HL\r
-    000047E8                        322 ?0402:\r
-    000047E8 C3 C9 46               323        JP      LWRD ?0430\r
-    000047EB 3E 00                  324        LD      A,BYTE3 _write\r
-    000047ED C3 20 47               325        JP      LWRD ?0434\r
-    000047F0 CD FB 81               326        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    000047F3 F1                     327        POP     AF\r
-    000047F4 C3 A3 81               328        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
-    000047F7                        329 FillRectNC:\r
-    000047F7 CD 7A 82               330        CALL    LWRD ?ENT_AUTO_DIRECT_L09\r
-    000047FA FC FF                  331        DEFW    65532\r
-    000047FC 21 00 00               332        LD      HL,0\r
-    000047FF 39                     333        ADD     HL,SP\r
-    00004800 EB                     334        EX      DE,HL\r
-    00004801 21 C1 84               335        LD      HL,?0006\r
-    00004804 01 04 00               336        LD      BC,4\r
-    00004807 ED B0                  337        LDIR\r
-    00004809 DD 46 02               338        LD      B,(IX+2)\r
-    0000480C DD 70 FE               339        LD      (IX-2),B\r
-    0000480F DD 46 04               340        LD      B,(IX+4)\r
-    00004812 DD 70 FF               341        LD      (IX-1),B\r
-    00004815 21 04 00               342        LD      HL,4\r
-    00004818 E5                     343        PUSH    HL\r
-    00004819 2B                     344        DEC     HL\r
-    0000481A 2B                     345        DEC     HL\r
-    0000481B C3 BF 46               346        JP      LWRD ?0372\r
-    0000481E 4D                     347        LD      C,L\r
-    0000481F C3 13 47               348        JP      LWRD ?0381\r
-    00004822 2A 3F 87               349        LD      HL,(global)\r
-    00004825 C3 58 47               350        JP      LWRD ?0389\r
-    00004828 23                     351        INC     HL\r
-    00004829 C3 9F 47               352        JP      LWRD ?0396\r
-    0000482C 23                     353        INC     HL\r
-    0000482D C3 E8 47               354        JP      LWRD ?0402\r
-    00004830 3E 00                  355        LD      A,BYTE3 _write\r
-    00004832                        356 ?0407:\r
-    00004832 C3 CC 46               357        JP      LWRD ?0431\r
-    00004835 CD FB 81               358        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    00004838 F1                     359        POP     AF\r
-    00004839 C3 A3 81               360        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
-    0000483C                        361 GrayRect:\r
-    0000483C CD 7A 82               362        CALL    LWRD ?ENT_AUTO_DIRECT_L09\r
-    0000483F FC FF                  363        DEFW    65532\r
-    00004841 21 00 00               364        LD      HL,0\r
-    00004844 39                     365        ADD     HL,SP\r
-    00004845 EB                     366        EX      DE,HL\r
-    00004846 21 C5 84               367        LD      HL,?0007\r
-    00004849 01 04 00               368        LD      BC,4\r
-    0000484C ED B0                  369        LDIR\r
-    0000484E DD 46 02               370        LD      B,(IX+2)\r
-    00004851 DD 70 FE               371        LD      (IX-2),B\r
-    00004854 DD 46 04               372        LD      B,(IX+4)\r
-    00004857 DD 70 FF               373        LD      (IX-1),B\r
-    0000485A 21 04 00               374        LD      HL,4\r
-    0000485D E5                     375        PUSH    HL\r
-    0000485E 2B                     376        DEC     HL\r
-    0000485F 2B                     377        DEC     HL\r
-    00004860 C3 BF 46               378        JP      LWRD ?0372\r
-    00004863 4D                     379        LD      C,L\r
-    00004864 C3 13 47               380        JP      LWRD ?0381\r
-    00004867 2A 3F 87               381        LD      HL,(global)\r
-    0000486A C3 58 47               382        JP      LWRD ?0389\r
-    0000486D 23                     383        INC     HL\r
-    0000486E C3 9F 47               384        JP      LWRD ?0396\r
-    00004871 23                     385        INC     HL\r
-    00004872 C3 E8 47               386        JP      LWRD ?0402\r
-    00004875 3E 00                  387        LD      A,BYTE3 _write\r
-    00004877 C3 32 48               388        JP      LWRD ?0407\r
-    0000487A CD FB 81               389        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    0000487D F1                     390        POP     AF\r
-    0000487E C3 A3 81               391        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
-    00004881                        392 Text:\r
-    00004881 C5                     393        PUSH    BC\r
-    00004882 FD E5                  394        PUSH    IY\r
-    00004884 DD E5                  395        PUSH    IX\r
-    00004886 D5                     396        PUSH    DE\r
-    00004887 DD E1                  397        POP     IX\r
-    00004889 3E 00                  398        LD      A,BYTE3 strlen\r
-    0000488B 21 AB 73               399        LD      HL,LWRD strlen\r
-    0000488E CD FB 81               400        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    00004891 E5                     401        PUSH    HL\r
-    00004892 DD E5                  402        PUSH    IX\r
-    00004894 C1                     403        POP     BC\r
-    00004895 2A 3F 87               404        LD      HL,(global)\r
-    00004898 23                     405        INC     HL\r
-    00004899 23                     406        INC     HL\r
-    0000489A 5E                     407        LD      E,(HL)\r
-    0000489B 23                     408        INC     HL\r
-    0000489C 56                     409        LD      D,(HL)\r
-    0000489D 3E 00                  410        LD      A,BYTE3 _write\r
-    0000489F 21 72 72               411        LD      HL,LWRD _write\r
-    000048A2 CD FB 81               412        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    000048A5 F1                     413        POP     AF\r
-    000048A6                        414 ?0411:\r
-    000048A6 DD E1                  415        POP     IX\r
-    000048A8 FD E1                  416        POP     IY\r
-    000048AA C1                     417        POP     BC\r
-    000048AB C3 A9 81               418        JP      LWRD ?BANK_FAST_LEAVE_L08\r
-    000048AE                        419 TouchRegion:\r
-    000048AE CD 7A 82               420        CALL    LWRD ?ENT_AUTO_DIRECT_L09\r
-    000048B1 F8 FF                  421        DEFW    65528\r
-    000048B3 21 00 00               422        LD      HL,0\r
-    000048B6 39                     423        ADD     HL,SP\r
-    000048B7 EB                     424        EX      DE,HL\r
-    000048B8 21 C9 84               425        LD      HL,?0008\r
-    000048BB 01 07 00               426        LD      BC,7\r
-    000048BE ED B0                  427        LDIR\r
-    000048C0 DD 46 02               428        LD      B,(IX+2)\r
-    000048C3 DD 70 FA               429        LD      (IX-6),B\r
-    000048C6 DD 46 04               430        LD      B,(IX+4)\r
-    000048C9 DD 70 FB               431        LD      (IX-5),B\r
-    000048CC DD 46 0A               432        LD      B,(IX+10)\r
-    000048CF DD 70 FC               433        LD      (IX-4),B\r
-    000048D2 DD 46 0C               434        LD      B,(IX+12)\r
-    000048D5 DD 70 FD               435        LD      (IX-3),B\r
-    000048D8 DD 46 0E               436        LD      B,(IX+14)\r
-    000048DB DD 70 FE               437        LD      (IX-2),B\r
-    000048DE 21 07 00               438        LD      HL,7\r
-    000048E1 E5                     439        PUSH    HL\r
-    000048E2 2E 02                  440        LD      L,2\r
-    000048E4 C3 BF 46               441        JP      LWRD ?0372\r
-    000048E7 4D                     442        LD      C,L\r
-    000048E8 C3 13 47               443        JP      LWRD ?0381\r
-    000048EB 2A 3F 87               444        LD      HL,(global)\r
-    000048EE C3 58 47               445        JP      LWRD ?0389\r
-    000048F1 23                     446        INC     HL\r
-    000048F2 C3 9F 47               447        JP      LWRD ?0396\r
-    000048F5 23                     448        INC     HL\r
-    000048F6 C3 E8 47               449        JP      LWRD ?0402\r
-    000048F9 3E 00                  450        LD      A,BYTE3 _write\r
-    000048FB C3 32 48               451        JP      LWRD ?0407\r
-    000048FE CD FB 81               452        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    00004901 F1                     453        POP     AF\r
-    00004902 C3 A3 81               454        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
-    00004905                        455 ClearScreen:\r
-    00004905 C5                     456        PUSH    BC\r
-    00004906 D5                     457        PUSH    DE\r
-    00004907 CD 1F 49               458        CALL    LWRD ?0461\r
-    0000490A CD FB 81               459        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    0000490D 21 80 00               460        LD      HL,128\r
-    00004910 E5                     461        PUSH    HL\r
-    00004911 6C                     462        LD      L,H\r
-    00004912 E5                     463        PUSH    HL\r
-    00004913 E5                     464        PUSH    HL\r
-    00004914 CD 37 49               465        CALL    LWRD ?0470\r
-    00004917 E1                     466        POP     HL\r
-    00004918 E1                     467        POP     HL\r
-    00004919 E1                     468        POP     HL\r
-    0000491A D1                     469        POP     DE\r
-    0000491B C1                     470        POP     BC\r
-    0000491C C3 A9 81               471        JP      LWRD ?BANK_FAST_LEAVE_L08\r
-    0000491F                        472 ?0461:\r
-    0000491F 01 00 00               473        LD      BC,0\r
-    00004922 59                     474        LD      E,C\r
-    00004923 50                     475        LD      D,B\r
-    00004924 3E 00                  476        LD      A,BYTE3 Move\r
-    00004926 21 EB 46               477        LD      HL,LWRD Move\r
-    00004929 CD FB 81               478        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    0000492C 01 80 00               479        LD      BC,128\r
-    0000492F 58                     480        LD      E,B\r
-    00004930 50                     481        LD      D,B\r
-    00004931 3E 00                  482        LD      A,BYTE3 ClearRect\r
-    00004933 21 2A 47               483        LD      HL,LWRD ClearRect\r
-    00004936 C9                     484        RET\r
-    00004937                        485 ?0470:\r
-    00004937 4D                     486        LD      C,L\r
-    00004938 44                     487        LD      B,H\r
-    00004939 EB                     488        EX      DE,HL\r
-    0000493A                        489 ?0471:\r
-    0000493A 3E 00                  490        LD      A,BYTE3 TouchRegion\r
-    0000493C 21 AE 48               491        LD      HL,LWRD TouchRegion\r
-    0000493F C3 FB 81               492        JP      LWRD ?BANK_CALL_DIRECT_L08\r
-    00004942                        493 EnableScreen:\r
-    00004942 CD 7A 82               494        CALL    LWRD ?ENT_AUTO_DIRECT_L09\r
-    00004945 FC FF                  495        DEFW    65532\r
-    00004947 21 00 00               496        LD      HL,0\r
-    0000494A 39                     497        ADD     HL,SP\r
-    0000494B EB                     498        EX      DE,HL\r
-    0000494C 21 D0 84               499        LD      HL,?0009\r
-    0000494F 01 03 00               500        LD      BC,3\r
-    00004952 ED B0                  501        LDIR\r
-    00004954 DD 46 02               502        LD      B,(IX+2)\r
-    00004957 DD 70 FE               503        LD      (IX-2),B\r
-    0000495A 21 03 00               504        LD      HL,3\r
-    0000495D E5                     505        PUSH    HL\r
-    0000495E 2B                     506        DEC     HL\r
-    0000495F C3 BF 46               507        JP      LWRD ?0372\r
-    00004962 4D                     508        LD      C,L\r
-    00004963 C3 13 47               509        JP      LWRD ?0381\r
-    00004966 2A 3F 87               510        LD      HL,(global)\r
-    00004969 C3 58 47               511        JP      LWRD ?0389\r
-    0000496C 23                     512        INC     HL\r
-    0000496D C3 9F 47               513        JP      LWRD ?0396\r
-    00004970 23                     514        INC     HL\r
-    00004971 C3 E8 47               515        JP      LWRD ?0402\r
-    00004974 3E 00                  516        LD      A,BYTE3 _write\r
-    00004976 C3 32 48               517        JP      LWRD ?0407\r
-    00004979 CD FB 81               518        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    0000497C F1                     519        POP     AF\r
-    0000497D C3 A3 81               520        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
-    00004980                        521 grSetFont:\r
-    00004980 CD 7A 82               522        CALL    LWRD ?ENT_AUTO_DIRECT_L09\r
-    00004983 FE FF                  523        DEFW    65534\r
-    00004985 21 00 00               524        LD      HL,0\r
-    00004988 39                     525        ADD     HL,SP\r
-    00004989 EB                     526        EX      DE,HL\r
-    0000498A 21 D3 84               527        LD      HL,?0010\r
-    0000498D 01 02 00               528        LD      BC,2\r
-    00004990 ED B0                  529        LDIR\r
-    00004992 DD 46 02               530        LD      B,(IX+2)\r
-    00004995 DD 70 FF               531        LD      (IX-1),B\r
-    00004998 21 02 00               532        LD      HL,2\r
-    0000499B E5                     533        PUSH    HL\r
-    0000499C C3 BF 46               534        JP      LWRD ?0372\r
-    0000499F 4D                     535        LD      C,L\r
-    000049A0 C3 13 47               536        JP      LWRD ?0381\r
-    000049A3 2A 3F 87               537        LD      HL,(global)\r
-    000049A6 C3 58 47               538        JP      LWRD ?0389\r
-    000049A9 23                     539        INC     HL\r
-    000049AA C3 9F 47               540        JP      LWRD ?0396\r
-    000049AD 23                     541        INC     HL\r
-    000049AE C3 E8 47               542        JP      LWRD ?0402\r
-    000049B1 3E 00                  543        LD      A,BYTE3 _write\r
-    000049B3 C3 32 48               544        JP      LWRD ?0407\r
-    000049B6 CD FB 81               545        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    000049B9 F1                     546        POP     AF\r
-    000049BA C3 A3 81               547        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
-    000049BD                        548 fontSearch:\r
-    000049BD CD 7A 82               549        CALL    LWRD ?ENT_AUTO_DIRECT_L09\r
-    000049C0 00 00                  550        DEFW    0\r
-    000049C2 21 0C 00               551        LD      HL,12\r
-    000049C5 ED 4B 3F 87            552        LD      BC,(global)\r
-    000049C9 09                     553        ADD     HL,BC\r
-    000049CA                        554 ?0321:\r
-    000049CA 46                     555        LD      B,(HL)\r
-    000049CB 23                     556        INC     HL\r
-    000049CC 66                     557        LD      H,(HL)\r
-    000049CD 68                     558        LD      L,B\r
-    000049CE EB                     559        EX      DE,HL\r
-    000049CF                        560 ?0012:\r
-    000049CF 7B                     561        LD      A,E\r
-    000049D0 B2                     562        OR      D\r
-    000049D1 28 16                  563        JR      Z,?0011\r
-    000049D3 6B                     564        LD      L,E\r
-    000049D4 62                     565        LD      H,D\r
-    000049D5 46                     566        LD      B,(HL)\r
-    000049D6 23                     567        INC     HL\r
-    000049D7 66                     568        LD      H,(HL)\r
-    000049D8 68                     569        LD      L,B\r
-    000049D9 DD 4E 02               570        LD      C,(IX+2)\r
-    000049DC DD 46 03               571        LD      B,(IX+3)\r
-    000049DF ED 42                  572        SBC     HL,BC\r
-    000049E1 28 06                  573        JR      Z,?0011\r
-    000049E3                        574 ?0015:\r
-    000049E3                        575 ?0014:\r
-    000049E3                        576 ?0013:\r
-    000049E3 21 08 00               577        LD      HL,8\r
-    000049E6 19                     578        ADD     HL,DE\r
-    000049E7 18 E1                  579        JR      ?0321\r
-    000049E9                        580 ?0011:\r
-    000049E9 EB                     581        EX      DE,HL\r
-    000049EA C3 A3 81               582        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
-    000049ED                        583 setCurrentFont:\r
-    000049ED CD EF 81               584        CALL    LWRD ?ENT_PARM_DIRECT_L09\r
-    000049F0 3E 00                  585        LD      A,BYTE3 fontSearch\r
-    000049F2 21 BD 49               586        LD      HL,LWRD fontSearch\r
-    000049F5 CD 6A 4A               587        CALL    LWRD ?0448\r
-    000049F8 28 29                  588        JR      Z,?0017\r
-    000049FA                        589 ?0016:\r
-    000049FA DD 5E 02               590        LD      E,(IX+2)\r
-    000049FD DD 56 03               591        LD      D,(IX+3)\r
-    00004A00 3E 00                  592        LD      A,BYTE3 grSetFont\r
-    00004A02 21 80 49               593        LD      HL,LWRD grSetFont\r
-    00004A05 CD FB 81               594        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    00004A08 21 0A 00               595        LD      HL,10\r
-    00004A0B ED 4B 3F 87            596        LD      BC,(global)\r
-    00004A0F 09                     597        ADD     HL,BC\r
-    00004A10 E5                     598        PUSH    HL\r
-    00004A11 DD 5E 02               599        LD      E,(IX+2)\r
-    00004A14 DD 56 03               600        LD      D,(IX+3)\r
-    00004A17 3E 00                  601        LD      A,BYTE3 fontSearch\r
-    00004A19 21 BD 49               602        LD      HL,LWRD fontSearch\r
-    00004A1C CD 75 4A               603        CALL    LWRD ?0449\r
-    00004A1F E1                     604        POP     HL\r
-    00004A20 71                     605        LD      (HL),C\r
-    00004A21 23                     606        INC     HL\r
-    00004A22 70                     607        LD      (HL),B\r
-    00004A23                        608 ?0017:\r
-    00004A23 C3 A3 81               609        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
-    00004A26                        610 ?0443:\r
-    00004A26 ED 4B 3F 87            611        LD      BC,(global)\r
-    00004A2A 09                     612        ADD     HL,BC\r
-    00004A2B 46                     613        LD      B,(HL)\r
-    00004A2C 23                     614        INC     HL\r
-    00004A2D 66                     615        LD      H,(HL)\r
-    00004A2E 68                     616        LD      L,B\r
-    00004A2F                        617 ?0442:\r
-    00004A2F 23                     618        INC     HL\r
-    00004A30 23                     619        INC     HL\r
-    00004A31 4E                     620        LD      C,(HL)\r
-    00004A32 23                     621        INC     HL\r
-    00004A33 46                     622        LD      B,(HL)\r
-    00004A34 23                     623        INC     HL\r
-    00004A35 7E                     624        LD      A,(HL)\r
-    00004A36 69                     625        LD      L,C\r
-    00004A37 60                     626        LD      H,B\r
-    00004A38 CD FB 81               627        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    00004A3B 4D                     628        LD      C,L\r
-    00004A3C 44                     629        LD      B,H\r
-    00004A3D FD 6E 06               630        LD      L,(IY+6)\r
-    00004A40 FD 66 07               631        LD      H,(IY+7)\r
-    00004A43 A7                     632        AND     A\r
-    00004A44 ED 42                  633        SBC     HL,BC\r
-    00004A46 EB                     634        EX      DE,HL\r
-    00004A47 01 02 00               635        LD      BC,2\r
-    00004A4A CD EB 82               636        CALL    LWRD ?SS_DIV_L02\r
-    00004A4D DD 6E 04               637        LD      L,(IX+4)\r
-    00004A50 DD 66 05               638        LD      H,(IX+5)\r
-    00004A53 19                     639        ADD     HL,DE\r
-    00004A54 EB                     640        EX      DE,HL\r
-    00004A55 3E 00                  641        LD      A,BYTE3 Move\r
-    00004A57 21 EB 46               642        LD      HL,LWRD Move\r
-    00004A5A C9                     643        RET\r
-    00004A5B                        644 ?0444:\r
-    00004A5B CD FB 81               645        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    00004A5E 4D                     646        LD      C,L\r
-    00004A5F 44                     647        LD      B,H\r
-    00004A60 FD 6E 08               648        LD      L,(IY+8)\r
-    00004A63 FD 66 09               649        LD      H,(IY+9)\r
-    00004A66 A7                     650        AND     A\r
-    00004A67 ED 42                  651        SBC     HL,BC\r
-    00004A69 C9                     652        RET\r
-    00004A6A                        653 ?0448:\r
-    00004A6A CD FB 81               654        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    00004A6D 7D                     655        LD      A,L\r
-    00004A6E B4                     656        OR      H\r
-    00004A6F C9                     657        RET\r
-    00004A70                        658 ?0450:\r
-    00004A70 3E 01                  659        LD      A,BYTE3 malloc\r
-    00004A72 21 00 40               660        LD      HL,LWRD malloc\r
-    00004A75                        661 ?0449:\r
-    00004A75 CD FB 81               662        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    00004A78 4D                     663        LD      C,L\r
-    00004A79 44                     664        LD      B,H\r
-    00004A7A C9                     665        RET\r
-    00004A7B                        666 loadFont:\r
-    00004A7B CD 7A 82               667        CALL    LWRD ?ENT_AUTO_DIRECT_L09\r
-    00004A7E FC FF                  668        DEFW    65532\r
-    00004A80 FD E5                  669        PUSH    IY\r
-    00004A82 11 0E 00               670        LD      DE,14\r
-    00004A85 CD 16 4B               671        CALL    LWRD ?0447\r
-    00004A88 DD 4E 02               672        LD      C,(IX+2)\r
-    00004A8B 71                     673        LD      (HL),C\r
-    00004A8C DD 46 03               674        LD      B,(IX+3)\r
-    00004A8F 23                     675        INC     HL\r
-    00004A90 70                     676        LD      (HL),B\r
-    00004A91 DD 46 0C               677        LD      B,(IX+12)\r
-    00004A94 DD 6E 0A               678        LD      L,(IX+10)\r
-    00004A97 FD 75 02               679        LD      (IY+2),L\r
-    00004A9A DD 66 0B               680        LD      H,(IX+11)\r
-    00004A9D FD 74 03               681        LD      (IY+3),H\r
-    00004AA0 FD 70 04               682        LD      (IY+4),B\r
-    00004AA3 DD 46 10               683        LD      B,(IX+16)\r
-    00004AA6 DD 6E 0E               684        LD      L,(IX+14)\r
-    00004AA9 FD 75 05               685        LD      (IY+5),L\r
-    00004AAC DD 66 0F               686        LD      H,(IX+15)\r
-    00004AAF FD 74 06               687        LD      (IY+6),H\r
-    00004AB2 FD 70 07               688        LD      (IY+7),B\r
-    00004AB5 AF                     689        XOR     A\r
-    00004AB6 FD 77 08               690        LD      (IY+8),A\r
-    00004AB9 FD 77 09               691        LD      (IY+9),A\r
-    00004ABC DD 6E 12               692        LD      L,(IX+18)\r
-    00004ABF FD 75 0A               693        LD      (IY+10),L\r
-    00004AC2 DD 66 13               694        LD      H,(IX+19)\r
-    00004AC5 FD 74 0B               695        LD      (IY+11),H\r
-    00004AC8 DD 6E 14               696        LD      L,(IX+20)\r
-    00004ACB FD 75 0C               697        LD      (IY+12),L\r
-    00004ACE DD 66 15               698        LD      H,(IX+21)\r
-    00004AD1 FD 74 0D               699        LD      (IY+13),H\r
-    00004AD4 21 0C 00               700        LD      HL,12\r
-    00004AD7 ED 4B 3F 87            701        LD      BC,(global)\r
-    00004ADB 09                     702        ADD     HL,BC\r
-    00004ADC 7E                     703        LD      A,(HL)\r
-    00004ADD 23                     704        INC     HL\r
-    00004ADE B6                     705        OR      (HL)\r
-    00004ADF 21 0C 00               706        LD      HL,12\r
-    00004AE2 ED 4B 3F 87            707        LD      BC,(global)\r
-    00004AE6 09                     708        ADD     HL,BC\r
-    00004AE7 20 10                  709        JR      NZ,?0019\r
-    00004AE9                        710 ?0018:\r
-    00004AE9 FD E5                  711        PUSH    IY\r
-    00004AEB C1                     712        POP     BC\r
-    00004AEC 71                     713        LD      (HL),C\r
-    00004AED 23                     714        INC     HL\r
-    00004AEE 70                     715        LD      (HL),B\r
-    00004AEF 21 0A 00               716        LD      HL,10\r
-    00004AF2 ED 4B 3F 87            717        LD      BC,(global)\r
-    00004AF6 09                     718        ADD     HL,BC\r
-    00004AF7 18 12                  719        JR      ?0021\r
-    00004AF9                        720 ?0019:\r
-    00004AF9 46                     721        LD      B,(HL)\r
-    00004AFA 23                     722        INC     HL\r
-    00004AFB 66                     723        LD      H,(HL)\r
-    00004AFC 68                     724        LD      L,B\r
-    00004AFD EB                     725        EX      DE,HL\r
-    00004AFE                        726 ?0022:\r
-    00004AFE 21 08 00               727        LD      HL,8\r
-    00004B01 19                     728        ADD     HL,DE\r
-    00004B02 7E                     729        LD      A,(HL)\r
-    00004B03 23                     730        INC     HL\r
-    00004B04 B6                     731        OR      (HL)\r
-    00004B05 21 08 00               732        LD      HL,8\r
-    00004B08 19                     733        ADD     HL,DE\r
-    00004B09 20 EE                  734        JR      NZ,?0019\r
-    00004B0B                        735 ?0023:\r
-    00004B0B                        736 ?0021:\r
-    00004B0B FD E5                  737        PUSH    IY\r
-    00004B0D C1                     738        POP     BC\r
-    00004B0E 71                     739        LD      (HL),C\r
-    00004B0F 23                     740        INC     HL\r
-    00004B10 70                     741        LD      (HL),B\r
-    00004B11                        742 ?0020:\r
-    00004B11 FD E1                  743        POP     IY\r
-    00004B13 C3 A3 81               744        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
-    00004B16                        745 ?0447:\r
-    00004B16 3E 01                  746        LD      A,BYTE3 malloc\r
-    00004B18 21 00 40               747        LD      HL,LWRD malloc\r
-    00004B1B CD FB 81               748        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    00004B1E E5                     749        PUSH    HL\r
-    00004B1F FD E1                  750        POP     IY\r
-    00004B21 C9                     751        RET\r
-    00004B22                        752 stringwidth:\r
-    00004B22 FD E5                  753        PUSH    IY\r
-    00004B24 DD E5                  754        PUSH    IX\r
-    00004B26 C5                     755        PUSH    BC\r
-    00004B27 D5                     756        PUSH    DE\r
-    00004B28 DD 21 00 00            757        LD      IX,0\r
-    00004B2C FD 21 00 00            758        LD      IY,0\r
-    00004B30                        759 ?0025:\r
-    00004B30 FD E5                  760        PUSH    IY\r
-    00004B32 21 02 00               761        LD      HL,2\r
-    00004B35 39                     762        ADD     HL,SP\r
-    00004B36 4E                     763        LD      C,(HL)\r
-    00004B37 23                     764        INC     HL\r
-    00004B38 46                     765        LD      B,(HL)\r
-    00004B39 E1                     766        POP     HL\r
-    00004B3A 09                     767        ADD     HL,BC\r
-    00004B3B 7E                     768        LD      A,(HL)\r
-    00004B3C B7                     769        OR      A\r
-    00004B3D 28 50                  770        JR      Z,?0024\r
-    00004B3F                        771 ?0026:\r
-    00004B3F FD E5                  772        PUSH    IY\r
-    00004B41 E1                     773        POP     HL\r
-    00004B42 09                     774        ADD     HL,BC\r
-    00004B43 5E                     775        LD      E,(HL)\r
-    00004B44 CD C4 81               776        CALL    LWRD ?C_V_SWITCH_L06\r
-    00004B47 0A 00                  777        DEFW    10\r
-    00004B49 21                     778        DEFB    33\r
-    00004B4A 2C                     779        DEFB    44\r
-    00004B4B 2E                     780        DEFB    46\r
-    00004B4C 31                     781        DEFB    49\r
-    00004B4D 49                     782        DEFB    73\r
-    00004B4E 69                     783        DEFB    105\r
-    00004B4F 6A                     784        DEFB    106\r
-    00004B50 6B                     785        DEFB    107\r
-    00004B51 6C                     786        DEFB    108\r
-    00004B52 72                     787        DEFB    114\r
-    00004B53 7D 4B                  788        DEFW    ?0032\r
-    00004B55 78 4B                  789        DEFW    ?0031\r
-    00004B57 6E 4B                  790        DEFW    ?0029\r
-    00004B59 78 4B                  791        DEFW    ?0031\r
-    00004B5B 78 4B                  792        DEFW    ?0031\r
-    00004B5D 69 4B                  793        DEFW    ?0028\r
-    00004B5F 69 4B                  794        DEFW    ?0028\r
-    00004B61 73 4B                  795        DEFW    ?0030\r
-    00004B63 73 4B                  796        DEFW    ?0030\r
-    00004B65 73 4B                  797        DEFW    ?0030\r
-    00004B67 69 4B                  798        DEFW    ?0028\r
-    00004B69                        799 ?0028:\r
-    00004B69 01 02 00               800        LD      BC,2\r
-    00004B6C 18 12                  801        JR      ?0331\r
-    00004B6E                        802 ?0029:\r
-    00004B6E 01 03 00               803        LD      BC,3\r
-    00004B71 18 0D                  804        JR      ?0331\r
-    00004B73                        805 ?0030:\r
-    00004B73 01 04 00               806        LD      BC,4\r
-    00004B76 18 08                  807        JR      ?0331\r
-    00004B78                        808 ?0031:\r
-    00004B78 01 05 00               809        LD      BC,5\r
-    00004B7B 18 03                  810        JR      ?0331\r
-    00004B7D                        811 ?0032:\r
-    00004B7D 01 06 00               812        LD      BC,6\r
-    00004B80                        813 ?0331:\r
-    00004B80 DD 09                  814        ADD     IX,BC\r
-    00004B82                        815 ?0027:\r
-    00004B82 21 02 00               816        LD      HL,2\r
-    00004B85 39                     817        ADD     HL,SP\r
-    00004B86 4E                     818        LD      C,(HL)\r
-    00004B87 23                     819        INC     HL\r
-    00004B88 46                     820        LD      B,(HL)\r
-    00004B89 DD 09                  821        ADD     IX,BC\r
-    00004B8B FD 23                  822        INC     IY\r
-    00004B8D 18 A1                  823        JR      ?0025\r
-    00004B8F                        824 ?0024:\r
-    00004B8F DD E5                  825        PUSH    IX\r
-    00004B91 E1                     826        POP     HL\r
-    00004B92 F1                     827        POP     AF\r
-    00004B93 F1                     828        POP     AF\r
-    00004B94 DD E1                  829        POP     IX\r
-    00004B96 FD E1                  830        POP     IY\r
-    00004B98 C3 A9 81               831        JP      LWRD ?BANK_FAST_LEAVE_L08\r
-    00004B9B                        832 stringheight:\r
-    00004B9B CD EF 81               833        CALL    LWRD ?ENT_PARM_DIRECT_L09\r
-    00004B9E 7B                     834        LD      A,E\r
-    00004B9F FE 80                  835        CP      128\r
-    00004BA1 30 06                  836        JR      NC,?0034\r
-    00004BA3                        837 ?0033:\r
-    00004BA3 21 07 00               838        LD      HL,7\r
-    00004BA6 09                     839        ADD     HL,BC\r
-    00004BA7 18 0C                  840        JR      ?0036\r
-    00004BA9                        841 ?0034:\r
-    00004BA9 FE CC                  842        CP      204\r
-    00004BAB 38 08                  843        JR      C,?0036\r
-    00004BAD 3E DF                  844        LD      A,223\r
-    00004BAF BB                     845        CP      E\r
-    00004BB0 38 03                  846        JR      C,?0036\r
-    00004BB2                        847 ?0038:\r
-    00004BB2                        848 ?0037:\r
-    00004BB2                        849 ?0035:\r
-    00004BB2 69                     850        LD      L,C\r
-    00004BB3 60                     851        LD      H,B\r
-    00004BB4 23                     852        INC     HL\r
-    00004BB5                        853 ?0036:\r
-    00004BB5                        854 ?0039:\r
-    00004BB5 C3 A3 81               855        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
-    00004BB8                        856 stringheight01:\r
-    00004BB8 CD EF 81               857        CALL    LWRD ?ENT_PARM_DIRECT_L09\r
-    00004BBB 01 00 00               858        LD      BC,0\r
-    00004BBE                        859 ?0415:\r
-    00004BBE 1A                     860        LD      A,(DE)\r
-    00004BBF 5F                     861        LD      E,A\r
-    00004BC0 3E 00                  862        LD      A,BYTE3 stringheight\r
-    00004BC2 21 9B 4B               863        LD      HL,LWRD stringheight\r
-    00004BC5 CD FB 81               864        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    00004BC8 C3 A3 81               865        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
-    00004BCB                        866 stringheight2:\r
-    00004BCB CD EF 81               867        CALL    LWRD ?ENT_PARM_DIRECT_L09\r
-    00004BCE 01 05 00               868        LD      BC,5\r
-    00004BD1 C3 BE 4B               869        JP      LWRD ?0415\r
-    00004BD4                        870 stringwidth0:\r
-    00004BD4 CD EF 81               871        CALL    LWRD ?ENT_PARM_DIRECT_L09\r
-    00004BD7 01 00 00               872        LD      BC,0\r
-    00004BDA                        873 ?0416:\r
-    00004BDA 3E 00                  874        LD      A,BYTE3 stringwidth\r
-    00004BDC 21 22 4B               875        LD      HL,LWRD stringwidth\r
-    00004BDF CD FB 81               876        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    00004BE2 C3 A3 81               877        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
-    00004BE5                        878 stringwidth1:\r
-    00004BE5 CD EF 81               879        CALL    LWRD ?ENT_PARM_DIRECT_L09\r
-    00004BE8 01 02 00               880        LD      BC,2\r
-    00004BEB C3 DA 4B               881        JP      LWRD ?0416\r
-    00004BEE                        882 stringwidth2:\r
-    00004BEE CD EF 81               883        CALL    LWRD ?ENT_PARM_DIRECT_L09\r
-    00004BF1 01 03 00               884        LD      BC,3\r
-    00004BF4 C3 DA 4B               885        JP      LWRD ?0416\r
-    00004BF7                        886 Component_new:\r
-    00004BF7 CD 7A 82               887        CALL    LWRD ?ENT_AUTO_DIRECT_L09\r
-    00004BFA 00 00                  888        DEFW    0\r
-    00004BFC FD E5                  889        PUSH    IY\r
-    00004BFE 11 28 00               890        LD      DE,40\r
-    00004C01 CD 16 4B               891        CALL    LWRD ?0447\r
-    00004C04 2A 3F 87               892        LD      HL,(global)\r
-    00004C07 5E                     893        LD      E,(HL)\r
-    00004C08 23                     894        INC     HL\r
-    00004C09 56                     895        LD      D,(HL)\r
-    00004C0A 13                     896        INC     DE\r
-    00004C0B 72                     897        LD      (HL),D\r
-    00004C0C 2B                     898        DEC     HL\r
-    00004C0D 73                     899        LD      (HL),E\r
-    00004C0E FD E5                  900        PUSH    IY\r
-    00004C10 E1                     901        POP     HL\r
-    00004C11 73                     902        LD      (HL),E\r
-    00004C12 23                     903        INC     HL\r
-    00004C13 72                     904        LD      (HL),D\r
-    00004C14 DD 6E 02               905        LD      L,(IX+2)\r
-    00004C17 FD 75 02               906        LD      (IY+2),L\r
-    00004C1A DD 66 03               907        LD      H,(IX+3)\r
-    00004C1D FD 74 03               908        LD      (IY+3),H\r
-    00004C20 FD 71 04               909        LD      (IY+4),C\r
-    00004C23 FD 70 05               910        LD      (IY+5),B\r
-    00004C26 DD 6E 0A               911        LD      L,(IX+10)\r
-    00004C29 FD 75 06               912        LD      (IY+6),L\r
-    00004C2C DD 66 0B               913        LD      H,(IX+11)\r
-    00004C2F FD 74 07               914        LD      (IY+7),H\r
-    00004C32 DD 6E 0C               915        LD      L,(IX+12)\r
-    00004C35 FD 75 08               916        LD      (IY+8),L\r
-    00004C38 DD 66 0D               917        LD      H,(IX+13)\r
-    00004C3B FD 74 09               918        LD      (IY+9),H\r
-    00004C3E AF                     919        XOR     A\r
-    00004C3F FD 77 0A               920        LD      (IY+10),A\r
-    00004C42 FD 77 0B               921        LD      (IY+11),A\r
-    00004C45 FD 77 0C               922        LD      (IY+12),A\r
-    00004C48 FD 77 0D               923        LD      (IY+13),A\r
-    00004C4B FD 77 0E               924        LD      (IY+14),A\r
-    00004C4E FD 77 0F               925        LD      (IY+15),A\r
-    00004C51 FD 77 10               926        LD      (IY+16),A\r
-    00004C54 FD 77 11               927        LD      (IY+17),A\r
-    00004C57 FD 77 12               928        LD      (IY+18),A\r
-    00004C5A FD 77 13               929        LD      (IY+19),A\r
-    00004C5D FD 77 14               930        LD      (IY+20),A\r
-    00004C60 FD 77 15               931        LD      (IY+21),A\r
-    00004C63 FD 77 16               932        LD      (IY+22),A\r
-    00004C66 FD 77 17               933        LD      (IY+23),A\r
-    00004C69 FD 77 18               934        LD      (IY+24),A\r
-    00004C6C FD 77 19               935        LD      (IY+25),A\r
-    00004C6F FD 77 1A               936        LD      (IY+26),A\r
-    00004C72 FD 77 1B               937        LD      (IY+27),A\r
-    00004C75 FD 77 1C               938        LD      (IY+28),A\r
-    00004C78 FD 77 1D               939        LD      (IY+29),A\r
-    00004C7B FD 77 1E               940        LD      (IY+30),A\r
-    00004C7E FD 77 1F               941        LD      (IY+31),A\r
-    00004C81 FD 77 24               942        LD      (IY+36),A\r
-    00004C84 FD 77 25               943        LD      (IY+37),A\r
-    00004C87 FD 77 26               944        LD      (IY+38),A\r
-    00004C8A FD 77 27               945        LD      (IY+39),A\r
-    00004C8D FD 77 20               946        LD      (IY+32),A\r
-    00004C90 FD 77 21               947        LD      (IY+33),A\r
-    00004C93 FD 77 22               948        LD      (IY+34),A\r
-    00004C96 FD 77 23               949        LD      (IY+35),A\r
-    00004C99                        950 ?0418:\r
-    00004C99 FD E5                  951        PUSH    IY\r
-    00004C9B E1                     952        POP     HL\r
-    00004C9C FD E1                  953        POP     IY\r
-    00004C9E C3 A3 81               954        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
-    00004CA1                        955 Component_setlabel:\r
-    00004CA1 CD 7A 82               956        CALL    LWRD ?ENT_AUTO_DIRECT_L09\r
-    00004CA4 00 00                  957        DEFW    0\r
-    00004CA6 FD E5                  958        PUSH    IY\r
-    00004CA8 DD 6E 02               959        LD      L,(IX+2)\r
-    00004CAB DD 66 03               960        LD      H,(IX+3)\r
-    00004CAE E5                     961        PUSH    HL\r
-    00004CAF FD E1                  962        POP     IY\r
-    00004CB1 11 00 00               963        LD      DE,0\r
-    00004CB4                        964 ?0041:\r
-    00004CB4 DD 6E 04               965        LD      L,(IX+4)\r
-    00004CB7 DD 66 05               966        LD      H,(IX+5)\r
-    00004CBA 19                     967        ADD     HL,DE\r
-    00004CBB 7E                     968        LD      A,(HL)\r
-    00004CBC B7                     969        OR      A\r
-    00004CBD 28 21                  970        JR      Z,?0040\r
-    00004CBF 01 14 80               971        LD      BC,32788\r
-    00004CC2 6B                     972        LD      L,E\r
-    00004CC3 62                     973        LD      H,D\r
-    00004CC4 78                     974        LD      A,B\r
-    00004CC5 AC                     975        XOR     H\r
-    00004CC6 67                     976        LD      H,A\r
-    00004CC7 ED 42                  977        SBC     HL,BC\r
-    00004CC9 30 15                  978        JR      NC,?0040\r
-    00004CCB                        979 ?0044:\r
-    00004CCB                        980 ?0043:\r
-    00004CCB                        981 ?0042:\r
-    00004CCB FD 6E 20               982        LD      L,(IY+32)\r
-    00004CCE FD 66 21               983        LD      H,(IY+33)\r
-    00004CD1 19                     984        ADD     HL,DE\r
-    00004CD2 E5                     985        PUSH    HL\r
-    00004CD3 DD 6E 04               986        LD      L,(IX+4)\r
-    00004CD6 DD 66 05               987        LD      H,(IX+5)\r
-    00004CD9 19                     988        ADD     HL,DE\r
-    00004CDA 46                     989        LD      B,(HL)\r
-    00004CDB E1                     990        POP     HL\r
-    00004CDC 70                     991        LD      (HL),B\r
-    00004CDD 13                     992        INC     DE\r
-    00004CDE 18 D4                  993        JR      ?0041\r
-    00004CE0                        994 ?0040:\r
-    00004CE0 FD 6E 20               995        LD      L,(IY+32)\r
-    00004CE3 FD 66 21               996        LD      H,(IY+33)\r
-    00004CE6 19                     997        ADD     HL,DE\r
-    00004CE7 36 00                  998        LD      (HL),0\r
-    00004CE9 FD E1                  999        POP     IY\r
-    00004CEB C3 A3 81              1000        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
-    00004CEE                       1001 Component_add:\r
-    00004CEE CD 7A 82              1002        CALL    LWRD ?ENT_AUTO_DIRECT_L09\r
-    00004CF1 00 00                 1003        DEFW    0\r
-    00004CF3 FD E5                 1004        PUSH    IY\r
-    00004CF5 59                    1005        LD      E,C\r
-    00004CF6 50                    1006        LD      D,B\r
-    00004CF7 21 15 00              1007        LD      HL,21\r
-    00004CFA DD 4E 02              1008        LD      C,(IX+2)\r
-    00004CFD DD 46 03              1009        LD      B,(IX+3)\r
-    00004D00 09                    1010        ADD     HL,BC\r
-    00004D01 7E                    1011        LD      A,(HL)\r
-    00004D02 23                    1012        INC     HL\r
-    00004D03 66                    1013        LD      H,(HL)\r
-    00004D04 6F                    1014        LD      L,A\r
-    00004D05 E5                    1015        PUSH    HL\r
-    00004D06 FD E1                 1016        POP     IY\r
-    00004D08 21 15 00              1017        LD      HL,21\r
-    00004D0B 09                    1018        ADD     HL,BC\r
-    00004D0C 7E                    1019        LD      A,(HL)\r
-    00004D0D 23                    1020        INC     HL\r
-    00004D0E B6                    1021        OR      (HL)\r
-    00004D0F 20 09                 1022        JR      NZ,?0046\r
-    00004D11                       1023 ?0045:\r
-    00004D11 21 15 00              1024        LD      HL,21\r
-    00004D14 09                    1025        ADD     HL,BC\r
-    00004D15 73                    1026        LD      (HL),E\r
-    00004D16 23                    1027        INC     HL\r
-    00004D17 72                    1028        LD      (HL),D\r
-    00004D18 18 19                 1029        JR      ?0335\r
-    00004D1A                       1030 ?0046:\r
-    00004D1A                       1031 ?0049:\r
-    00004D1A FD 7E 13              1032        LD      A,(IY+19)\r
-    00004D1D FD B6 14              1033        OR      (IY+20)\r
-    00004D20 28 0B                 1034        JR      Z,?0048\r
-    00004D22                       1035 ?0050:\r
-    00004D22 FD 6E 13              1036        LD      L,(IY+19)\r
-    00004D25 FD 66 14              1037        LD      H,(IY+20)\r
-    00004D28 E5                    1038        PUSH    HL\r
-    00004D29 FD E1                 1039        POP     IY\r
-    00004D2B 18 ED                 1040        JR      ?0046\r
-    00004D2D                       1041 ?0048:\r
-    00004D2D FD 73 13              1042        LD      (IY+19),E\r
-    00004D30 FD 72 14              1043        LD      (IY+20),D\r
-    00004D33                       1044 ?0335:\r
-    00004D33 21 13 00              1045        LD      HL,19\r
-    00004D36 19                    1046        ADD     HL,DE\r
-    00004D37 77                    1047        LD      (HL),A\r
-    00004D38 23                    1048        INC     HL\r
-    00004D39 77                    1049        LD      (HL),A\r
-    00004D3A                       1050 ?0047:\r
-    00004D3A 21 11 00              1051        LD      HL,17\r
-    00004D3D 19                    1052        ADD     HL,DE\r
-    00004D3E DD 4E 02              1053        LD      C,(IX+2)\r
-    00004D41 71                    1054        LD      (HL),C\r
-    00004D42 DD 46 03              1055        LD      B,(IX+3)\r
-    00004D45 23                    1056        INC     HL\r
-    00004D46 70                    1057        LD      (HL),B\r
-    00004D47 FD E1                 1058        POP     IY\r
-    00004D49 C3 A3 81              1059        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
-    00004D4C                       1060 Component_paint:\r
-    00004D4C C5                    1061        PUSH    BC\r
-    00004D4D FD E5                 1062        PUSH    IY\r
-    00004D4F DD E5                 1063        PUSH    IX\r
-    00004D51 21 15 00              1064        LD      HL,21\r
-    00004D54 19                    1065        ADD     HL,DE\r
-    00004D55 46                    1066        LD      B,(HL)\r
-    00004D56 23                    1067        INC     HL\r
-    00004D57 66                    1068        LD      H,(HL)\r
-    00004D58 68                    1069        LD      L,B\r
-    00004D59 E5                    1070        PUSH    HL\r
-    00004D5A DD E1                 1071        POP     IX\r
-    00004D5C CD 88 4D              1072        CALL    LWRD ?0477\r
-    00004D5F                       1073 ?0052:\r
-    00004D5F DD E5                 1074        PUSH    IX\r
-    00004D61 E1                    1075        POP     HL\r
-    00004D62 7D                    1076        LD      A,L\r
-    00004D63 B4                    1077        OR      H\r
-    00004D64 28 1A                 1078        JR      Z,?0051\r
-    00004D66                       1079 ?0053:\r
-    00004D66 DD E5                 1080        PUSH    IX\r
-    00004D68 D1                    1081        POP     DE\r
-    00004D69 DD 7E 1C              1082        LD      A,(IX+28)\r
-    00004D6C DD 6E 1A              1083        LD      L,(IX+26)\r
-    00004D6F DD 66 1B              1084        LD      H,(IX+27)\r
-    00004D72 CD FB 81              1085        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    00004D75 DD 6E 13              1086        LD      L,(IX+19)\r
-    00004D78 DD 66 14              1087        LD      H,(IX+20)\r
-    00004D7B E5                    1088        PUSH    HL\r
-    00004D7C DD E1                 1089        POP     IX\r
-    00004D7E 18 DF                 1090        JR      ?0052\r
-    00004D80                       1091 ?0051:\r
-    00004D80 1E 01                 1092        LD      E,1\r
-    00004D82 CD 8A 4D              1093        CALL    LWRD ?0478\r
-    00004D85 C3 A6 48              1094        JP      LWRD ?0411\r
-    00004D88                       1095 ?0477:\r
-    00004D88 1E 00                 1096        LD      E,0\r
-    00004D8A                       1097 ?0478:\r
-    00004D8A 3E 00                 1098        LD      A,BYTE3 EnableScreen\r
-    00004D8C 21 42 49              1099        LD      HL,LWRD EnableScreen\r
-    00004D8F C3 FB 81              1100        JP      LWRD ?BANK_CALL_DIRECT_L08\r
-    00004D92                       1101 Component_findXY:\r
-    00004D92 CD 7A 82              1102        CALL    LWRD ?ENT_AUTO_DIRECT_L09\r
-    00004D95 00 00                 1103        DEFW    0\r
-    00004D97 FD E5                 1104        PUSH    IY\r
-    00004D99 DD 6E 02              1105        LD      L,(IX+2)\r
-    00004D9C DD 66 03              1106        LD      H,(IX+3)\r
-    00004D9F E5                    1107        PUSH    HL\r
-    00004DA0 FD E1                 1108        POP     IY\r
-    00004DA2                       1109 ?0056:\r
-    00004DA2 DD 6E 04              1110        LD      L,(IX+4)\r
-    00004DA5 DD 66 05              1111        LD      H,(IX+5)\r
-    00004DA8 7E                    1112        LD      A,(HL)\r
-    00004DA9 FD 86 02              1113        ADD     A,(IY+2)\r
-    00004DAC 77                    1114        LD      (HL),A\r
-    00004DAD 23                    1115        INC     HL\r
-    00004DAE 7E                    1116        LD      A,(HL)\r
-    00004DAF FD 8E 03              1117        ADC     A,(IY+3)\r
-    00004DB2 77                    1118        LD      (HL),A\r
-    00004DB3 DD 6E 0A              1119        LD      L,(IX+10)\r
-    00004DB6 DD 66 0B              1120        LD      H,(IX+11)\r
-    00004DB9 7E                    1121        LD      A,(HL)\r
-    00004DBA FD 86 04              1122        ADD     A,(IY+4)\r
-    00004DBD 77                    1123        LD      (HL),A\r
-    00004DBE 23                    1124        INC     HL\r
-    00004DBF 7E                    1125        LD      A,(HL)\r
-    00004DC0 FD 8E 05              1126        ADC     A,(IY+5)\r
-    00004DC3 77                    1127        LD      (HL),A\r
-    00004DC4 FD 6E 11              1128        LD      L,(IY+17)\r
-    00004DC7 FD 66 12              1129        LD      H,(IY+18)\r
-    00004DCA E5                    1130        PUSH    HL\r
-    00004DCB FD E1                 1131        POP     IY\r
-    00004DCD 7D                    1132        LD      A,L\r
-    00004DCE B4                    1133        OR      H\r
-    00004DCF 20 D1                 1134        JR      NZ,?0056\r
-    00004DD1                       1135 ?0054:\r
-    00004DD1 FD E1                 1136        POP     IY\r
-    00004DD3 C3 A3 81              1137        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
-    00004DD6                       1138 Component_find:\r
-    00004DD6 CD 7A 82              1139        CALL    LWRD ?ENT_AUTO_DIRECT_L09\r
-    00004DD9 00 00                 1140        DEFW    0\r
-    00004DDB 21 15 00              1141        LD      HL,21\r
-    00004DDE DD 4E 02              1142        LD      C,(IX+2)\r
-    00004DE1 DD 46 03              1143        LD      B,(IX+3)\r
-    00004DE4 09                    1144        ADD     HL,BC\r
-    00004DE5                       1145 ?0336:\r
-    00004DE5 46                    1146        LD      B,(HL)\r
-    00004DE6 23                    1147        INC     HL\r
-    00004DE7 66                    1148        LD      H,(HL)\r
-    00004DE8 68                    1149        LD      L,B\r
-    00004DE9 EB                    1150        EX      DE,HL\r
-    00004DEA                       1151 ?0058:\r
-    00004DEA 7B                    1152        LD      A,E\r
-    00004DEB B2                    1153        OR      D\r
-    00004DEC 28 1B                 1154        JR      Z,?0057\r
-    00004DEE                       1155 ?0059:\r
-    00004DEE 21 10 00              1156        LD      HL,16\r
-    00004DF1 19                    1157        ADD     HL,DE\r
-    00004DF2 4E                    1158        LD      C,(HL)\r
-    00004DF3 06 00                 1159        LD      B,0\r
-    00004DF5 DD 6E 04              1160        LD      L,(IX+4)\r
-    00004DF8 DD 66 05              1161        LD      H,(IX+5)\r
-    00004DFB A7                    1162        AND     A\r
-    00004DFC ED 42                 1163        SBC     HL,BC\r
-    00004DFE 20 03                 1164        JR      NZ,?0061\r
-    00004E00                       1165 ?0060:\r
-    00004E00 EB                    1166        EX      DE,HL\r
-    00004E01 18 08                 1167        JR      ?0062\r
-    00004E03                       1168 ?0061:\r
-    00004E03 21 13 00              1169        LD      HL,19\r
-    00004E06 19                    1170        ADD     HL,DE\r
-    00004E07 18 DC                 1171        JR      ?0336\r
-    00004E09                       1172 ?0057:\r
-    00004E09 6F                    1173        LD      L,A\r
-    00004E0A 67                    1174        LD      H,A\r
-    00004E0B                       1175 ?0062:\r
-    00004E0B C3 A3 81              1176        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
-    00004E0E                       1177 Component_delete:\r
-    00004E0E CD 7A 82              1178        CALL    LWRD ?ENT_AUTO_DIRECT_L09\r
-    00004E11 F8 FF                 1179        DEFW    65528\r
-    00004E13 FD E5                 1180        PUSH    IY\r
-    00004E15 DD 6E 02              1181        LD      L,(IX+2)\r
-    00004E18 DD 66 03              1182        LD      H,(IX+3)\r
-    00004E1B E5                    1183        PUSH    HL\r
-    00004E1C FD E1                 1184        POP     IY\r
-    00004E1E FD 6E 15              1185        LD      L,(IY+21)\r
-    00004E21 DD 75 F8              1186        LD      (IX-8),L\r
-    00004E24 FD 66 16              1187        LD      H,(IY+22)\r
-    00004E27 DD 74 F9              1188        LD      (IX-7),H\r
-    00004E2A FD E5                 1189        PUSH    IY\r
-    00004E2C E1                    1190        POP     HL\r
-    00004E2D 7D                    1191        LD      A,L\r
-    00004E2E B4                    1192        OR      H\r
-    00004E2F CA C1 4F              1193        JP      Z,?0064\r
-    00004E32                       1194 ?0063:\r
-    00004E32                       1195 ?0066:\r
-    00004E32 DD 7E F8              1196        LD      A,(IX-8)\r
-    00004E35 DD B6 F9              1197        OR      (IX-7)\r
-    00004E38 28 11                 1198        JR      Z,?0065\r
-    00004E3A                       1199 ?0067:\r
-    00004E3A DD 5E F8              1200        LD      E,(IX-8)\r
-    00004E3D DD 56 F9              1201        LD      D,(IX-7)\r
-    00004E40 CD D7 4F              1202        CALL    LWRD ?0453\r
-    00004E43 DD 75 F8              1203        LD      (IX-8),L\r
-    00004E46 DD 74 F9              1204        LD      (IX-7),H\r
-    00004E49 18 E7                 1205        JR      ?0063\r
-    00004E4B                       1206 ?0065:\r
-    00004E4B FD 7E 11              1207        LD      A,(IY+17)\r
-    00004E4E FD B6 12              1208        OR      (IY+18)\r
-    00004E51 CA DD 4E              1209        JP      Z,?0079\r
-    00004E54                       1210 ?0068:\r
-    00004E54 FD 6E 11              1211        LD      L,(IY+17)\r
-    00004E57 FD 66 12              1212        LD      H,(IY+18)\r
-    00004E5A 01 15 00              1213        LD      BC,21\r
-    00004E5D 09                    1214        ADD     HL,BC\r
-    00004E5E 46                    1215        LD      B,(HL)\r
-    00004E5F 23                    1216        INC     HL\r
-    00004E60 66                    1217        LD      H,(HL)\r
-    00004E61 68                    1218        LD      L,B\r
-    00004E62 FD E5                 1219        PUSH    IY\r
-    00004E64 C1                    1220        POP     BC\r
-    00004E65 A7                    1221        AND     A\r
-    00004E66 ED 42                 1222        SBC     HL,BC\r
-    00004E68 FD 6E 11              1223        LD      L,(IY+17)\r
-    00004E6B FD 66 12              1224        LD      H,(IY+18)\r
-    00004E6E 01 15 00              1225        LD      BC,21\r
-    00004E71 09                    1226        ADD     HL,BC\r
-    00004E72 20 09                 1227        JR      NZ,?0071\r
-    00004E74                       1228 ?0070:\r
-    00004E74 E5                    1229        PUSH    HL\r
-    00004E75 FD 6E 11              1230        LD      L,(IY+17)\r
-    00004E78 FD 66 12              1231        LD      H,(IY+18)\r
-    00004E7B 18 50                 1232        JR      ?0339\r
-    00004E7D                       1233 ?0071:\r
-    00004E7D 46                    1234        LD      B,(HL)\r
-    00004E7E 23                    1235        INC     HL\r
-    00004E7F 66                    1236        LD      H,(HL)\r
-    00004E80 68                    1237        LD      L,B\r
-    00004E81                       1238 ?0338:\r
-    00004E81 DD 75 F8              1239        LD      (IX-8),L\r
-    00004E84 DD 74 F9              1240        LD      (IX-7),H\r
-    00004E87                       1241 ?0074:\r
-    00004E87 21 13 00              1242        LD      HL,19\r
-    00004E8A DD 4E F8              1243        LD      C,(IX-8)\r
-    00004E8D DD 46 F9              1244        LD      B,(IX-7)\r
-    00004E90 09                    1245        ADD     HL,BC\r
-    00004E91 46                    1246        LD      B,(HL)\r
-    00004E92 23                    1247        INC     HL\r
-    00004E93 66                    1248        LD      H,(HL)\r
-    00004E94 68                    1249        LD      L,B\r
-    00004E95 FD E5                 1250        PUSH    IY\r
-    00004E97 C1                    1251        POP     BC\r
-    00004E98 A7                    1252        AND     A\r
-    00004E99 ED 42                 1253        SBC     HL,BC\r
-    00004E9B 28 19                 1254        JR      Z,?0073\r
-    00004E9D 21 13 00              1255        LD      HL,19\r
-    00004EA0 DD 4E F8              1256        LD      C,(IX-8)\r
-    00004EA3 DD 46 F9              1257        LD      B,(IX-7)\r
-    00004EA6 09                    1258        ADD     HL,BC\r
-    00004EA7 7E                    1259        LD      A,(HL)\r
-    00004EA8 23                    1260        INC     HL\r
-    00004EA9 B6                    1261        OR      (HL)\r
-    00004EAA 28 0A                 1262        JR      Z,?0073\r
-    00004EAC                       1263 ?0077:\r
-    00004EAC                       1264 ?0076:\r
-    00004EAC                       1265 ?0075:\r
-    00004EAC 21 13 00              1266        LD      HL,19\r
-    00004EAF 09                    1267        ADD     HL,BC\r
-    00004EB0 56                    1268        LD      D,(HL)\r
-    00004EB1 23                    1269        INC     HL\r
-    00004EB2 66                    1270        LD      H,(HL)\r
-    00004EB3 6A                    1271        LD      L,D\r
-    00004EB4 18 CB                 1272        JR      ?0338\r
-    00004EB6                       1273 ?0073:\r
-    00004EB6 21 13 00              1274        LD      HL,19\r
-    00004EB9 DD 4E F8              1275        LD      C,(IX-8)\r
-    00004EBC DD 46 F9              1276        LD      B,(IX-7)\r
-    00004EBF 09                    1277        ADD     HL,BC\r
-    00004EC0 7E                    1278        LD      A,(HL)\r
-    00004EC1 23                    1279        INC     HL\r
-    00004EC2 B6                    1280        OR      (HL)\r
-    00004EC3 28 18                 1281        JR      Z,?0079\r
-    00004EC5                       1282 ?0078:\r
-    00004EC5 21 13 00              1283        LD      HL,19\r
-    00004EC8 09                    1284        ADD     HL,BC\r
-    00004EC9 E5                    1285        PUSH    HL\r
-    00004ECA 21 13 00              1286        LD      HL,19\r
-    00004ECD                       1287 ?0339:\r
-    00004ECD 09                    1288        ADD     HL,BC\r
-    00004ECE 46                    1289        LD      B,(HL)\r
-    00004ECF 23                    1290        INC     HL\r
-    00004ED0 66                    1291        LD      H,(HL)\r
-    00004ED1 68                    1292        LD      L,B\r
-    00004ED2 01 13 00              1293        LD      BC,19\r
-    00004ED5 09                    1294        ADD     HL,BC\r
-    00004ED6 4E                    1295        LD      C,(HL)\r
-    00004ED7 23                    1296        INC     HL\r
-    00004ED8 46                    1297        LD      B,(HL)\r
-    00004ED9 E1                    1298        POP     HL\r
-    00004EDA 71                    1299        LD      (HL),C\r
-    00004EDB 23                    1300        INC     HL\r
-    00004EDC 70                    1301        LD      (HL),B\r
-    00004EDD                       1302 ?0079:\r
-    00004EDD                       1303 ?0072:\r
-    00004EDD                       1304 ?0069:\r
-    00004EDD FD 6E 13              1305        LD      L,(IY+19)\r
-    00004EE0 DD 75 F8              1306        LD      (IX-8),L\r
-    00004EE3 FD 66 14              1307        LD      H,(IY+20)\r
-    00004EE6 DD 74 F9              1308        LD      (IX-7),H\r
-    00004EE9 3E 04                 1309        LD      A,4\r
-    00004EEB FD AE 24              1310        XOR     (IY+36)\r
-    00004EEE FD B6 25              1311        OR      (IY+37)\r
-    00004EF1 C2 8D 4F              1312        JP      NZ,?0088\r
-    00004EF4                       1313 ?0080:\r
-    00004EF4 FD 6E 11              1314        LD      L,(IY+17)\r
-    00004EF7 DD 75 FC              1315        LD      (IX-4),L\r
-    00004EFA FD 66 12              1316        LD      H,(IY+18)\r
-    00004EFD DD 74 FD              1317        LD      (IX-3),H\r
-    00004F00 FD 6E 26              1318        LD      L,(IY+38)\r
-    00004F03 DD 75 FE              1319        LD      (IX-2),L\r
-    00004F06 FD 66 27              1320        LD      H,(IY+39)\r
-    00004F09 DD 74 FF              1321        LD      (IX-1),H\r
-    00004F0C CD CC 4F              1322        CALL    LWRD ?0451\r
-    00004F0F DD 6E FE              1323        LD      L,(IX-2)\r
-    00004F12 DD 66 FF              1324        LD      H,(IX-1)\r
-    00004F15 23                    1325        INC     HL\r
-    00004F16 23                    1326        INC     HL\r
-    00004F17 CD CC 4F              1327        CALL    LWRD ?0451\r
-    00004F1A                       1328 ?0083:\r
-    00004F1A DD 7E FC              1329        LD      A,(IX-4)\r
-    00004F1D DD B6 FD              1330        OR      (IX-3)\r
-    00004F20 28 20                 1331        JR      Z,?0082\r
-    00004F22 21 24 00              1332        LD      HL,36\r
-    00004F25 DD 4E FC              1333        LD      C,(IX-4)\r
-    00004F28 DD 46 FD              1334        LD      B,(IX-3)\r
-    00004F2B 09                    1335        ADD     HL,BC\r
-    00004F2C 3E 04                 1336        LD      A,4\r
-    00004F2E AE                    1337        XOR     (HL)\r
-    00004F2F 23                    1338        INC     HL\r
-    00004F30 B6                    1339        OR      (HL)\r
-    00004F31 28 0F                 1340        JR      Z,?0082\r
-    00004F33                       1341 ?0086:\r
-    00004F33                       1342 ?0085:\r
-    00004F33                       1343 ?0084:\r
-    00004F33 21 11 00              1344        LD      HL,17\r
-    00004F36 09                    1345        ADD     HL,BC\r
-    00004F37 56                    1346        LD      D,(HL)\r
-    00004F38 DD 72 FC              1347        LD      (IX-4),D\r
-    00004F3B 23                    1348        INC     HL\r
-    00004F3C 66                    1349        LD      H,(HL)\r
-    00004F3D DD 74 FD              1350        LD      (IX-3),H\r
-    00004F40 18 D8                 1351        JR      ?0083\r
-    00004F42                       1352 ?0082:\r
-    00004F42 DD 7E FC              1353        LD      A,(IX-4)\r
-    00004F45 DD B6 FD              1354        OR      (IX-3)\r
-    00004F48 28 43                 1355        JR      Z,?0088\r
-    00004F4A                       1356 ?0087:\r
-    00004F4A 21 26 00              1357        LD      HL,38\r
-    00004F4D DD 4E FC              1358        LD      C,(IX-4)\r
-    00004F50 DD 46 FD              1359        LD      B,(IX-3)\r
-    00004F53 09                    1360        ADD     HL,BC\r
-    00004F54 46                    1361        LD      B,(HL)\r
-    00004F55 DD 70 FE              1362        LD      (IX-2),B\r
-    00004F58 23                    1363        INC     HL\r
-    00004F59 66                    1364        LD      H,(HL)\r
-    00004F5A DD 74 FF              1365        LD      (IX-1),H\r
-    00004F5D 21 06 00              1366        LD      HL,6\r
-    00004F60 ED 4B 3F 87           1367        LD      BC,(global)\r
-    00004F64 09                    1368        ADD     HL,BC\r
-    00004F65 E5                    1369        PUSH    HL\r
-    00004F66 DD 6E FE              1370        LD      L,(IX-2)\r
-    00004F69 DD 66 FF              1371        LD      H,(IX-1)\r
-    00004F6C 5E                    1372        LD      E,(HL)\r
-    00004F6D 23                    1373        INC     HL\r
-    00004F6E 56                    1374        LD      D,(HL)\r
-    00004F6F E1                    1375        POP     HL\r
-    00004F70 73                    1376        LD      (HL),E\r
-    00004F71 23                    1377        INC     HL\r
-    00004F72 72                    1378        LD      (HL),D\r
-    00004F73 21 08 00              1379        LD      HL,8\r
-    00004F76 ED 4B 3F 87           1380        LD      BC,(global)\r
-    00004F7A 09                    1381        ADD     HL,BC\r
-    00004F7B E5                    1382        PUSH    HL\r
-    00004F7C DD 4E FE              1383        LD      C,(IX-2)\r
-    00004F7F DD 46 FF              1384        LD      B,(IX-1)\r
-    00004F82 03                    1385        INC     BC\r
-    00004F83 03                    1386        INC     BC\r
-    00004F84 69                    1387        LD      L,C\r
-    00004F85 60                    1388        LD      H,B\r
-    00004F86 4E                    1389        LD      C,(HL)\r
-    00004F87 23                    1390        INC     HL\r
-    00004F88 46                    1391        LD      B,(HL)\r
-    00004F89 E1                    1392        POP     HL\r
-    00004F8A 71                    1393        LD      (HL),C\r
-    00004F8B 23                    1394        INC     HL\r
-    00004F8C 70                    1395        LD      (HL),B\r
-    00004F8D                       1396 ?0088:\r
-    00004F8D                       1397 ?0081:\r
-    00004F8D FD 4E 24              1398        LD      C,(IY+36)\r
-    00004F90 FD 46 25              1399        LD      B,(IY+37)\r
-    00004F93 21 00 00              1400        LD      HL,0\r
-    00004F96 CD C8 82              1401        CALL    LWRD ?SS_CMP_L02\r
-    00004F99 30 09                 1402        JR      NC,?0090\r
-    00004F9B                       1403 ?0089:\r
-    00004F9B FD 5E 26              1404        LD      E,(IY+38)\r
-    00004F9E FD 56 27              1405        LD      D,(IY+39)\r
-    00004FA1 CD CF 4F              1406        CALL    LWRD ?0452\r
-    00004FA4                       1407 ?0090:\r
-    00004FA4 FD CB 0B 76           1408        BIT     6,(IY+11)\r
-    00004FA8 20 11                 1409        JR      NZ,?0092\r
-    00004FAA FD 7E 20              1410        LD      A,(IY+32)\r
-    00004FAD FD B6 21              1411        OR      (IY+33)\r
-    00004FB0 28 09                 1412        JR      Z,?0092\r
-    00004FB2                       1413 ?0094:\r
-    00004FB2                       1414 ?0093:\r
-    00004FB2                       1415 ?0091:\r
-    00004FB2 FD 5E 20              1416        LD      E,(IY+32)\r
-    00004FB5 FD 56 21              1417        LD      D,(IY+33)\r
-    00004FB8 CD CF 4F              1418        CALL    LWRD ?0452\r
-    00004FBB                       1419 ?0092:\r
-    00004FBB FD E5                 1420        PUSH    IY\r
-    00004FBD D1                    1421        POP     DE\r
-    00004FBE CD CF 4F              1422        CALL    LWRD ?0452\r
-    00004FC1                       1423 ?0064:\r
-    00004FC1 DD 6E F8              1424        LD      L,(IX-8)\r
-    00004FC4 DD 66 F9              1425        LD      H,(IX-7)\r
-    00004FC7 FD E1                 1426        POP     IY\r
-    00004FC9 C3 A3 81              1427        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
-    00004FCC                       1428 ?0451:\r
-    00004FCC 5E                    1429        LD      E,(HL)\r
-    00004FCD 23                    1430        INC     HL\r
-    00004FCE 56                    1431        LD      D,(HL)\r
-    00004FCF                       1432 ?0452:\r
-    00004FCF 3E 00                 1433        LD      A,BYTE3 free\r
-    00004FD1 21 5F 74              1434        LD      HL,LWRD free\r
-    00004FD4 C3 FB 81              1435        JP      LWRD ?BANK_CALL_DIRECT_L08\r
-    00004FD7                       1436 ?0453:\r
-    00004FD7 3E 00                 1437        LD      A,BYTE3 Component_delete\r
-    00004FD9 21 0E 4E              1438        LD      HL,LWRD Component_delete\r
-    00004FDC C3 FB 81              1439        JP      LWRD ?BANK_CALL_DIRECT_L08\r
-    00004FDF                       1440 Component_delete_children:\r
-    00004FDF C5                    1441        PUSH    BC\r
-    00004FE0 FD E5                 1442        PUSH    IY\r
-    00004FE2 DD E5                 1443        PUSH    IX\r
-    00004FE4 21 15 00              1444        LD      HL,21\r
-    00004FE7 19                    1445        ADD     HL,DE\r
-    00004FE8 46                    1446        LD      B,(HL)\r
-    00004FE9 23                    1447        INC     HL\r
-    00004FEA 66                    1448        LD      H,(HL)\r
-    00004FEB 68                    1449        LD      L,B\r
-    00004FEC                       1450 ?0341:\r
-    00004FEC E5                    1451        PUSH    HL\r
-    00004FED DD E1                 1452        POP     IX\r
-    00004FEF                       1453 ?0096:\r
-    00004FEF 7D                    1454        LD      A,L\r
-    00004FF0 B4                    1455        OR      H\r
-    00004FF1 28 08                 1456        JR      Z,?0095\r
-    00004FF3                       1457 ?0097:\r
-    00004FF3 DD E5                 1458        PUSH    IX\r
-    00004FF5 D1                    1459        POP     DE\r
-    00004FF6 CD D7 4F              1460        CALL    LWRD ?0453\r
-    00004FF9 18 F1                 1461        JR      ?0341\r
-    00004FFB                       1462 ?0095:\r
-    00004FFB C3 A6 48              1463        JP      LWRD ?0411\r
-    00004FFE                       1464 Component_changestate_children:\r
-    00004FFE CD 7A 82              1465        CALL    LWRD ?ENT_AUTO_DIRECT_L09\r
-    00005001 00 00                 1466        DEFW    0\r
-    00005003 FD E5                 1467        PUSH    IY\r
-    00005005 21 15 00              1468        LD      HL,21\r
-    00005008 DD 5E 02              1469        LD      E,(IX+2)\r
-    0000500B DD 56 03              1470        LD      D,(IX+3)\r
-    0000500E 19                    1471        ADD     HL,DE\r
-    0000500F                       1472 ?0342:\r
-    0000500F 56                    1473        LD      D,(HL)\r
-    00005010 23                    1474        INC     HL\r
-    00005011 66                    1475        LD      H,(HL)\r
-    00005012 6A                    1476        LD      L,D\r
-    00005013 E5                    1477        PUSH    HL\r
-    00005014 FD E1                 1478        POP     IY\r
-    00005016                       1479 ?0099:\r
-    00005016 7D                    1480        LD      A,L\r
-    00005017 B4                    1481        OR      H\r
-    00005018 28 3D                 1482        JR      Z,?0098\r
-    0000501A                       1483 ?0100:\r
-    0000501A 21 0A 00              1484        LD      HL,10\r
-    0000501D FD E5                 1485        PUSH    IY\r
-    0000501F C1                    1486        POP     BC\r
-    00005020 09                    1487        ADD     HL,BC\r
-    00005021 DD 7E 04              1488        LD      A,(IX+4)\r
-    00005024 DD 56 05              1489        LD      D,(IX+5)\r
-    00005027 2F                    1490        CPL\r
-    00005028 5F                    1491        LD      E,A\r
-    00005029 7A                    1492        LD      A,D\r
-    0000502A 2F                    1493        CPL\r
-    0000502B 57                    1494        LD      D,A\r
-    0000502C 7E                    1495        LD      A,(HL)\r
-    0000502D A3                    1496        AND     E\r
-    0000502E 77                    1497        LD      (HL),A\r
-    0000502F 23                    1498        INC     HL\r
-    00005030 7E                    1499        LD      A,(HL)\r
-    00005031 A2                    1500        AND     D\r
-    00005032 77                    1501        LD      (HL),A\r
-    00005033 21 0A 00              1502        LD      HL,10\r
-    00005036 09                    1503        ADD     HL,BC\r
-    00005037 7E                    1504        LD      A,(HL)\r
-    00005038 DD B6 0A              1505        OR      (IX+10)\r
-    0000503B 77                    1506        LD      (HL),A\r
-    0000503C 23                    1507        INC     HL\r
-    0000503D 7E                    1508        LD      A,(HL)\r
-    0000503E DD B6 0B              1509        OR      (IX+11)\r
-    00005041 77                    1510        LD      (HL),A\r
-    00005042 21 0A 00              1511        LD      HL,10\r
-    00005045 09                    1512        ADD     HL,BC\r
-    00005046 7E                    1513        LD      A,(HL)\r
-    00005047 DD AE 0C              1514        XOR     (IX+12)\r
-    0000504A 77                    1515        LD      (HL),A\r
-    0000504B 23                    1516        INC     HL\r
-    0000504C 7E                    1517        LD      A,(HL)\r
-    0000504D DD AE 0D              1518        XOR     (IX+13)\r
-    00005050 77                    1519        LD      (HL),A\r
-    00005051 21 13 00              1520        LD      HL,19\r
-    00005054 09                    1521        ADD     HL,BC\r
-    00005055 18 B8                 1522        JR      ?0342\r
-    00005057                       1523 ?0098:\r
-    00005057 11 00 86              1524        LD      DE,stdout\r
-    0000505A 3E 00                 1525        LD      A,BYTE3 fflush\r
-    0000505C 21 5F 70              1526        LD      HL,LWRD fflush\r
-    0000505F CD FB 81              1527        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    00005062 FD E1                 1528        POP     IY\r
-    00005064 C3 A3 81              1529        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
-    00005067                       1530 Component_linkstringtable:\r
-    00005067 C5                    1531        PUSH    BC\r
-    00005068 FD E5                 1532        PUSH    IY\r
-    0000506A DD E5                 1533        PUSH    IX\r
-    0000506C D5                    1534        PUSH    DE\r
-    0000506D DD E1                 1535        POP     IX\r
-    0000506F 21 15 00              1536        LD      HL,21\r
-    00005072 19                    1537        ADD     HL,DE\r
-    00005073 46                    1538        LD      B,(HL)\r
-    00005074 23                    1539        INC     HL\r
-    00005075 66                    1540        LD      H,(HL)\r
-    00005076 68                    1541        LD      L,B\r
-    00005077 E5                    1542        PUSH    HL\r
-    00005078 FD E1                 1543        POP     IY\r
-    0000507A 21 20 00              1544        LD      HL,32\r
-    0000507D 19                    1545        ADD     HL,DE\r
-    0000507E 46                    1546        LD      B,(HL)\r
-    0000507F 23                    1547        INC     HL\r
-    00005080 66                    1548        LD      H,(HL)\r
-    00005081 68                    1549        LD      L,B\r
-    00005082 01 00 90              1550        LD      BC,36864\r
-    00005085 3E 80                 1551        LD      A,128\r
-    00005087 AC                    1552        XOR     H\r
-    00005088 67                    1553        LD      H,A\r
-    00005089 ED 42                 1554        SBC     HL,BC\r
-    0000508B 30 2E                 1555        JR      NC,?0102\r
-    0000508D DD 4E 20              1556        LD      C,(IX+32)\r
-    00005090 DD 46 21              1557        LD      B,(IX+33)\r
-    00005093 21 00 00              1558        LD      HL,0\r
-    00005096 CD C8 82              1559        CALL    LWRD ?SS_CMP_L02\r
-    00005099 30 20                 1560        JR      NC,?0102\r
-    0000509B                       1561 ?0104:\r
-    0000509B                       1562 ?0103:\r
-    0000509B                       1563 ?0101:\r
-    0000509B DD 6E 20              1564        LD      L,(IX+32)\r
-    0000509E DD 66 21              1565        LD      H,(IX+33)\r
-    000050A1 29                    1566        ADD     HL,HL\r
-    000050A2 E5                    1567        PUSH    HL\r
-    000050A3 21 08 00              1568        LD      HL,8\r
-    000050A6 ED 4B 3F 87           1569        LD      BC,(global)\r
-    000050AA 09                    1570        ADD     HL,BC\r
-    000050AB 4E                    1571        LD      C,(HL)\r
-    000050AC 23                    1572        INC     HL\r
-    000050AD 46                    1573        LD      B,(HL)\r
-    000050AE E1                    1574        POP     HL\r
-    000050AF 09                    1575        ADD     HL,BC\r
-    000050B0 2B                    1576        DEC     HL\r
-    000050B1 2B                    1577        DEC     HL\r
-    000050B2 46                    1578        LD      B,(HL)\r
-    000050B3 DD 70 20              1579        LD      (IX+32),B\r
-    000050B6 23                    1580        INC     HL\r
-    000050B7 66                    1581        LD      H,(HL)\r
-    000050B8 DD 74 21              1582        LD      (IX+33),H\r
-    000050BB                       1583 ?0102:\r
-    000050BB DD 6E 22              1584        LD      L,(IX+34)\r
-    000050BE DD 66 23              1585        LD      H,(IX+35)\r
-    000050C1 01 00 90              1586        LD      BC,36864\r
-    000050C4 3E 80                 1587        LD      A,128\r
-    000050C6 AC                    1588        XOR     H\r
-    000050C7 67                    1589        LD      H,A\r
-    000050C8 ED 42                 1590        SBC     HL,BC\r
-    000050CA 30 2E                 1591        JR      NC,?0106\r
-    000050CC DD 4E 22              1592        LD      C,(IX+34)\r
-    000050CF DD 46 23              1593        LD      B,(IX+35)\r
-    000050D2 21 00 00              1594        LD      HL,0\r
-    000050D5 CD C8 82              1595        CALL    LWRD ?SS_CMP_L02\r
-    000050D8 30 20                 1596        JR      NC,?0106\r
-    000050DA                       1597 ?0108:\r
-    000050DA                       1598 ?0107:\r
-    000050DA                       1599 ?0105:\r
-    000050DA DD 6E 22              1600        LD      L,(IX+34)\r
-    000050DD DD 66 23              1601        LD      H,(IX+35)\r
-    000050E0 29                    1602        ADD     HL,HL\r
-    000050E1 E5                    1603        PUSH    HL\r
-    000050E2 21 08 00              1604        LD      HL,8\r
-    000050E5 ED 4B 3F 87           1605        LD      BC,(global)\r
-    000050E9 09                    1606        ADD     HL,BC\r
-    000050EA 4E                    1607        LD      C,(HL)\r
-    000050EB 23                    1608        INC     HL\r
-    000050EC 46                    1609        LD      B,(HL)\r
-    000050ED E1                    1610        POP     HL\r
-    000050EE 09                    1611        ADD     HL,BC\r
-    000050EF 2B                    1612        DEC     HL\r
-    000050F0 2B                    1613        DEC     HL\r
-    000050F1 46                    1614        LD      B,(HL)\r
-    000050F2 DD 70 22              1615        LD      (IX+34),B\r
-    000050F5 23                    1616        INC     HL\r
-    000050F6 66                    1617        LD      H,(HL)\r
-    000050F7 DD 74 23              1618        LD      (IX+35),H\r
-    000050FA                       1619 ?0106:\r
-    000050FA                       1620 ?0110:\r
-    000050FA FD E5                 1621        PUSH    IY\r
-    000050FC E1                    1622        POP     HL\r
-    000050FD 7D                    1623        LD      A,L\r
-    000050FE B4                    1624        OR      H\r
-    000050FF 28 16                 1625        JR      Z,?0109\r
-    00005101                       1626 ?0111:\r
-    00005101 FD E5                 1627        PUSH    IY\r
-    00005103 D1                    1628        POP     DE\r
-    00005104 3E 00                 1629        LD      A,BYTE3 Component_linkstringtable\r
-    00005106 21 67 50              1630        LD      HL,LWRD Component_linkstringtable\r
-    00005109 CD FB 81              1631        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    0000510C FD 6E 13              1632        LD      L,(IY+19)\r
-    0000510F FD 66 14              1633        LD      H,(IY+20)\r
-    00005112 E5                    1634        PUSH    HL\r
-    00005113 FD E1                 1635        POP     IY\r
-    00005115 18 E3                 1636        JR      ?0106\r
-    00005117                       1637 ?0109:\r
-    00005117 C3 A6 48              1638        JP      LWRD ?0411\r
-    0000511A                       1639 Window_handler:\r
-    0000511A CD 7A 82              1640        CALL    LWRD ?ENT_AUTO_DIRECT_L09\r
-    0000511D D0 FF                 1641        DEFW    65488\r
-    0000511F FD E5                 1642        PUSH    IY\r
-    00005121 AF                    1643        XOR     A\r
-    00005122 DD 77 FA              1644        LD      (IX-6),A\r
-    00005125 DD 77 FB              1645        LD      (IX-5),A\r
-    00005128 DD 77 FC              1646        LD      (IX-4),A\r
-    0000512B DD 77 FD              1647        LD      (IX-3),A\r
-    0000512E 59                    1648        LD      E,C\r
-    0000512F 50                    1649        LD      D,B\r
-    00005130 CD 1C 82              1650        CALL    LWRD ?S_V_SWITCH_L06\r
-    00005133 08 00                 1651        DEFW    8\r
-    00005135 01 00                 1652        DEFW    1\r
-    00005137 02 00                 1653        DEFW    2\r
-    00005139 03 00                 1654        DEFW    3\r
-    0000513B 02 01                 1655        DEFW    258\r
-    0000513D 03 01                 1656        DEFW    259\r
-    0000513F 04 01                 1657        DEFW    260\r
-    00005141 05 01                 1658        DEFW    261\r
-    00005143 01 04                 1659        DEFW    1025\r
-    00005145 B3 53                 1660        DEFW    ?0159\r
-    00005147 21 53                 1661        DEFW    ?0153\r
-    00005149 B4 52                 1662        DEFW    ?0144\r
-    0000514B E0 52                 1663        DEFW    ?0145\r
-    0000514D 28 52                 1664        DEFW    ?0142\r
-    0000514F 39 52                 1665        DEFW    ?0143\r
-    00005151 ED 51                 1666        DEFW    ?0131\r
-    00005153 88 51                 1667        DEFW    ?0119\r
-    00005155 57 51                 1668        DEFW    ?0113\r
-    00005157                       1669 ?0113:\r
-    00005157 21 15 00              1670        LD      HL,21\r
-    0000515A DD 4E 02              1671        LD      C,(IX+2)\r
-    0000515D DD 46 03              1672        LD      B,(IX+3)\r
-    00005160 09                    1673        ADD     HL,BC\r
-    00005161 46                    1674        LD      B,(HL)\r
-    00005162 23                    1675        INC     HL\r
-    00005163 66                    1676        LD      H,(HL)\r
-    00005164 68                    1677        LD      L,B\r
-    00005165                       1678 ?0344:\r
-    00005165 E5                    1679        PUSH    HL\r
-    00005166 FD E1                 1680        POP     IY\r
-    00005168                       1681 ?0115:\r
-    00005168 7D                    1682        LD      A,L\r
-    00005169 B4                    1683        OR      H\r
-    0000516A 28 19                 1684        JR      Z,?0114\r
-    0000516C                       1685 ?0116:\r
-    0000516C FD CB 0A 46           1686        BIT     0,(IY+10)\r
-    00005170 28 0B                 1687        JR      Z,?0118\r
-    00005172                       1688 ?0117:\r
-    00005172 DD 6E 0A              1689        LD      L,(IX+10)\r
-    00005175 DD 66 0B              1690        LD      H,(IX+11)\r
-    00005178 E5                    1691        PUSH    HL\r
-    00005179 CD B8 53              1692        CALL    LWRD ?0462\r
-    0000517C E1                    1693        POP     HL\r
-    0000517D                       1694 ?0118:\r
-    0000517D FD 6E 13              1695        LD      L,(IY+19)\r
-    00005180 FD 66 14              1696        LD      H,(IY+20)\r
-    00005183 18 E0                 1697        JR      ?0344\r
-    00005185                       1698 ?0114:\r
-    00005185 C3 B3 53              1699        JP      LWRD ?0159\r
-    00005188                       1700 ?0119:\r
-    00005188 21 15 00              1701        LD      HL,21\r
-    0000518B DD 4E 02              1702        LD      C,(IX+2)\r
-    0000518E DD 46 03              1703        LD      B,(IX+3)\r
-    00005191 09                    1704        ADD     HL,BC\r
-    00005192 46                    1705        LD      B,(HL)\r
-    00005193 23                    1706        INC     HL\r
-    00005194 66                    1707        LD      H,(HL)\r
-    00005195 68                    1708        LD      L,B\r
-    00005196                       1709 ?0348:\r
-    00005196 E5                    1710        PUSH    HL\r
-    00005197 FD E1                 1711        POP     IY\r
-    00005199                       1712 ?0121:\r
-    00005199 7D                    1713        LD      A,L\r
-    0000519A B4                    1714        OR      H\r
-    0000519B 28 4D                 1715        JR      Z,?0120\r
-    0000519D                       1716 ?0122:\r
-    0000519D FD CB 0A 46           1717        BIT     0,(IY+10)\r
-    000051A1 28 38                 1718        JR      Z,?0126\r
-    000051A3                       1719 ?0123:\r
-    000051A3 DD 6E 0A              1720        LD      L,(IX+10)\r
-    000051A6 DD 66 0B              1721        LD      H,(IX+11)\r
-    000051A9 E5                    1722        PUSH    HL\r
-    000051AA CD B8 53              1723        CALL    LWRD ?0462\r
-    000051AD E1                    1724        POP     HL\r
-    000051AE DD 6E 0A              1725        LD      L,(IX+10)\r
-    000051B1 DD 66 0B              1726        LD      H,(IX+11)\r
-    000051B4 E5                    1727        PUSH    HL\r
-    000051B5 01 03 00              1728        LD      BC,3\r
-    000051B8 CD BE 53              1729        CALL    LWRD ?0463\r
-    000051BB E1                    1730        POP     HL\r
-    000051BC FD 7E 0A              1731        LD      A,(IY+10)\r
-    000051BF E6 22                 1732        AND     34\r
-    000051C1 6F                    1733        LD      L,A\r
-    000051C2 26 00                 1734        LD      H,0\r
-    000051C4 3E 22                 1735        LD      A,34\r
-    000051C6 AD                    1736        XOR     L\r
-    000051C7 20 12                 1737        JR      NZ,?0126\r
-    000051C9 FD 4E 10              1738        LD      C,(IY+16)\r
-    000051CC 44                    1739        LD      B,H\r
-    000051CD DD 6E 0A              1740        LD      L,(IX+10)\r
-    000051D0 DD 66 0B              1741        LD      H,(IX+11)\r
-    000051D3 ED 42                 1742        SBC     HL,BC\r
-    000051D5 20 04                 1743        JR      NZ,?0126\r
-    000051D7                       1744 ?0128:\r
-    000051D7                       1745 ?0127:\r
-    000051D7                       1746 ?0125:\r
-    000051D7 FD 21 00 00           1747        LD      IY,0\r
-    000051DB                       1748 ?0126:\r
-    000051DB                       1749 ?0124:\r
-    000051DB FD E5                 1750        PUSH    IY\r
-    000051DD E1                    1751        POP     HL\r
-    000051DE 7D                    1752        LD      A,L\r
-    000051DF B4                    1753        OR      H\r
-    000051E0 28 B7                 1754        JR      Z,?0121\r
-    000051E2                       1755 ?0129:\r
-    000051E2 FD 6E 13              1756        LD      L,(IY+19)\r
-    000051E5 FD 66 14              1757        LD      H,(IY+20)\r
-    000051E8 18 AC                 1758        JR      ?0348\r
-    000051EA                       1759 ?0130:\r
-    000051EA                       1760 ?0120:\r
-    000051EA C3 B3 53              1761        JP      LWRD ?0159\r
-    000051ED                       1762 ?0131:\r
-    000051ED DD 6E 02              1763        LD      L,(IX+2)\r
-    000051F0 DD 66 03              1764        LD      H,(IX+3)\r
-    000051F3 E5                    1765        PUSH    HL\r
-    000051F4 FD E1                 1766        POP     IY\r
-    000051F6 21 0A 00              1767        LD      HL,10\r
-    000051F9 DD 4E 02              1768        LD      C,(IX+2)\r
-    000051FC DD 46 03              1769        LD      B,(IX+3)\r
-    000051FF 09                    1770        ADD     HL,BC\r
-    00005200 CB 46                 1771        BIT     0,(HL)\r
-    00005202 28 21                 1772        JR      Z,?0139\r
-    00005204                       1773 ?0132:\r
-    00005204 FD CB 0A 6E           1774        BIT     5,(IY+10)\r
-    00005208 28 1B                 1775        JR      Z,?0139\r
-    0000520A FD 4E 10              1776        LD      C,(IY+16)\r
-    0000520D 47                    1777        LD      B,A\r
-    0000520E DD 6E 0A              1778        LD      L,(IX+10)\r
-    00005211 DD 66 0B              1779        LD      H,(IX+11)\r
-    00005214 A7                    1780        AND     A\r
-    00005215 ED 42                 1781        SBC     HL,BC\r
-    00005217 20 0C                 1782        JR      NZ,?0139\r
-    00005219                       1783 ?0137:\r
-    00005219                       1784 ?0136:\r
-    00005219                       1785 ?0134:\r
-    00005219 FD 6E 26              1786        LD      L,(IY+38)\r
-    0000521C FD 66 27              1787        LD      H,(IY+39)\r
-    0000521F FD E5                 1788        PUSH    IY\r
-    00005221 D1                    1789        POP     DE\r
-    00005222 CD DD 53              1790        CALL    LWRD ?0474\r
-    00005225                       1791 ?0138:\r
-    00005225                       1792 ?0139:\r
-    00005225                       1793 ?0135:\r
-    00005225                       1794 ?0133:\r
-    00005225                       1795 ?0140:\r
-    00005225                       1796 ?0141:\r
-    00005225 C3 B3 53              1797        JP      LWRD ?0159\r
-    00005228                       1798 ?0142:\r
-    00005228 DD 5E 02              1799        LD      E,(IX+2)\r
-    0000522B 4B                    1800        LD      C,E\r
-    0000522C DD 56 03              1801        LD      D,(IX+3)\r
-    0000522F 42                    1802        LD      B,D\r
-    00005230 21 1A 00              1803        LD      HL,26\r
-    00005233 CD DC 53              1804        CALL    LWRD ?0475\r
-    00005236 C3 B3 53              1805        JP      LWRD ?0159\r
-    00005239                       1806 ?0143:\r
-    00005239 21 0A 00              1807        LD      HL,10\r
-    0000523C DD 4E 02              1808        LD      C,(IX+2)\r
-    0000523F DD 46 03              1809        LD      B,(IX+3)\r
-    00005242 09                    1810        ADD     HL,BC\r
-    00005243 7E                    1811        LD      A,(HL)\r
-    00005244 E6 FC                 1812        AND     252\r
-    00005246 77                    1813        LD      (HL),A\r
-    00005247 21 2E 00              1814        LD      HL,46\r
-    0000524A 39                    1815        ADD     HL,SP\r
-    0000524B E5                    1816        PUSH    HL\r
-    0000524C 2B                    1817        DEC     HL\r
-    0000524D 2B                    1818        DEC     HL\r
-    0000524E 4D                    1819        LD      C,L\r
-    0000524F 44                    1820        LD      B,H\r
-    00005250 DD 5E 02              1821        LD      E,(IX+2)\r
-    00005253 DD 56 03              1822        LD      D,(IX+3)\r
-    00005256 CD D4 53              1823        CALL    LWRD ?0466\r
-    00005259 E1                    1824        POP     HL\r
-    0000525A 21 08 00              1825        LD      HL,8\r
-    0000525D DD 4E 02              1826        LD      C,(IX+2)\r
-    00005260 DD 46 03              1827        LD      B,(IX+3)\r
-    00005263 09                    1828        ADD     HL,BC\r
-    00005264 5E                    1829        LD      E,(HL)\r
-    00005265 23                    1830        INC     HL\r
-    00005266 56                    1831        LD      D,(HL)\r
-    00005267 D5                    1832        PUSH    DE\r
-    00005268 21 06 00              1833        LD      HL,6\r
-    0000526B 09                    1834        ADD     HL,BC\r
-    0000526C 5E                    1835        LD      E,(HL)\r
-    0000526D 23                    1836        INC     HL\r
-    0000526E 56                    1837        LD      D,(HL)\r
-    0000526F D5                    1838        PUSH    DE\r
-    00005270 DD 6E FC              1839        LD      L,(IX-4)\r
-    00005273 DD 66 FD              1840        LD      H,(IX-3)\r
-    00005276 E5                    1841        PUSH    HL\r
-    00005277 DD 4E FA              1842        LD      C,(IX-6)\r
-    0000527A DD 46 FB              1843        LD      B,(IX-5)\r
-    0000527D 11 00 00              1844        LD      DE,0\r
-    00005280 CD 3A 49              1845        CALL    LWRD ?0471\r
-    00005283 E1                    1846        POP     HL\r
-    00005284 E1                    1847        POP     HL\r
-    00005285 E1                    1848        POP     HL\r
-    00005286 21 00 00              1849        LD      HL,0\r
-    00005289 E5                    1850        PUSH    HL\r
-    0000528A 2E 11                 1851        LD      L,17\r
-    0000528C DD 5E 02              1852        LD      E,(IX+2)\r
-    0000528F DD 56 03              1853        LD      D,(IX+3)\r
-    00005292 19                    1854        ADD     HL,DE\r
-    00005293 5E                    1855        LD      E,(HL)\r
-    00005294 23                    1856        INC     HL\r
-    00005295 56                    1857        LD      D,(HL)\r
-    00005296 21 11 00              1858        LD      HL,17\r
-    00005299 DD 4E 02              1859        LD      C,(IX+2)\r
-    0000529C DD 46 03              1860        LD      B,(IX+3)\r
-    0000529F 09                    1861        ADD     HL,BC\r
-    000052A0 46                    1862        LD      B,(HL)\r
-    000052A1 23                    1863        INC     HL\r
-    000052A2 66                    1864        LD      H,(HL)\r
-    000052A3 68                    1865        LD      L,B\r
-    000052A4 01 17 00              1866        LD      BC,23\r
-    000052A7 09                    1867        ADD     HL,BC\r
-    000052A8 4E                    1868        LD      C,(HL)\r
-    000052A9 23                    1869        INC     HL\r
-    000052AA 46                    1870        LD      B,(HL)\r
-    000052AB 23                    1871        INC     HL\r
-    000052AC 7E                    1872        LD      A,(HL)\r
-    000052AD 69                    1873        LD      L,C\r
-    000052AE 60                    1874        LD      H,B\r
-    000052AF 01 03 01              1875        LD      BC,259\r
-    000052B2 18 29                 1876        JR      ?0347\r
-    000052B4                       1877 ?0144:\r
-    000052B4 21 11 00              1878        LD      HL,17\r
-    000052B7 DD 4E 02              1879        LD      C,(IX+2)\r
-    000052BA DD 46 03              1880        LD      B,(IX+3)\r
-    000052BD 09                    1881        ADD     HL,BC\r
-    000052BE 56                    1882        LD      D,(HL)\r
-    000052BF 23                    1883        INC     HL\r
-    000052C0 66                    1884        LD      H,(HL)\r
-    000052C1 6A                    1885        LD      L,D\r
-    000052C2 E5                    1886        PUSH    HL\r
-    000052C3 FD E1                 1887        POP     IY\r
-    000052C5 59                    1888        LD      E,C\r
-    000052C6 50                    1889        LD      D,B\r
-    000052C7 CD D7 4F              1890        CALL    LWRD ?0453\r
-    000052CA 21 00 00              1891        LD      HL,0\r
-    000052CD E5                    1892        PUSH    HL\r
-    000052CE 01 03 01              1893        LD      BC,259\r
-    000052D1 FD E5                 1894        PUSH    IY\r
-    000052D3 D1                    1895        POP     DE\r
-    000052D4 FD 7E 19              1896        LD      A,(IY+25)\r
-    000052D7 FD 6E 17              1897        LD      L,(IY+23)\r
-    000052DA FD 66 18              1898        LD      H,(IY+24)\r
-    000052DD                       1899 ?0347:\r
-    000052DD C3 AF 53              1900        JP      LWRD ?0346\r
-    000052E0                       1901 ?0145:\r
-    000052E0 21 15 00              1902        LD      HL,21\r
-    000052E3 DD 4E 02              1903        LD      C,(IX+2)\r
-    000052E6 DD 46 03              1904        LD      B,(IX+3)\r
-    000052E9 09                    1905        ADD     HL,BC\r
-    000052EA 46                    1906        LD      B,(HL)\r
-    000052EB 23                    1907        INC     HL\r
-    000052EC 66                    1908        LD      H,(HL)\r
-    000052ED 68                    1909        LD      L,B\r
-    000052EE                       1910 ?0345:\r
-    000052EE E5                    1911        PUSH    HL\r
-    000052EF FD E1                 1912        POP     IY\r
-    000052F1                       1913 ?0147:\r
-    000052F1 7D                    1914        LD      A,L\r
-    000052F2 B4                    1915        OR      H\r
-    000052F3 28 29                 1916        JR      Z,?0146\r
-    000052F5                       1917 ?0148:\r
-    000052F5 DD 6E 0A              1918        LD      L,(IX+10)\r
-    000052F8 DD 66 0B              1919        LD      H,(IX+11)\r
-    000052FB FD E5                 1920        PUSH    IY\r
-    000052FD C1                    1921        POP     BC\r
-    000052FE ED 42                 1922        SBC     HL,BC\r
-    00005300 28 14                 1923        JR      Z,?0150\r
-    00005302 FD CB 0A 5E           1924        BIT     3,(IY+10)\r
-    00005306 28 0E                 1925        JR      Z,?0150\r
-    00005308                       1926 ?0152:\r
-    00005308                       1927 ?0151:\r
-    00005308                       1928 ?0149:\r
-    00005308 DD 6E 0A              1929        LD      L,(IX+10)\r
-    0000530B DD 66 0B              1930        LD      H,(IX+11)\r
-    0000530E E5                    1931        PUSH    HL\r
-    0000530F 01 03 02              1932        LD      BC,515\r
-    00005312 CD BE 53              1933        CALL    LWRD ?0463\r
-    00005315 E1                    1934        POP     HL\r
-    00005316                       1935 ?0150:\r
-    00005316 FD 6E 13              1936        LD      L,(IY+19)\r
-    00005319 FD 66 14              1937        LD      H,(IY+20)\r
-    0000531C 18 D0                 1938        JR      ?0345\r
-    0000531E                       1939 ?0146:\r
-    0000531E C3 B3 53              1940        JP      LWRD ?0159\r
-    00005321                       1941 ?0153:\r
-    00005321 21 11 00              1942        LD      HL,17\r
-    00005324 DD 4E 02              1943        LD      C,(IX+2)\r
-    00005327 DD 46 03              1944        LD      B,(IX+3)\r
-    0000532A 09                    1945        ADD     HL,BC\r
-    0000532B 7E                    1946        LD      A,(HL)\r
-    0000532C 23                    1947        INC     HL\r
-    0000532D B6                    1948        OR      (HL)\r
-    0000532E 20 0E                 1949        JR      NZ,?0155\r
-    00005330                       1950 ?0154:\r
-    00005330 21 04 00              1951        LD      HL,4\r
-    00005333 ED 4B 3F 87           1952        LD      BC,(global)\r
-    00005337 09                    1953        ADD     HL,BC\r
-    00005338 36 01                 1954        LD      (HL),1\r
-    0000533A 23                    1955        INC     HL\r
-    0000533B 77                    1956        LD      (HL),A\r
-    0000533C 18 75                 1957        JR      ?0159\r
-    0000533E                       1958 ?0155:\r
-    0000533E 21 0A 00              1959        LD      HL,10\r
-    00005341 09                    1960        ADD     HL,BC\r
-    00005342 23                    1961        INC     HL\r
-    00005343 CB 6E                 1962        BIT     5,(HL)\r
-    00005345 20 28                 1963        JR      NZ,?0158\r
-    00005347                       1964 ?0157:\r
-    00005347 DD 6E 0A              1965        LD      L,(IX+10)\r
-    0000534A DD 66 0B              1966        LD      H,(IX+11)\r
-    0000534D E5                    1967        PUSH    HL\r
-    0000534E 21 11 00              1968        LD      HL,17\r
-    00005351 59                    1969        LD      E,C\r
-    00005352 50                    1970        LD      D,B\r
-    00005353 19                    1971        ADD     HL,DE\r
-    00005354 5E                    1972        LD      E,(HL)\r
-    00005355 23                    1973        INC     HL\r
-    00005356 56                    1974        LD      D,(HL)\r
-    00005357 21 11 00              1975        LD      HL,17\r
-    0000535A 09                    1976        ADD     HL,BC\r
-    0000535B 46                    1977        LD      B,(HL)\r
-    0000535C 23                    1978        INC     HL\r
-    0000535D 66                    1979        LD      H,(HL)\r
-    0000535E 68                    1980        LD      L,B\r
-    0000535F 01 17 00              1981        LD      BC,23\r
-    00005362 09                    1982        ADD     HL,BC\r
-    00005363 4E                    1983        LD      C,(HL)\r
-    00005364 23                    1984        INC     HL\r
-    00005365 46                    1985        LD      B,(HL)\r
-    00005366 23                    1986        INC     HL\r
-    00005367 7E                    1987        LD      A,(HL)\r
-    00005368 69                    1988        LD      L,C\r
-    00005369 60                    1989        LD      H,B\r
-    0000536A 01 01 04              1990        LD      BC,1025\r
-    0000536D 18 40                 1991        JR      ?0346\r
-    0000536F                       1992 ?0158:\r
-    0000536F 21 11 00              1993        LD      HL,17\r
-    00005372 09                    1994        ADD     HL,BC\r
-    00005373 56                    1995        LD      D,(HL)\r
-    00005374 23                    1996        INC     HL\r
-    00005375 66                    1997        LD      H,(HL)\r
-    00005376 6A                    1998        LD      L,D\r
-    00005377 E5                    1999        PUSH    HL\r
-    00005378 FD E1                 2000        POP     IY\r
-    0000537A 11 0A 00              2001        LD      DE,10\r
-    0000537D 19                    2002        ADD     HL,DE\r
-    0000537E 7E                    2003        LD      A,(HL)\r
-    0000537F F6 03                 2004        OR      3\r
-    00005381 77                    2005        LD      (HL),A\r
-    00005382 6A                    2006        LD      L,D\r
-    00005383 62                    2007        LD      H,D\r
-    00005384 E5                    2008        PUSH    HL\r
-    00005385 23                    2009        INC     HL\r
-    00005386 E5                    2010        PUSH    HL\r
-    00005387 4A                    2011        LD      C,D\r
-    00005388 42                    2012        LD      B,D\r
-    00005389 FD E5                 2013        PUSH    IY\r
-    0000538B D1                    2014        POP     DE\r
-    0000538C 3E 00                 2015        LD      A,BYTE3 Component_changestate_children\r
-    0000538E 21 FE 4F              2016        LD      HL,LWRD Component_changestate_children\r
-    00005391 CD FB 81              2017        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    00005394 E1                    2018        POP     HL\r
-    00005395 E1                    2019        POP     HL\r
-    00005396 21 00 00              2020        LD      HL,0\r
-    00005399 E5                    2021        PUSH    HL\r
-    0000539A DD 5E 02              2022        LD      E,(IX+2)\r
-    0000539D 4B                    2023        LD      C,E\r
-    0000539E DD 56 03              2024        LD      D,(IX+3)\r
-    000053A1 42                    2025        LD      B,D\r
-    000053A2 2E 17                 2026        LD      L,23\r
-    000053A4 09                    2027        ADD     HL,BC\r
-    000053A5 4E                    2028        LD      C,(HL)\r
-    000053A6 23                    2029        INC     HL\r
-    000053A7 46                    2030        LD      B,(HL)\r
-    000053A8 23                    2031        INC     HL\r
-    000053A9 7E                    2032        LD      A,(HL)\r
-    000053AA 69                    2033        LD      L,C\r
-    000053AB 60                    2034        LD      H,B\r
-    000053AC 01 05 01              2035        LD      BC,261\r
-    000053AF                       2036 ?0346:\r
-    000053AF CD FB 81              2037        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    000053B2 E1                    2038        POP     HL\r
-    000053B3                       2039 ?0159:\r
-    000053B3                       2040 ?0156:\r
-    000053B3                       2041 ?0112:\r
-    000053B3 FD E1                 2042        POP     IY\r
-    000053B5 C3 A3 81              2043        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
-    000053B8                       2044 ?0462:\r
-    000053B8 DD 4E 04              2045        LD      C,(IX+4)\r
-    000053BB DD 46 05              2046        LD      B,(IX+5)\r
-    000053BE                       2047 ?0463:\r
-    000053BE FD E5                 2048        PUSH    IY\r
-    000053C0 D1                    2049        POP     DE\r
-    000053C1 FD 7E 19              2050        LD      A,(IY+25)\r
-    000053C4 FD 6E 17              2051        LD      L,(IY+23)\r
-    000053C7 FD 66 18              2052        LD      H,(IY+24)\r
-    000053CA C3 FB 81              2053        JP      LWRD ?BANK_CALL_DIRECT_L08\r
-    000053CD                       2054 ?0467:\r
-    000053CD 23                    2055        INC     HL\r
-    000053CE 23                    2056        INC     HL\r
-    000053CF                       2057 ?0468:\r
-    000053CF 4D                    2058        LD      C,L\r
-    000053D0 44                    2059        LD      B,H\r
-    000053D1 DD E5                 2060        PUSH    IX\r
-    000053D3 D1                    2061        POP     DE\r
-    000053D4                       2062 ?0466:\r
-    000053D4 3E 00                 2063        LD      A,BYTE3 Component_findXY\r
-    000053D6 21 92 4D              2064        LD      HL,LWRD Component_findXY\r
-    000053D9 C3 FB 81              2065        JP      LWRD ?BANK_CALL_DIRECT_L08\r
-    000053DC                       2066 ?0475:\r
-    000053DC 09                    2067        ADD     HL,BC\r
-    000053DD                       2068 ?0474:\r
-    000053DD 4E                    2069        LD      C,(HL)\r
-    000053DE 23                    2070        INC     HL\r
-    000053DF 46                    2071        LD      B,(HL)\r
-    000053E0 23                    2072        INC     HL\r
-    000053E1 7E                    2073        LD      A,(HL)\r
-    000053E2 69                    2074        LD      L,C\r
-    000053E3 60                    2075        LD      H,B\r
-    000053E4 C3 FB 81              2076        JP      LWRD ?BANK_CALL_DIRECT_L08\r
-    000053E7                       2077 Window_paint:\r
-    000053E7 CD 7A 82              2078        CALL    LWRD ?ENT_AUTO_DIRECT_L09\r
-    000053EA FC FF                 2079        DEFW    -4\r
-    000053EC FD E5                 2080        PUSH    IY\r
-    000053EE DD 6E 02              2081        LD      L,(IX+2)\r
-    000053F1 DD 66 03              2082        LD      H,(IX+3)\r
-    000053F4 E5                    2083        PUSH    HL\r
-    000053F5 FD E1                 2084        POP     IY\r
-    000053F7 AF                    2085        XOR     A\r
-    000053F8 DD 77 FE              2086        LD      (IX-2),A\r
-    000053FB DD 77 FF              2087        LD      (IX-1),A\r
-    000053FE DD 77 FC              2088        LD      (IX-4),A\r
-    00005401 DD 77 FD              2089        LD      (IX-3),A\r
-    00005404 21 0A 00              2090        LD      HL,10\r
-    00005407 ED 4B 3F 87           2091        LD      BC,(global)\r
-    0000540B 09                    2092        ADD     HL,BC\r
-    0000540C 7E                    2093        LD      A,(HL)\r
-    0000540D 23                    2094        INC     HL\r
-    0000540E 66                    2095        LD      H,(HL)\r
-    0000540F 6F                    2096        LD      L,A\r
-    00005410 46                    2097        LD      B,(HL)\r
-    00005411 23                    2098        INC     HL\r
-    00005412 66                    2099        LD      H,(HL)\r
-    00005413 68                    2100        LD      L,B\r
-    00005414 FD 4E 0E              2101        LD      C,(IY+14)\r
-    00005417 FD 46 0F              2102        LD      B,(IY+15)\r
-    0000541A A7                    2103        AND     A\r
-    0000541B ED 42                 2104        SBC     HL,BC\r
-    0000541D 28 09                 2105        JR      Z,?0161\r
-    0000541F                       2106 ?0160:\r
-    0000541F FD 5E 0E              2107        LD      E,(IY+14)\r
-    00005422 FD 56 0F              2108        LD      D,(IY+15)\r
-    00005425 CD 6C 55              2109        CALL    LWRD ?0472\r
-    00005428                       2110 ?0161:\r
-    00005428 FD CB 0A 46           2111        BIT     0,(IY+10)\r
-    0000542C CA 24 55              2112        JP      Z,?0163\r
-    0000542F                       2113 ?0162:\r
-    0000542F 21 02 00              2114        LD      HL,2\r
-    00005432 39                    2115        ADD     HL,SP\r
-    00005433 E5                    2116        PUSH    HL\r
-    00005434 23                    2117        INC     HL\r
-    00005435 23                    2118        INC     HL\r
-    00005436 4D                    2119        LD      C,L\r
-    00005437 44                    2120        LD      B,H\r
-    00005438 FD E5                 2121        PUSH    IY\r
-    0000543A D1                    2122        POP     DE\r
-    0000543B CD D4 53              2123        CALL    LWRD ?0466\r
-    0000543E E1                    2124        POP     HL\r
-    0000543F CD 88 4D              2125        CALL    LWRD ?0477\r
-    00005442 DD 4E FC              2126        LD      C,(IX-4)\r
-    00005445 DD 46 FD              2127        LD      B,(IX-3)\r
-    00005448 DD 5E FE              2128        LD      E,(IX-2)\r
-    0000544B DD 56 FF              2129        LD      D,(IX-1)\r
-    0000544E 3E 00                 2130        LD      A,BYTE3 Move\r
-    00005450 21 EB 46              2131        LD      HL,LWRD Move\r
-    00005453 CD FB 81              2132        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    00005456 FD 4E 08              2133        LD      C,(IY+8)\r
-    00005459 FD 46 09              2134        LD      B,(IY+9)\r
-    0000545C FD 5E 06              2135        LD      E,(IY+6)\r
-    0000545F FD 56 07              2136        LD      D,(IY+7)\r
-    00005462 3E 00                 2137        LD      A,BYTE3 ClearRect\r
-    00005464 21 2A 47              2138        LD      HL,LWRD ClearRect\r
-    00005467 CD FB 81              2139        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    0000546A FD 6E 08              2140        LD      L,(IY+8)\r
-    0000546D FD 66 09              2141        LD      H,(IY+9)\r
-    00005470 E5                    2142        PUSH    HL\r
-    00005471 FD 6E 06              2143        LD      L,(IY+6)\r
-    00005474 FD 66 07              2144        LD      H,(IY+7)\r
-    00005477 E5                    2145        PUSH    HL\r
-    00005478 DD 6E FC              2146        LD      L,(IX-4)\r
-    0000547B DD 66 FD              2147        LD      H,(IX-3)\r
-    0000547E E5                    2148        PUSH    HL\r
-    0000547F DD 4E FE              2149        LD      C,(IX-2)\r
-    00005482 DD 46 FF              2150        LD      B,(IX-1)\r
-    00005485 11 00 00              2151        LD      DE,0\r
-    00005488 CD 3A 49              2152        CALL    LWRD ?0471\r
-    0000548B E1                    2153        POP     HL\r
-    0000548C E1                    2154        POP     HL\r
-    0000548D E1                    2155        POP     HL\r
-    0000548E FD 5E 20              2156        LD      E,(IY+32)\r
-    00005491 FD 56 21              2157        LD      D,(IY+33)\r
-    00005494 21 0A 00              2158        LD      HL,10\r
-    00005497 ED 4B 3F 87           2159        LD      BC,(global)\r
-    0000549B 09                    2160        ADD     HL,BC\r
-    0000549C 7E                    2161        LD      A,(HL)\r
-    0000549D 23                    2162        INC     HL\r
-    0000549E 66                    2163        LD      H,(HL)\r
-    0000549F 6F                    2164        LD      L,A\r
-    000054A0 CD 29 55              2165        CALL    LWRD ?0455\r
-    000054A3 DD 4E FC              2166        LD      C,(IX-4)\r
-    000054A6 DD 46 FD              2167        LD      B,(IX-3)\r
-    000054A9 09                    2168        ADD     HL,BC\r
-    000054AA 11 04 00              2169        LD      DE,4\r
-    000054AD 19                    2170        ADD     HL,DE\r
-    000054AE 4D                    2171        LD      C,L\r
-    000054AF 44                    2172        LD      B,H\r
-    000054B0 CD 37 55              2173        CALL    LWRD ?0459\r
-    000054B3 7E                    2174        LD      A,(HL)\r
-    000054B4 23                    2175        INC     HL\r
-    000054B5 66                    2176        LD      H,(HL)\r
-    000054B6 6F                    2177        LD      L,A\r
-    000054B7 01 05 00              2178        LD      BC,5\r
-    000054BA 09                    2179        ADD     HL,BC\r
-    000054BB 4E                    2180        LD      C,(HL)\r
-    000054BC 23                    2181        INC     HL\r
-    000054BD 46                    2182        LD      B,(HL)\r
-    000054BE 23                    2183        INC     HL\r
-    000054BF 7E                    2184        LD      A,(HL)\r
-    000054C0 69                    2185        LD      L,C\r
-    000054C1 60                    2186        LD      H,B\r
-    000054C2 CD 5B 4A              2187        CALL    LWRD ?0444\r
-    000054C5 01 FC FF              2188        LD      BC,65532\r
-    000054C8 09                    2189        ADD     HL,BC\r
-    000054C9 4D                    2190        LD      C,L\r
-    000054CA 44                    2191        LD      B,H\r
-    000054CB FD 5E 06              2192        LD      E,(IY+6)\r
-    000054CE FD 56 07              2193        LD      D,(IY+7)\r
-    000054D1 3E 00                 2194        LD      A,BYTE3 DrawRectNC\r
-    000054D3 21 6D 47              2195        LD      HL,LWRD DrawRectNC\r
-    000054D6 CD FB 81              2196        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    000054D9 DD 4E FC              2197        LD      C,(IX-4)\r
-    000054DC DD 46 FD              2198        LD      B,(IX-3)\r
-    000054DF CD 37 55              2199        CALL    LWRD ?0459\r
-    000054E2 46                    2200        LD      B,(HL)\r
-    000054E3 23                    2201        INC     HL\r
-    000054E4 66                    2202        LD      H,(HL)\r
-    000054E5 68                    2203        LD      L,B\r
-    000054E6 CD 29 55              2204        CALL    LWRD ?0455\r
-    000054E9 01 05 00              2205        LD      BC,5\r
-    000054EC 09                    2206        ADD     HL,BC\r
-    000054ED 4D                    2207        LD      C,L\r
-    000054EE 44                    2208        LD      B,H\r
-    000054EF FD 5E 06              2209        LD      E,(IY+6)\r
-    000054F2 FD 56 07              2210        LD      D,(IY+7)\r
-    000054F5 3E 00                 2211        LD      A,BYTE3 FillRect\r
-    000054F7 21 B2 47              2212        LD      HL,LWRD FillRect\r
-    000054FA CD FB 81              2213        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    000054FD 21 0E 00              2214        LD      HL,14\r
-    00005500 DD 4E FC              2215        LD      C,(IX-4)\r
-    00005503 DD 46 FD              2216        LD      B,(IX-3)\r
-    00005506 09                    2217        ADD     HL,BC\r
-    00005507 4D                    2218        LD      C,L\r
-    00005508 44                    2219        LD      B,H\r
-    00005509 DD 5E FE              2220        LD      E,(IX-2)\r
-    0000550C DD 56 FF              2221        LD      D,(IX-1)\r
-    0000550F 13                    2222        INC     DE\r
-    00005510 13                    2223        INC     DE\r
-    00005511 3E 00                 2224        LD      A,BYTE3 Move\r
-    00005513 21 EB 46              2225        LD      HL,LWRD Move\r
-    00005516 CD 54 55              2226        CALL    LWRD ?0460\r
-    00005519 FD E5                 2227        PUSH    IY\r
-    0000551B D1                    2228        POP     DE\r
-    0000551C 3E 00                 2229        LD      A,BYTE3 Component_paint\r
-    0000551E 21 4C 4D              2230        LD      HL,LWRD Component_paint\r
-    00005521 CD FB 81              2231        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    00005524                       2232 ?0163:\r
-    00005524 FD E1                 2233        POP     IY\r
-    00005526 C3 A3 81              2234        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
-    00005529                       2235 ?0455:\r
-    00005529 01 05 00              2236        LD      BC,5\r
-    0000552C 09                    2237        ADD     HL,BC\r
-    0000552D 4E                    2238        LD      C,(HL)\r
-    0000552E 23                    2239        INC     HL\r
-    0000552F 46                    2240        LD      B,(HL)\r
-    00005530 23                    2241        INC     HL\r
-    00005531 7E                    2242        LD      A,(HL)\r
-    00005532 69                    2243        LD      L,C\r
-    00005533 60                    2244        LD      H,B\r
-    00005534 C3 FB 81              2245        JP      LWRD ?BANK_CALL_DIRECT_L08\r
-    00005537                       2246 ?0459:\r
-    00005537 DD 5E FE              2247        LD      E,(IX-2)\r
-    0000553A DD 56 FF              2248        LD      D,(IX-1)\r
-    0000553D 3E 00                 2249        LD      A,BYTE3 Move\r
-    0000553F 21 EB 46              2250        LD      HL,LWRD Move\r
-    00005542 CD FB 81              2251        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    00005545 FD 5E 20              2252        LD      E,(IY+32)\r
-    00005548 FD 56 21              2253        LD      D,(IY+33)\r
-    0000554B 21 0A 00              2254        LD      HL,10\r
-    0000554E ED 4B 3F 87           2255        LD      BC,(global)\r
-    00005552 09                    2256        ADD     HL,BC\r
-    00005553 C9                    2257        RET\r
-    00005554                       2258 ?0460:\r
-    00005554 CD FB 81              2259        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    00005557 FD 5E 20              2260        LD      E,(IY+32)\r
-    0000555A FD 56 21              2261        LD      D,(IY+33)\r
-    0000555D 3E 00                 2262        LD      A,BYTE3 Text\r
-    0000555F 21 81 48              2263        LD      HL,LWRD Text\r
-    00005562 CD FB 81              2264        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    00005565 C9                    2265        RET\r
-    00005566                       2266 ?0473:\r
-    00005566 DD 5E 0E              2267        LD      E,(IX+14)\r
-    00005569 DD 56 0F              2268        LD      D,(IX+15)\r
-    0000556C                       2269 ?0472:\r
-    0000556C 3E 00                 2270        LD      A,BYTE3 setCurrentFont\r
-    0000556E 21 ED 49              2271        LD      HL,LWRD setCurrentFont\r
-    00005571 C3 FB 81              2272        JP      LWRD ?BANK_CALL_DIRECT_L08\r
-    00005574                       2273 Root_paint:\r
-    00005574 CD EF 81              2274        CALL    LWRD ?ENT_PARM_DIRECT_L09\r
-    00005577 CD 88 4D              2275        CALL    LWRD ?0477\r
-    0000557A CD 1F 49              2276        CALL    LWRD ?0461\r
-    0000557D CD FB 81              2277        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    00005580 01 80 00              2278        LD      BC,128\r
-    00005583 58                    2279        LD      E,B\r
-    00005584 50                    2280        LD      D,B\r
-    00005585 3E 00                 2281        LD      A,BYTE3 GrayRect\r
-    00005587 21 3C 48              2282        LD      HL,LWRD GrayRect\r
-    0000558A CD FB 81              2283        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    0000558D 21 80 00              2284        LD      HL,128\r
-    00005590 E5                    2285        PUSH    HL\r
-    00005591 6C                    2286        LD      L,H\r
-    00005592 E5                    2287        PUSH    HL\r
-    00005593 E5                    2288        PUSH    HL\r
-    00005594 CD 37 49              2289        CALL    LWRD ?0470\r
-    00005597 E1                    2290        POP     HL\r
-    00005598 E1                    2291        POP     HL\r
-    00005599 E1                    2292        POP     HL\r
-    0000559A DD 5E 02              2293        LD      E,(IX+2)\r
-    0000559D DD 56 03              2294        LD      D,(IX+3)\r
-    000055A0 3E 00                 2295        LD      A,BYTE3 Component_paint\r
-    000055A2 21 4C 4D              2296        LD      HL,LWRD Component_paint\r
-    000055A5 CD FB 81              2297        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    000055A8 C3 A3 81              2298        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
-    000055AB                       2299 Window_add:\r
-    000055AB CD EF 81              2300        CALL    LWRD ?ENT_PARM_DIRECT_L09\r
-    000055AE 3E 00                 2301        LD      A,BYTE3 Component_add\r
-    000055B0 21 EE 4C              2302        LD      HL,LWRD Component_add\r
-    000055B3 CD FB 81              2303        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    000055B6 C3 A3 81              2304        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
-    000055B9                       2305 Window_new:\r
-    000055B9 CD 7A 82              2306        CALL    LWRD ?ENT_AUTO_DIRECT_L09\r
-    000055BC 00 00                 2307        DEFW    0\r
-    000055BE FD E5                 2308        PUSH    IY\r
-    000055C0 DD 6E 0C              2309        LD      L,(IX+12)\r
-    000055C3 DD 66 0D              2310        LD      H,(IX+13)\r
-    000055C6 E5                    2311        PUSH    HL\r
-    000055C7 DD 6E 0A              2312        LD      L,(IX+10)\r
-    000055CA DD 66 0B              2313        LD      H,(IX+11)\r
-    000055CD E5                    2314        PUSH    HL\r
-    000055CE CD FD 55              2315        CALL    LWRD ?0438\r
-    000055D1 F1                    2316        POP     AF\r
-    000055D2 F1                    2317        POP     AF\r
-    000055D3 E5                    2318        PUSH    HL\r
-    000055D4 FD E1                 2319        POP     IY\r
-    000055D6 01 17 00              2320        LD      BC,23\r
-    000055D9 09                    2321        ADD     HL,BC\r
-    000055DA 36 1A                 2322        LD      (HL),LOW(Window_handler)\r
-    000055DC 23                    2323        INC     HL\r
-    000055DD 36 51                 2324        LD      (HL),HIGH(Window_handler)\r
-    000055DF 23                    2325        INC     HL\r
-    000055E0 36 00                 2326        LD      (HL),BYTE3 Window_handler\r
-    000055E2 FD 36 1A E7           2327        LD      (IY+26),LOW(Window_paint)\r
-    000055E6 FD 36 1B 53           2328        LD      (IY+27),HIGH(Window_paint)\r
-    000055EA FD 36 1C 00           2329        LD      (IY+28),BYTE3 Window_paint\r
-    000055EE FD 36 1D AB           2330        LD      (IY+29),LOW(Window_add)\r
-    000055F2 FD 36 1E 55           2331        LD      (IY+30),HIGH(Window_add)\r
-    000055F6 FD 36 1F 00           2332        LD      (IY+31),BYTE3 Window_add\r
-    000055FA C3 99 4C              2333        JP      LWRD ?0418\r
-    000055FD                       2334 ?0438:\r
-    000055FD DD 5E 02              2335        LD      E,(IX+2)\r
-    00005600 DD 56 03              2336        LD      D,(IX+3)\r
-    00005603 3E 00                 2337        LD      A,BYTE3 Component_new\r
-    00005605 21 F7 4B              2338        LD      HL,LWRD Component_new\r
-    00005608 C3 FB 81              2339        JP      LWRD ?BANK_CALL_DIRECT_L08\r
-    0000560B                       2340 Button_handler:\r
-    0000560B CD EF 81              2341        CALL    LWRD ?ENT_PARM_DIRECT_L09\r
-    0000560E FD E5                 2342        PUSH    IY\r
-    00005610 D5                    2343        PUSH    DE\r
-    00005611 FD E1                 2344        POP     IY\r
-    00005613 DD 6E 0A              2345        LD      L,(IX+10)\r
-    00005616 DD 66 0B              2346        LD      H,(IX+11)\r
-    00005619 E5                    2347        PUSH    HL\r
-    0000561A 3E 00                 2348        LD      A,BYTE3 Window_handler\r
-    0000561C 21 1A 51              2349        LD      HL,LWRD Window_handler\r
-    0000561F CD FB 81              2350        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    00005622 E1                    2351        POP     HL\r
-    00005623 3E 03                 2352        LD      A,3\r
-    00005625 DD AE 04              2353        XOR     (IX+4)\r
-    00005628 DD B6 05              2354        OR      (IX+5)\r
-    0000562B 20 3E                 2355        JR      NZ,?0169\r
-    0000562D FD 4E 10              2356        LD      C,(IY+16)\r
-    00005630 47                    2357        LD      B,A\r
-    00005631 DD 6E 0A              2358        LD      L,(IX+10)\r
-    00005634 DD 66 0B              2359        LD      H,(IX+11)\r
-    00005637 ED 42                 2360        SBC     HL,BC\r
-    00005639 20 30                 2361        JR      NZ,?0169\r
-    0000563B FD 7E 0A              2362        LD      A,(IY+10)\r
-    0000563E E6 03                 2363        AND     3\r
-    00005640 28 29                 2364        JR      Z,?0169\r
-    00005642                       2365 ?0167:\r
-    00005642                       2366 ?0166:\r
-    00005642                       2367 ?0164:\r
-    00005642 DD 6E 0A              2368        LD      L,(IX+10)\r
-    00005645 DD 66 0B              2369        LD      H,(IX+11)\r
-    00005648 E5                    2370        PUSH    HL\r
-    00005649 FD 5E 11              2371        LD      E,(IY+17)\r
-    0000564C FD 56 12              2372        LD      D,(IY+18)\r
-    0000564F FD 6E 11              2373        LD      L,(IY+17)\r
-    00005652 FD 66 12              2374        LD      H,(IY+18)\r
-    00005655 0E 17                 2375        LD      C,23\r
-    00005657 CD 98 56              2376        CALL    LWRD ?0464\r
-    0000565A E1                    2377        POP     HL\r
-    0000565B FD CB 0A 66           2378        BIT     4,(IY+10)\r
-    0000565F 28 0A                 2379        JR      Z,?0169\r
-    00005661                       2380 ?0168:\r
-    00005661 FD 4E 10              2381        LD      C,(IY+16)\r
-    00005664 06 00                 2382        LD      B,0\r
-    00005666 C5                    2383        PUSH    BC\r
-    00005667 CD A6 56              2384        CALL    LWRD ?0469\r
-    0000566A E1                    2385        POP     HL\r
-    0000566B                       2386 ?0169:\r
-    0000566B                       2387 ?0165:\r
-    0000566B 21 01 02              2388        LD      HL,513\r
-    0000566E DD 4E 04              2389        LD      C,(IX+4)\r
-    00005671 DD 46 05              2390        LD      B,(IX+5)\r
-    00005674 A7                    2391        AND     A\r
-    00005675 ED 42                 2392        SBC     HL,BC\r
-    00005677 20 0B                 2393        JR      NZ,?0171\r
-    00005679                       2394 ?0170:\r
-    00005679 DD 6E 0A              2395        LD      L,(IX+10)\r
-    0000567C DD 66 0B              2396        LD      H,(IX+11)\r
-    0000567F E5                    2397        PUSH    HL\r
-    00005680 CD 89 56              2398        CALL    LWRD ?0465\r
-    00005683 E1                    2399        POP     HL\r
-    00005684                       2400 ?0171:\r
-    00005684 FD E1                 2401        POP     IY\r
-    00005686 C3 A3 81              2402        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
-    00005689                       2403 ?0465:\r
-    00005689 FD 5E 11              2404        LD      E,(IY+17)\r
-    0000568C FD 56 12              2405        LD      D,(IY+18)\r
-    0000568F FD 6E 11              2406        LD      L,(IY+17)\r
-    00005692 FD 66 12              2407        LD      H,(IY+18)\r
-    00005695 01 17 00              2408        LD      BC,23\r
-    00005698                       2409 ?0464:\r
-    00005698 09                    2410        ADD     HL,BC\r
-    00005699 4E                    2411        LD      C,(HL)\r
-    0000569A 23                    2412        INC     HL\r
-    0000569B 46                    2413        LD      B,(HL)\r
-    0000569C 23                    2414        INC     HL\r
-    0000569D 7E                    2415        LD      A,(HL)\r
-    0000569E 69                    2416        LD      L,C\r
-    0000569F 60                    2417        LD      H,B\r
-    000056A0 01 01 02              2418        LD      BC,513\r
-    000056A3 C3 FB 81              2419        JP      LWRD ?BANK_CALL_DIRECT_L08\r
-    000056A6                       2420 ?0469:\r
-    000056A6 FD 5E 11              2421        LD      E,(IY+17)\r
-    000056A9 FD 56 12              2422        LD      D,(IY+18)\r
-    000056AC FD 6E 11              2423        LD      L,(IY+17)\r
-    000056AF FD 66 12              2424        LD      H,(IY+18)\r
-    000056B2 0E 17                 2425        LD      C,23\r
-    000056B4 09                    2426        ADD     HL,BC\r
-    000056B5 4E                    2427        LD      C,(HL)\r
-    000056B6 23                    2428        INC     HL\r
-    000056B7 46                    2429        LD      B,(HL)\r
-    000056B8 23                    2430        INC     HL\r
-    000056B9 7E                    2431        LD      A,(HL)\r
-    000056BA 69                    2432        LD      L,C\r
-    000056BB 60                    2433        LD      H,B\r
-    000056BC 01 04 01              2434        LD      BC,260\r
-    000056BF C3 FB 81              2435        JP      LWRD ?BANK_CALL_DIRECT_L08\r
-    000056C2                       2436 Button_drawtext:\r
-    000056C2 CD EF 81              2437        CALL    LWRD ?ENT_PARM_DIRECT_L09\r
-    000056C5 FD E5                 2438        PUSH    IY\r
-    000056C7 D5                    2439        PUSH    DE\r
-    000056C8 FD E1                 2440        POP     IY\r
-    000056CA 21 0A 00              2441        LD      HL,10\r
-    000056CD 19                    2442        ADD     HL,DE\r
-    000056CE CB 76                 2443        BIT     6,(HL)\r
-    000056D0 FD 5E 20              2444        LD      E,(IY+32)\r
-    000056D3 FD 56 21              2445        LD      D,(IY+33)\r
-    000056D6 21 0A 00              2446        LD      HL,10\r
-    000056D9 ED 4B 3F 87           2447        LD      BC,(global)\r
-    000056DD 09                    2448        ADD     HL,BC\r
-    000056DE 7E                    2449        LD      A,(HL)\r
-    000056DF 23                    2450        INC     HL\r
-    000056E0 66                    2451        LD      H,(HL)\r
-    000056E1 6F                    2452        LD      L,A\r
-    000056E2 01 05 00              2453        LD      BC,5\r
-    000056E5 09                    2454        ADD     HL,BC\r
-    000056E6 4E                    2455        LD      C,(HL)\r
-    000056E7 23                    2456        INC     HL\r
-    000056E8 46                    2457        LD      B,(HL)\r
-    000056E9 23                    2458        INC     HL\r
-    000056EA 7E                    2459        LD      A,(HL)\r
-    000056EB 69                    2460        LD      L,C\r
-    000056EC 60                    2461        LD      H,B\r
-    000056ED 28 53                 2462        JR      Z,?0173\r
-    000056EF                       2463 ?0172:\r
-    000056EF CD FB 81              2464        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    000056F2 29                    2465        ADD     HL,HL\r
-    000056F3 4D                    2466        LD      C,L\r
-    000056F4 44                    2467        LD      B,H\r
-    000056F5 FD 6E 08              2468        LD      L,(IY+8)\r
-    000056F8 FD 66 09              2469        LD      H,(IY+9)\r
-    000056FB A7                    2470        AND     A\r
-    000056FC ED 42                 2471        SBC     HL,BC\r
-    000056FE CD 6F 57              2472        CALL    LWRD ?0480\r
-    00005701 0E 0C                 2473        LD      C,12\r
-    00005703 09                    2474        ADD     HL,BC\r
-    00005704 E5                    2475        PUSH    HL\r
-    00005705 FD 5E 20              2476        LD      E,(IY+32)\r
-    00005708 FD 56 21              2477        LD      D,(IY+33)\r
-    0000570B 21 0A 00              2478        LD      HL,10\r
-    0000570E ED 4B 3F 87           2479        LD      BC,(global)\r
-    00005712 09                    2480        ADD     HL,BC\r
-    00005713 7E                    2481        LD      A,(HL)\r
-    00005714 23                    2482        INC     HL\r
-    00005715 66                    2483        LD      H,(HL)\r
-    00005716 6F                    2484        LD      L,A\r
-    00005717 CD 2F 4A              2485        CALL    LWRD ?0442\r
-    0000571A C1                    2486        POP     BC\r
-    0000571B CD 54 55              2487        CALL    LWRD ?0460\r
-    0000571E FD 5E 08              2488        LD      E,(IY+8)\r
-    00005721 FD 56 09              2489        LD      D,(IY+9)\r
-    00005724 CD 70 57              2490        CALL    LWRD ?0481\r
-    00005727 0E 0A                 2491        LD      C,10\r
-    00005729 09                    2492        ADD     HL,BC\r
-    0000572A E5                    2493        PUSH    HL\r
-    0000572B FD 5E 22              2494        LD      E,(IY+34)\r
-    0000572E FD 56 23              2495        LD      D,(IY+35)\r
-    00005731 69                    2496        LD      L,C\r
-    00005732 60                    2497        LD      H,B\r
-    00005733 CD 26 4A              2498        CALL    LWRD ?0443\r
-    00005736 C1                    2499        POP     BC\r
-    00005737 CD FB 81              2500        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    0000573A FD 5E 22              2501        LD      E,(IY+34)\r
-    0000573D FD 56 23              2502        LD      D,(IY+35)\r
-    00005740 18 20                 2503        JR      ?0350\r
-    00005742                       2504 ?0173:\r
-    00005742 CD 5B 4A              2505        CALL    LWRD ?0444\r
-    00005745 CD 6F 57              2506        CALL    LWRD ?0480\r
-    00005748 0E 0D                 2507        LD      C,13\r
-    0000574A 09                    2508        ADD     HL,BC\r
-    0000574B E5                    2509        PUSH    HL\r
-    0000574C FD 5E 20              2510        LD      E,(IY+32)\r
-    0000574F FD 56 21              2511        LD      D,(IY+33)\r
-    00005752 21 0A 00              2512        LD      HL,10\r
-    00005755 CD 26 4A              2513        CALL    LWRD ?0443\r
-    00005758 C1                    2514        POP     BC\r
-    00005759 CD FB 81              2515        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    0000575C FD 5E 20              2516        LD      E,(IY+32)\r
-    0000575F FD 56 21              2517        LD      D,(IY+33)\r
-    00005762                       2518 ?0350:\r
-    00005762 3E 00                 2519        LD      A,BYTE3 Text\r
-    00005764 21 81 48              2520        LD      HL,LWRD Text\r
-    00005767                       2521 ?0424:\r
-    00005767 CD FB 81              2522        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    0000576A                       2523 ?0174:\r
-    0000576A FD E1                 2524        POP     IY\r
-    0000576C C3 A3 81              2525        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
-    0000576F                       2526 ?0480:\r
-    0000576F EB                    2527        EX      DE,HL\r
-    00005770                       2528 ?0481:\r
-    00005770 01 02 00              2529        LD      BC,2\r
-    00005773 CD EB 82              2530        CALL    LWRD ?SS_DIV_L02\r
-    00005776 DD 6E 0A              2531        LD      L,(IX+10)\r
-    00005779 DD 66 0B              2532        LD      H,(IX+11)\r
-    0000577C 19                    2533        ADD     HL,DE\r
-    0000577D C9                    2534        RET\r
-    0000577E                       2535 Button_paint:\r
-    0000577E C5                    2536        PUSH    BC\r
-    0000577F DD E5                 2537        PUSH    IX\r
-    00005781 F5                    2538        PUSH    AF\r
-    00005782 F5                    2539        PUSH    AF\r
-    00005783 D5                    2540        PUSH    DE\r
-    00005784 DD E1                 2541        POP     IX\r
-    00005786 21 02 00              2542        LD      HL,2\r
-    00005789 39                    2543        ADD     HL,SP\r
-    0000578A AF                    2544        XOR     A\r
-    0000578B 77                    2545        LD      (HL),A\r
-    0000578C 23                    2546        INC     HL\r
-    0000578D 77                    2547        LD      (HL),A\r
-    0000578E 2B                    2548        DEC     HL\r
-    0000578F 2B                    2549        DEC     HL\r
-    00005790 2B                    2550        DEC     HL\r
-    00005791 77                    2551        LD      (HL),A\r
-    00005792 23                    2552        INC     HL\r
-    00005793 77                    2553        LD      (HL),A\r
-    00005794 21 0A 00              2554        LD      HL,10\r
-    00005797 ED 4B 3F 87           2555        LD      BC,(global)\r
-    0000579B 09                    2556        ADD     HL,BC\r
-    0000579C 7E                    2557        LD      A,(HL)\r
-    0000579D 23                    2558        INC     HL\r
-    0000579E 66                    2559        LD      H,(HL)\r
-    0000579F 6F                    2560        LD      L,A\r
-    000057A0 46                    2561        LD      B,(HL)\r
-    000057A1 23                    2562        INC     HL\r
-    000057A2 66                    2563        LD      H,(HL)\r
-    000057A3 68                    2564        LD      L,B\r
-    000057A4 E5                    2565        PUSH    HL\r
-    000057A5 21 0E 00              2566        LD      HL,14\r
-    000057A8 19                    2567        ADD     HL,DE\r
-    000057A9 4E                    2568        LD      C,(HL)\r
-    000057AA 23                    2569        INC     HL\r
-    000057AB 46                    2570        LD      B,(HL)\r
-    000057AC E1                    2571        POP     HL\r
-    000057AD A7                    2572        AND     A\r
-    000057AE ED 42                 2573        SBC     HL,BC\r
-    000057B0 28 03                 2574        JR      Z,?0176\r
-    000057B2                       2575 ?0175:\r
-    000057B2 CD 66 55              2576        CALL    LWRD ?0473\r
-    000057B5                       2577 ?0176:\r
-    000057B5 DD CB 0A 46           2578        BIT     0,(IX+10)\r
-    000057B9 CA 4E 58              2579        JP      Z,?0178\r
-    000057BC                       2580 ?0177:\r
-    000057BC 21 00 00              2581        LD      HL,0\r
-    000057BF 39                    2582        ADD     HL,SP\r
-    000057C0 E5                    2583        PUSH    HL\r
-    000057C1 CD CD 53              2584        CALL    LWRD ?0467\r
-    000057C4 E1                    2585        POP     HL\r
-    000057C5 21 00 00              2586        LD      HL,0\r
-    000057C8 39                    2587        ADD     HL,SP\r
-    000057C9 CD 56 58              2588        CALL    LWRD ?0457\r
-    000057CC CD FB 81              2589        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    000057CF DD 6E 08              2590        LD      L,(IX+8)\r
-    000057D2 DD 66 09              2591        LD      H,(IX+9)\r
-    000057D5 E5                    2592        PUSH    HL\r
-    000057D6 DD 6E 06              2593        LD      L,(IX+6)\r
-    000057D9 DD 66 07              2594        LD      H,(IX+7)\r
-    000057DC E5                    2595        PUSH    HL\r
-    000057DD 21 04 00              2596        LD      HL,4\r
-    000057E0 39                    2597        ADD     HL,SP\r
-    000057E1 4E                    2598        LD      C,(HL)\r
-    000057E2 23                    2599        INC     HL\r
-    000057E3 46                    2600        LD      B,(HL)\r
-    000057E4 C5                    2601        PUSH    BC\r
-    000057E5 23                    2602        INC     HL\r
-    000057E6 4E                    2603        LD      C,(HL)\r
-    000057E7 23                    2604        INC     HL\r
-    000057E8 46                    2605        LD      B,(HL)\r
-    000057E9 DD CB 0A 4E           2606        BIT     1,(IX+10)\r
-    000057ED 28 07                 2607        JR      Z,?0180\r
-    000057EF DD 5E 10              2608        LD      E,(IX+16)\r
-    000057F2 16 00                 2609        LD      D,0\r
-    000057F4 18 03                 2610        JR      ?0181\r
-    000057F6                       2611 ?0180:\r
-    000057F6 11 00 00              2612        LD      DE,0\r
-    000057F9                       2613 ?0181:\r
-    000057F9 CD 3A 49              2614        CALL    LWRD ?0471\r
-    000057FC E1                    2615        POP     HL\r
-    000057FD E1                    2616        POP     HL\r
-    000057FE E1                    2617        POP     HL\r
-    000057FF DD 7E 0A              2618        LD      A,(IX+10)\r
-    00005802 E6 82                 2619        AND     130\r
-    00005804 28 1C                 2620        JR      Z,?0183\r
-    00005806 DD 7E 0A              2621        LD      A,(IX+10)\r
-    00005809 E6 82                 2622        AND     130\r
-    0000580B EE 82                 2623        XOR     130\r
-    0000580D 28 13                 2624        JR      Z,?0183\r
-    0000580F                       2625 ?0185:\r
-    0000580F                       2626 ?0184:\r
-    0000580F                       2627 ?0182:\r
-    0000580F DD 4E 08              2628        LD      C,(IX+8)\r
-    00005812 DD 46 09              2629        LD      B,(IX+9)\r
-    00005815 DD 5E 06              2630        LD      E,(IX+6)\r
-    00005818 DD 56 07              2631        LD      D,(IX+7)\r
-    0000581B 3E 00                 2632        LD      A,BYTE3 FillRectNC\r
-    0000581D 21 F7 47              2633        LD      HL,LWRD FillRectNC\r
-    00005820 18 11                 2634        JR      ?0353\r
-    00005822                       2635 ?0183:\r
-    00005822 DD 4E 08              2636        LD      C,(IX+8)\r
-    00005825 DD 46 09              2637        LD      B,(IX+9)\r
-    00005828 DD 5E 06              2638        LD      E,(IX+6)\r
-    0000582B DD 56 07              2639        LD      D,(IX+7)\r
-    0000582E 3E 00                 2640        LD      A,BYTE3 DrawRectNC\r
-    00005830 21 6D 47              2641        LD      HL,LWRD DrawRectNC\r
-    00005833                       2642 ?0353:\r
-    00005833 CD FB 81              2643        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    00005836                       2644 ?0186:\r
-    00005836 21 00 00              2645        LD      HL,0\r
-    00005839 39                    2646        ADD     HL,SP\r
-    0000583A 4E                    2647        LD      C,(HL)\r
-    0000583B 23                    2648        INC     HL\r
-    0000583C 46                    2649        LD      B,(HL)\r
-    0000583D C5                    2650        PUSH    BC\r
-    0000583E 23                    2651        INC     HL\r
-    0000583F 4E                    2652        LD      C,(HL)\r
-    00005840 23                    2653        INC     HL\r
-    00005841 46                    2654        LD      B,(HL)\r
-    00005842 DD E5                 2655        PUSH    IX\r
-    00005844 D1                    2656        POP     DE\r
-    00005845 3E 00                 2657        LD      A,BYTE3 Button_drawtext\r
-    00005847 21 C2 56              2658        LD      HL,LWRD Button_drawtext\r
-    0000584A CD FB 81              2659        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    0000584D E1                    2660        POP     HL\r
-    0000584E                       2661 ?0178:\r
-    0000584E E1                    2662        POP     HL\r
-    0000584F E1                    2663        POP     HL\r
-    00005850 DD E1                 2664        POP     IX\r
-    00005852 C1                    2665        POP     BC\r
-    00005853 C3 A9 81              2666        JP      LWRD ?BANK_FAST_LEAVE_L08\r
-    00005856                       2667 ?0457:\r
-    00005856 4E                    2668        LD      C,(HL)\r
-    00005857 23                    2669        INC     HL\r
-    00005858 46                    2670        LD      B,(HL)\r
-    00005859 23                    2671        INC     HL\r
-    0000585A                       2672 ?0458:\r
-    0000585A 5E                    2673        LD      E,(HL)\r
-    0000585B 23                    2674        INC     HL\r
-    0000585C 56                    2675        LD      D,(HL)\r
-    0000585D 3E 00                 2676        LD      A,BYTE3 Move\r
-    0000585F 21 EB 46              2677        LD      HL,LWRD Move\r
-    00005862 CD FB 81              2678        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    00005865 DD 4E 08              2679        LD      C,(IX+8)\r
-    00005868 DD 46 09              2680        LD      B,(IX+9)\r
-    0000586B DD 5E 06              2681        LD      E,(IX+6)\r
-    0000586E DD 56 07              2682        LD      D,(IX+7)\r
-    00005871 3E 00                 2683        LD      A,BYTE3 ClearRect\r
-    00005873 21 2A 47              2684        LD      HL,LWRD ClearRect\r
-    00005876 C9                    2685        RET\r
-    00005877                       2686 Button_add:\r
-    00005877 CD EF 81              2687        CALL    LWRD ?ENT_PARM_DIRECT_L09\r
-    0000587A C3 A3 81              2688        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
-    0000587D                       2689 Button_new:\r
-    0000587D CD 7A 82              2690        CALL    LWRD ?ENT_AUTO_DIRECT_L09\r
-    00005880 00 00                 2691        DEFW    0\r
-    00005882 FD E5                 2692        PUSH    IY\r
-    00005884 DD 6E 0C              2693        LD      L,(IX+12)\r
-    00005887 DD 66 0D              2694        LD      H,(IX+13)\r
-    0000588A E5                    2695        PUSH    HL\r
-    0000588B DD 6E 0A              2696        LD      L,(IX+10)\r
-    0000588E DD 66 0B              2697        LD      H,(IX+11)\r
-    00005891 E5                    2698        PUSH    HL\r
-    00005892 CD FD 55              2699        CALL    LWRD ?0438\r
-    00005895 F1                    2700        POP     AF\r
-    00005896 F1                    2701        POP     AF\r
-    00005897 E5                    2702        PUSH    HL\r
-    00005898 FD E1                 2703        POP     IY\r
-    0000589A 01 0A 00              2704        LD      BC,10\r
-    0000589D 09                    2705        ADD     HL,BC\r
-    0000589E 7E                    2706        LD      A,(HL)\r
-    0000589F F6 03                 2707        OR      3\r
-    000058A1 77                    2708        LD      (HL),A\r
-    000058A2 DD 46 0E              2709        LD      B,(IX+14)\r
-    000058A5 FD 70 10              2710        LD      (IY+16),B\r
-    000058A8 FD 36 17 0B           2711        LD      (IY+23),LOW(Button_handler)\r
-    000058AC FD 36 18 56           2712        LD      (IY+24),HIGH(Button_handler)\r
-    000058B0 FD 36 19 00           2713        LD      (IY+25),BYTE3 Button_handler\r
-    000058B4 FD 36 1A 7E           2714        LD      (IY+26),LOW(Button_paint)\r
-    000058B8 FD 36 1B 57           2715        LD      (IY+27),HIGH(Button_paint)\r
-    000058BC FD 36 1C 00           2716        LD      (IY+28),BYTE3 Button_paint\r
-    000058C0 FD 36 1D 77           2717        LD      (IY+29),LOW(Button_add)\r
-    000058C4 FD 36 1E 58           2718        LD      (IY+30),HIGH(Button_add)\r
-    000058C8 FD 36 1F 00           2719        LD      (IY+31),BYTE3 Button_add\r
-    000058CC C3 99 4C              2720        JP      LWRD ?0418\r
-    000058CF                       2721 ToggleButton_handler:\r
-    000058CF CD EF 81              2722        CALL    LWRD ?ENT_PARM_DIRECT_L09\r
-    000058D2 FD E5                 2723        PUSH    IY\r
-    000058D4 D5                    2724        PUSH    DE\r
-    000058D5 FD E1                 2725        POP     IY\r
-    000058D7 DD 6E 0A              2726        LD      L,(IX+10)\r
-    000058DA DD 66 0B              2727        LD      H,(IX+11)\r
-    000058DD E5                    2728        PUSH    HL\r
-    000058DE 3E 00                 2729        LD      A,BYTE3 Window_handler\r
-    000058E0 21 1A 51              2730        LD      HL,LWRD Window_handler\r
-    000058E3 CD FB 81              2731        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    000058E6 E1                    2732        POP     HL\r
-    000058E7 3E 03                 2733        LD      A,3\r
-    000058E9 DD AE 04              2734        XOR     (IX+4)\r
-    000058EC DD B6 05              2735        OR      (IX+5)\r
-    000058EF 20 5C                 2736        JR      NZ,?0192\r
-    000058F1 FD 4E 10              2737        LD      C,(IY+16)\r
-    000058F4 47                    2738        LD      B,A\r
-    000058F5 DD 6E 0A              2739        LD      L,(IX+10)\r
-    000058F8 DD 66 0B              2740        LD      H,(IX+11)\r
-    000058FB ED 42                 2741        SBC     HL,BC\r
-    000058FD 20 4E                 2742        JR      NZ,?0192\r
-    000058FF FD 7E 0A              2743        LD      A,(IY+10)\r
-    00005902 E6 03                 2744        AND     3\r
-    00005904 28 47                 2745        JR      Z,?0192\r
-    00005906                       2746 ?0190:\r
-    00005906                       2747 ?0189:\r
-    00005906                       2748 ?0187:\r
-    00005906 FD 7E 0A              2749        LD      A,(IY+10)\r
-    00005909 EE 04                 2750        XOR     4\r
-    0000590B FD 77 0A              2751        LD      (IY+10),A\r
-    0000590E DD 6E 0A              2752        LD      L,(IX+10)\r
-    00005911 DD 66 0B              2753        LD      H,(IX+11)\r
-    00005914 E5                    2754        PUSH    HL\r
-    00005915 FD 5E 11              2755        LD      E,(IY+17)\r
-    00005918 FD 56 12              2756        LD      D,(IY+18)\r
-    0000591B FD 6E 11              2757        LD      L,(IY+17)\r
-    0000591E FD 66 12              2758        LD      H,(IY+18)\r
-    00005921 0E 17                 2759        LD      C,23\r
-    00005923 09                    2760        ADD     HL,BC\r
-    00005924 4E                    2761        LD      C,(HL)\r
-    00005925 23                    2762        INC     HL\r
-    00005926 46                    2763        LD      B,(HL)\r
-    00005927 23                    2764        INC     HL\r
-    00005928 7E                    2765        LD      A,(HL)\r
-    00005929 69                    2766        LD      L,C\r
-    0000592A 60                    2767        LD      H,B\r
-    0000592B 01 02 02              2768        LD      BC,514\r
-    0000592E CD FB 81              2769        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    00005931 E1                    2770        POP     HL\r
-    00005932 21 00 00              2771        LD      HL,0\r
-    00005935 E5                    2772        PUSH    HL\r
-    00005936 01 03 01              2773        LD      BC,259\r
-    00005939 CD BE 53              2774        CALL    LWRD ?0463\r
-    0000593C E1                    2775        POP     HL\r
-    0000593D FD CB 0A 66           2776        BIT     4,(IY+10)\r
-    00005941 28 0A                 2777        JR      Z,?0192\r
-    00005943                       2778 ?0191:\r
-    00005943 FD 4E 10              2779        LD      C,(IY+16)\r
-    00005946 06 00                 2780        LD      B,0\r
-    00005948 C5                    2781        PUSH    BC\r
-    00005949 CD A6 56              2782        CALL    LWRD ?0469\r
-    0000594C E1                    2783        POP     HL\r
-    0000594D                       2784 ?0192:\r
-    0000594D                       2785 ?0188:\r
-    0000594D 21 01 02              2786        LD      HL,513\r
-    00005950 DD 4E 04              2787        LD      C,(IX+4)\r
-    00005953 DD 46 05              2788        LD      B,(IX+5)\r
-    00005956 A7                    2789        AND     A\r
-    00005957 ED 42                 2790        SBC     HL,BC\r
-    00005959 20 0B                 2791        JR      NZ,?0194\r
-    0000595B                       2792 ?0193:\r
-    0000595B DD 6E 0A              2793        LD      L,(IX+10)\r
-    0000595E DD 66 0B              2794        LD      H,(IX+11)\r
-    00005961 E5                    2795        PUSH    HL\r
-    00005962 CD 89 56              2796        CALL    LWRD ?0465\r
-    00005965 E1                    2797        POP     HL\r
-    00005966                       2798 ?0194:\r
-    00005966 FD E1                 2799        POP     IY\r
-    00005968 C3 A3 81              2800        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
-    0000596B                       2801 ToggleButton_paint:\r
-    0000596B C5                    2802        PUSH    BC\r
-    0000596C DD E5                 2803        PUSH    IX\r
-    0000596E F5                    2804        PUSH    AF\r
-    0000596F F5                    2805        PUSH    AF\r
-    00005970 D5                    2806        PUSH    DE\r
-    00005971 DD E1                 2807        POP     IX\r
-    00005973 21 02 00              2808        LD      HL,2\r
-    00005976 39                    2809        ADD     HL,SP\r
-    00005977 AF                    2810        XOR     A\r
-    00005978 77                    2811        LD      (HL),A\r
-    00005979 23                    2812        INC     HL\r
-    0000597A 77                    2813        LD      (HL),A\r
-    0000597B 2B                    2814        DEC     HL\r
-    0000597C 2B                    2815        DEC     HL\r
-    0000597D 2B                    2816        DEC     HL\r
-    0000597E 77                    2817        LD      (HL),A\r
-    0000597F 23                    2818        INC     HL\r
-    00005980 77                    2819        LD      (HL),A\r
-    00005981 21 0A 00              2820        LD      HL,10\r
-    00005984 ED 4B 3F 87           2821        LD      BC,(global)\r
-    00005988 09                    2822        ADD     HL,BC\r
-    00005989 7E                    2823        LD      A,(HL)\r
-    0000598A 23                    2824        INC     HL\r
-    0000598B 66                    2825        LD      H,(HL)\r
-    0000598C 6F                    2826        LD      L,A\r
-    0000598D 46                    2827        LD      B,(HL)\r
-    0000598E 23                    2828        INC     HL\r
-    0000598F 66                    2829        LD      H,(HL)\r
-    00005990 68                    2830        LD      L,B\r
-    00005991 E5                    2831        PUSH    HL\r
-    00005992 21 0E 00              2832        LD      HL,14\r
-    00005995 19                    2833        ADD     HL,DE\r
-    00005996 4E                    2834        LD      C,(HL)\r
-    00005997 23                    2835        INC     HL\r
-    00005998 46                    2836        LD      B,(HL)\r
-    00005999 E1                    2837        POP     HL\r
-    0000599A A7                    2838        AND     A\r
-    0000599B ED 42                 2839        SBC     HL,BC\r
-    0000599D 28 03                 2840        JR      Z,?0196\r
-    0000599F                       2841 ?0195:\r
-    0000599F CD 66 55              2842        CALL    LWRD ?0473\r
-    000059A2                       2843 ?0196:\r
-    000059A2 DD CB 0A 46           2844        BIT     0,(IX+10)\r
-    000059A6 CA 54 5A              2845        JP      Z,?0198\r
-    000059A9                       2846 ?0197:\r
-    000059A9 21 00 00              2847        LD      HL,0\r
-    000059AC 39                    2848        ADD     HL,SP\r
-    000059AD E5                    2849        PUSH    HL\r
-    000059AE CD CD 53              2850        CALL    LWRD ?0467\r
-    000059B1 E1                    2851        POP     HL\r
-    000059B2 21 00 00              2852        LD      HL,0\r
-    000059B5 39                    2853        ADD     HL,SP\r
-    000059B6 CD 56 58              2854        CALL    LWRD ?0457\r
-    000059B9 CD FB 81              2855        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    000059BC DD CB 0A 4E           2856        BIT     1,(IX+10)\r
-    000059C0 28 36                 2857        JR      Z,?0200\r
-    000059C2 DD CB 0A 56           2858        BIT     2,(IX+10)\r
-    000059C6 28 30                 2859        JR      Z,?0200\r
-    000059C8                       2860 ?0202:\r
-    000059C8                       2861 ?0201:\r
-    000059C8                       2862 ?0199:\r
-    000059C8 DD 4E 08              2863        LD      C,(IX+8)\r
-    000059CB DD 46 09              2864        LD      B,(IX+9)\r
-    000059CE DD 5E 06              2865        LD      E,(IX+6)\r
-    000059D1 DD 56 07              2866        LD      D,(IX+7)\r
-    000059D4 3E 00                 2867        LD      A,BYTE3 FillRectNC\r
-    000059D6 21 F7 47              2868        LD      HL,LWRD FillRectNC\r
-    000059D9 CD FB 81              2869        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    000059DC DD 6E 08              2870        LD      L,(IX+8)\r
-    000059DF DD 66 09              2871        LD      H,(IX+9)\r
-    000059E2 E5                    2872        PUSH    HL\r
-    000059E3 DD 6E 06              2873        LD      L,(IX+6)\r
-    000059E6 DD 66 07              2874        LD      H,(IX+7)\r
-    000059E9 E5                    2875        PUSH    HL\r
-    000059EA 21 04 00              2876        LD      HL,4\r
-    000059ED 39                    2877        ADD     HL,SP\r
-    000059EE 4E                    2878        LD      C,(HL)\r
-    000059EF 23                    2879        INC     HL\r
-    000059F0 46                    2880        LD      B,(HL)\r
-    000059F1 C5                    2881        PUSH    BC\r
-    000059F2 23                    2882        INC     HL\r
-    000059F3 4E                    2883        LD      C,(HL)\r
-    000059F4 23                    2884        INC     HL\r
-    000059F5 46                    2885        LD      B,(HL)\r
-    000059F6 18 34                 2886        JR      ?0357\r
-    000059F8                       2887 ?0200:\r
-    000059F8 DD 4E 08              2888        LD      C,(IX+8)\r
-    000059FB DD 46 09              2889        LD      B,(IX+9)\r
-    000059FE DD 5E 06              2890        LD      E,(IX+6)\r
-    00005A01 DD 56 07              2891        LD      D,(IX+7)\r
-    00005A04 3E 00                 2892        LD      A,BYTE3 DrawRectNC\r
-    00005A06 21 6D 47              2893        LD      HL,LWRD DrawRectNC\r
-    00005A09 CD FB 81              2894        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    00005A0C DD 6E 08              2895        LD      L,(IX+8)\r
-    00005A0F DD 66 09              2896        LD      H,(IX+9)\r
-    00005A12 E5                    2897        PUSH    HL\r
-    00005A13 DD 6E 06              2898        LD      L,(IX+6)\r
-    00005A16 DD 66 07              2899        LD      H,(IX+7)\r
-    00005A19 E5                    2900        PUSH    HL\r
-    00005A1A 21 04 00              2901        LD      HL,4\r
-    00005A1D 39                    2902        ADD     HL,SP\r
-    00005A1E 4E                    2903        LD      C,(HL)\r
-    00005A1F 23                    2904        INC     HL\r
-    00005A20 46                    2905        LD      B,(HL)\r
-    00005A21 C5                    2906        PUSH    BC\r
-    00005A22 23                    2907        INC     HL\r
-    00005A23 4E                    2908        LD      C,(HL)\r
-    00005A24 23                    2909        INC     HL\r
-    00005A25 46                    2910        LD      B,(HL)\r
-    00005A26 DD CB 0A 4E           2911        BIT     1,(IX+10)\r
-    00005A2A 28 07                 2912        JR      Z,?0205\r
-    00005A2C                       2913 ?0357:\r
-    00005A2C DD 5E 10              2914        LD      E,(IX+16)\r
-    00005A2F 16 00                 2915        LD      D,0\r
-    00005A31 18 03                 2916        JR      ?0206\r
-    00005A33                       2917 ?0205:\r
-    00005A33 11 00 00              2918        LD      DE,0\r
-    00005A36                       2919 ?0206:\r
-    00005A36 CD 3A 49              2920        CALL    LWRD ?0471\r
-    00005A39 E1                    2921        POP     HL\r
-    00005A3A E1                    2922        POP     HL\r
-    00005A3B E1                    2923        POP     HL\r
-    00005A3C                       2924 ?0203:\r
-    00005A3C 21 00 00              2925        LD      HL,0\r
-    00005A3F 39                    2926        ADD     HL,SP\r
-    00005A40 4E                    2927        LD      C,(HL)\r
-    00005A41 23                    2928        INC     HL\r
-    00005A42 46                    2929        LD      B,(HL)\r
-    00005A43 C5                    2930        PUSH    BC\r
-    00005A44 23                    2931        INC     HL\r
-    00005A45 4E                    2932        LD      C,(HL)\r
-    00005A46 23                    2933        INC     HL\r
-    00005A47 46                    2934        LD      B,(HL)\r
-    00005A48 DD E5                 2935        PUSH    IX\r
-    00005A4A D1                    2936        POP     DE\r
-    00005A4B 3E 00                 2937        LD      A,BYTE3 Button_drawtext\r
-    00005A4D 21 C2 56              2938        LD      HL,LWRD Button_drawtext\r
-    00005A50 CD FB 81              2939        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    00005A53 E1                    2940        POP     HL\r
-    00005A54                       2941 ?0198:\r
-    00005A54 C3 4E 58              2942        JP      LWRD ?0178\r
-    00005A57                       2943 ToggleButton_new:\r
-    00005A57 CD 7A 82              2944        CALL    LWRD ?ENT_AUTO_DIRECT_L09\r
-    00005A5A 00 00                 2945        DEFW    0\r
-    00005A5C FD E5                 2946        PUSH    IY\r
-    00005A5E DD 6E 0C              2947        LD      L,(IX+12)\r
-    00005A61 DD 66 0D              2948        LD      H,(IX+13)\r
-    00005A64 E5                    2949        PUSH    HL\r
-    00005A65 DD 6E 0A              2950        LD      L,(IX+10)\r
-    00005A68 DD 66 0B              2951        LD      H,(IX+11)\r
-    00005A6B E5                    2952        PUSH    HL\r
-    00005A6C CD FD 55              2953        CALL    LWRD ?0438\r
-    00005A6F F1                    2954        POP     AF\r
-    00005A70 F1                    2955        POP     AF\r
-    00005A71 E5                    2956        PUSH    HL\r
-    00005A72 FD E1                 2957        POP     IY\r
-    00005A74 01 0A 00              2958        LD      BC,10\r
-    00005A77 09                    2959        ADD     HL,BC\r
-    00005A78 7E                    2960        LD      A,(HL)\r
-    00005A79 F6 07                 2961        OR      7\r
-    00005A7B 77                    2962        LD      (HL),A\r
-    00005A7C DD 46 0E              2963        LD      B,(IX+14)\r
-    00005A7F FD 70 10              2964        LD      (IY+16),B\r
-    00005A82 FD 36 17 CF           2965        LD      (IY+23),LOW(ToggleButton_handler)\r
-    00005A86 FD 36 18 58           2966        LD      (IY+24),HIGH(ToggleButton_handler)\r
-    00005A8A FD 36 19 00           2967        LD      (IY+25),BYTE3 ToggleButton_handler\r
-    00005A8E FD 36 1A 6B           2968        LD      (IY+26),LOW(ToggleButton_paint)\r
-    00005A92 FD 36 1B 59           2969        LD      (IY+27),HIGH(ToggleButton_paint)\r
-    00005A96 FD 36 1C 00           2970        LD      (IY+28),BYTE3 ToggleButton_paint\r
-    00005A9A FD 36 1D 77           2971        LD      (IY+29),LOW(Button_add)\r
-    00005A9E FD 36 1E 58           2972        LD      (IY+30),HIGH(Button_add)\r
-    00005AA2 FD 36 1F 00           2973        LD      (IY+31),BYTE3 Button_add\r
-    00005AA6 C3 99 4C              2974        JP      LWRD ?0418\r
-    00005AA9                       2975 Dialog_handler:\r
-    00005AA9 CD EF 81              2976        CALL    LWRD ?ENT_PARM_DIRECT_L09\r
-    00005AAC FD E5                 2977        PUSH    IY\r
-    00005AAE D5                    2978        PUSH    DE\r
-    00005AAF FD E1                 2979        POP     IY\r
-    00005AB1 DD 6E 0A              2980        LD      L,(IX+10)\r
-    00005AB4 DD 66 0B              2981        LD      H,(IX+11)\r
-    00005AB7 E5                    2982        PUSH    HL\r
-    00005AB8 3E 00                 2983        LD      A,BYTE3 Window_handler\r
-    00005ABA 21 1A 51              2984        LD      HL,LWRD Window_handler\r
-    00005ABD CD FB 81              2985        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    00005AC0 E1                    2986        POP     HL\r
-    00005AC1 21 01 02              2987        LD      HL,513\r
-    00005AC4 DD 4E 04              2988        LD      C,(IX+4)\r
-    00005AC7 DD 46 05              2989        LD      B,(IX+5)\r
-    00005ACA A7                    2990        AND     A\r
-    00005ACB ED 42                 2991        SBC     HL,BC\r
-    00005ACD 20 40                 2992        JR      NZ,?0208\r
-    00005ACF 3E FF                 2993        LD      A,255\r
-    00005AD1 DD AE 0A              2994        XOR     (IX+10)\r
-    00005AD4 DD B6 0B              2995        OR      (IX+11)\r
-    00005AD7 20 36                 2996        JR      NZ,?0208\r
-    00005AD9                       2997 ?0210:\r
-    00005AD9                       2998 ?0209:\r
-    00005AD9                       2999 ?0207:\r
-    00005AD9 FD CB 0B 66           3000        BIT     4,(IY+11)\r
-    00005ADD E5                    3001        PUSH    HL\r
-    00005ADE 28 05                 3002        JR      Z,?0212\r
-    00005AE0                       3003 ?0211:\r
-    00005AE0 01 05 01              3004        LD      BC,261\r
-    00005AE3 18 03                 3005        JR      ?0358\r
-    00005AE5                       3006 ?0212:\r
-    00005AE5 01 02 01              3007        LD      BC,258\r
-    00005AE8                       3008 ?0358:\r
-    00005AE8 CD BE 53              3009        CALL    LWRD ?0463\r
-    00005AEB E1                    3010        POP     HL\r
-    00005AEC                       3011 ?0213:\r
-    00005AEC FD 4E 10              3012        LD      C,(IY+16)\r
-    00005AEF 06 00                 3013        LD      B,0\r
-    00005AF1 C5                    3014        PUSH    BC\r
-    00005AF2 FD 5E 11              3015        LD      E,(IY+17)\r
-    00005AF5 FD 56 12              3016        LD      D,(IY+18)\r
-    00005AF8 FD 6E 11              3017        LD      L,(IY+17)\r
-    00005AFB FD 66 12              3018        LD      H,(IY+18)\r
-    00005AFE 0E 17                 3019        LD      C,23\r
-    00005B00 09                    3020        ADD     HL,BC\r
-    00005B01 4E                    3021        LD      C,(HL)\r
-    00005B02 23                    3022        INC     HL\r
-    00005B03 46                    3023        LD      B,(HL)\r
-    00005B04 23                    3024        INC     HL\r
-    00005B05 7E                    3025        LD      A,(HL)\r
-    00005B06 69                    3026        LD      L,C\r
-    00005B07 60                    3027        LD      H,B\r
-    00005B08 01 01 03              3028        LD      BC,769\r
-    00005B0B CD FB 81              3029        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    00005B0E E1                    3030        POP     HL\r
-    00005B0F                       3031 ?0208:\r
-    00005B0F 21 01 02              3032        LD      HL,513\r
-    00005B12 DD 4E 04              3033        LD      C,(IX+4)\r
-    00005B15 DD 46 05              3034        LD      B,(IX+5)\r
-    00005B18 A7                    3035        AND     A\r
-    00005B19 ED 42                 3036        SBC     HL,BC\r
-    00005B1B 20 40                 3037        JR      NZ,?0215\r
-    00005B1D 3E FE                 3038        LD      A,254\r
-    00005B1F DD AE 0A              3039        XOR     (IX+10)\r
-    00005B22 DD B6 0B              3040        OR      (IX+11)\r
-    00005B25 20 36                 3041        JR      NZ,?0215\r
-    00005B27                       3042 ?0217:\r
-    00005B27                       3043 ?0216:\r
-    00005B27                       3044 ?0214:\r
-    00005B27 FD CB 0B 66           3045        BIT     4,(IY+11)\r
-    00005B2B E5                    3046        PUSH    HL\r
-    00005B2C 28 05                 3047        JR      Z,?0219\r
-    00005B2E                       3048 ?0218:\r
-    00005B2E 01 05 01              3049        LD      BC,261\r
-    00005B31 18 03                 3050        JR      ?0359\r
-    00005B33                       3051 ?0219:\r
-    00005B33 01 02 01              3052        LD      BC,258\r
-    00005B36                       3053 ?0359:\r
-    00005B36 CD BE 53              3054        CALL    LWRD ?0463\r
-    00005B39 E1                    3055        POP     HL\r
-    00005B3A                       3056 ?0220:\r
-    00005B3A FD 4E 10              3057        LD      C,(IY+16)\r
-    00005B3D 06 00                 3058        LD      B,0\r
-    00005B3F C5                    3059        PUSH    BC\r
-    00005B40 FD 5E 11              3060        LD      E,(IY+17)\r
-    00005B43 FD 56 12              3061        LD      D,(IY+18)\r
-    00005B46 FD 6E 11              3062        LD      L,(IY+17)\r
-    00005B49 FD 66 12              3063        LD      H,(IY+18)\r
-    00005B4C 0E 17                 3064        LD      C,23\r
-    00005B4E 09                    3065        ADD     HL,BC\r
-    00005B4F 4E                    3066        LD      C,(HL)\r
-    00005B50 23                    3067        INC     HL\r
-    00005B51 46                    3068        LD      B,(HL)\r
-    00005B52 23                    3069        INC     HL\r
-    00005B53 7E                    3070        LD      A,(HL)\r
-    00005B54 69                    3071        LD      L,C\r
-    00005B55 60                    3072        LD      H,B\r
-    00005B56 01 02 03              3073        LD      BC,770\r
-    00005B59 CD FB 81              3074        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    00005B5C E1                    3075        POP     HL\r
-    00005B5D                       3076 ?0215:\r
-    00005B5D FD E1                 3077        POP     IY\r
-    00005B5F C3 A3 81              3078        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
-    00005B62                       3079 Dialog_new:\r
-    00005B62 CD 7A 82              3080        CALL    LWRD ?ENT_AUTO_DIRECT_L09\r
-    00005B65 FE FF                 3081        DEFW    -2\r
-    00005B67 FD E5                 3082        PUSH    IY\r
-    00005B69 DD 6E 0C              3083        LD      L,(IX+12)\r
-    00005B6C DD 66 0D              3084        LD      H,(IX+13)\r
-    00005B6F E5                    3085        PUSH    HL\r
-    00005B70 DD 6E 0A              3086        LD      L,(IX+10)\r
-    00005B73 DD 66 0B              3087        LD      H,(IX+11)\r
-    00005B76 E5                    3088        PUSH    HL\r
-    00005B77 CD FD 55              3089        CALL    LWRD ?0438\r
-    00005B7A F1                    3090        POP     AF\r
-    00005B7B F1                    3091        POP     AF\r
-    00005B7C E5                    3092        PUSH    HL\r
-    00005B7D FD E1                 3093        POP     IY\r
-    00005B7F 01 0A 00              3094        LD      BC,10\r
-    00005B82 09                    3095        ADD     HL,BC\r
-    00005B83 CB C6                 3096        SET     0,(HL)\r
-    00005B85 DD 46 0E              3097        LD      B,(IX+14)\r
-    00005B88 FD 70 10              3098        LD      (IY+16),B\r
-    00005B8B FD 36 17 A9           3099        LD      (IY+23),LOW(Dialog_handler)\r
-    00005B8F FD 36 18 5A           3100        LD      (IY+24),HIGH(Dialog_handler)\r
-    00005B93 FD 36 19 00           3101        LD      (IY+25),BYTE3 Dialog_handler\r
-    00005B97 FD 36 1A E7           3102        LD      (IY+26),LOW(Window_paint)\r
-    00005B9B FD 36 1B 53           3103        LD      (IY+27),HIGH(Window_paint)\r
-    00005B9F FD 36 1C 00           3104        LD      (IY+28),BYTE3 Window_paint\r
-    00005BA3 FD 36 1D AB           3105        LD      (IY+29),LOW(Window_add)\r
-    00005BA7 FD 36 1E 55           3106        LD      (IY+30),HIGH(Window_add)\r
-    00005BAB FD 36 1F 00           3107        LD      (IY+31),BYTE3 Window_add\r
-    00005BAF 21 FF 00              3108        LD      HL,255\r
-    00005BB2 E5                    3109        PUSH    HL\r
-    00005BB3 2E 14                 3110        LD      L,20\r
-    00005BB5 E5                    3111        PUSH    HL\r
-    00005BB6 2E 28                 3112        LD      L,40\r
-    00005BB8 E5                    3113        PUSH    HL\r
-    00005BB9 21 E4 FF              3114        LD      HL,65508\r
-    00005BBC CD 14 5C              3115        CALL    LWRD ?0439\r
-    00005BBF F1                    3116        POP     AF\r
-    00005BC0 F1                    3117        POP     AF\r
-    00005BC1 F1                    3118        POP     AF\r
-    00005BC2 DD 75 FE              3119        LD      (IX-2),L\r
-    00005BC5 DD 74 FF              3120        LD      (IX-1),H\r
-    00005BC8 01 20 00              3121        LD      BC,32\r
-    00005BCB 09                    3122        ADD     HL,BC\r
-    00005BCC E5                    3123        PUSH    HL\r
-    00005BCD 11 03 00              3124        LD      DE,3\r
-    00005BD0 CD 70 4A              3125        CALL    LWRD ?0450\r
-    00005BD3 E1                    3126        POP     HL\r
-    00005BD4 71                    3127        LD      (HL),C\r
-    00005BD5 23                    3128        INC     HL\r
-    00005BD6 70                    3129        LD      (HL),B\r
-    00005BD7 01 ED 84              3130        LD      BC,?0221\r
-    00005BDA CD 30 5C              3131        CALL    LWRD ?0456\r
-    00005BDD CD FB 81              3132        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    00005BE0 21 FE 00              3133        LD      HL,254\r
-    00005BE3 E5                    3134        PUSH    HL\r
-    00005BE4 2E 14                 3135        LD      L,20\r
-    00005BE6 E5                    3136        PUSH    HL\r
-    00005BE7 2E 28                 3137        LD      L,40\r
-    00005BE9 E5                    3138        PUSH    HL\r
-    00005BEA 21 C8 FF              3139        LD      HL,65480\r
-    00005BED CD 14 5C              3140        CALL    LWRD ?0439\r
-    00005BF0 F1                    3141        POP     AF\r
-    00005BF1 F1                    3142        POP     AF\r
-    00005BF2 F1                    3143        POP     AF\r
-    00005BF3 DD 75 FE              3144        LD      (IX-2),L\r
-    00005BF6 DD 74 FF              3145        LD      (IX-1),H\r
-    00005BF9 01 20 00              3146        LD      BC,32\r
-    00005BFC 09                    3147        ADD     HL,BC\r
-    00005BFD E5                    3148        PUSH    HL\r
-    00005BFE 11 07 00              3149        LD      DE,7\r
-    00005C01 CD 70 4A              3150        CALL    LWRD ?0450\r
-    00005C04 E1                    3151        POP     HL\r
-    00005C05 71                    3152        LD      (HL),C\r
-    00005C06 23                    3153        INC     HL\r
-    00005C07 70                    3154        LD      (HL),B\r
-    00005C08 01 F0 84              3155        LD      BC,?0222\r
-    00005C0B CD 30 5C              3156        CALL    LWRD ?0456\r
-    00005C0E CD FB 81              3157        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    00005C11 C3 99 4C              3158        JP      LWRD ?0418\r
-    00005C14                       3159 ?0439:\r
-    00005C14 DD 4E 0C              3160        LD      C,(IX+12)\r
-    00005C17 DD 46 0D              3161        LD      B,(IX+13)\r
-    00005C1A 09                    3162        ADD     HL,BC\r
-    00005C1B 4D                    3163        LD      C,L\r
-    00005C1C 44                    3164        LD      B,H\r
-    00005C1D 21 D0 FF              3165        LD      HL,65488\r
-    00005C20 DD 5E 0A              3166        LD      E,(IX+10)\r
-    00005C23 DD 56 0B              3167        LD      D,(IX+11)\r
-    00005C26 19                    3168        ADD     HL,DE\r
-    00005C27 EB                    3169        EX      DE,HL\r
-    00005C28                       3170 ?0440:\r
-    00005C28 3E 00                 3171        LD      A,BYTE3 Button_new\r
-    00005C2A 21 7D 58              3172        LD      HL,LWRD Button_new\r
-    00005C2D C3 FB 81              3173        JP      LWRD ?BANK_CALL_DIRECT_L08\r
-    00005C30                       3174 ?0456:\r
-    00005C30 DD 5E FE              3175        LD      E,(IX-2)\r
-    00005C33 DD 56 FF              3176        LD      D,(IX-1)\r
-    00005C36 3E 00                 3177        LD      A,BYTE3 Component_setlabel\r
-    00005C38 21 A1 4C              3178        LD      HL,LWRD Component_setlabel\r
-    00005C3B CD FB 81              3179        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    00005C3E DD 4E FE              3180        LD      C,(IX-2)\r
-    00005C41 DD 46 FF              3181        LD      B,(IX-1)\r
-    00005C44 FD E5                 3182        PUSH    IY\r
-    00005C46 D1                    3183        POP     DE\r
-    00005C47 FD 7E 1F              3184        LD      A,(IY+31)\r
-    00005C4A FD 6E 1D              3185        LD      L,(IY+29)\r
-    00005C4D FD 66 1E              3186        LD      H,(IY+30)\r
-    00005C50 C9                    3187        RET\r
-    00005C51                       3188 Display_handler:\r
-    00005C51 CD EF 81              3189        CALL    LWRD ?ENT_PARM_DIRECT_L09\r
-    00005C54 FD E5                 3190        PUSH    IY\r
-    00005C56 D5                    3191        PUSH    DE\r
-    00005C57 FD E1                 3192        POP     IY\r
-    00005C59 DD 6E 0A              3193        LD      L,(IX+10)\r
-    00005C5C DD 66 0B              3194        LD      H,(IX+11)\r
-    00005C5F E5                    3195        PUSH    HL\r
-    00005C60 3E 00                 3196        LD      A,BYTE3 Button_handler\r
-    00005C62 21 0B 56              3197        LD      HL,LWRD Button_handler\r
-    00005C65 CD FB 81              3198        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    00005C68 E1                    3199        POP     HL\r
-    00005C69 21 03 02              3200        LD      HL,515\r
-    00005C6C DD 4E 04              3201        LD      C,(IX+4)\r
-    00005C6F DD 46 05              3202        LD      B,(IX+5)\r
-    00005C72 A7                    3203        AND     A\r
-    00005C73 ED 42                 3204        SBC     HL,BC\r
-    00005C75 20 40                 3205        JR      NZ,?0224\r
-    00005C77 FD CB 0A 5E           3206        BIT     3,(IY+10)\r
-    00005C7B 28 3A                 3207        JR      Z,?0224\r
-    00005C7D                       3208 ?0226:\r
-    00005C7D                       3209 ?0225:\r
-    00005C7D                       3210 ?0223:\r
-    00005C7D 3E 08                 3211        LD      A,8\r
-    00005C7F DD AE 0A              3212        XOR     (IX+10)\r
-    00005C82 DD B6 0B              3213        OR      (IX+11)\r
-    00005C85 FD 5E 20              3214        LD      E,(IY+32)\r
-    00005C88 FD 56 21              3215        LD      D,(IY+33)\r
-    00005C8B 3E 00                 3216        LD      A,BYTE3 strlen\r
-    00005C8D 21 AB 73              3217        LD      HL,LWRD strlen\r
-    00005C90 20 0D                 3218        JR      NZ,?0228\r
-    00005C92                       3219 ?0227:\r
-    00005C92 CD 6A 4A              3220        CALL    LWRD ?0448\r
-    00005C95 28 15                 3221        JR      Z,?0231\r
-    00005C97                       3222 ?0229:\r
-    00005C97 CD BC 5C              3223        CALL    LWRD ?0445\r
-    00005C9A 2B                    3224        DEC     HL\r
-    00005C9B 36 00                 3225        LD      (HL),0\r
-    00005C9D                       3226 ?0230:\r
-    00005C9D 18 0D                 3227        JR      ?0231\r
-    00005C9F                       3228 ?0228:\r
-    00005C9F CD C7 5C              3229        CALL    LWRD ?0446\r
-    00005CA2 23                    3230        INC     HL\r
-    00005CA3 36 00                 3231        LD      (HL),0\r
-    00005CA5 CD BC 5C              3232        CALL    LWRD ?0445\r
-    00005CA8 DD 46 0A              3233        LD      B,(IX+10)\r
-    00005CAB 70                    3234        LD      (HL),B\r
-    00005CAC                       3235 ?0231:\r
-    00005CAC 21 00 00              3236        LD      HL,0\r
-    00005CAF E5                    3237        PUSH    HL\r
-    00005CB0 01 03 01              3238        LD      BC,259\r
-    00005CB3 CD BE 53              3239        CALL    LWRD ?0463\r
-    00005CB6 E1                    3240        POP     HL\r
-    00005CB7                       3241 ?0224:\r
-    00005CB7 FD E1                 3242        POP     IY\r
-    00005CB9 C3 A3 81              3243        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
-    00005CBC                       3244 ?0445:\r
-    00005CBC FD 5E 20              3245        LD      E,(IY+32)\r
-    00005CBF FD 56 21              3246        LD      D,(IY+33)\r
-    00005CC2 3E 00                 3247        LD      A,BYTE3 strlen\r
-    00005CC4 21 AB 73              3248        LD      HL,LWRD strlen\r
-    00005CC7                       3249 ?0446:\r
-    00005CC7 CD FB 81              3250        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    00005CCA FD 4E 20              3251        LD      C,(IY+32)\r
-    00005CCD FD 46 21              3252        LD      B,(IY+33)\r
-    00005CD0 09                    3253        ADD     HL,BC\r
-    00005CD1 C9                    3254        RET\r
-    00005CD2                       3255 Display_paint:\r
-    00005CD2 C5                    3256        PUSH    BC\r
-    00005CD3 FD E5                 3257        PUSH    IY\r
-    00005CD5 DD E5                 3258        PUSH    IX\r
-    00005CD7 21 B8 FF              3259        LD      HL,65464\r
-    00005CDA 39                    3260        ADD     HL,SP\r
-    00005CDB F9                    3261        LD      SP,HL\r
-    00005CDC D5                    3262        PUSH    DE\r
-    00005CDD DD E1                 3263        POP     IX\r
-    00005CDF AF                    3264        XOR     A\r
-    00005CE0 77                    3265        LD      (HL),A\r
-    00005CE1 23                    3266        INC     HL\r
-    00005CE2 77                    3267        LD      (HL),A\r
-    00005CE3 23                    3268        INC     HL\r
-    00005CE4 77                    3269        LD      (HL),A\r
-    00005CE5 23                    3270        INC     HL\r
-    00005CE6 77                    3271        LD      (HL),A\r
-    00005CE7 21 0A 00              3272        LD      HL,10\r
-    00005CEA ED 4B 3F 87           3273        LD      BC,(global)\r
-    00005CEE 09                    3274        ADD     HL,BC\r
-    00005CEF 7E                    3275        LD      A,(HL)\r
-    00005CF0 23                    3276        INC     HL\r
-    00005CF1 66                    3277        LD      H,(HL)\r
-    00005CF2 6F                    3278        LD      L,A\r
-    00005CF3 46                    3279        LD      B,(HL)\r
-    00005CF4 23                    3280        INC     HL\r
-    00005CF5 66                    3281        LD      H,(HL)\r
-    00005CF6 68                    3282        LD      L,B\r
-    00005CF7 E5                    3283        PUSH    HL\r
-    00005CF8 21 0E 00              3284        LD      HL,14\r
-    00005CFB 19                    3285        ADD     HL,DE\r
-    00005CFC 4E                    3286        LD      C,(HL)\r
-    00005CFD 23                    3287        INC     HL\r
-    00005CFE 46                    3288        LD      B,(HL)\r
-    00005CFF E1                    3289        POP     HL\r
-    00005D00 A7                    3290        AND     A\r
-    00005D01 ED 42                 3291        SBC     HL,BC\r
-    00005D03 28 03                 3292        JR      Z,?0233\r
-    00005D05                       3293 ?0232:\r
-    00005D05 CD 66 55              3294        CALL    LWRD ?0473\r
-    00005D08                       3295 ?0233:\r
-    00005D08 DD CB 0A 46           3296        BIT     0,(IX+10)\r
-    00005D0C CA 16 5E              3297        JP      Z,?0248\r
-    00005D0F                       3298 ?0234:\r
-    00005D0F 21 02 00              3299        LD      HL,2\r
-    00005D12 39                    3300        ADD     HL,SP\r
-    00005D13 E5                    3301        PUSH    HL\r
-    00005D14 2B                    3302        DEC     HL\r
-    00005D15 2B                    3303        DEC     HL\r
-    00005D16 CD CF 53              3304        CALL    LWRD ?0468\r
-    00005D19 E1                    3305        POP     HL\r
-    00005D1A 21 02 00              3306        LD      HL,2\r
-    00005D1D 39                    3307        ADD     HL,SP\r
-    00005D1E 4E                    3308        LD      C,(HL)\r
-    00005D1F 23                    3309        INC     HL\r
-    00005D20 46                    3310        LD      B,(HL)\r
-    00005D21 2B                    3311        DEC     HL\r
-    00005D22 2B                    3312        DEC     HL\r
-    00005D23 2B                    3313        DEC     HL\r
-    00005D24 CD 5A 58              3314        CALL    LWRD ?0458\r
-    00005D27 CD FB 81              3315        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    00005D2A DD 6E 08              3316        LD      L,(IX+8)\r
-    00005D2D DD 66 09              3317        LD      H,(IX+9)\r
-    00005D30 E5                    3318        PUSH    HL\r
-    00005D31 DD 6E 06              3319        LD      L,(IX+6)\r
-    00005D34 DD 66 07              3320        LD      H,(IX+7)\r
-    00005D37 E5                    3321        PUSH    HL\r
-    00005D38 21 06 00              3322        LD      HL,6\r
-    00005D3B 39                    3323        ADD     HL,SP\r
-    00005D3C 4E                    3324        LD      C,(HL)\r
-    00005D3D 23                    3325        INC     HL\r
-    00005D3E 46                    3326        LD      B,(HL)\r
-    00005D3F C5                    3327        PUSH    BC\r
-    00005D40 2B                    3328        DEC     HL\r
-    00005D41 2B                    3329        DEC     HL\r
-    00005D42 2B                    3330        DEC     HL\r
-    00005D43 4E                    3331        LD      C,(HL)\r
-    00005D44 23                    3332        INC     HL\r
-    00005D45 46                    3333        LD      B,(HL)\r
-    00005D46 DD CB 0A 4E           3334        BIT     1,(IX+10)\r
-    00005D4A 28 07                 3335        JR      Z,?0237\r
-    00005D4C DD 5E 10              3336        LD      E,(IX+16)\r
-    00005D4F 16 00                 3337        LD      D,0\r
-    00005D51 18 03                 3338        JR      ?0238\r
-    00005D53                       3339 ?0237:\r
-    00005D53 11 00 00              3340        LD      DE,0\r
-    00005D56                       3341 ?0238:\r
-    00005D56 CD 3A 49              3342        CALL    LWRD ?0471\r
-    00005D59 E1                    3343        POP     HL\r
-    00005D5A E1                    3344        POP     HL\r
-    00005D5B E1                    3345        POP     HL\r
-    00005D5C DD CB 0A 7E           3346        BIT     7,(IX+10)\r
-    00005D60 DD 4E 08              3347        LD      C,(IX+8)\r
-    00005D63 DD 46 09              3348        LD      B,(IX+9)\r
-    00005D66 DD 5E 06              3349        LD      E,(IX+6)\r
-    00005D69 DD 56 07              3350        LD      D,(IX+7)\r
-    00005D6C 20 07                 3351        JR      NZ,?0240\r
-    00005D6E                       3352 ?0239:\r
-    00005D6E 3E 00                 3353        LD      A,BYTE3 FillRectNC\r
-    00005D70 21 F7 47              3354        LD      HL,LWRD FillRectNC\r
-    00005D73 18 05                 3355        JR      ?0364\r
-    00005D75                       3356 ?0240:\r
-    00005D75 3E 00                 3357        LD      A,BYTE3 DrawRectNC\r
-    00005D77 21 6D 47              3358        LD      HL,LWRD DrawRectNC\r
-    00005D7A                       3359 ?0364:\r
-    00005D7A CD FB 81              3360        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    00005D7D                       3361 ?0241:\r
-    00005D7D DD 5E 20              3362        LD      E,(IX+32)\r
-    00005D80 DD 56 21              3363        LD      D,(IX+33)\r
-    00005D83 21 0A 00              3364        LD      HL,10\r
-    00005D86 ED 4B 3F 87           3365        LD      BC,(global)\r
-    00005D8A 09                    3366        ADD     HL,BC\r
-    00005D8B 46                    3367        LD      B,(HL)\r
-    00005D8C 23                    3368        INC     HL\r
-    00005D8D 66                    3369        LD      H,(HL)\r
-    00005D8E 68                    3370        LD      L,B\r
-    00005D8F 01 05 00              3371        LD      BC,5\r
-    00005D92 09                    3372        ADD     HL,BC\r
-    00005D93 4E                    3373        LD      C,(HL)\r
-    00005D94 23                    3374        INC     HL\r
-    00005D95 46                    3375        LD      B,(HL)\r
-    00005D96 23                    3376        INC     HL\r
-    00005D97 7E                    3377        LD      A,(HL)\r
-    00005D98 69                    3378        LD      L,C\r
-    00005D99 60                    3379        LD      H,B\r
-    00005D9A CD 75 4A              3380        CALL    LWRD ?0449\r
-    00005D9D DD 6E 08              3381        LD      L,(IX+8)\r
-    00005DA0 DD 66 09              3382        LD      H,(IX+9)\r
-    00005DA3 A7                    3383        AND     A\r
-    00005DA4 ED 42                 3384        SBC     HL,BC\r
-    00005DA6 EB                    3385        EX      DE,HL\r
-    00005DA7 01 02 00              3386        LD      BC,2\r
-    00005DAA CD EB 82              3387        CALL    LWRD ?SS_DIV_L02\r
-    00005DAD 69                    3388        LD      L,C\r
-    00005DAE 60                    3389        LD      H,B\r
-    00005DAF 39                    3390        ADD     HL,SP\r
-    00005DB0 46                    3391        LD      B,(HL)\r
-    00005DB1 23                    3392        INC     HL\r
-    00005DB2 66                    3393        LD      H,(HL)\r
-    00005DB3 68                    3394        LD      L,B\r
-    00005DB4 19                    3395        ADD     HL,DE\r
-    00005DB5 01 07 00              3396        LD      BC,7\r
-    00005DB8 09                    3397        ADD     HL,BC\r
-    00005DB9 4D                    3398        LD      C,L\r
-    00005DBA 44                    3399        LD      B,H\r
-    00005DBB 21 00 00              3400        LD      HL,0\r
-    00005DBE 39                    3401        ADD     HL,SP\r
-    00005DBF 5E                    3402        LD      E,(HL)\r
-    00005DC0 23                    3403        INC     HL\r
-    00005DC1 56                    3404        LD      D,(HL)\r
-    00005DC2 13                    3405        INC     DE\r
-    00005DC3 13                    3406        INC     DE\r
-    00005DC4 3E 00                 3407        LD      A,BYTE3 Move\r
-    00005DC6 21 EB 46              3408        LD      HL,LWRD Move\r
-    00005DC9 CD FB 81              3409        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    00005DCC DD CB 0B 46           3410        BIT     0,(IX+11)\r
-    00005DD0 28 36                 3411        JR      Z,?0243\r
-    00005DD2                       3412 ?0242:\r
-    00005DD2 FD 21 00 00           3413        LD      IY,0\r
-    00005DD6                       3414 ?0245:\r
-    00005DD6 DD 5E 20              3415        LD      E,(IX+32)\r
-    00005DD9 DD 56 21              3416        LD      D,(IX+33)\r
-    00005DDC 3E 00                 3417        LD      A,BYTE3 strlen\r
-    00005DDE 21 AB 73              3418        LD      HL,LWRD strlen\r
-    00005DE1 CD 75 4A              3419        CALL    LWRD ?0449\r
-    00005DE4 FD E5                 3420        PUSH    IY\r
-    00005DE6 E1                    3421        POP     HL\r
-    00005DE7 A7                    3422        AND     A\r
-    00005DE8 ED 42                 3423        SBC     HL,BC\r
-    00005DEA 21 06 00              3424        LD      HL,6\r
-    00005DED 30 0B                 3425        JR      NC,?0244\r
-    00005DEF                       3426 ?0246:\r
-    00005DEF 39                    3427        ADD     HL,SP\r
-    00005DF0 FD E5                 3428        PUSH    IY\r
-    00005DF2 C1                    3429        POP     BC\r
-    00005DF3 09                    3430        ADD     HL,BC\r
-    00005DF4 36 2A                 3431        LD      (HL),42\r
-    00005DF6 FD 23                 3432        INC     IY\r
-    00005DF8 18 DC                 3433        JR      ?0245\r
-    00005DFA                       3434 ?0244:\r
-    00005DFA 39                    3435        ADD     HL,SP\r
-    00005DFB FD E5                 3436        PUSH    IY\r
-    00005DFD C1                    3437        POP     BC\r
-    00005DFE 09                    3438        ADD     HL,BC\r
-    00005DFF 36 00                 3439        LD      (HL),0\r
-    00005E01 21 06 00              3440        LD      HL,6\r
-    00005E04 39                    3441        ADD     HL,SP\r
-    00005E05 EB                    3442        EX      DE,HL\r
-    00005E06 18 06                 3443        JR      ?0365\r
-    00005E08                       3444 ?0243:\r
-    00005E08 DD 5E 20              3445        LD      E,(IX+32)\r
-    00005E0B DD 56 21              3446        LD      D,(IX+33)\r
-    00005E0E                       3447 ?0365:\r
-    00005E0E 3E 00                 3448        LD      A,BYTE3 Text\r
-    00005E10 21 81 48              3449        LD      HL,LWRD Text\r
-    00005E13 CD FB 81              3450        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    00005E16                       3451 ?0248:\r
-    00005E16                       3452 ?0235:\r
-    00005E16 21 48 00              3453        LD      HL,72\r
-    00005E19 39                    3454        ADD     HL,SP\r
-    00005E1A F9                    3455        LD      SP,HL\r
-    00005E1B C3 A6 48              3456        JP      LWRD ?0411\r
-    00005E1E                       3457 Display_new:\r
-    00005E1E CD 7A 82              3458        CALL    LWRD ?ENT_AUTO_DIRECT_L09\r
-    00005E21 00 00                 3459        DEFW    0\r
-    00005E23 FD E5                 3460        PUSH    IY\r
-    00005E25 DD 6E 0E              3461        LD      L,(IX+14)\r
-    00005E28 DD 66 0F              3462        LD      H,(IX+15)\r
-    00005E2B E5                    3463        PUSH    HL\r
-    00005E2C DD 6E 0C              3464        LD      L,(IX+12)\r
-    00005E2F DD 66 0D              3465        LD      H,(IX+13)\r
-    00005E32 E5                    3466        PUSH    HL\r
-    00005E33 DD 6E 0A              3467        LD      L,(IX+10)\r
-    00005E36 DD 66 0B              3468        LD      H,(IX+11)\r
-    00005E39 E5                    3469        PUSH    HL\r
-    00005E3A DD 5E 02              3470        LD      E,(IX+2)\r
-    00005E3D DD 56 03              3471        LD      D,(IX+3)\r
-    00005E40 CD 28 5C              3472        CALL    LWRD ?0440\r
-    00005E43 F1                    3473        POP     AF\r
-    00005E44 F1                    3474        POP     AF\r
-    00005E45 F1                    3475        POP     AF\r
-    00005E46 E5                    3476        PUSH    HL\r
-    00005E47 FD E1                 3477        POP     IY\r
-    00005E49 01 0A 00              3478        LD      BC,10\r
-    00005E4C 09                    3479        ADD     HL,BC\r
-    00005E4D CB DE                 3480        SET     3,(HL)\r
-    00005E4F 01 F7 84              3481        LD      BC,?0249\r
-    00005E52 FD E5                 3482        PUSH    IY\r
-    00005E54 D1                    3483        POP     DE\r
-    00005E55 3E 00                 3484        LD      A,BYTE3 Component_setlabel\r
-    00005E57 21 A1 4C              3485        LD      HL,LWRD Component_setlabel\r
-    00005E5A CD FB 81              3486        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    00005E5D FD 36 1A D2           3487        LD      (IY+26),LOW(Display_paint)\r
-    00005E61 FD 36 1B 5C           3488        LD      (IY+27),HIGH(Display_paint)\r
-    00005E65 FD 36 1C 00           3489        LD      (IY+28),BYTE3 Display_paint\r
-    00005E69 FD 36 17 51           3490        LD      (IY+23),LOW(Display_handler)\r
-    00005E6D FD 36 18 5C           3491        LD      (IY+24),HIGH(Display_handler)\r
-    00005E71 FD 36 19 00           3492        LD      (IY+25),BYTE3 Display_handler\r
-    00005E75 C3 99 4C              3493        JP      LWRD ?0418\r
-    00005E78                       3494 Label_handler:\r
-    00005E78 CD EF 81              3495        CALL    LWRD ?ENT_PARM_DIRECT_L09\r
-    00005E7B C3 A3 81              3496        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
-    00005E7E                       3497 Label_paint:\r
-    00005E7E C5                    3498        PUSH    BC\r
-    00005E7F DD E5                 3499        PUSH    IX\r
-    00005E81 F5                    3500        PUSH    AF\r
-    00005E82 F5                    3501        PUSH    AF\r
-    00005E83 D5                    3502        PUSH    DE\r
-    00005E84 DD E1                 3503        POP     IX\r
-    00005E86 21 02 00              3504        LD      HL,2\r
-    00005E89 39                    3505        ADD     HL,SP\r
-    00005E8A AF                    3506        XOR     A\r
-    00005E8B 77                    3507        LD      (HL),A\r
-    00005E8C 23                    3508        INC     HL\r
-    00005E8D 77                    3509        LD      (HL),A\r
-    00005E8E 2B                    3510        DEC     HL\r
-    00005E8F 2B                    3511        DEC     HL\r
-    00005E90 2B                    3512        DEC     HL\r
-    00005E91 77                    3513        LD      (HL),A\r
-    00005E92 23                    3514        INC     HL\r
-    00005E93 77                    3515        LD      (HL),A\r
-    00005E94 21 0A 00              3516        LD      HL,10\r
-    00005E97 ED 4B 3F 87           3517        LD      BC,(global)\r
-    00005E9B 09                    3518        ADD     HL,BC\r
-    00005E9C 7E                    3519        LD      A,(HL)\r
-    00005E9D 23                    3520        INC     HL\r
-    00005E9E 66                    3521        LD      H,(HL)\r
-    00005E9F 6F                    3522        LD      L,A\r
-    00005EA0 46                    3523        LD      B,(HL)\r
-    00005EA1 23                    3524        INC     HL\r
-    00005EA2 66                    3525        LD      H,(HL)\r
-    00005EA3 68                    3526        LD      L,B\r
-    00005EA4 E5                    3527        PUSH    HL\r
-    00005EA5 21 0E 00              3528        LD      HL,14\r
-    00005EA8 19                    3529        ADD     HL,DE\r
-    00005EA9 4E                    3530        LD      C,(HL)\r
-    00005EAA 23                    3531        INC     HL\r
-    00005EAB 46                    3532        LD      B,(HL)\r
-    00005EAC E1                    3533        POP     HL\r
-    00005EAD A7                    3534        AND     A\r
-    00005EAE ED 42                 3535        SBC     HL,BC\r
-    00005EB0 28 03                 3536        JR      Z,?0251\r
-    00005EB2                       3537 ?0250:\r
-    00005EB2 CD 66 55              3538        CALL    LWRD ?0473\r
-    00005EB5                       3539 ?0251:\r
-    00005EB5 DD CB 0A 46           3540        BIT     0,(IX+10)\r
-    00005EB9 28 21                 3541        JR      Z,?0253\r
-    00005EBB                       3542 ?0252:\r
-    00005EBB 21 00 00              3543        LD      HL,0\r
-    00005EBE 39                    3544        ADD     HL,SP\r
-    00005EBF E5                    3545        PUSH    HL\r
-    00005EC0 CD CD 53              3546        CALL    LWRD ?0467\r
-    00005EC3 E1                    3547        POP     HL\r
-    00005EC4 21 00 00              3548        LD      HL,0\r
-    00005EC7 39                    3549        ADD     HL,SP\r
-    00005EC8 4E                    3550        LD      C,(HL)\r
-    00005EC9 23                    3551        INC     HL\r
-    00005ECA 46                    3552        LD      B,(HL)\r
-    00005ECB C5                    3553        PUSH    BC\r
-    00005ECC 23                    3554        INC     HL\r
-    00005ECD 4E                    3555        LD      C,(HL)\r
-    00005ECE 23                    3556        INC     HL\r
-    00005ECF 46                    3557        LD      B,(HL)\r
-    00005ED0 DD E5                 3558        PUSH    IX\r
-    00005ED2 D1                    3559        POP     DE\r
-    00005ED3 3E 00                 3560        LD      A,BYTE3 Button_drawtext\r
-    00005ED5 21 C2 56              3561        LD      HL,LWRD Button_drawtext\r
-    00005ED8 CD FB 81              3562        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    00005EDB E1                    3563        POP     HL\r
-    00005EDC                       3564 ?0253:\r
-    00005EDC C3 4E 58              3565        JP      LWRD ?0178\r
-    00005EDF                       3566 Label_new:\r
-    00005EDF CD 7A 82              3567        CALL    LWRD ?ENT_AUTO_DIRECT_L09\r
-    00005EE2 00 00                 3568        DEFW    0\r
-    00005EE4 FD E5                 3569        PUSH    IY\r
-    00005EE6 DD 6E 0C              3570        LD      L,(IX+12)\r
-    00005EE9 DD 66 0D              3571        LD      H,(IX+13)\r
-    00005EEC E5                    3572        PUSH    HL\r
-    00005EED DD 6E 0A              3573        LD      L,(IX+10)\r
-    00005EF0 DD 66 0B              3574        LD      H,(IX+11)\r
-    00005EF3 E5                    3575        PUSH    HL\r
-    00005EF4 CD FD 55              3576        CALL    LWRD ?0438\r
-    00005EF7 F1                    3577        POP     AF\r
-    00005EF8 F1                    3578        POP     AF\r
-    00005EF9 E5                    3579        PUSH    HL\r
-    00005EFA FD E1                 3580        POP     IY\r
-    00005EFC 01 20 00              3581        LD      BC,32\r
-    00005EFF 09                    3582        ADD     HL,BC\r
-    00005F00 DD 4E 0E              3583        LD      C,(IX+14)\r
-    00005F03 71                    3584        LD      (HL),C\r
-    00005F04 DD 46 0F              3585        LD      B,(IX+15)\r
-    00005F07 23                    3586        INC     HL\r
-    00005F08 70                    3587        LD      (HL),B\r
-    00005F09 FD 36 0A 01           3588        LD      (IY+10),1\r
-    00005F0D FD 36 0B 00           3589        LD      (IY+11),0\r
-    00005F11 FD 36 17 78           3590        LD      (IY+23),LOW(Label_handler)\r
-    00005F15 FD 36 18 5E           3591        LD      (IY+24),HIGH(Label_handler)\r
-    00005F19 FD 36 19 00           3592        LD      (IY+25),BYTE3 Label_handler\r
-    00005F1D FD 36 1A 7E           3593        LD      (IY+26),LOW(Label_paint)\r
-    00005F21 FD 36 1B 5E           3594        LD      (IY+27),HIGH(Label_paint)\r
-    00005F25 FD 36 1C 00           3595        LD      (IY+28),BYTE3 Label_paint\r
-    00005F29 FD 36 1D 77           3596        LD      (IY+29),LOW(Button_add)\r
-    00005F2D FD 36 1E 58           3597        LD      (IY+30),HIGH(Button_add)\r
-    00005F31 FD 36 1F 00           3598        LD      (IY+31),BYTE3 Button_add\r
-    00005F35 C3 99 4C              3599        JP      LWRD ?0418\r
-    00005F38                       3600 rootWindow_handler:\r
-    00005F38 CD 7A 82              3601        CALL    LWRD ?ENT_AUTO_DIRECT_L09\r
-    00005F3B 00 00                 3602        DEFW    0\r
-    00005F3D DD 6E 0A              3603        LD      L,(IX+10)\r
-    00005F40 DD 66 0B              3604        LD      H,(IX+11)\r
-    00005F43 E5                    3605        PUSH    HL\r
-    00005F44 DD 5E 02              3606        LD      E,(IX+2)\r
-    00005F47 DD 56 03              3607        LD      D,(IX+3)\r
-    00005F4A 3E 00                 3608        LD      A,BYTE3 Window_handler\r
-    00005F4C 21 1A 51              3609        LD      HL,LWRD Window_handler\r
-    00005F4F CD FB 81              3610        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    00005F52 E1                    3611        POP     HL\r
-    00005F53 C3 A3 81              3612        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
-    00005F56                       3613 screenbuilder:\r
-    00005F56 CD 7A 82              3614        CALL    LWRD ?ENT_AUTO_DIRECT_L09\r
-    00005F59 CE FF                 3615        DEFW    65486\r
-    00005F5B FD E5                 3616        PUSH    IY\r
-    00005F5D DD 36 D8 00           3617        LD      (IX-40),0\r
-    00005F61 21 00 00              3618        LD      HL,0\r
-    00005F64 E5                    3619        PUSH    HL\r
-    00005F65 C5                    3620        PUSH    BC\r
-    00005F66 3E 00                 3621        LD      A,BYTE3 open\r
-    00005F68 21 CD 7E              3622        LD      HL,LWRD open\r
-    00005F6B CD FB 81              3623        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    00005F6E F1                    3624        POP     AF\r
-    00005F6F F1                    3625        POP     AF\r
-    00005F70 DD 75 D4              3626        LD      (IX-44),L\r
-    00005F73 DD 74 D5              3627        LD      (IX-43),H\r
-    00005F76 DD 36 F0 2B           3628        LD      (IX-16),43\r
-    00005F7A DD 36 F1 00           3629        LD      (IX-15),0\r
-    00005F7E DD 36 F2 1A           3630        LD      (IX-14),26\r
-    00005F82 DD 36 F3 00           3631        LD      (IX-13),0\r
-    00005F86                       3632 ?0256:\r
-    00005F86 DD 36 F4 00           3633        LD      (IX-12),0\r
-    00005F8A DD 7E D8              3634        LD      A,(IX-40)\r
-    00005F8D FE 73                 3635        CP      115\r
-    00005F8F 20 18                 3636        JR      NZ,?0258\r
-    00005F91                       3637 ?0257:\r
-    00005F91 DD 6E D9              3638        LD      L,(IX-39)\r
-    00005F94 DD 66 DA              3639        LD      H,(IX-38)\r
-    00005F97 DD 75 F0              3640        LD      (IX-16),L\r
-    00005F9A DD 74 F1              3641        LD      (IX-15),H\r
-    00005F9D DD 6E DB              3642        LD      L,(IX-37)\r
-    00005FA0 DD 66 DC              3643        LD      H,(IX-36)\r
-    00005FA3 DD 75 F2              3644        LD      (IX-14),L\r
-    00005FA6 DD 74 F3              3645        LD      (IX-13),H\r
-    00005FA9                       3646 ?0258:\r
-    00005FA9 DD 7E D8              3647        LD      A,(IX-40)\r
-    00005FAC FE 42                 3648        CP      66\r
-    00005FAE 28 07                 3649        JR      Z,?0261\r
-    00005FB0 DD 7E D8              3650        LD      A,(IX-40)\r
-    00005FB3 FE 4D                 3651        CP      77\r
-    00005FB5 20 4F                 3652        JR      NZ,?0260\r
-    00005FB7                       3653 ?0261:\r
-    00005FB7                       3654 ?0262:\r
-    00005FB7                       3655 ?0259:\r
-    00005FB7 DD 4E DD              3656        LD      C,(IX-35)\r
-    00005FBA 06 00                 3657        LD      B,0\r
-    00005FBC C5                    3658        PUSH    BC\r
-    00005FBD CD 16 63              3659        CALL    LWRD ?0482\r
-    00005FC0 D5                    3660        PUSH    DE\r
-    00005FC1 DD 4E DB              3661        LD      C,(IX-37)\r
-    00005FC4 DD 5E F0              3662        LD      E,(IX-16)\r
-    00005FC7 DD 56 F1              3663        LD      D,(IX-15)\r
-    00005FCA CD 1F 63              3664        CALL    LWRD ?0483\r
-    00005FCD D5                    3665        PUSH    DE\r
-    00005FCE DD 4E DA              3666        LD      C,(IX-38)\r
-    00005FD1 DD 5E F2              3667        LD      E,(IX-14)\r
-    00005FD4 DD 56 F3              3668        LD      D,(IX-13)\r
-    00005FD7 CD AE 81              3669        CALL    LWRD ?S_MUL_L02\r
-    00005FDA D5                    3670        PUSH    DE\r
-    00005FDB DD 5E D9              3671        LD      E,(IX-39)\r
-    00005FDE 50                    3672        LD      D,B\r
-    00005FDF DD 4E F0              3673        LD      C,(IX-16)\r
-    00005FE2 DD 46 F1              3674        LD      B,(IX-15)\r
-    00005FE5 CD AE 81              3675        CALL    LWRD ?S_MUL_L02\r
-    00005FE8 3E 00                 3676        LD      A,BYTE3 Button_new\r
-    00005FEA 21 7D 58              3677        LD      HL,LWRD Button_new\r
-    00005FED C1                    3678        POP     BC\r
-    00005FEE CD FB 81              3679        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    00005FF1 F1                    3680        POP     AF\r
-    00005FF2 F1                    3681        POP     AF\r
-    00005FF3 F1                    3682        POP     AF\r
-    00005FF4 E5                    3683        PUSH    HL\r
-    00005FF5 FD E1                 3684        POP     IY\r
-    00005FF7 DD 7E D8              3685        LD      A,(IX-40)\r
-    00005FFA FE 4D                 3686        CP      77\r
-    00005FFC 20 04                 3687        JR      NZ,?0264\r
-    00005FFE                       3688 ?0263:\r
-    00005FFE FD CB 0A F6           3689        SET     6,(IY+10)\r
-    00006002                       3690 ?0264:\r
-    00006002 DD 36 F4 01           3691        LD      (IX-12),1\r
-    00006006                       3692 ?0260:\r
-    00006006 DD 7E D8              3693        LD      A,(IX-40)\r
-    00006009 FE 54                 3694        CP      84\r
-    0000600B 20 44                 3695        JR      NZ,?0266\r
-    0000600D                       3696 ?0265:\r
-    0000600D DD 4E DD              3697        LD      C,(IX-35)\r
-    00006010 06 00                 3698        LD      B,0\r
-    00006012 C5                    3699        PUSH    BC\r
-    00006013 CD 16 63              3700        CALL    LWRD ?0482\r
-    00006016 D5                    3701        PUSH    DE\r
-    00006017 DD 4E DB              3702        LD      C,(IX-37)\r
-    0000601A DD 5E F0              3703        LD      E,(IX-16)\r
-    0000601D DD 56 F1              3704        LD      D,(IX-15)\r
-    00006020 CD 1F 63              3705        CALL    LWRD ?0483\r
-    00006023 D5                    3706        PUSH    DE\r
-    00006024 DD 4E DA              3707        LD      C,(IX-38)\r
-    00006027 DD 5E F2              3708        LD      E,(IX-14)\r
-    0000602A DD 56 F3              3709        LD      D,(IX-13)\r
-    0000602D CD AE 81              3710        CALL    LWRD ?S_MUL_L02\r
-    00006030 D5                    3711        PUSH    DE\r
-    00006031 DD 5E D9              3712        LD      E,(IX-39)\r
-    00006034 50                    3713        LD      D,B\r
-    00006035 DD 4E F0              3714        LD      C,(IX-16)\r
-    00006038 DD 46 F1              3715        LD      B,(IX-15)\r
-    0000603B CD AE 81              3716        CALL    LWRD ?S_MUL_L02\r
-    0000603E 3E 00                 3717        LD      A,BYTE3 ToggleButton_new\r
-    00006040 21 57 5A              3718        LD      HL,LWRD ToggleButton_new\r
-    00006043 C1                    3719        POP     BC\r
-    00006044 CD FB 81              3720        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    00006047 F1                    3721        POP     AF\r
-    00006048 F1                    3722        POP     AF\r
-    00006049 F1                    3723        POP     AF\r
-    0000604A E5                    3724        PUSH    HL\r
-    0000604B FD E1                 3725        POP     IY\r
-    0000604D DD 36 F4 01           3726        LD      (IX-12),1\r
-    00006051                       3727 ?0266:\r
-    00006051 DD 7E D8              3728        LD      A,(IX-40)\r
-    00006054 FE 44                 3729        CP      68\r
-    00006056 20 44                 3730        JR      NZ,?0268\r
-    00006058                       3731 ?0267:\r
-    00006058 DD 4E DD              3732        LD      C,(IX-35)\r
-    0000605B 06 00                 3733        LD      B,0\r
-    0000605D C5                    3734        PUSH    BC\r
-    0000605E CD 16 63              3735        CALL    LWRD ?0482\r
-    00006061 D5                    3736        PUSH    DE\r
-    00006062 DD 4E DB              3737        LD      C,(IX-37)\r
-    00006065 DD 5E F0              3738        LD      E,(IX-16)\r
-    00006068 DD 56 F1              3739        LD      D,(IX-15)\r
-    0000606B CD 1F 63              3740        CALL    LWRD ?0483\r
-    0000606E D5                    3741        PUSH    DE\r
-    0000606F DD 4E DA              3742        LD      C,(IX-38)\r
-    00006072 DD 5E F2              3743        LD      E,(IX-14)\r
-    00006075 DD 56 F3              3744        LD      D,(IX-13)\r
-    00006078 CD AE 81              3745        CALL    LWRD ?S_MUL_L02\r
-    0000607B D5                    3746        PUSH    DE\r
-    0000607C DD 5E D9              3747        LD      E,(IX-39)\r
-    0000607F 50                    3748        LD      D,B\r
-    00006080 DD 4E F0              3749        LD      C,(IX-16)\r
-    00006083 DD 46 F1              3750        LD      B,(IX-15)\r
-    00006086 CD AE 81              3751        CALL    LWRD ?S_MUL_L02\r
-    00006089 3E 00                 3752        LD      A,BYTE3 Display_new\r
-    0000608B 21 1E 5E              3753        LD      HL,LWRD Display_new\r
-    0000608E C1                    3754        POP     BC\r
-    0000608F CD FB 81              3755        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    00006092 F1                    3756        POP     AF\r
-    00006093 F1                    3757        POP     AF\r
-    00006094 F1                    3758        POP     AF\r
-    00006095 E5                    3759        PUSH    HL\r
-    00006096 FD E1                 3760        POP     IY\r
-    00006098 DD 36 F4 01           3761        LD      (IX-12),1\r
-    0000609C                       3762 ?0268:\r
-    0000609C DD 7E D8              3763        LD      A,(IX-40)\r
-    0000609F FE 4C                 3764        CP      76\r
-    000060A1 20 47                 3765        JR      NZ,?0270\r
-    000060A3                       3766 ?0269:\r
-    000060A3 21 0C 00              3767        LD      HL,12\r
-    000060A6 39                    3768        ADD     HL,SP\r
-    000060A7 01 12 00              3769        LD      BC,18\r
-    000060AA 09                    3770        ADD     HL,BC\r
-    000060AB E5                    3771        PUSH    HL\r
-    000060AC CD 16 63              3772        CALL    LWRD ?0482\r
-    000060AF D5                    3773        PUSH    DE\r
-    000060B0 DD 4E DB              3774        LD      C,(IX-37)\r
-    000060B3 DD 5E F0              3775        LD      E,(IX-16)\r
-    000060B6 DD 56 F1              3776        LD      D,(IX-15)\r
-    000060B9 CD 1F 63              3777        CALL    LWRD ?0483\r
-    000060BC D5                    3778        PUSH    DE\r
-    000060BD DD 4E DA              3779        LD      C,(IX-38)\r
-    000060C0 DD 5E F2              3780        LD      E,(IX-14)\r
-    000060C3 DD 56 F3              3781        LD      D,(IX-13)\r
-    000060C6 CD AE 81              3782        CALL    LWRD ?S_MUL_L02\r
-    000060C9 D5                    3783        PUSH    DE\r
-    000060CA DD 5E D9              3784        LD      E,(IX-39)\r
-    000060CD 50                    3785        LD      D,B\r
-    000060CE DD 4E F0              3786        LD      C,(IX-16)\r
-    000060D1 DD 46 F1              3787        LD      B,(IX-15)\r
-    000060D4 CD AE 81              3788        CALL    LWRD ?S_MUL_L02\r
-    000060D7 3E 00                 3789        LD      A,BYTE3 Label_new\r
-    000060D9 21 DF 5E              3790        LD      HL,LWRD Label_new\r
-    000060DC C1                    3791        POP     BC\r
-    000060DD CD FB 81              3792        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    000060E0 F1                    3793        POP     AF\r
-    000060E1 F1                    3794        POP     AF\r
-    000060E2 F1                    3795        POP     AF\r
-    000060E3 E5                    3796        PUSH    HL\r
-    000060E4 FD E1                 3797        POP     IY\r
-    000060E6 DD 36 F4 01           3798        LD      (IX-12),1\r
-    000060EA                       3799 ?0270:\r
-    000060EA DD 7E D8              3800        LD      A,(IX-40)\r
-    000060ED FE 41                 3801        CP      65\r
-    000060EF 20 51                 3802        JR      NZ,?0272\r
-    000060F1                       3803 ?0271:\r
-    000060F1 21 26 00              3804        LD      HL,38\r
-    000060F4 DD 4E 02              3805        LD      C,(IX+2)\r
-    000060F7 DD 46 03              3806        LD      B,(IX+3)\r
-    000060FA 09                    3807        ADD     HL,BC\r
-    000060FB E5                    3808        PUSH    HL\r
-    000060FC 21 2B 00              3809        LD      HL,43\r
-    000060FF 39                    3810        ADD     HL,SP\r
-    00006100 EB                    3811        EX      DE,HL\r
-    00006101 E1                    3812        POP     HL\r
-    00006102 73                    3813        LD      (HL),E\r
-    00006103 23                    3814        INC     HL\r
-    00006104 72                    3815        LD      (HL),D\r
-    00006105 DD 6E DE              3816        LD      L,(IX-34)\r
-    00006108 DD 66 DF              3817        LD      H,(IX-33)\r
-    0000610B DD 75 F8              3818        LD      (IX-8),L\r
-    0000610E DD 74 F9              3819        LD      (IX-7),H\r
-    00006111 DD 6E E0              3820        LD      L,(IX-32)\r
-    00006114 DD 66 E1              3821        LD      H,(IX-31)\r
-    00006117 DD 75 FA              3822        LD      (IX-6),L\r
-    0000611A DD 74 FB              3823        LD      (IX-5),H\r
-    0000611D 21 16 00              3824        LD      HL,22\r
-    00006120 39                    3825        ADD     HL,SP\r
-    00006121 4E                    3826        LD      C,(HL)\r
-    00006122 23                    3827        INC     HL\r
-    00006123 46                    3828        LD      B,(HL)\r
-    00006124 23                    3829        INC     HL\r
-    00006125 5E                    3830        LD      E,(HL)\r
-    00006126 23                    3831        INC     HL\r
-    00006127 56                    3832        LD      D,(HL)\r
-    00006128 DD 71 FC              3833        LD      (IX-4),C\r
-    0000612B DD 70 FD              3834        LD      (IX-3),B\r
-    0000612E DD 73 FE              3835        LD      (IX-2),E\r
-    00006131 DD 72 FF              3836        LD      (IX-1),D\r
-    00006134 DD 5E 02              3837        LD      E,(IX+2)\r
-    00006137 DD 56 03              3838        LD      D,(IX+3)\r
-    0000613A 3E 00                 3839        LD      A,BYTE3 root_actionhandler\r
-    0000613C 21 26 63              3840        LD      HL,LWRD root_actionhandler\r
-    0000613F CD FB 81              3841        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    00006142                       3842 ?0272:\r
-    00006142 DD 7E D8              3843        LD      A,(IX-40)\r
-    00006145 FE 53                 3844        CP      83\r
-    00006147 20 71                 3845        JR      NZ,?0274\r
-    00006149                       3846 ?0273:\r
-    00006149 21 0C 00              3847        LD      HL,12\r
-    0000614C 39                    3848        ADD     HL,SP\r
-    0000614D 4D                    3849        LD      C,L\r
-    0000614E 44                    3850        LD      B,H\r
-    0000614F DD 5E D4              3851        LD      E,(IX-44)\r
-    00006152 DD 56 D5              3852        LD      D,(IX-43)\r
-    00006155 3E 00                 3853        LD      A,BYTE3 read_stringtable\r
-    00006157 21 5E 66              3854        LD      HL,LWRD read_stringtable\r
-    0000615A CD FB 81              3855        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    0000615D 21 26 00              3856        LD      HL,38\r
-    00006160 DD 4E 02              3857        LD      C,(IX+2)\r
-    00006163 DD 46 03              3858        LD      B,(IX+3)\r
-    00006166 09                    3859        ADD     HL,BC\r
-    00006167 E5                    3860        PUSH    HL\r
-    00006168 11 04 00              3861        LD      DE,4\r
-    0000616B CD 0E 63              3862        CALL    LWRD ?0454\r
-    0000616E EB                    3863        EX      DE,HL\r
-    0000616F E1                    3864        POP     HL\r
-    00006170 73                    3865        LD      (HL),E\r
-    00006171 23                    3866        INC     HL\r
-    00006172 72                    3867        LD      (HL),D\r
-    00006173 21 26 00              3868        LD      HL,38\r
-    00006176 09                    3869        ADD     HL,BC\r
-    00006177 56                    3870        LD      D,(HL)\r
-    00006178 DD 72 F5              3871        LD      (IX-11),D\r
-    0000617B 23                    3872        INC     HL\r
-    0000617C 66                    3873        LD      H,(HL)\r
-    0000617D DD 74 F6              3874        LD      (IX-10),H\r
-    00006180 21 24 00              3875        LD      HL,36\r
-    00006183 09                    3876        ADD     HL,BC\r
-    00006184 36 04                 3877        LD      (HL),4\r
-    00006186 23                    3878        INC     HL\r
-    00006187 36 00                 3879        LD      (HL),0\r
-    00006189 6A                    3880        LD      L,D\r
-    0000618A DD 66 F6              3881        LD      H,(IX-10)\r
-    0000618D 23                    3882        INC     HL\r
-    0000618E 23                    3883        INC     HL\r
-    0000618F E5                    3884        PUSH    HL\r
-    00006190 21 08 00              3885        LD      HL,8\r
-    00006193 ED 4B 3F 87           3886        LD      BC,(global)\r
-    00006197 09                    3887        ADD     HL,BC\r
-    00006198 5E                    3888        LD      E,(HL)\r
-    00006199 23                    3889        INC     HL\r
-    0000619A 56                    3890        LD      D,(HL)\r
-    0000619B E1                    3891        POP     HL\r
-    0000619C 73                    3892        LD      (HL),E\r
-    0000619D 23                    3893        INC     HL\r
-    0000619E 72                    3894        LD      (HL),D\r
-    0000619F 21 06 00              3895        LD      HL,6\r
-    000061A2 ED 4B 3F 87           3896        LD      BC,(global)\r
-    000061A6 09                    3897        ADD     HL,BC\r
-    000061A7 46                    3898        LD      B,(HL)\r
-    000061A8 23                    3899        INC     HL\r
-    000061A9 66                    3900        LD      H,(HL)\r
-    000061AA 68                    3901        LD      L,B\r
-    000061AB E5                    3902        PUSH    HL\r
-    000061AC DD 6E F5              3903        LD      L,(IX-11)\r
-    000061AF DD 66 F6              3904        LD      H,(IX-10)\r
-    000061B2 C1                    3905        POP     BC\r
-    000061B3 71                    3906        LD      (HL),C\r
-    000061B4 23                    3907        INC     HL\r
-    000061B5 70                    3908        LD      (HL),B\r
-    000061B6 DD 36 F4 00           3909        LD      (IX-12),0\r
-    000061BA                       3910 ?0274:\r
-    000061BA AF                    3911        XOR     A\r
-    000061BB DD B6 F4              3912        OR      (IX-12)\r
-    000061BE CA BA 62              3913        JP      Z,?0276\r
-    000061C1                       3914 ?0275:\r
-    000061C1 DD 7E DE              3915        LD      A,(IX-34)\r
-    000061C4 DD B6 DF              3916        OR      (IX-33)\r
-    000061C7 28 69                 3917        JR      Z,?0278\r
-    000061C9                       3918 ?0277:\r
-    000061C9 FD CB 0A EE           3919        SET     5,(IY+10)\r
-    000061CD FD 36 24 0B           3920        LD      (IY+36),11\r
-    000061D1 FD 36 25 00           3921        LD      (IY+37),0\r
-    000061D5 11 0B 00              3922        LD      DE,11\r
-    000061D8 CD 0E 63              3923        CALL    LWRD ?0454\r
-    000061DB FD 75 26              3924        LD      (IY+38),L\r
-    000061DE FD 74 27              3925        LD      (IY+39),H\r
-    000061E1 FD 6E 26              3926        LD      L,(IY+38)\r
-    000061E4 DD 75 D0              3927        LD      (IX-48),L\r
-    000061E7 FD 66 27              3928        LD      H,(IY+39)\r
-    000061EA DD 74 D1              3929        LD      (IX-47),H\r
-    000061ED 36 26                 3930        LD      (HL),LOW(root_actionhandler)\r
-    000061EF 23                    3931        INC     HL\r
-    000061F0 36 63                 3932        LD      (HL),HIGH(root_actionhandler)\r
-    000061F2 23                    3933        INC     HL\r
-    000061F3 36 00                 3934        LD      (HL),BYTE3 root_actionhandler\r
-    000061F5 DD 6E D0              3935        LD      L,(IX-48)\r
-    000061F8 DD 66 D1              3936        LD      H,(IX-47)\r
-    000061FB 23                    3937        INC     HL\r
-    000061FC 23                    3938        INC     HL\r
-    000061FD 23                    3939        INC     HL\r
-    000061FE DD 4E DE              3940        LD      C,(IX-34)\r
-    00006201 71                    3941        LD      (HL),C\r
-    00006202 DD 46 DF              3942        LD      B,(IX-33)\r
-    00006205 23                    3943        INC     HL\r
-    00006206 70                    3944        LD      (HL),B\r
-    00006207 21 05 00              3945        LD      HL,5\r
-    0000620A DD 4E D0              3946        LD      C,(IX-48)\r
-    0000620D DD 46 D1              3947        LD      B,(IX-47)\r
-    00006210 09                    3948        ADD     HL,BC\r
-    00006211 DD 5E E0              3949        LD      E,(IX-32)\r
-    00006214 73                    3950        LD      (HL),E\r
-    00006215 DD 56 E1              3951        LD      D,(IX-31)\r
-    00006218 23                    3952        INC     HL\r
-    00006219 72                    3953        LD      (HL),D\r
-    0000621A 21 07 00              3954        LD      HL,7\r
-    0000621D 09                    3955        ADD     HL,BC\r
-    0000621E E5                    3956        PUSH    HL\r
-    0000621F 21 18 00              3957        LD      HL,24\r
-    00006222 39                    3958        ADD     HL,SP\r
-    00006223 5E                    3959        LD      E,(HL)\r
-    00006224 23                    3960        INC     HL\r
-    00006225 56                    3961        LD      D,(HL)\r
-    00006226 23                    3962        INC     HL\r
-    00006227 4E                    3963        LD      C,(HL)\r
-    00006228 23                    3964        INC     HL\r
-    00006229 46                    3965        LD      B,(HL)\r
-    0000622A E1                    3966        POP     HL\r
-    0000622B 73                    3967        LD      (HL),E\r
-    0000622C 23                    3968        INC     HL\r
-    0000622D 72                    3969        LD      (HL),D\r
-    0000622E 23                    3970        INC     HL\r
-    0000622F 71                    3971        LD      (HL),C\r
-    00006230 23                    3972        INC     HL\r
-    00006231 70                    3973        LD      (HL),B\r
-    00006232                       3974 ?0278:\r
-    00006232 DD 7E E6              3975        LD      A,(IX-26)\r
-    00006235 DD B6 E7              3976        OR      (IX-25)\r
-    00006238 28 0C                 3977        JR      Z,?0280\r
-    0000623A                       3978 ?0279:\r
-    0000623A DD 6E E6              3979        LD      L,(IX-26)\r
-    0000623D FD 75 0A              3980        LD      (IY+10),L\r
-    00006240 DD 66 E7              3981        LD      H,(IX-25)\r
-    00006243 FD 74 0B              3982        LD      (IY+11),H\r
-    00006246                       3983 ?0280:\r
-    00006246 DD 6E E8              3984        LD      L,(IX-24)\r
-    00006249 FD 75 0E              3985        LD      (IY+14),L\r
-    0000624C DD 66 E9              3986        LD      H,(IX-23)\r
-    0000624F FD 74 0F              3987        LD      (IY+15),H\r
-    00006252 DD 6E EA              3988        LD      L,(IX-22)\r
-    00006255 FD 75 20              3989        LD      (IY+32),L\r
-    00006258 DD 7E EB              3990        LD      A,(IX-21)\r
-    0000625B E6 0F                 3991        AND     15\r
-    0000625D FD 77 21              3992        LD      (IY+33),A\r
-    00006260 FD 7E 20              3993        LD      A,(IY+32)\r
-    00006263 FD B6 21              3994        OR      (IY+33)\r
-    00006266 20 16                 3995        JR      NZ,?0282\r
-    00006268                       3996 ?0281:\r
-    00006268 11 14 00              3997        LD      DE,20\r
-    0000626B CD 0E 63              3998        CALL    LWRD ?0454\r
-    0000626E FD 75 20              3999        LD      (IY+32),L\r
-    00006271 FD 74 21              4000        LD      (IY+33),H\r
-    00006274 FD 6E 20              4001        LD      L,(IY+32)\r
-    00006277 FD 66 21              4002        LD      H,(IY+33)\r
-    0000627A 36 00                 4003        LD      (HL),0\r
-    0000627C 18 04                 4004        JR      ?0283\r
-    0000627E                       4005 ?0282:\r
-    0000627E FD CB 0B F6           4006        SET     6,(IY+11)\r
-    00006282                       4007 ?0283:\r
-    00006282 DD 7E EB              4008        LD      A,(IX-21)\r
-    00006285 2E 00                 4009        LD      L,0\r
-    00006287 4D                    4010        LD      C,L\r
-    00006288 E6 F0                 4011        AND     240\r
-    0000628A 47                    4012        LD      B,A\r
-    0000628B 26 10                 4013        LD      H,16\r
-    0000628D ED 42                 4014        SBC     HL,BC\r
-    0000628F 30 10                 4015        JR      NC,?0285\r
-    00006291                       4016 ?0284:\r
-    00006291 DD 6E EA              4017        LD      L,(IX-22)\r
-    00006294 DD 7E EB              4018        LD      A,(IX-21)\r
-    00006297 E6 0F                 4019        AND     15\r
-    00006299 67                    4020        LD      H,A\r
-    0000629A 23                    4021        INC     HL\r
-    0000629B FD 75 22              4022        LD      (IY+34),L\r
-    0000629E FD 74 23              4023        LD      (IY+35),H\r
-    000062A1                       4024 ?0285:\r
-    000062A1 FD E5                 4025        PUSH    IY\r
-    000062A3 DD 5E 02              4026        LD      E,(IX+2)\r
-    000062A6 4B                    4027        LD      C,E\r
-    000062A7 DD 56 03              4028        LD      D,(IX+3)\r
-    000062AA 42                    4029        LD      B,D\r
-    000062AB 21 1D 00              4030        LD      HL,29\r
-    000062AE 09                    4031        ADD     HL,BC\r
-    000062AF 4E                    4032        LD      C,(HL)\r
-    000062B0 23                    4033        INC     HL\r
-    000062B1 46                    4034        LD      B,(HL)\r
-    000062B2 23                    4035        INC     HL\r
-    000062B3 7E                    4036        LD      A,(HL)\r
-    000062B4 69                    4037        LD      L,C\r
-    000062B5 60                    4038        LD      H,B\r
-    000062B6 C1                    4039        POP     BC\r
-    000062B7 CD FB 81              4040        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    000062BA                       4041 ?0276:\r
-    000062BA 21 14 00              4042        LD      HL,20\r
-    000062BD E5                    4043        PUSH    HL\r
-    000062BE 2E 0E                 4044        LD      L,14\r
-    000062C0 39                    4045        ADD     HL,SP\r
-    000062C1 4D                    4046        LD      C,L\r
-    000062C2 44                    4047        LD      B,H\r
-    000062C3 DD 5E D4              4048        LD      E,(IX-44)\r
-    000062C6 DD 56 D5              4049        LD      D,(IX-43)\r
-    000062C9 CD 06 63              4050        CALL    LWRD ?0441\r
-    000062CC F1                    4051        POP     AF\r
-    000062CD 3E 14                 4052        LD      A,20\r
-    000062CF AD                    4053        XOR     L\r
-    000062D0 B4                    4054        OR      H\r
-    000062D1 CA 86 5F              4055        JP      Z,?0256\r
-    000062D4                       4056 ?0254:\r
-    000062D4 DD 5E D4              4057        LD      E,(IX-44)\r
-    000062D7 DD 56 D5              4058        LD      D,(IX-43)\r
-    000062DA 3E 00                 4059        LD      A,BYTE3 close\r
-    000062DC 21 96 73              4060        LD      HL,LWRD close\r
-    000062DF CD FB 81              4061        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    000062E2 DD 5E 02              4062        LD      E,(IX+2)\r
-    000062E5 DD 56 03              4063        LD      D,(IX+3)\r
-    000062E8 3E 00                 4064        LD      A,BYTE3 Component_linkstringtable\r
-    000062EA 21 67 50              4065        LD      HL,LWRD Component_linkstringtable\r
-    000062ED CD FB 81              4066        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    000062F0 DD 5E 02              4067        LD      E,(IX+2)\r
-    000062F3 4B                    4068        LD      C,E\r
-    000062F4 DD 56 03              4069        LD      D,(IX+3)\r
-    000062F7 42                    4070        LD      B,D\r
-    000062F8 21 1A 00              4071        LD      HL,26\r
-    000062FB 09                    4072        ADD     HL,BC\r
-    000062FC 4E                    4073        LD      C,(HL)\r
-    000062FD 23                    4074        INC     HL\r
-    000062FE 46                    4075        LD      B,(HL)\r
-    000062FF 23                    4076        INC     HL\r
-    00006300 7E                    4077        LD      A,(HL)\r
-    00006301 69                    4078        LD      L,C\r
-    00006302 60                    4079        LD      H,B\r
-    00006303 C3 67 57              4080        JP      LWRD ?0424\r
-    00006306                       4081 ?0441:\r
-    00006306 3E 01                 4082        LD      A,BYTE3 _read\r
-    00006308 21 5C 42              4083        LD      HL,LWRD _read\r
-    0000630B C3 FB 81              4084        JP      LWRD ?BANK_CALL_DIRECT_L08\r
-    0000630E                       4085 ?0454:\r
-    0000630E 3E 01                 4086        LD      A,BYTE3 malloc\r
-    00006310 21 00 40              4087        LD      HL,LWRD malloc\r
-    00006313 C3 FB 81              4088        JP      LWRD ?BANK_CALL_DIRECT_L08\r
-    00006316                       4089 ?0482:\r
-    00006316 DD 4E DC              4090        LD      C,(IX-36)\r
-    00006319 DD 5E F2              4091        LD      E,(IX-14)\r
-    0000631C DD 56 F3              4092        LD      D,(IX-13)\r
-    0000631F                       4093 ?0483:\r
-    0000631F CD AE 81              4094        CALL    LWRD ?S_MUL_L02\r
-    00006322 1B                    4095        DEC     DE\r
-    00006323 1B                    4096        DEC     DE\r
-    00006324 1B                    4097        DEC     DE\r
-    00006325 C9                    4098        RET\r
-    00006326                       4099 root_actionhandler:\r
-    00006326 CD 7A 82              4100        CALL    LWRD ?ENT_AUTO_DIRECT_L09\r
-    00006329 EA FF                 4101        DEFW    65514\r
-    0000632B FD E5                 4102        PUSH    IY\r
-    0000632D DD 6E 02              4103        LD      L,(IX+2)\r
-    00006330 DD 66 03              4104        LD      H,(IX+3)\r
-    00006333 E5                    4105        PUSH    HL\r
-    00006334 FD E1                 4106        POP     IY\r
-    00006336 21 06 00              4107        LD      HL,6\r
-    00006339 39                    4108        ADD     HL,SP\r
-    0000633A EB                    4109        EX      DE,HL\r
-    0000633B 21 D5 84              4110        LD      HL,?0286\r
-    0000633E 01 0E 00              4111        LD      BC,14\r
-    00006341 ED B0                 4112        LDIR\r
-    00006343 FD 6E 26              4113        LD      L,(IY+38)\r
-    00006346 DD 75 EA              4114        LD      (IX-22),L\r
-    00006349 FD 66 27              4115        LD      H,(IY+39)\r
-    0000634C DD 74 EB              4116        LD      (IX-21),H\r
-    0000634F 23                    4117        INC     HL\r
-    00006350 23                    4118        INC     HL\r
-    00006351 23                    4119        INC     HL\r
-    00006352 3E 01                 4120        LD      A,1\r
-    00006354 AE                    4121        XOR     (HL)\r
-    00006355 23                    4122        INC     HL\r
-    00006356 B6                    4123        OR      (HL)\r
-    00006357 20 08                 4124        JR      NZ,?0288\r
-    00006359                       4125 ?0287:\r
-    00006359 C5                    4126        PUSH    BC\r
-    0000635A 01 01 04              4127        LD      BC,1025\r
-    0000635D CD BE 53              4128        CALL    LWRD ?0463\r
-    00006360 E1                    4129        POP     HL\r
-    00006361                       4130 ?0288:\r
-    00006361 DD 6E EA              4131        LD      L,(IX-22)\r
-    00006364 DD 66 EB              4132        LD      H,(IX-21)\r
-    00006367 23                    4133        INC     HL\r
-    00006368 23                    4134        INC     HL\r
-    00006369 23                    4135        INC     HL\r
-    0000636A 46                    4136        LD      B,(HL)\r
-    0000636B 23                    4137        INC     HL\r
-    0000636C 66                    4138        LD      H,(HL)\r
-    0000636D 68                    4139        LD      L,B\r
-    0000636E CB 85                 4140        RES     0,L\r
-    00006370 3E 02                 4141        LD      A,2\r
-    00006372 AD                    4142        XOR     L\r
-    00006373 B4                    4143        OR      H\r
-    00006374 C2 91 64              4144        JP      NZ,?0290\r
-    00006377                       4145 ?0289:\r
-    00006377 6F                    4146        LD      L,A\r
-    00006378 67                    4147        LD      H,A\r
-    00006379 E5                    4148        PUSH    HL\r
-    0000637A E5                    4149        PUSH    HL\r
-    0000637B 01 01 00              4150        LD      BC,1\r
-    0000637E FD 5E 11              4151        LD      E,(IY+17)\r
-    00006381 FD 56 12              4152        LD      D,(IY+18)\r
-    00006384 3E 00                 4153        LD      A,BYTE3 Component_changestate_children\r
-    00006386 21 FE 4F              4154        LD      HL,LWRD Component_changestate_children\r
-    00006389 CD FB 81              4155        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    0000638C E1                    4156        POP     HL\r
-    0000638D E1                    4157        POP     HL\r
-    0000638E FD 6E 11              4158        LD      L,(IY+17)\r
-    00006391 FD 66 12              4159        LD      H,(IY+18)\r
-    00006394 01 08 00              4160        LD      BC,8\r
-    00006397 09                    4161        ADD     HL,BC\r
-    00006398 4E                    4162        LD      C,(HL)\r
-    00006399 23                    4163        INC     HL\r
-    0000639A 46                    4164        LD      B,(HL)\r
-    0000639B C5                    4165        PUSH    BC\r
-    0000639C FD 6E 11              4166        LD      L,(IY+17)\r
-    0000639F FD 66 12              4167        LD      H,(IY+18)\r
-    000063A2 01 06 00              4168        LD      BC,6\r
-    000063A5 09                    4169        ADD     HL,BC\r
-    000063A6 4E                    4170        LD      C,(HL)\r
-    000063A7 23                    4171        INC     HL\r
-    000063A8 46                    4172        LD      B,(HL)\r
-    000063A9 C5                    4173        PUSH    BC\r
-    000063AA 01 00 00              4174        LD      BC,0\r
-    000063AD 59                    4175        LD      E,C\r
-    000063AE 50                    4176        LD      D,B\r
-    000063AF 3E 00                 4177        LD      A,BYTE3 Window_new\r
-    000063B1 21 B9 55              4178        LD      HL,LWRD Window_new\r
-    000063B4 CD FB 81              4179        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    000063B7 F1                    4180        POP     AF\r
-    000063B8 F1                    4181        POP     AF\r
-    000063B9 DD 75 EC              4182        LD      (IX-20),L\r
-    000063BC DD 74 ED              4183        LD      (IX-19),H\r
-    000063BF 01 0A 00              4184        LD      BC,10\r
-    000063C2 09                    4185        ADD     HL,BC\r
-    000063C3 36 03                 4186        LD      (HL),3\r
-    000063C5 23                    4187        INC     HL\r
-    000063C6 70                    4188        LD      (HL),B\r
-    000063C7 DD 6E EA              4189        LD      L,(IX-22)\r
-    000063CA DD 66 EB              4190        LD      H,(IX-21)\r
-    000063CD 23                    4191        INC     HL\r
-    000063CE 23                    4192        INC     HL\r
-    000063CF 23                    4193        INC     HL\r
-    000063D0 CB 46                 4194        BIT     0,(HL)\r
-    000063D2 28 0C                 4195        JR      Z,?0292\r
-    000063D4                       4196 ?0291:\r
-    000063D4 69                    4197        LD      L,C\r
-    000063D5 60                    4198        LD      H,B\r
-    000063D6 DD 4E EC              4199        LD      C,(IX-20)\r
-    000063D9 DD 46 ED              4200        LD      B,(IX-19)\r
-    000063DC 09                    4201        ADD     HL,BC\r
-    000063DD 23                    4202        INC     HL\r
-    000063DE CB EE                 4203        SET     5,(HL)\r
-    000063E0                       4204 ?0292:\r
-    000063E0 21 17 00              4205        LD      HL,23\r
-    000063E3 DD 4E EC              4206        LD      C,(IX-20)\r
-    000063E6 DD 46 ED              4207        LD      B,(IX-19)\r
-    000063E9 09                    4208        ADD     HL,BC\r
-    000063EA 36 38                 4209        LD      (HL),LOW(rootWindow_handler)\r
-    000063EC 23                    4210        INC     HL\r
-    000063ED 36 5F                 4211        LD      (HL),HIGH(rootWindow_handler)\r
-    000063EF 23                    4212        INC     HL\r
-    000063F0 36 00                 4213        LD      (HL),BYTE3 rootWindow_handler\r
-    000063F2 21 1A 00              4214        LD      HL,26\r
-    000063F5 09                    4215        ADD     HL,BC\r
-    000063F6 36 74                 4216        LD      (HL),LOW(Root_paint)\r
-    000063F8 23                    4217        INC     HL\r
-    000063F9 36 55                 4218        LD      (HL),HIGH(Root_paint)\r
-    000063FB 23                    4219        INC     HL\r
-    000063FC 36 00                 4220        LD      (HL),BYTE3 Root_paint\r
-    000063FE 21 07 00              4221        LD      HL,7\r
-    00006401 DD 5E EA              4222        LD      E,(IX-22)\r
-    00006404 DD 56 EB              4223        LD      D,(IX-21)\r
-    00006407 19                    4224        ADD     HL,DE\r
-    00006408 5E                    4225        LD      E,(HL)\r
-    00006409 EB                    4226        EX      DE,HL\r
-    0000640A DD 75 F3              4227        LD      (IX-13),L\r
-    0000640D 21 07 00              4228        LD      HL,7\r
-    00006410 DD 4E EA              4229        LD      C,(IX-22)\r
-    00006413 DD 46 EB              4230        LD      B,(IX-21)\r
-    00006416 09                    4231        ADD     HL,BC\r
-    00006417 5E                    4232        LD      E,(HL)\r
-    00006418 23                    4233        INC     HL\r
-    00006419 56                    4234        LD      D,(HL)\r
-    0000641A 23                    4235        INC     HL\r
-    0000641B 4E                    4236        LD      C,(HL)\r
-    0000641C 23                    4237        INC     HL\r
-    0000641D 46                    4238        LD      B,(HL)\r
-    0000641E EB                    4239        EX      DE,HL\r
-    0000641F 3E 08                 4240        LD      A,8\r
-    00006421 CD 15 83              4241        CALL    LWRD ?SL_RSH_L03\r
-    00006424 DD 75 F4              4242        LD      (IX-12),L\r
-    00006427 21 07 00              4243        LD      HL,7\r
-    0000642A DD 4E EA              4244        LD      C,(IX-22)\r
-    0000642D DD 46 EB              4245        LD      B,(IX-21)\r
-    00006430 09                    4246        ADD     HL,BC\r
-    00006431 5E                    4247        LD      E,(HL)\r
-    00006432 23                    4248        INC     HL\r
-    00006433 56                    4249        LD      D,(HL)\r
-    00006434 23                    4250        INC     HL\r
-    00006435 4E                    4251        LD      C,(HL)\r
-    00006436 23                    4252        INC     HL\r
-    00006437 46                    4253        LD      B,(HL)\r
-    00006438 EB                    4254        EX      DE,HL\r
-    00006439 3E 10                 4255        LD      A,16\r
-    0000643B CD 15 83              4256        CALL    LWRD ?SL_RSH_L03\r
-    0000643E DD 75 F5              4257        LD      (IX-11),L\r
-    00006441 21 07 00              4258        LD      HL,7\r
-    00006444 DD 4E EA              4259        LD      C,(IX-22)\r
-    00006447 DD 46 EB              4260        LD      B,(IX-21)\r
-    0000644A 09                    4261        ADD     HL,BC\r
-    0000644B 5E                    4262        LD      E,(HL)\r
-    0000644C 23                    4263        INC     HL\r
-    0000644D 56                    4264        LD      D,(HL)\r
-    0000644E 23                    4265        INC     HL\r
-    0000644F 4E                    4266        LD      C,(HL)\r
-    00006450 23                    4267        INC     HL\r
-    00006451 46                    4268        LD      B,(HL)\r
-    00006452 EB                    4269        EX      DE,HL\r
-    00006453 3E 18                 4270        LD      A,24\r
-    00006455 CD 15 83              4271        CALL    LWRD ?SL_RSH_L03\r
-    00006458 DD 75 F6              4272        LD      (IX-10),L\r
-    0000645B 21 06 00              4273        LD      HL,6\r
-    0000645E 39                    4274        ADD     HL,SP\r
-    0000645F 4D                    4275        LD      C,L\r
-    00006460 44                    4276        LD      B,H\r
-    00006461 DD 5E EC              4277        LD      E,(IX-20)\r
-    00006464 DD 56 ED              4278        LD      D,(IX-19)\r
-    00006467 3E 00                 4279        LD      A,BYTE3 screenbuilder\r
-    00006469 21 56 5F              4280        LD      HL,LWRD screenbuilder\r
-    0000646C CD FB 81              4281        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    0000646F DD 4E EC              4282        LD      C,(IX-20)\r
-    00006472 DD 46 ED              4283        LD      B,(IX-19)\r
-    00006475 C5                    4284        PUSH    BC\r
-    00006476 FD 5E 11              4285        LD      E,(IY+17)\r
-    00006479 FD 56 12              4286        LD      D,(IY+18)\r
-    0000647C FD 6E 11              4287        LD      L,(IY+17)\r
-    0000647F FD 66 12              4288        LD      H,(IY+18)\r
-    00006482 01 1D 00              4289        LD      BC,29\r
-    00006485 09                    4290        ADD     HL,BC\r
-    00006486 4E                    4291        LD      C,(HL)\r
-    00006487 23                    4292        INC     HL\r
-    00006488 46                    4293        LD      B,(HL)\r
-    00006489 23                    4294        INC     HL\r
-    0000648A 7E                    4295        LD      A,(HL)\r
-    0000648B 69                    4296        LD      L,C\r
-    0000648C 60                    4297        LD      H,B\r
-    0000648D C1                    4298        POP     BC\r
-    0000648E CD FB 81              4299        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    00006491                       4300 ?0290:\r
-    00006491 DD 6E EA              4301        LD      L,(IX-22)\r
-    00006494 DD 66 EB              4302        LD      H,(IX-21)\r
-    00006497 23                    4303        INC     HL\r
-    00006498 23                    4304        INC     HL\r
-    00006499 23                    4305        INC     HL\r
-    0000649A 3E 04                 4306        LD      A,4\r
-    0000649C AE                    4307        XOR     (HL)\r
-    0000649D 23                    4308        INC     HL\r
-    0000649E B6                    4309        OR      (HL)\r
-    0000649F C2 2F 66              4310        JP      NZ,?0294\r
-    000064A2                       4311 ?0293:\r
-    000064A2 21 01 00              4312        LD      HL,1\r
-    000064A5 E5                    4313        PUSH    HL\r
-    000064A6 FD 6E 11              4314        LD      L,(IY+17)\r
-    000064A9 FD 66 12              4315        LD      H,(IY+18)\r
-    000064AC 01 08 00              4316        LD      BC,8\r
-    000064AF 09                    4317        ADD     HL,BC\r
-    000064B0 46                    4318        LD      B,(HL)\r
-    000064B1 23                    4319        INC     HL\r
-    000064B2 66                    4320        LD      H,(HL)\r
-    000064B3 68                    4321        LD      L,B\r
-    000064B4 01 F6 FF              4322        LD      BC,65526\r
-    000064B7 09                    4323        ADD     HL,BC\r
-    000064B8 E5                    4324        PUSH    HL\r
-    000064B9 FD 6E 11              4325        LD      L,(IY+17)\r
-    000064BC FD 66 12              4326        LD      H,(IY+18)\r
-    000064BF 01 06 00              4327        LD      BC,6\r
-    000064C2 09                    4328        ADD     HL,BC\r
-    000064C3 46                    4329        LD      B,(HL)\r
-    000064C4 23                    4330        INC     HL\r
-    000064C5 66                    4331        LD      H,(HL)\r
-    000064C6 68                    4332        LD      L,B\r
-    000064C7 01 F6 FF              4333        LD      BC,65526\r
-    000064CA 09                    4334        ADD     HL,BC\r
-    000064CB E5                    4335        PUSH    HL\r
-    000064CC 01 05 00              4336        LD      BC,5\r
-    000064CF 59                    4337        LD      E,C\r
-    000064D0 50                    4338        LD      D,B\r
-    000064D1 3E 00                 4339        LD      A,BYTE3 Dialog_new\r
-    000064D3 21 62 5B              4340        LD      HL,LWRD Dialog_new\r
-    000064D6 CD FB 81              4341        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    000064D9 F1                    4342        POP     AF\r
-    000064DA F1                    4343        POP     AF\r
-    000064DB F1                    4344        POP     AF\r
-    000064DC DD 75 EC              4345        LD      (IX-20),L\r
-    000064DF DD 74 ED              4346        LD      (IX-19),H\r
-    000064E2 01 0A 00              4347        LD      BC,10\r
-    000064E5 09                    4348        ADD     HL,BC\r
-    000064E6 36 03                 4349        LD      (HL),3\r
-    000064E8 23                    4350        INC     HL\r
-    000064E9 36 10                 4351        LD      (HL),16\r
-    000064EB 21 0E 00              4352        LD      HL,14\r
-    000064EE DD 4E EC              4353        LD      C,(IX-20)\r
-    000064F1 DD 46 ED              4354        LD      B,(IX-19)\r
-    000064F4 09                    4355        ADD     HL,BC\r
-    000064F5 36 30                 4356        LD      (HL),48\r
-    000064F7 23                    4357        INC     HL\r
-    000064F8 36 00                 4358        LD      (HL),0\r
-    000064FA AF                    4359        XOR     A\r
-    000064FB DD 77 FE              4360        LD      (IX-2),A\r
-    000064FE DD 77 FF              4361        LD      (IX-1),A\r
-    00006501                       4362 ?0296:\r
-    00006501 21 05 00              4363        LD      HL,5\r
-    00006504 DD 4E EA              4364        LD      C,(IX-22)\r
-    00006507 DD 46 EB              4365        LD      B,(IX-21)\r
-    0000650A 09                    4366        ADD     HL,BC\r
-    0000650B 5E                    4367        LD      E,(HL)\r
-    0000650C 23                    4368        INC     HL\r
-    0000650D 56                    4369        LD      D,(HL)\r
-    0000650E 06 0C                 4370        LD      B,12\r
-    00006510 CD 87 83              4371        CALL    LWRD ?SS_RSH_L02\r
-    00006513 4B                    4372        LD      C,E\r
-    00006514 42                    4373        LD      B,D\r
-    00006515 DD 6E FE              4374        LD      L,(IX-2)\r
-    00006518 DD 66 FF              4375        LD      H,(IX-1)\r
-    0000651B CD C8 82              4376        CALL    LWRD ?SS_CMP_L02\r
-    0000651E 30 04                 4377        JR      NC,?0367\r
-    00006520 3E 01                 4378        LD      A,1\r
-    00006522 18 01                 4379        JR      ?0368\r
-    00006524                       4380 ?0367:\r
-    00006524 AF                    4381        XOR     A\r
-    00006525                       4382 ?0368:\r
-    00006525 E6 0F                 4383        AND     15\r
-    00006527 CA C3 65              4384        JP      Z,?0295\r
-    0000652A                       4385 ?0297:\r
-    0000652A 21 05 00              4386        LD      HL,5\r
-    0000652D DD 4E EA              4387        LD      C,(IX-22)\r
-    00006530 DD 46 EB              4388        LD      B,(IX-21)\r
-    00006533 09                    4389        ADD     HL,BC\r
-    00006534 46                    4390        LD      B,(HL)\r
-    00006535 23                    4391        INC     HL\r
-    00006536 7E                    4392        LD      A,(HL)\r
-    00006537 68                    4393        LD      L,B\r
-    00006538 E6 0F                 4394        AND     15\r
-    0000653A 67                    4395        LD      H,A\r
-    0000653B DD 4E FE              4396        LD      C,(IX-2)\r
-    0000653E DD 46 FF              4397        LD      B,(IX-1)\r
-    00006541 09                    4398        ADD     HL,BC\r
-    00006542 29                    4399        ADD     HL,HL\r
-    00006543 E5                    4400        PUSH    HL\r
-    00006544 21 08 00              4401        LD      HL,8\r
-    00006547 ED 5B 3F 87           4402        LD      DE,(global)\r
-    0000654B 19                    4403        ADD     HL,DE\r
-    0000654C 5E                    4404        LD      E,(HL)\r
-    0000654D 23                    4405        INC     HL\r
-    0000654E 56                    4406        LD      D,(HL)\r
-    0000654F E1                    4407        POP     HL\r
-    00006550 19                    4408        ADD     HL,DE\r
-    00006551 2B                    4409        DEC     HL\r
-    00006552 2B                    4410        DEC     HL\r
-    00006553 5E                    4411        LD      E,(HL)\r
-    00006554 23                    4412        INC     HL\r
-    00006555 56                    4413        LD      D,(HL)\r
-    00006556 D5                    4414        PUSH    DE\r
-    00006557 21 10 00              4415        LD      HL,16\r
-    0000655A E5                    4416        PUSH    HL\r
-    0000655B 2E 06                 4417        LD      L,6\r
-    0000655D DD 5E EC              4418        LD      E,(IX-20)\r
-    00006560 DD 56 ED              4419        LD      D,(IX-19)\r
-    00006563 19                    4420        ADD     HL,DE\r
-    00006564 6E                    4421        LD      L,(HL)\r
-    00006565 26 00                 4422        LD      H,0\r
-    00006567 01 F0 FF              4423        LD      BC,65520\r
-    0000656A 09                    4424        ADD     HL,BC\r
-    0000656B E5                    4425        PUSH    HL\r
-    0000656C DD 6E FE              4426        LD      L,(IX-2)\r
-    0000656F DD 66 FF              4427        LD      H,(IX-1)\r
-    00006572 29                    4428        ADD     HL,HL\r
-    00006573 29                    4429        ADD     HL,HL\r
-    00006574 4D                    4430        LD      C,L\r
-    00006575 44                    4431        LD      B,H\r
-    00006576 29                    4432        ADD     HL,HL\r
-    00006577 09                    4433        ADD     HL,BC\r
-    00006578 01 14 00              4434        LD      BC,20\r
-    0000657B 09                    4435        ADD     HL,BC\r
-    0000657C 4D                    4436        LD      C,L\r
-    0000657D 44                    4437        LD      B,H\r
-    0000657E 11 08 00              4438        LD      DE,8\r
-    00006581 3E 00                 4439        LD      A,BYTE3 Label_new\r
-    00006583 21 DF 5E              4440        LD      HL,LWRD Label_new\r
-    00006586 CD FB 81              4441        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    00006589 F1                    4442        POP     AF\r
-    0000658A F1                    4443        POP     AF\r
-    0000658B F1                    4444        POP     AF\r
-    0000658C DD 75 FC              4445        LD      (IX-4),L\r
-    0000658F DD 74 FD              4446        LD      (IX-3),H\r
-    00006592 01 0E 00              4447        LD      BC,14\r
-    00006595 09                    4448        ADD     HL,BC\r
-    00006596 36 30                 4449        LD      (HL),48\r
-    00006598 23                    4450        INC     HL\r
-    00006599 70                    4451        LD      (HL),B\r
-    0000659A DD 4E FC              4452        LD      C,(IX-4)\r
-    0000659D DD 46 FD              4453        LD      B,(IX-3)\r
-    000065A0 C5                    4454        PUSH    BC\r
-    000065A1 DD 5E EC              4455        LD      E,(IX-20)\r
-    000065A4 4B                    4456        LD      C,E\r
-    000065A5 DD 56 ED              4457        LD      D,(IX-19)\r
-    000065A8 42                    4458        LD      B,D\r
-    000065A9 21 1D 00              4459        LD      HL,29\r
-    000065AC 09                    4460        ADD     HL,BC\r
-    000065AD 4E                    4461        LD      C,(HL)\r
-    000065AE 23                    4462        INC     HL\r
-    000065AF 46                    4463        LD      B,(HL)\r
-    000065B0 23                    4464        INC     HL\r
-    000065B1 7E                    4465        LD      A,(HL)\r
-    000065B2 69                    4466        LD      L,C\r
-    000065B3 60                    4467        LD      H,B\r
-    000065B4 C1                    4468        POP     BC\r
-    000065B5 CD FB 81              4469        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    000065B8 DD 34 FE              4470        INC     (IX-2)\r
-    000065BB 20 03                 4471        JR      NZ,?0369\r
-    000065BD DD 34 FF              4472        INC     (IX-1)\r
-    000065C0                       4473 ?0369:\r
-    000065C0 C3 01 65              4474        JP      LWRD ?0296\r
-    000065C3                       4475 ?0295:\r
-    000065C3 01 F8 84              4476        LD      BC,?0299\r
-    000065C6 DD 5E EC              4477        LD      E,(IX-20)\r
-    000065C9 DD 56 ED              4478        LD      D,(IX-19)\r
-    000065CC 3E 00                 4479        LD      A,BYTE3 Component_setlabel\r
-    000065CE 21 A1 4C              4480        LD      HL,LWRD Component_setlabel\r
-    000065D1 CD FB 81              4481        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    000065D4 01 FF 00              4482        LD      BC,255\r
-    000065D7 CD 50 66              4483        CALL    LWRD ?0476\r
-    000065DA 01 0E 00              4484        LD      BC,14\r
-    000065DD 09                    4485        ADD     HL,BC\r
-    000065DE 36 30                 4486        LD      (HL),48\r
-    000065E0 23                    4487        INC     HL\r
-    000065E1 70                    4488        LD      (HL),B\r
-    000065E2 0E FE                 4489        LD      C,254\r
-    000065E4 CD 50 66              4490        CALL    LWRD ?0476\r
-    000065E7 EB                    4491        EX      DE,HL\r
-    000065E8 CD D7 4F              4492        CALL    LWRD ?0453\r
-    000065EB DD 4E EC              4493        LD      C,(IX-20)\r
-    000065EE DD 46 ED              4494        LD      B,(IX-19)\r
-    000065F1 C5                    4495        PUSH    BC\r
-    000065F2 FD 5E 11              4496        LD      E,(IY+17)\r
-    000065F5 FD 56 12              4497        LD      D,(IY+18)\r
-    000065F8 FD 6E 11              4498        LD      L,(IY+17)\r
-    000065FB FD 66 12              4499        LD      H,(IY+18)\r
-    000065FE 01 1D 00              4500        LD      BC,29\r
-    00006601 09                    4501        ADD     HL,BC\r
-    00006602 4E                    4502        LD      C,(HL)\r
-    00006603 23                    4503        INC     HL\r
-    00006604 46                    4504        LD      B,(HL)\r
-    00006605 23                    4505        INC     HL\r
-    00006606 7E                    4506        LD      A,(HL)\r
-    00006607 69                    4507        LD      L,C\r
-    00006608 60                    4508        LD      H,B\r
-    00006609 C1                    4509        POP     BC\r
-    0000660A CD FB 81              4510        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    0000660D 21 00 00              4511        LD      HL,0\r
-    00006610 E5                    4512        PUSH    HL\r
-    00006611 FD 5E 11              4513        LD      E,(IY+17)\r
-    00006614 FD 56 12              4514        LD      D,(IY+18)\r
-    00006617 FD 6E 11              4515        LD      L,(IY+17)\r
-    0000661A FD 66 12              4516        LD      H,(IY+18)\r
-    0000661D 01 17 00              4517        LD      BC,23\r
-    00006620 09                    4518        ADD     HL,BC\r
-    00006621 4E                    4519        LD      C,(HL)\r
-    00006622 23                    4520        INC     HL\r
-    00006623 46                    4521        LD      B,(HL)\r
-    00006624 23                    4522        INC     HL\r
-    00006625 7E                    4523        LD      A,(HL)\r
-    00006626 69                    4524        LD      L,C\r
-    00006627 60                    4525        LD      H,B\r
-    00006628 01 03 01              4526        LD      BC,259\r
-    0000662B CD FB 81              4527        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    0000662E E1                    4528        POP     HL\r
-    0000662F                       4529 ?0294:\r
-    0000662F 21 10 00              4530        LD      HL,16\r
-    00006632 ED 4B 3F 87           4531        LD      BC,(global)\r
-    00006636 09                    4532        ADD     HL,BC\r
-    00006637 7E                    4533        LD      A,(HL)\r
-    00006638 23                    4534        INC     HL\r
-    00006639 B6                    4535        OR      (HL)\r
-    0000663A 23                    4536        INC     HL\r
-    0000663B B6                    4537        OR      (HL)\r
-    0000663C 28 0D                 4538        JR      Z,?0301\r
-    0000663E                       4539 ?0300:\r
-    0000663E FD E5                 4540        PUSH    IY\r
-    00006640 D1                    4541        POP     DE\r
-    00006641 21 10 00              4542        LD      HL,16\r
-    00006644 ED 4B 3F 87           4543        LD      BC,(global)\r
-    00006648 CD DC 53              4544        CALL    LWRD ?0475\r
-    0000664B                       4545 ?0301:\r
-    0000664B FD E1                 4546        POP     IY\r
-    0000664D C3 A3 81              4547        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
-    00006650                       4548 ?0476:\r
-    00006650 DD 5E EC              4549        LD      E,(IX-20)\r
-    00006653 DD 56 ED              4550        LD      D,(IX-19)\r
-    00006656 3E 00                 4551        LD      A,BYTE3 Component_find\r
-    00006658 21 D6 4D              4552        LD      HL,LWRD Component_find\r
-    0000665B C3 FB 81              4553        JP      LWRD ?BANK_CALL_DIRECT_L08\r
-    0000665E                       4554 read_stringtable:\r
-    0000665E CD 7A 82              4555        CALL    LWRD ?ENT_AUTO_DIRECT_L09\r
-    00006661 F8 FF                 4556        DEFW    -8\r
-    00006663 FD E5                 4557        PUSH    IY\r
-    00006665 03                    4558        INC     BC\r
-    00006666 0A                    4559        LD      A,(BC)\r
-    00006667 DD 77 FE              4560        LD      (IX-2),A\r
-    0000666A 03                    4561        INC     BC\r
-    0000666B 0A                    4562        LD      A,(BC)\r
-    0000666C DD 77 FF              4563        LD      (IX-1),A\r
-    0000666F 03                    4564        INC     BC\r
-    00006670 69                    4565        LD      L,C\r
-    00006671 60                    4566        LD      H,B\r
-    00006672 4E                    4567        LD      C,(HL)\r
-    00006673 DD 71 FC              4568        LD      (IX-4),C\r
-    00006676 23                    4569        INC     HL\r
-    00006677 46                    4570        LD      B,(HL)\r
-    00006678 DD 70 FD              4571        LD      (IX-3),B\r
-    0000667B DD 6E FE              4572        LD      L,(IX-2)\r
-    0000667E 67                    4573        LD      H,A\r
-    0000667F 29                    4574        ADD     HL,HL\r
-    00006680 EB                    4575        EX      DE,HL\r
-    00006681 CD 0E 63              4576        CALL    LWRD ?0454\r
-    00006684 DD 75 FA              4577        LD      (IX-6),L\r
-    00006687 DD 74 FB              4578        LD      (IX-5),H\r
-    0000668A 59                    4579        LD      E,C\r
-    0000668B 50                    4580        LD      D,B\r
-    0000668C CD 16 4B              4581        CALL    LWRD ?0447\r
-    0000668F C5                    4582        PUSH    BC\r
-    00006690 4D                    4583        LD      C,L\r
-    00006691 44                    4584        LD      B,H\r
-    00006692 DD 5E 02              4585        LD      E,(IX+2)\r
-    00006695 DD 56 03              4586        LD      D,(IX+3)\r
-    00006698 CD 06 63              4587        CALL    LWRD ?0441\r
-    0000669B F1                    4588        POP     AF\r
-    0000669C 11 00 00              4589        LD      DE,0\r
-    0000669F AF                    4590        XOR     A\r
-    000066A0 DD 77 F8              4591        LD      (IX-8),A\r
-    000066A3 DD 77 F9              4592        LD      (IX-7),A\r
-    000066A6                       4593 ?0303:\r
-    000066A6 DD 4E FC              4594        LD      C,(IX-4)\r
-    000066A9 DD 46 FD              4595        LD      B,(IX-3)\r
-    000066AC 6B                    4596        LD      L,E\r
-    000066AD 62                    4597        LD      H,D\r
-    000066AE CD C8 82              4598        CALL    LWRD ?SS_CMP_L02\r
-    000066B1 30 35                 4599        JR      NC,?0302\r
-    000066B3 CD 24 67              4600        CALL    LWRD ?0479\r
-    000066B6 30 30                 4601        JR      NC,?0302\r
-    000066B8                       4602 ?0306:\r
-    000066B8                       4603 ?0305:\r
-    000066B8                       4604 ?0304:\r
-    000066B8 23                    4605        INC     HL\r
-    000066B9 DD 75 F8              4606        LD      (IX-8),L\r
-    000066BC DD 74 F9              4607        LD      (IX-7),H\r
-    000066BF 2B                    4608        DEC     HL\r
-    000066C0 29                    4609        ADD     HL,HL\r
-    000066C1 DD 4E FA              4610        LD      C,(IX-6)\r
-    000066C4 DD 46 FB              4611        LD      B,(IX-5)\r
-    000066C7 09                    4612        ADD     HL,BC\r
-    000066C8 E5                    4613        PUSH    HL\r
-    000066C9 FD E5                 4614        PUSH    IY\r
-    000066CB E1                    4615        POP     HL\r
-    000066CC 19                    4616        ADD     HL,DE\r
-    000066CD 4D                    4617        LD      C,L\r
-    000066CE 44                    4618        LD      B,H\r
-    000066CF E1                    4619        POP     HL\r
-    000066D0 71                    4620        LD      (HL),C\r
-    000066D1 23                    4621        INC     HL\r
-    000066D2 70                    4622        LD      (HL),B\r
-    000066D3                       4623 ?0308:\r
-    000066D3 FD E5                 4624        PUSH    IY\r
-    000066D5 E1                    4625        POP     HL\r
-    000066D6 19                    4626        ADD     HL,DE\r
-    000066D7 7E                    4627        LD      A,(HL)\r
-    000066D8 B7                    4628        OR      A\r
-    000066D9 28 03                 4629        JR      Z,?0307\r
-    000066DB                       4630 ?0309:\r
-    000066DB 13                    4631        INC     DE\r
-    000066DC 18 F5                 4632        JR      ?0308\r
-    000066DE                       4633 ?0307:\r
-    000066DE 6B                    4634        LD      L,E\r
-    000066DF 62                    4635        LD      H,D\r
-    000066E0 13                    4636        INC     DE\r
-    000066E1 FD E5                 4637        PUSH    IY\r
-    000066E3 C1                    4638        POP     BC\r
-    000066E4 09                    4639        ADD     HL,BC\r
-    000066E5 77                    4640        LD      (HL),A\r
-    000066E6 18 BE                 4641        JR      ?0303\r
-    000066E8                       4642 ?0302:\r
-    000066E8 CD 24 67              4643        CALL    LWRD ?0479\r
-    000066EB 30 13                 4644        JR      NC,?0311\r
-    000066ED                       4645 ?0310:\r
-    000066ED 29                    4646        ADD     HL,HL\r
-    000066EE DD 4E FA              4647        LD      C,(IX-6)\r
-    000066F1 DD 46 FB              4648        LD      B,(IX-5)\r
-    000066F4 09                    4649        ADD     HL,BC\r
-    000066F5 E5                    4650        PUSH    HL\r
-    000066F6 FD E5                 4651        PUSH    IY\r
-    000066F8 E1                    4652        POP     HL\r
-    000066F9 19                    4653        ADD     HL,DE\r
-    000066FA 4D                    4654        LD      C,L\r
-    000066FB 44                    4655        LD      B,H\r
-    000066FC E1                    4656        POP     HL\r
-    000066FD 71                    4657        LD      (HL),C\r
-    000066FE 23                    4658        INC     HL\r
-    000066FF 70                    4659        LD      (HL),B\r
-    00006700                       4660 ?0311:\r
-    00006700 21 06 00              4661        LD      HL,6\r
-    00006703 ED 4B 3F 87           4662        LD      BC,(global)\r
-    00006707 09                    4663        ADD     HL,BC\r
-    00006708 FD E5                 4664        PUSH    IY\r
-    0000670A C1                    4665        POP     BC\r
-    0000670B 71                    4666        LD      (HL),C\r
-    0000670C 23                    4667        INC     HL\r
-    0000670D 70                    4668        LD      (HL),B\r
-    0000670E 21 08 00              4669        LD      HL,8\r
-    00006711 ED 4B 3F 87           4670        LD      BC,(global)\r
-    00006715 09                    4671        ADD     HL,BC\r
-    00006716 DD 4E FA              4672        LD      C,(IX-6)\r
-    00006719 71                    4673        LD      (HL),C\r
-    0000671A DD 46 FB              4674        LD      B,(IX-5)\r
-    0000671D 23                    4675        INC     HL\r
-    0000671E 70                    4676        LD      (HL),B\r
-    0000671F FD E1                 4677        POP     IY\r
-    00006721 C3 A3 81              4678        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
-    00006724                       4679 ?0479:\r
-    00006724 DD 4E FE              4680        LD      C,(IX-2)\r
-    00006727 DD 46 FF              4681        LD      B,(IX-1)\r
-    0000672A DD 6E F8              4682        LD      L,(IX-8)\r
-    0000672D DD 66 F9              4683        LD      H,(IX-7)\r
-    00006730 C3 C8 82              4684        JP      LWRD ?SS_CMP_L02\r
-    00006733                       4685 gui_globals:\r
-    00006733 2A 3F 87              4686        LD      HL,(global)\r
-    00006736 C3 A9 81              4687        JP      LWRD ?BANK_FAST_LEAVE_L08\r
-    00006739                       4688 GUIinit:\r
-    00006739 C5                    4689        PUSH    BC\r
-    0000673A D5                    4690        PUSH    DE\r
-    0000673B 11 13 00              4691        LD      DE,19\r
-    0000673E CD 0E 63              4692        CALL    LWRD ?0454\r
-    00006741 22 3F 87              4693        LD      (global),HL\r
-    00006744 AF                    4694        XOR     A\r
-    00006745 77                    4695        LD      (HL),A\r
-    00006746 23                    4696        INC     HL\r
-    00006747 77                    4697        LD      (HL),A\r
-    00006748 21 04 00              4698        LD      HL,4\r
-    0000674B ED 4B 3F 87           4699        LD      BC,(global)\r
-    0000674F 09                    4700        ADD     HL,BC\r
-    00006750 77                    4701        LD      (HL),A\r
-    00006751 23                    4702        INC     HL\r
-    00006752 77                    4703        LD      (HL),A\r
-    00006753 21 0A 00              4704        LD      HL,10\r
-    00006756 ED 4B 3F 87           4705        LD      BC,(global)\r
-    0000675A 09                    4706        ADD     HL,BC\r
-    0000675B 77                    4707        LD      (HL),A\r
-    0000675C 23                    4708        INC     HL\r
-    0000675D 77                    4709        LD      (HL),A\r
-    0000675E 21 0C 00              4710        LD      HL,12\r
-    00006761 ED 4B 3F 87           4711        LD      BC,(global)\r
-    00006765 09                    4712        ADD     HL,BC\r
-    00006766 77                    4713        LD      (HL),A\r
-    00006767 23                    4714        INC     HL\r
-    00006768 77                    4715        LD      (HL),A\r
-    00006769 21 08 00              4716        LD      HL,8\r
-    0000676C ED 4B 3F 87           4717        LD      BC,(global)\r
-    00006770 09                    4718        ADD     HL,BC\r
-    00006771 77                    4719        LD      (HL),A\r
-    00006772 23                    4720        INC     HL\r
-    00006773 77                    4721        LD      (HL),A\r
-    00006774 21 06 00              4722        LD      HL,6\r
-    00006777 ED 4B 3F 87           4723        LD      BC,(global)\r
-    0000677B 09                    4724        ADD     HL,BC\r
-    0000677C 77                    4725        LD      (HL),A\r
-    0000677D 23                    4726        INC     HL\r
-    0000677E 77                    4727        LD      (HL),A\r
-    0000677F 21 10 00              4728        LD      HL,16\r
-    00006782 ED 4B 3F 87           4729        LD      BC,(global)\r
-    00006786 09                    4730        ADD     HL,BC\r
-    00006787 77                    4731        LD      (HL),A\r
-    00006788 23                    4732        INC     HL\r
-    00006789 77                    4733        LD      (HL),A\r
-    0000678A 23                    4734        INC     HL\r
-    0000678B 77                    4735        LD      (HL),A\r
-    0000678C 3E 00                 4736        LD      A,BYTE3 GraphicsOpen\r
-    0000678E 21 48 46              4737        LD      HL,LWRD GraphicsOpen\r
-    00006791 CD FB 81              4738        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    00006794 21 00 00              4739        LD      HL,0\r
-    00006797 E5                    4740        PUSH    HL\r
-    00006798 E5                    4741        PUSH    HL\r
-    00006799 0E 00                 4742        LD      C,BYTE3 stringheight01\r
-    0000679B C5                    4743        PUSH    BC\r
-    0000679C 21 B8 4B              4744        LD      HL,LWRD stringheight01\r
-    0000679F E5                    4745        PUSH    HL\r
-    000067A0 0E 00                 4746        LD      C,BYTE3 stringwidth0\r
-    000067A2 C5                    4747        PUSH    BC\r
-    000067A3 21 D4 4B              4748        LD      HL,LWRD stringwidth0\r
-    000067A6 E5                    4749        PUSH    HL\r
-    000067A7 11 30 00              4750        LD      DE,48\r
-    000067AA CD 58 68              4751        CALL    LWRD ?0484\r
-    000067AD 21 0C 00              4752        LD      HL,12\r
-    000067B0 39                    4753        ADD     HL,SP\r
-    000067B1 F9                    4754        LD      SP,HL\r
-    000067B2 21 00 00              4755        LD      HL,0\r
-    000067B5 E5                    4756        PUSH    HL\r
-    000067B6 E5                    4757        PUSH    HL\r
-    000067B7 0E 00                 4758        LD      C,BYTE3 stringheight01\r
-    000067B9 C5                    4759        PUSH    BC\r
-    000067BA 21 B8 4B              4760        LD      HL,LWRD stringheight01\r
-    000067BD E5                    4761        PUSH    HL\r
-    000067BE 0E 00                 4762        LD      C,BYTE3 stringwidth1\r
-    000067C0 C5                    4763        PUSH    BC\r
-    000067C1 21 E5 4B              4764        LD      HL,LWRD stringwidth1\r
-    000067C4 E5                    4765        PUSH    HL\r
-    000067C5 11 31 00              4766        LD      DE,49\r
-    000067C8 CD 58 68              4767        CALL    LWRD ?0484\r
-    000067CB 21 0C 00              4768        LD      HL,12\r
-    000067CE 39                    4769        ADD     HL,SP\r
-    000067CF F9                    4770        LD      SP,HL\r
-    000067D0 21 00 00              4771        LD      HL,0\r
-    000067D3 E5                    4772        PUSH    HL\r
-    000067D4 E5                    4773        PUSH    HL\r
-    000067D5 0E 00                 4774        LD      C,BYTE3 stringheight2\r
-    000067D7 C5                    4775        PUSH    BC\r
-    000067D8 21 CB 4B              4776        LD      HL,LWRD stringheight2\r
-    000067DB E5                    4777        PUSH    HL\r
-    000067DC 0E 00                 4778        LD      C,BYTE3 stringwidth2\r
-    000067DE C5                    4779        PUSH    BC\r
-    000067DF 21 EE 4B              4780        LD      HL,LWRD stringwidth2\r
-    000067E2 E5                    4781        PUSH    HL\r
-    000067E3 11 32 00              4782        LD      DE,50\r
-    000067E6 CD 58 68              4783        CALL    LWRD ?0484\r
-    000067E9 21 0C 00              4784        LD      HL,12\r
-    000067EC 39                    4785        ADD     HL,SP\r
-    000067ED F9                    4786        LD      SP,HL\r
-    000067EE 21 0E 00              4787        LD      HL,14\r
-    000067F1 ED 4B 3F 87           4788        LD      BC,(global)\r
-    000067F5 09                    4789        ADD     HL,BC\r
-    000067F6 E5                    4790        PUSH    HL\r
-    000067F7 11 80 00              4791        LD      DE,128\r
-    000067FA D5                    4792        PUSH    DE\r
-    000067FB 5A                    4793        LD      E,D\r
-    000067FC D5                    4794        PUSH    DE\r
-    000067FD 4B                    4795        LD      C,E\r
-    000067FE 42                    4796        LD      B,D\r
-    000067FF 3E 00                 4797        LD      A,BYTE3 Window_new\r
-    00006801 21 B9 55              4798        LD      HL,LWRD Window_new\r
-    00006804 CD FB 81              4799        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    00006807 F1                    4800        POP     AF\r
-    00006808 F1                    4801        POP     AF\r
-    00006809 4D                    4802        LD      C,L\r
-    0000680A 44                    4803        LD      B,H\r
-    0000680B E1                    4804        POP     HL\r
-    0000680C 71                    4805        LD      (HL),C\r
-    0000680D 23                    4806        INC     HL\r
-    0000680E 70                    4807        LD      (HL),B\r
-    0000680F 21 0E 00              4808        LD      HL,14\r
-    00006812 ED 4B 3F 87           4809        LD      BC,(global)\r
-    00006816 09                    4810        ADD     HL,BC\r
-    00006817 56                    4811        LD      D,(HL)\r
-    00006818 23                    4812        INC     HL\r
-    00006819 66                    4813        LD      H,(HL)\r
-    0000681A 6A                    4814        LD      L,D\r
-    0000681B 11 0A 00              4815        LD      DE,10\r
-    0000681E 19                    4816        ADD     HL,DE\r
-    0000681F 36 01                 4817        LD      (HL),1\r
-    00006821 23                    4818        INC     HL\r
-    00006822 72                    4819        LD      (HL),D\r
-    00006823 21 0E 00              4820        LD      HL,14\r
-    00006826 ED 4B 3F 87           4821        LD      BC,(global)\r
-    0000682A 09                    4822        ADD     HL,BC\r
-    0000682B 56                    4823        LD      D,(HL)\r
-    0000682C 23                    4824        INC     HL\r
-    0000682D 66                    4825        LD      H,(HL)\r
-    0000682E 6A                    4826        LD      L,D\r
-    0000682F 11 17 00              4827        LD      DE,23\r
-    00006832 19                    4828        ADD     HL,DE\r
-    00006833 36 38                 4829        LD      (HL),LOW(rootWindow_handler)\r
-    00006835 23                    4830        INC     HL\r
-    00006836 36 5F                 4831        LD      (HL),HIGH(rootWindow_handler)\r
-    00006838 23                    4832        INC     HL\r
-    00006839 36 00                 4833        LD      (HL),BYTE3 rootWindow_handler\r
-    0000683B 21 0E 00              4834        LD      HL,14\r
-    0000683E ED 4B 3F 87           4835        LD      BC,(global)\r
-    00006842 09                    4836        ADD     HL,BC\r
-    00006843 46                    4837        LD      B,(HL)\r
-    00006844 23                    4838        INC     HL\r
-    00006845 66                    4839        LD      H,(HL)\r
-    00006846 68                    4840        LD      L,B\r
-    00006847 01 1A 00              4841        LD      BC,26\r
-    0000684A 09                    4842        ADD     HL,BC\r
-    0000684B 36 74                 4843        LD      (HL),LOW(Root_paint)\r
-    0000684D 23                    4844        INC     HL\r
-    0000684E 36 55                 4845        LD      (HL),HIGH(Root_paint)\r
-    00006850 23                    4846        INC     HL\r
-    00006851 36 00                 4847        LD      (HL),BYTE3 Root_paint\r
-    00006853 D1                    4848        POP     DE\r
-    00006854 C1                    4849        POP     BC\r
-    00006855 C3 A9 81              4850        JP      LWRD ?BANK_FAST_LEAVE_L08\r
-    00006858                       4851 ?0484:\r
-    00006858 3E 00                 4852        LD      A,BYTE3 loadFont\r
-    0000685A 21 7B 4A              4853        LD      HL,LWRD loadFont\r
-    0000685D C3 FB 81              4854        JP      LWRD ?BANK_CALL_DIRECT_L08\r
-    00006860                       4855 GUIunit:\r
-    00006860 C5                    4856        PUSH    BC\r
-    00006861 D5                    4857        PUSH    DE\r
-    00006862 21 0E 00              4858        LD      HL,14\r
-    00006865 ED 4B 3F 87           4859        LD      BC,(global)\r
-    00006869 09                    4860        ADD     HL,BC\r
-    0000686A 5E                    4861        LD      E,(HL)\r
-    0000686B 23                    4862        INC     HL\r
-    0000686C 56                    4863        LD      D,(HL)\r
-    0000686D CD D7 4F              4864        CALL    LWRD ?0453\r
-    00006870 3E 00                 4865        LD      A,BYTE3 ClearScreen\r
-    00006872 21 05 49              4866        LD      HL,LWRD ClearScreen\r
-    00006875 CD FB 81              4867        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    00006878 3E 00                 4868        LD      A,BYTE3 GraphicsClose\r
-    0000687A 21 D6 46              4869        LD      HL,LWRD GraphicsClose\r
-    0000687D CD FB 81              4870        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    00006880 D1                    4871        POP     DE\r
-    00006881 C1                    4872        POP     BC\r
-    00006882 C3 A9 81              4873        JP      LWRD ?BANK_FAST_LEAVE_L08\r
-    00006885                       4874 GUIgo:\r
-    00006885 CD 7A 82              4875        CALL    LWRD ?ENT_AUTO_DIRECT_L09\r
-    00006888 FE FF                 4876        DEFW    65534\r
-    0000688A DD 4E 02              4877        LD      C,(IX+2)\r
-    0000688D DD 46 03              4878        LD      B,(IX+3)\r
-    00006890 21 0E 00              4879        LD      HL,14\r
-    00006893 ED 5B 3F 87           4880        LD      DE,(global)\r
-    00006897 19                    4881        ADD     HL,DE\r
-    00006898 5E                    4882        LD      E,(HL)\r
-    00006899 23                    4883        INC     HL\r
-    0000689A 56                    4884        LD      D,(HL)\r
-    0000689B 3E 00                 4885        LD      A,BYTE3 screenbuilder\r
-    0000689D 21 56 5F              4886        LD      HL,LWRD screenbuilder\r
-    000068A0 CD FB 81              4887        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    000068A3                       4888 ?0313:\r
-    000068A3 21 04 00              4889        LD      HL,4\r
-    000068A6 ED 4B 3F 87           4890        LD      BC,(global)\r
-    000068AA 09                    4891        ADD     HL,BC\r
-    000068AB 7E                    4892        LD      A,(HL)\r
-    000068AC 23                    4893        INC     HL\r
-    000068AD B6                    4894        OR      (HL)\r
-    000068AE C2 43 69              4895        JP      NZ,?0312\r
-    000068B1                       4896 ?0314:\r
-    000068B1 21 01 00              4897        LD      HL,1\r
-    000068B4 E5                    4898        PUSH    HL\r
-    000068B5 23                    4899        INC     HL\r
-    000068B6 39                    4900        ADD     HL,SP\r
-    000068B7 4D                    4901        LD      C,L\r
-    000068B8 44                    4902        LD      B,H\r
-    000068B9 2A 3F 87              4903        LD      HL,(global)\r
-    000068BC 23                    4904        INC     HL\r
-    000068BD 23                    4905        INC     HL\r
-    000068BE 5E                    4906        LD      E,(HL)\r
-    000068BF 23                    4907        INC     HL\r
-    000068C0 56                    4908        LD      D,(HL)\r
-    000068C1 CD 06 63              4909        CALL    LWRD ?0441\r
-    000068C4 F1                    4910        POP     AF\r
-    000068C5 3E 01                 4911        LD      A,1\r
-    000068C7 AD                    4912        XOR     L\r
-    000068C8 B4                    4913        OR      H\r
-    000068C9 20 D8                 4914        JR      NZ,?0313\r
-    000068CB                       4915 ?0315:\r
-    000068CB DD 4E FE              4916        LD      C,(IX-2)\r
-    000068CE 47                    4917        LD      B,A\r
-    000068CF C5                    4918        PUSH    BC\r
-    000068D0 21 04 85              4919        LD      HL,?0317\r
-    000068D3 E5                    4920        PUSH    HL\r
-    000068D4 3E 00                 4921        LD      A,BYTE3 printf\r
-    000068D6 21 91 72              4922        LD      HL,LWRD printf\r
-    000068D9 CD FB 81              4923        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    000068DC F1                    4924        POP     AF\r
-    000068DD F1                    4925        POP     AF\r
-    000068DE AF                    4926        XOR     A\r
-    000068DF DD B6 FE              4927        OR      (IX-2)\r
-    000068E2 28 29                 4928        JR      Z,?0319\r
-    000068E4                       4929 ?0318:\r
-    000068E4 4F                    4930        LD      C,A\r
-    000068E5 C5                    4931        PUSH    BC\r
-    000068E6 21 0E 00              4932        LD      HL,14\r
-    000068E9 ED 5B 3F 87           4933        LD      DE,(global)\r
-    000068ED 19                    4934        ADD     HL,DE\r
-    000068EE 5E                    4935        LD      E,(HL)\r
-    000068EF 23                    4936        INC     HL\r
-    000068F0 56                    4937        LD      D,(HL)\r
-    000068F1 21 0E 00              4938        LD      HL,14\r
-    000068F4 ED 4B 3F 87           4939        LD      BC,(global)\r
-    000068F8 09                    4940        ADD     HL,BC\r
-    000068F9 46                    4941        LD      B,(HL)\r
-    000068FA 23                    4942        INC     HL\r
-    000068FB 66                    4943        LD      H,(HL)\r
-    000068FC 68                    4944        LD      L,B\r
-    000068FD 01 17 00              4945        LD      BC,23\r
-    00006900 09                    4946        ADD     HL,BC\r
-    00006901 4E                    4947        LD      C,(HL)\r
-    00006902 23                    4948        INC     HL\r
-    00006903 46                    4949        LD      B,(HL)\r
-    00006904 23                    4950        INC     HL\r
-    00006905 7E                    4951        LD      A,(HL)\r
-    00006906 69                    4952        LD      L,C\r
-    00006907 60                    4953        LD      H,B\r
-    00006908 01 01 00              4954        LD      BC,1\r
-    0000690B 18 29                 4955        JR      ?0370\r
-    0000690D                       4956 ?0319:\r
-    0000690D DD 4E FF              4957        LD      C,(IX-1)\r
-    00006910 C5                    4958        PUSH    BC\r
-    00006911 21 0E 00              4959        LD      HL,14\r
-    00006914 ED 5B 3F 87           4960        LD      DE,(global)\r
-    00006918 19                    4961        ADD     HL,DE\r
-    00006919 5E                    4962        LD      E,(HL)\r
-    0000691A 23                    4963        INC     HL\r
-    0000691B 56                    4964        LD      D,(HL)\r
-    0000691C 21 0E 00              4965        LD      HL,14\r
-    0000691F ED 4B 3F 87           4966        LD      BC,(global)\r
-    00006923 09                    4967        ADD     HL,BC\r
-    00006924 46                    4968        LD      B,(HL)\r
-    00006925 23                    4969        INC     HL\r
-    00006926 66                    4970        LD      H,(HL)\r
-    00006927 68                    4971        LD      L,B\r
-    00006928 01 17 00              4972        LD      BC,23\r
-    0000692B 09                    4973        ADD     HL,BC\r
-    0000692C 4E                    4974        LD      C,(HL)\r
-    0000692D 23                    4975        INC     HL\r
-    0000692E 46                    4976        LD      B,(HL)\r
-    0000692F 23                    4977        INC     HL\r
-    00006930 7E                    4978        LD      A,(HL)\r
-    00006931 69                    4979        LD      L,C\r
-    00006932 60                    4980        LD      H,B\r
-    00006933 01 02 00              4981        LD      BC,2\r
-    00006936                       4982 ?0370:\r
-    00006936 CD FB 81              4983        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
-    00006939 E1                    4984        POP     HL\r
-    0000693A                       4985 ?0320:\r
-    0000693A DD 46 FE              4986        LD      B,(IX-2)\r
-    0000693D DD 70 FF              4987        LD      (IX-1),B\r
-    00006940                       4988 ?0316:\r
-    00006940 C3 A3 68              4989        JP      LWRD ?0313\r
-    00006943                       4990 ?0312:\r
-    00006943 C3 A3 81              4991        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
+    000045C9                         94 GraphicsOpen:\r
+    000045C9 CD 88 81                95        CALL    LWRD ?ENT_AUTO_DIRECT_L09\r
+    000045CC F8 FF                   96        DEFW    65528\r
+    000045CE 21 06 00                97        LD      HL,6\r
+    000045D1 39                      98        ADD     HL,SP\r
+    000045D2 EB                      99        EX      DE,HL\r
+    000045D3 21 81 84               100        LD      HL,?0000\r
+    000045D6 01 02 00               101        LD      BC,2\r
+    000045D9 ED B0                  102        LDIR\r
+    000045DB 2A C0 86               103        LD      HL,(global)\r
+    000045DE 23                     104        INC     HL\r
+    000045DF 23                     105        INC     HL\r
+    000045E0 E5                     106        PUSH    HL\r
+    000045E1 03                     107        INC     BC\r
+    000045E2 03                     108        INC     BC\r
+    000045E3 C5                     109        PUSH    BC\r
+    000045E4 01 B5 84               110        LD      BC,?0001\r
+    000045E7 C5                     111        PUSH    BC\r
+    000045E8 3E 01                  112        LD      A,BYTE3 open\r
+    000045EA 21 AD 42               113        LD      HL,LWRD open\r
+    000045ED CD 5E 81               114        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    000045F0 F1                     115        POP     AF\r
+    000045F1 F1                     116        POP     AF\r
+    000045F2 4D                     117        LD      C,L\r
+    000045F3 44                     118        LD      B,H\r
+    000045F4 E1                     119        POP     HL\r
+    000045F5 71                     120        LD      (HL),C\r
+    000045F6 23                     121        INC     HL\r
+    000045F7 70                     122        LD      (HL),B\r
+    000045F8 21 00 00               123        LD      HL,0\r
+    000045FB 39                     124        ADD     HL,SP\r
+    000045FC E5                     125        PUSH    HL\r
+    000045FD 21 00 00               126        LD      HL,0\r
+    00004600 E5                     127        PUSH    HL\r
+    00004601 2A C0 86               128        LD      HL,(global)\r
+    00004604 23                     129        INC     HL\r
+    00004605 23                     130        INC     HL\r
+    00004606 4E                     131        LD      C,(HL)\r
+    00004607 23                     132        INC     HL\r
+    00004608 46                     133        LD      B,(HL)\r
+    00004609 C5                     134        PUSH    BC\r
+    0000460A 3E 00                  135        LD      A,BYTE3 ioctl\r
+    0000460C 21 68 73               136        LD      HL,LWRD ioctl\r
+    0000460F CD 5E 81               137        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    00004612 F1                     138        POP     AF\r
+    00004613 F1                     139        POP     AF\r
+    00004614 F1                     140        POP     AF\r
+    00004615 DD 36 FC 60            141        LD      (IX-4),96\r
+    00004619 DD 36 FD 00            142        LD      (IX-3),0\r
+    0000461D 21 00 00               143        LD      HL,0\r
+    00004620 39                     144        ADD     HL,SP\r
+    00004621 E5                     145        PUSH    HL\r
+    00004622 21 01 00               146        LD      HL,1\r
+    00004625 E5                     147        PUSH    HL\r
+    00004626 2A C0 86               148        LD      HL,(global)\r
+    00004629 23                     149        INC     HL\r
+    0000462A 23                     150        INC     HL\r
+    0000462B 4E                     151        LD      C,(HL)\r
+    0000462C 23                     152        INC     HL\r
+    0000462D 46                     153        LD      B,(HL)\r
+    0000462E C5                     154        PUSH    BC\r
+    0000462F 3E 00                  155        LD      A,BYTE3 ioctl\r
+    00004631 21 68 73               156        LD      HL,LWRD ioctl\r
+    00004634 CD 5E 81               157        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    00004637 F1                     158        POP     AF\r
+    00004638 F1                     159        POP     AF\r
+    00004639 F1                     160        POP     AF\r
+    0000463A 21 02 00               161        LD      HL,2\r
+    0000463D E5                     162        PUSH    HL\r
+    0000463E 2E 08                  163        LD      L,8\r
+    00004640                        164 ?0372:\r
+    00004640 39                     165        ADD     HL,SP\r
+    00004641 4D                     166        LD      C,L\r
+    00004642                        167 ?0427:\r
+    00004642 44                     168        LD      B,H\r
+    00004643 2A C0 86               169        LD      HL,(global)\r
+    00004646                        170 ?0428:\r
+    00004646 23                     171        INC     HL\r
+    00004647 23                     172        INC     HL\r
+    00004648                        173 ?0429:\r
+    00004648 5E                     174        LD      E,(HL)\r
+    00004649 23                     175        INC     HL\r
+    0000464A                        176 ?0430:\r
+    0000464A 56                     177        LD      D,(HL)\r
+    0000464B 3E 00                  178        LD      A,BYTE3 _write\r
+    0000464D                        179 ?0431:\r
+    0000464D 21 D1 6D               180        LD      HL,LWRD _write\r
+    00004650 CD 5E 81               181        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    00004653 F1                     182        POP     AF\r
+    00004654 C3 1F 81               183        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
+    00004657                        184 GraphicsClose:\r
+    00004657 D5                     185        PUSH    DE\r
+    00004658 2A C0 86               186        LD      HL,(global)\r
+    0000465B 23                     187        INC     HL\r
+    0000465C 23                     188        INC     HL\r
+    0000465D 5E                     189        LD      E,(HL)\r
+    0000465E 23                     190        INC     HL\r
+    0000465F 56                     191        LD      D,(HL)\r
+    00004660 3E 00                  192        LD      A,BYTE3 close\r
+    00004662 21 2B 72               193        LD      HL,LWRD close\r
+    00004665 CD 5E 81               194        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    00004668 D1                     195        POP     DE\r
+    00004669 C3 25 81               196        JP      LWRD ?BANK_FAST_LEAVE_L08\r
+    0000466C                        197 Move:\r
+    0000466C CD 88 81               198        CALL    LWRD ?ENT_AUTO_DIRECT_L09\r
+    0000466F FC FF                  199        DEFW    65532\r
+    00004671 21 00 00               200        LD      HL,0\r
+    00004674 39                     201        ADD     HL,SP\r
+    00004675 EB                     202        EX      DE,HL\r
+    00004676 21 83 84               203        LD      HL,?0002\r
+    00004679 01 04 00               204        LD      BC,4\r
+    0000467C ED B0                  205        LDIR\r
+    0000467E DD 46 02               206        LD      B,(IX+2)\r
+    00004681 DD 70 FE               207        LD      (IX-2),B\r
+    00004684 DD 46 04               208        LD      B,(IX+4)\r
+    00004687 DD 70 FF               209        LD      (IX-1),B\r
+    0000468A 21 04 00               210        LD      HL,4\r
+    0000468D E5                     211        PUSH    HL\r
+    0000468E 2B                     212        DEC     HL\r
+    0000468F 2B                     213        DEC     HL\r
+    00004690 C3 40 46               214        JP      LWRD ?0372\r
+    00004693 4D                     215        LD      C,L\r
+    00004694                        216 ?0381:\r
+    00004694 C3 42 46               217        JP      LWRD ?0427\r
+    00004697 2A C0 86               218        LD      HL,(global)\r
+    0000469A 23                     219        INC     HL\r
+    0000469B 23                     220        INC     HL\r
+    0000469C                        221 ?0432:\r
+    0000469C 5E                     222        LD      E,(HL)\r
+    0000469D 23                     223        INC     HL\r
+    0000469E                        224 ?0433:\r
+    0000469E 56                     225        LD      D,(HL)\r
+    0000469F 3E 00                  226        LD      A,BYTE3 _write\r
+    000046A1                        227 ?0434:\r
+    000046A1 C3 4D 46               228        JP      LWRD ?0431\r
+    000046A4 CD 5E 81               229        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    000046A7 F1                     230        POP     AF\r
+    000046A8 C3 1F 81               231        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
+    000046AB                        232 ClearRect:\r
+    000046AB CD 88 81               233        CALL    LWRD ?ENT_AUTO_DIRECT_L09\r
+    000046AE FC FF                  234        DEFW    65532\r
+    000046B0 21 00 00               235        LD      HL,0\r
+    000046B3 39                     236        ADD     HL,SP\r
+    000046B4 EB                     237        EX      DE,HL\r
+    000046B5 21 87 84               238        LD      HL,?0003\r
+    000046B8 01 04 00               239        LD      BC,4\r
+    000046BB ED B0                  240        LDIR\r
+    000046BD DD 46 02               241        LD      B,(IX+2)\r
+    000046C0 DD 70 FE               242        LD      (IX-2),B\r
+    000046C3 DD 46 04               243        LD      B,(IX+4)\r
+    000046C6 DD 70 FF               244        LD      (IX-1),B\r
+    000046C9 21 04 00               245        LD      HL,4\r
+    000046CC E5                     246        PUSH    HL\r
+    000046CD 2B                     247        DEC     HL\r
+    000046CE 2B                     248        DEC     HL\r
+    000046CF C3 40 46               249        JP      LWRD ?0372\r
+    000046D2 4D                     250        LD      C,L\r
+    000046D3 C3 94 46               251        JP      LWRD ?0381\r
+    000046D6 2A C0 86               252        LD      HL,(global)\r
+    000046D9                        253 ?0389:\r
+    000046D9 C3 46 46               254        JP      LWRD ?0428\r
+    000046DC 23                     255        INC     HL\r
+    000046DD C3 9C 46               256        JP      LWRD ?0432\r
+    000046E0 23                     257        INC     HL\r
+    000046E1 56                     258        LD      D,(HL)\r
+    000046E2 3E 00                  259        LD      A,BYTE3 _write\r
+    000046E4                        260 ?0435:\r
+    000046E4 C3 4D 46               261        JP      LWRD ?0431\r
+    000046E7 CD 5E 81               262        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    000046EA F1                     263        POP     AF\r
+    000046EB C3 1F 81               264        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
+    000046EE                        265 DrawRectNC:\r
+    000046EE CD 88 81               266        CALL    LWRD ?ENT_AUTO_DIRECT_L09\r
+    000046F1 FC FF                  267        DEFW    65532\r
+    000046F3 21 00 00               268        LD      HL,0\r
+    000046F6 39                     269        ADD     HL,SP\r
+    000046F7 EB                     270        EX      DE,HL\r
+    000046F8 21 8B 84               271        LD      HL,?0004\r
+    000046FB 01 04 00               272        LD      BC,4\r
+    000046FE ED B0                  273        LDIR\r
+    00004700 DD 46 02               274        LD      B,(IX+2)\r
+    00004703 DD 70 FE               275        LD      (IX-2),B\r
+    00004706 DD 46 04               276        LD      B,(IX+4)\r
+    00004709 DD 70 FF               277        LD      (IX-1),B\r
+    0000470C 21 04 00               278        LD      HL,4\r
+    0000470F E5                     279        PUSH    HL\r
+    00004710 2B                     280        DEC     HL\r
+    00004711 2B                     281        DEC     HL\r
+    00004712 C3 40 46               282        JP      LWRD ?0372\r
+    00004715 4D                     283        LD      C,L\r
+    00004716 C3 94 46               284        JP      LWRD ?0381\r
+    00004719 2A C0 86               285        LD      HL,(global)\r
+    0000471C C3 D9 46               286        JP      LWRD ?0389\r
+    0000471F 23                     287        INC     HL\r
+    00004720                        288 ?0396:\r
+    00004720 C3 48 46               289        JP      LWRD ?0429\r
+    00004723 23                     290        INC     HL\r
+    00004724 C3 9E 46               291        JP      LWRD ?0433\r
+    00004727 3E 00                  292        LD      A,BYTE3 _write\r
+    00004729 C3 E4 46               293        JP      LWRD ?0435\r
+    0000472C CD 5E 81               294        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    0000472F F1                     295        POP     AF\r
+    00004730 C3 1F 81               296        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
+    00004733                        297 FillRect:\r
+    00004733 CD 88 81               298        CALL    LWRD ?ENT_AUTO_DIRECT_L09\r
+    00004736 FC FF                  299        DEFW    65532\r
+    00004738 21 00 00               300        LD      HL,0\r
+    0000473B 39                     301        ADD     HL,SP\r
+    0000473C EB                     302        EX      DE,HL\r
+    0000473D 21 8F 84               303        LD      HL,?0005\r
+    00004740 01 04 00               304        LD      BC,4\r
+    00004743 ED B0                  305        LDIR\r
+    00004745 DD 46 02               306        LD      B,(IX+2)\r
+    00004748 DD 70 FE               307        LD      (IX-2),B\r
+    0000474B DD 46 04               308        LD      B,(IX+4)\r
+    0000474E DD 70 FF               309        LD      (IX-1),B\r
+    00004751 21 04 00               310        LD      HL,4\r
+    00004754 E5                     311        PUSH    HL\r
+    00004755 2B                     312        DEC     HL\r
+    00004756 2B                     313        DEC     HL\r
+    00004757 C3 40 46               314        JP      LWRD ?0372\r
+    0000475A 4D                     315        LD      C,L\r
+    0000475B C3 94 46               316        JP      LWRD ?0381\r
+    0000475E 2A C0 86               317        LD      HL,(global)\r
+    00004761 C3 D9 46               318        JP      LWRD ?0389\r
+    00004764 23                     319        INC     HL\r
+    00004765 C3 20 47               320        JP      LWRD ?0396\r
+    00004768 23                     321        INC     HL\r
+    00004769                        322 ?0402:\r
+    00004769 C3 4A 46               323        JP      LWRD ?0430\r
+    0000476C 3E 00                  324        LD      A,BYTE3 _write\r
+    0000476E C3 A1 46               325        JP      LWRD ?0434\r
+    00004771 CD 5E 81               326        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    00004774 F1                     327        POP     AF\r
+    00004775 C3 1F 81               328        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
+    00004778                        329 FillRectNC:\r
+    00004778 CD 88 81               330        CALL    LWRD ?ENT_AUTO_DIRECT_L09\r
+    0000477B FC FF                  331        DEFW    65532\r
+    0000477D 21 00 00               332        LD      HL,0\r
+    00004780 39                     333        ADD     HL,SP\r
+    00004781 EB                     334        EX      DE,HL\r
+    00004782 21 93 84               335        LD      HL,?0006\r
+    00004785 01 04 00               336        LD      BC,4\r
+    00004788 ED B0                  337        LDIR\r
+    0000478A DD 46 02               338        LD      B,(IX+2)\r
+    0000478D DD 70 FE               339        LD      (IX-2),B\r
+    00004790 DD 46 04               340        LD      B,(IX+4)\r
+    00004793 DD 70 FF               341        LD      (IX-1),B\r
+    00004796 21 04 00               342        LD      HL,4\r
+    00004799 E5                     343        PUSH    HL\r
+    0000479A 2B                     344        DEC     HL\r
+    0000479B 2B                     345        DEC     HL\r
+    0000479C C3 40 46               346        JP      LWRD ?0372\r
+    0000479F 4D                     347        LD      C,L\r
+    000047A0 C3 94 46               348        JP      LWRD ?0381\r
+    000047A3 2A C0 86               349        LD      HL,(global)\r
+    000047A6 C3 D9 46               350        JP      LWRD ?0389\r
+    000047A9 23                     351        INC     HL\r
+    000047AA C3 20 47               352        JP      LWRD ?0396\r
+    000047AD 23                     353        INC     HL\r
+    000047AE C3 69 47               354        JP      LWRD ?0402\r
+    000047B1 3E 00                  355        LD      A,BYTE3 _write\r
+    000047B3                        356 ?0407:\r
+    000047B3 C3 4D 46               357        JP      LWRD ?0431\r
+    000047B6 CD 5E 81               358        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    000047B9 F1                     359        POP     AF\r
+    000047BA C3 1F 81               360        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
+    000047BD                        361 GrayRect:\r
+    000047BD CD 88 81               362        CALL    LWRD ?ENT_AUTO_DIRECT_L09\r
+    000047C0 FC FF                  363        DEFW    65532\r
+    000047C2 21 00 00               364        LD      HL,0\r
+    000047C5 39                     365        ADD     HL,SP\r
+    000047C6 EB                     366        EX      DE,HL\r
+    000047C7 21 97 84               367        LD      HL,?0007\r
+    000047CA 01 04 00               368        LD      BC,4\r
+    000047CD ED B0                  369        LDIR\r
+    000047CF DD 46 02               370        LD      B,(IX+2)\r
+    000047D2 DD 70 FE               371        LD      (IX-2),B\r
+    000047D5 DD 46 04               372        LD      B,(IX+4)\r
+    000047D8 DD 70 FF               373        LD      (IX-1),B\r
+    000047DB 21 04 00               374        LD      HL,4\r
+    000047DE E5                     375        PUSH    HL\r
+    000047DF 2B                     376        DEC     HL\r
+    000047E0 2B                     377        DEC     HL\r
+    000047E1 C3 40 46               378        JP      LWRD ?0372\r
+    000047E4 4D                     379        LD      C,L\r
+    000047E5 C3 94 46               380        JP      LWRD ?0381\r
+    000047E8 2A C0 86               381        LD      HL,(global)\r
+    000047EB C3 D9 46               382        JP      LWRD ?0389\r
+    000047EE 23                     383        INC     HL\r
+    000047EF C3 20 47               384        JP      LWRD ?0396\r
+    000047F2 23                     385        INC     HL\r
+    000047F3 C3 69 47               386        JP      LWRD ?0402\r
+    000047F6 3E 00                  387        LD      A,BYTE3 _write\r
+    000047F8 C3 B3 47               388        JP      LWRD ?0407\r
+    000047FB CD 5E 81               389        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    000047FE F1                     390        POP     AF\r
+    000047FF C3 1F 81               391        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
+    00004802                        392 Text:\r
+    00004802 C5                     393        PUSH    BC\r
+    00004803 FD E5                  394        PUSH    IY\r
+    00004805 DD E5                  395        PUSH    IX\r
+    00004807 D5                     396        PUSH    DE\r
+    00004808 DD E1                  397        POP     IX\r
+    0000480A 3E 00                  398        LD      A,BYTE3 strlen\r
+    0000480C 21 40 72               399        LD      HL,LWRD strlen\r
+    0000480F CD 5E 81               400        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    00004812 E5                     401        PUSH    HL\r
+    00004813 DD E5                  402        PUSH    IX\r
+    00004815 C1                     403        POP     BC\r
+    00004816 2A C0 86               404        LD      HL,(global)\r
+    00004819 23                     405        INC     HL\r
+    0000481A 23                     406        INC     HL\r
+    0000481B 5E                     407        LD      E,(HL)\r
+    0000481C 23                     408        INC     HL\r
+    0000481D 56                     409        LD      D,(HL)\r
+    0000481E 3E 00                  410        LD      A,BYTE3 _write\r
+    00004820 21 D1 6D               411        LD      HL,LWRD _write\r
+    00004823 CD 5E 81               412        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    00004826 F1                     413        POP     AF\r
+    00004827                        414 ?0411:\r
+    00004827 DD E1                  415        POP     IX\r
+    00004829 FD E1                  416        POP     IY\r
+    0000482B C1                     417        POP     BC\r
+    0000482C C3 25 81               418        JP      LWRD ?BANK_FAST_LEAVE_L08\r
+    0000482F                        419 TouchRegion:\r
+    0000482F CD 88 81               420        CALL    LWRD ?ENT_AUTO_DIRECT_L09\r
+    00004832 F8 FF                  421        DEFW    65528\r
+    00004834 21 00 00               422        LD      HL,0\r
+    00004837 39                     423        ADD     HL,SP\r
+    00004838 EB                     424        EX      DE,HL\r
+    00004839 21 9B 84               425        LD      HL,?0008\r
+    0000483C 01 07 00               426        LD      BC,7\r
+    0000483F ED B0                  427        LDIR\r
+    00004841 DD 46 02               428        LD      B,(IX+2)\r
+    00004844 DD 70 FA               429        LD      (IX-6),B\r
+    00004847 DD 46 04               430        LD      B,(IX+4)\r
+    0000484A DD 70 FB               431        LD      (IX-5),B\r
+    0000484D DD 46 0A               432        LD      B,(IX+10)\r
+    00004850 DD 70 FC               433        LD      (IX-4),B\r
+    00004853 DD 46 0C               434        LD      B,(IX+12)\r
+    00004856 DD 70 FD               435        LD      (IX-3),B\r
+    00004859 DD 46 0E               436        LD      B,(IX+14)\r
+    0000485C DD 70 FE               437        LD      (IX-2),B\r
+    0000485F 21 07 00               438        LD      HL,7\r
+    00004862 E5                     439        PUSH    HL\r
+    00004863 2E 02                  440        LD      L,2\r
+    00004865 C3 40 46               441        JP      LWRD ?0372\r
+    00004868 4D                     442        LD      C,L\r
+    00004869 C3 94 46               443        JP      LWRD ?0381\r
+    0000486C 2A C0 86               444        LD      HL,(global)\r
+    0000486F C3 D9 46               445        JP      LWRD ?0389\r
+    00004872 23                     446        INC     HL\r
+    00004873 C3 20 47               447        JP      LWRD ?0396\r
+    00004876 23                     448        INC     HL\r
+    00004877 C3 69 47               449        JP      LWRD ?0402\r
+    0000487A 3E 00                  450        LD      A,BYTE3 _write\r
+    0000487C C3 B3 47               451        JP      LWRD ?0407\r
+    0000487F CD 5E 81               452        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    00004882 F1                     453        POP     AF\r
+    00004883 C3 1F 81               454        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
+    00004886                        455 ClearScreen:\r
+    00004886 C5                     456        PUSH    BC\r
+    00004887 D5                     457        PUSH    DE\r
+    00004888 CD A0 48               458        CALL    LWRD ?0461\r
+    0000488B CD 5E 81               459        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    0000488E 21 80 00               460        LD      HL,128\r
+    00004891 E5                     461        PUSH    HL\r
+    00004892 6C                     462        LD      L,H\r
+    00004893 E5                     463        PUSH    HL\r
+    00004894 E5                     464        PUSH    HL\r
+    00004895 CD B8 48               465        CALL    LWRD ?0470\r
+    00004898 E1                     466        POP     HL\r
+    00004899 E1                     467        POP     HL\r
+    0000489A E1                     468        POP     HL\r
+    0000489B D1                     469        POP     DE\r
+    0000489C C1                     470        POP     BC\r
+    0000489D C3 25 81               471        JP      LWRD ?BANK_FAST_LEAVE_L08\r
+    000048A0                        472 ?0461:\r
+    000048A0 01 00 00               473        LD      BC,0\r
+    000048A3 59                     474        LD      E,C\r
+    000048A4 50                     475        LD      D,B\r
+    000048A5 3E 00                  476        LD      A,BYTE3 Move\r
+    000048A7 21 6C 46               477        LD      HL,LWRD Move\r
+    000048AA CD 5E 81               478        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    000048AD 01 80 00               479        LD      BC,128\r
+    000048B0 58                     480        LD      E,B\r
+    000048B1 50                     481        LD      D,B\r
+    000048B2 3E 00                  482        LD      A,BYTE3 ClearRect\r
+    000048B4 21 AB 46               483        LD      HL,LWRD ClearRect\r
+    000048B7 C9                     484        RET\r
+    000048B8                        485 ?0470:\r
+    000048B8 4D                     486        LD      C,L\r
+    000048B9 44                     487        LD      B,H\r
+    000048BA EB                     488        EX      DE,HL\r
+    000048BB                        489 ?0471:\r
+    000048BB 3E 00                  490        LD      A,BYTE3 TouchRegion\r
+    000048BD 21 2F 48               491        LD      HL,LWRD TouchRegion\r
+    000048C0 C3 5E 81               492        JP      LWRD ?BANK_CALL_DIRECT_L08\r
+    000048C3                        493 EnableScreen:\r
+    000048C3 CD 88 81               494        CALL    LWRD ?ENT_AUTO_DIRECT_L09\r
+    000048C6 FC FF                  495        DEFW    65532\r
+    000048C8 21 00 00               496        LD      HL,0\r
+    000048CB 39                     497        ADD     HL,SP\r
+    000048CC EB                     498        EX      DE,HL\r
+    000048CD 21 A2 84               499        LD      HL,?0009\r
+    000048D0 01 03 00               500        LD      BC,3\r
+    000048D3 ED B0                  501        LDIR\r
+    000048D5 DD 46 02               502        LD      B,(IX+2)\r
+    000048D8 DD 70 FE               503        LD      (IX-2),B\r
+    000048DB 21 03 00               504        LD      HL,3\r
+    000048DE E5                     505        PUSH    HL\r
+    000048DF 2B                     506        DEC     HL\r
+    000048E0 C3 40 46               507        JP      LWRD ?0372\r
+    000048E3 4D                     508        LD      C,L\r
+    000048E4 C3 94 46               509        JP      LWRD ?0381\r
+    000048E7 2A C0 86               510        LD      HL,(global)\r
+    000048EA C3 D9 46               511        JP      LWRD ?0389\r
+    000048ED 23                     512        INC     HL\r
+    000048EE C3 20 47               513        JP      LWRD ?0396\r
+    000048F1 23                     514        INC     HL\r
+    000048F2 C3 69 47               515        JP      LWRD ?0402\r
+    000048F5 3E 00                  516        LD      A,BYTE3 _write\r
+    000048F7 C3 B3 47               517        JP      LWRD ?0407\r
+    000048FA CD 5E 81               518        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    000048FD F1                     519        POP     AF\r
+    000048FE C3 1F 81               520        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
+    00004901                        521 grSetFont:\r
+    00004901 CD 88 81               522        CALL    LWRD ?ENT_AUTO_DIRECT_L09\r
+    00004904 FE FF                  523        DEFW    65534\r
+    00004906 21 00 00               524        LD      HL,0\r
+    00004909 39                     525        ADD     HL,SP\r
+    0000490A EB                     526        EX      DE,HL\r
+    0000490B 21 A5 84               527        LD      HL,?0010\r
+    0000490E 01 02 00               528        LD      BC,2\r
+    00004911 ED B0                  529        LDIR\r
+    00004913 DD 46 02               530        LD      B,(IX+2)\r
+    00004916 DD 70 FF               531        LD      (IX-1),B\r
+    00004919 21 02 00               532        LD      HL,2\r
+    0000491C E5                     533        PUSH    HL\r
+    0000491D C3 40 46               534        JP      LWRD ?0372\r
+    00004920 4D                     535        LD      C,L\r
+    00004921 C3 94 46               536        JP      LWRD ?0381\r
+    00004924 2A C0 86               537        LD      HL,(global)\r
+    00004927 C3 D9 46               538        JP      LWRD ?0389\r
+    0000492A 23                     539        INC     HL\r
+    0000492B C3 20 47               540        JP      LWRD ?0396\r
+    0000492E 23                     541        INC     HL\r
+    0000492F C3 69 47               542        JP      LWRD ?0402\r
+    00004932 3E 00                  543        LD      A,BYTE3 _write\r
+    00004934 C3 B3 47               544        JP      LWRD ?0407\r
+    00004937 CD 5E 81               545        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    0000493A F1                     546        POP     AF\r
+    0000493B C3 1F 81               547        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
+    0000493E                        548 fontSearch:\r
+    0000493E CD 88 81               549        CALL    LWRD ?ENT_AUTO_DIRECT_L09\r
+    00004941 00 00                  550        DEFW    0\r
+    00004943 21 0C 00               551        LD      HL,12\r
+    00004946 ED 4B C0 86            552        LD      BC,(global)\r
+    0000494A 09                     553        ADD     HL,BC\r
+    0000494B                        554 ?0321:\r
+    0000494B 46                     555        LD      B,(HL)\r
+    0000494C 23                     556        INC     HL\r
+    0000494D 66                     557        LD      H,(HL)\r
+    0000494E 68                     558        LD      L,B\r
+    0000494F EB                     559        EX      DE,HL\r
+    00004950                        560 ?0012:\r
+    00004950 7B                     561        LD      A,E\r
+    00004951 B2                     562        OR      D\r
+    00004952 28 16                  563        JR      Z,?0011\r
+    00004954 6B                     564        LD      L,E\r
+    00004955 62                     565        LD      H,D\r
+    00004956 46                     566        LD      B,(HL)\r
+    00004957 23                     567        INC     HL\r
+    00004958 66                     568        LD      H,(HL)\r
+    00004959 68                     569        LD      L,B\r
+    0000495A DD 4E 02               570        LD      C,(IX+2)\r
+    0000495D DD 46 03               571        LD      B,(IX+3)\r
+    00004960 ED 42                  572        SBC     HL,BC\r
+    00004962 28 06                  573        JR      Z,?0011\r
+    00004964                        574 ?0015:\r
+    00004964                        575 ?0014:\r
+    00004964                        576 ?0013:\r
+    00004964 21 08 00               577        LD      HL,8\r
+    00004967 19                     578        ADD     HL,DE\r
+    00004968 18 E1                  579        JR      ?0321\r
+    0000496A                        580 ?0011:\r
+    0000496A EB                     581        EX      DE,HL\r
+    0000496B C3 1F 81               582        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
+    0000496E                        583 setCurrentFont:\r
+    0000496E CD 52 81               584        CALL    LWRD ?ENT_PARM_DIRECT_L09\r
+    00004971 3E 00                  585        LD      A,BYTE3 fontSearch\r
+    00004973 21 3E 49               586        LD      HL,LWRD fontSearch\r
+    00004976 CD EB 49               587        CALL    LWRD ?0448\r
+    00004979 28 29                  588        JR      Z,?0017\r
+    0000497B                        589 ?0016:\r
+    0000497B DD 5E 02               590        LD      E,(IX+2)\r
+    0000497E DD 56 03               591        LD      D,(IX+3)\r
+    00004981 3E 00                  592        LD      A,BYTE3 grSetFont\r
+    00004983 21 01 49               593        LD      HL,LWRD grSetFont\r
+    00004986 CD 5E 81               594        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    00004989 21 0A 00               595        LD      HL,10\r
+    0000498C ED 4B C0 86            596        LD      BC,(global)\r
+    00004990 09                     597        ADD     HL,BC\r
+    00004991 E5                     598        PUSH    HL\r
+    00004992 DD 5E 02               599        LD      E,(IX+2)\r
+    00004995 DD 56 03               600        LD      D,(IX+3)\r
+    00004998 3E 00                  601        LD      A,BYTE3 fontSearch\r
+    0000499A 21 3E 49               602        LD      HL,LWRD fontSearch\r
+    0000499D CD F6 49               603        CALL    LWRD ?0449\r
+    000049A0 E1                     604        POP     HL\r
+    000049A1 71                     605        LD      (HL),C\r
+    000049A2 23                     606        INC     HL\r
+    000049A3 70                     607        LD      (HL),B\r
+    000049A4                        608 ?0017:\r
+    000049A4 C3 1F 81               609        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
+    000049A7                        610 ?0443:\r
+    000049A7 ED 4B C0 86            611        LD      BC,(global)\r
+    000049AB 09                     612        ADD     HL,BC\r
+    000049AC 46                     613        LD      B,(HL)\r
+    000049AD 23                     614        INC     HL\r
+    000049AE 66                     615        LD      H,(HL)\r
+    000049AF 68                     616        LD      L,B\r
+    000049B0                        617 ?0442:\r
+    000049B0 23                     618        INC     HL\r
+    000049B1 23                     619        INC     HL\r
+    000049B2 4E                     620        LD      C,(HL)\r
+    000049B3 23                     621        INC     HL\r
+    000049B4 46                     622        LD      B,(HL)\r
+    000049B5 23                     623        INC     HL\r
+    000049B6 7E                     624        LD      A,(HL)\r
+    000049B7 69                     625        LD      L,C\r
+    000049B8 60                     626        LD      H,B\r
+    000049B9 CD 5E 81               627        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    000049BC 4D                     628        LD      C,L\r
+    000049BD 44                     629        LD      B,H\r
+    000049BE FD 6E 06               630        LD      L,(IY+6)\r
+    000049C1 FD 66 07               631        LD      H,(IY+7)\r
+    000049C4 A7                     632        AND     A\r
+    000049C5 ED 42                  633        SBC     HL,BC\r
+    000049C7 EB                     634        EX      DE,HL\r
+    000049C8 01 02 00               635        LD      BC,2\r
+    000049CB CD C1 81               636        CALL    LWRD ?SS_DIV_L02\r
+    000049CE DD 6E 04               637        LD      L,(IX+4)\r
+    000049D1 DD 66 05               638        LD      H,(IX+5)\r
+    000049D4 19                     639        ADD     HL,DE\r
+    000049D5 EB                     640        EX      DE,HL\r
+    000049D6 3E 00                  641        LD      A,BYTE3 Move\r
+    000049D8 21 6C 46               642        LD      HL,LWRD Move\r
+    000049DB C9                     643        RET\r
+    000049DC                        644 ?0444:\r
+    000049DC CD 5E 81               645        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    000049DF 4D                     646        LD      C,L\r
+    000049E0 44                     647        LD      B,H\r
+    000049E1 FD 6E 08               648        LD      L,(IY+8)\r
+    000049E4 FD 66 09               649        LD      H,(IY+9)\r
+    000049E7 A7                     650        AND     A\r
+    000049E8 ED 42                  651        SBC     HL,BC\r
+    000049EA C9                     652        RET\r
+    000049EB                        653 ?0448:\r
+    000049EB CD 5E 81               654        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    000049EE 7D                     655        LD      A,L\r
+    000049EF B4                     656        OR      H\r
+    000049F0 C9                     657        RET\r
+    000049F1                        658 ?0450:\r
+    000049F1 3E 01                  659        LD      A,BYTE3 malloc\r
+    000049F3 21 D8 42               660        LD      HL,LWRD malloc\r
+    000049F6                        661 ?0449:\r
+    000049F6 CD 5E 81               662        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    000049F9 4D                     663        LD      C,L\r
+    000049FA 44                     664        LD      B,H\r
+    000049FB C9                     665        RET\r
+    000049FC                        666 loadFont:\r
+    000049FC CD 88 81               667        CALL    LWRD ?ENT_AUTO_DIRECT_L09\r
+    000049FF FC FF                  668        DEFW    65532\r
+    00004A01 FD E5                  669        PUSH    IY\r
+    00004A03 11 0E 00               670        LD      DE,14\r
+    00004A06 CD 97 4A               671        CALL    LWRD ?0447\r
+    00004A09 DD 4E 02               672        LD      C,(IX+2)\r
+    00004A0C 71                     673        LD      (HL),C\r
+    00004A0D DD 46 03               674        LD      B,(IX+3)\r
+    00004A10 23                     675        INC     HL\r
+    00004A11 70                     676        LD      (HL),B\r
+    00004A12 DD 46 0C               677        LD      B,(IX+12)\r
+    00004A15 DD 6E 0A               678        LD      L,(IX+10)\r
+    00004A18 FD 75 02               679        LD      (IY+2),L\r
+    00004A1B DD 66 0B               680        LD      H,(IX+11)\r
+    00004A1E FD 74 03               681        LD      (IY+3),H\r
+    00004A21 FD 70 04               682        LD      (IY+4),B\r
+    00004A24 DD 46 10               683        LD      B,(IX+16)\r
+    00004A27 DD 6E 0E               684        LD      L,(IX+14)\r
+    00004A2A FD 75 05               685        LD      (IY+5),L\r
+    00004A2D DD 66 0F               686        LD      H,(IX+15)\r
+    00004A30 FD 74 06               687        LD      (IY+6),H\r
+    00004A33 FD 70 07               688        LD      (IY+7),B\r
+    00004A36 AF                     689        XOR     A\r
+    00004A37 FD 77 08               690        LD      (IY+8),A\r
+    00004A3A FD 77 09               691        LD      (IY+9),A\r
+    00004A3D DD 6E 12               692        LD      L,(IX+18)\r
+    00004A40 FD 75 0A               693        LD      (IY+10),L\r
+    00004A43 DD 66 13               694        LD      H,(IX+19)\r
+    00004A46 FD 74 0B               695        LD      (IY+11),H\r
+    00004A49 DD 6E 14               696        LD      L,(IX+20)\r
+    00004A4C FD 75 0C               697        LD      (IY+12),L\r
+    00004A4F DD 66 15               698        LD      H,(IX+21)\r
+    00004A52 FD 74 0D               699        LD      (IY+13),H\r
+    00004A55 21 0C 00               700        LD      HL,12\r
+    00004A58 ED 4B C0 86            701        LD      BC,(global)\r
+    00004A5C 09                     702        ADD     HL,BC\r
+    00004A5D 7E                     703        LD      A,(HL)\r
+    00004A5E 23                     704        INC     HL\r
+    00004A5F B6                     705        OR      (HL)\r
+    00004A60 21 0C 00               706        LD      HL,12\r
+    00004A63 ED 4B C0 86            707        LD      BC,(global)\r
+    00004A67 09                     708        ADD     HL,BC\r
+    00004A68 20 10                  709        JR      NZ,?0019\r
+    00004A6A                        710 ?0018:\r
+    00004A6A FD E5                  711        PUSH    IY\r
+    00004A6C C1                     712        POP     BC\r
+    00004A6D 71                     713        LD      (HL),C\r
+    00004A6E 23                     714        INC     HL\r
+    00004A6F 70                     715        LD      (HL),B\r
+    00004A70 21 0A 00               716        LD      HL,10\r
+    00004A73 ED 4B C0 86            717        LD      BC,(global)\r
+    00004A77 09                     718        ADD     HL,BC\r
+    00004A78 18 12                  719        JR      ?0021\r
+    00004A7A                        720 ?0019:\r
+    00004A7A 46                     721        LD      B,(HL)\r
+    00004A7B 23                     722        INC     HL\r
+    00004A7C 66                     723        LD      H,(HL)\r
+    00004A7D 68                     724        LD      L,B\r
+    00004A7E EB                     725        EX      DE,HL\r
+    00004A7F                        726 ?0022:\r
+    00004A7F 21 08 00               727        LD      HL,8\r
+    00004A82 19                     728        ADD     HL,DE\r
+    00004A83 7E                     729        LD      A,(HL)\r
+    00004A84 23                     730        INC     HL\r
+    00004A85 B6                     731        OR      (HL)\r
+    00004A86 21 08 00               732        LD      HL,8\r
+    00004A89 19                     733        ADD     HL,DE\r
+    00004A8A 20 EE                  734        JR      NZ,?0019\r
+    00004A8C                        735 ?0023:\r
+    00004A8C                        736 ?0021:\r
+    00004A8C FD E5                  737        PUSH    IY\r
+    00004A8E C1                     738        POP     BC\r
+    00004A8F 71                     739        LD      (HL),C\r
+    00004A90 23                     740        INC     HL\r
+    00004A91 70                     741        LD      (HL),B\r
+    00004A92                        742 ?0020:\r
+    00004A92 FD E1                  743        POP     IY\r
+    00004A94 C3 1F 81               744        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
+    00004A97                        745 ?0447:\r
+    00004A97 3E 01                  746        LD      A,BYTE3 malloc\r
+    00004A99 21 D8 42               747        LD      HL,LWRD malloc\r
+    00004A9C CD 5E 81               748        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    00004A9F E5                     749        PUSH    HL\r
+    00004AA0 FD E1                  750        POP     IY\r
+    00004AA2 C9                     751        RET\r
+    00004AA3                        752 stringwidth:\r
+    00004AA3 FD E5                  753        PUSH    IY\r
+    00004AA5 DD E5                  754        PUSH    IX\r
+    00004AA7 C5                     755        PUSH    BC\r
+    00004AA8 D5                     756        PUSH    DE\r
+    00004AA9 DD 21 00 00            757        LD      IX,0\r
+    00004AAD FD 21 00 00            758        LD      IY,0\r
+    00004AB1                        759 ?0025:\r
+    00004AB1 FD E5                  760        PUSH    IY\r
+    00004AB3 21 02 00               761        LD      HL,2\r
+    00004AB6 39                     762        ADD     HL,SP\r
+    00004AB7 4E                     763        LD      C,(HL)\r
+    00004AB8 23                     764        INC     HL\r
+    00004AB9 46                     765        LD      B,(HL)\r
+    00004ABA E1                     766        POP     HL\r
+    00004ABB 09                     767        ADD     HL,BC\r
+    00004ABC 7E                     768        LD      A,(HL)\r
+    00004ABD B7                     769        OR      A\r
+    00004ABE 28 50                  770        JR      Z,?0024\r
+    00004AC0                        771 ?0026:\r
+    00004AC0 FD E5                  772        PUSH    IY\r
+    00004AC2 E1                     773        POP     HL\r
+    00004AC3 09                     774        ADD     HL,BC\r
+    00004AC4 5E                     775        LD      E,(HL)\r
+    00004AC5 CD 40 81               776        CALL    LWRD ?C_V_SWITCH_L06\r
+    00004AC8 0A 00                  777        DEFW    10\r
+    00004ACA 21                     778        DEFB    33\r
+    00004ACB 2C                     779        DEFB    44\r
+    00004ACC 2E                     780        DEFB    46\r
+    00004ACD 31                     781        DEFB    49\r
+    00004ACE 49                     782        DEFB    73\r
+    00004ACF 69                     783        DEFB    105\r
+    00004AD0 6A                     784        DEFB    106\r
+    00004AD1 6B                     785        DEFB    107\r
+    00004AD2 6C                     786        DEFB    108\r
+    00004AD3 72                     787        DEFB    114\r
+    00004AD4 FE 4A                  788        DEFW    ?0032\r
+    00004AD6 F9 4A                  789        DEFW    ?0031\r
+    00004AD8 EF 4A                  790        DEFW    ?0029\r
+    00004ADA F9 4A                  791        DEFW    ?0031\r
+    00004ADC F9 4A                  792        DEFW    ?0031\r
+    00004ADE EA 4A                  793        DEFW    ?0028\r
+    00004AE0 EA 4A                  794        DEFW    ?0028\r
+    00004AE2 F4 4A                  795        DEFW    ?0030\r
+    00004AE4 F4 4A                  796        DEFW    ?0030\r
+    00004AE6 F4 4A                  797        DEFW    ?0030\r
+    00004AE8 EA 4A                  798        DEFW    ?0028\r
+    00004AEA                        799 ?0028:\r
+    00004AEA 01 02 00               800        LD      BC,2\r
+    00004AED 18 12                  801        JR      ?0331\r
+    00004AEF                        802 ?0029:\r
+    00004AEF 01 03 00               803        LD      BC,3\r
+    00004AF2 18 0D                  804        JR      ?0331\r
+    00004AF4                        805 ?0030:\r
+    00004AF4 01 04 00               806        LD      BC,4\r
+    00004AF7 18 08                  807        JR      ?0331\r
+    00004AF9                        808 ?0031:\r
+    00004AF9 01 05 00               809        LD      BC,5\r
+    00004AFC 18 03                  810        JR      ?0331\r
+    00004AFE                        811 ?0032:\r
+    00004AFE 01 06 00               812        LD      BC,6\r
+    00004B01                        813 ?0331:\r
+    00004B01 DD 09                  814        ADD     IX,BC\r
+    00004B03                        815 ?0027:\r
+    00004B03 21 02 00               816        LD      HL,2\r
+    00004B06 39                     817        ADD     HL,SP\r
+    00004B07 4E                     818        LD      C,(HL)\r
+    00004B08 23                     819        INC     HL\r
+    00004B09 46                     820        LD      B,(HL)\r
+    00004B0A DD 09                  821        ADD     IX,BC\r
+    00004B0C FD 23                  822        INC     IY\r
+    00004B0E 18 A1                  823        JR      ?0025\r
+    00004B10                        824 ?0024:\r
+    00004B10 DD E5                  825        PUSH    IX\r
+    00004B12 E1                     826        POP     HL\r
+    00004B13 F1                     827        POP     AF\r
+    00004B14 F1                     828        POP     AF\r
+    00004B15 DD E1                  829        POP     IX\r
+    00004B17 FD E1                  830        POP     IY\r
+    00004B19 C3 25 81               831        JP      LWRD ?BANK_FAST_LEAVE_L08\r
+    00004B1C                        832 stringheight:\r
+    00004B1C CD 52 81               833        CALL    LWRD ?ENT_PARM_DIRECT_L09\r
+    00004B1F 7B                     834        LD      A,E\r
+    00004B20 FE 80                  835        CP      128\r
+    00004B22 30 06                  836        JR      NC,?0034\r
+    00004B24                        837 ?0033:\r
+    00004B24 21 07 00               838        LD      HL,7\r
+    00004B27 09                     839        ADD     HL,BC\r
+    00004B28 18 0C                  840        JR      ?0036\r
+    00004B2A                        841 ?0034:\r
+    00004B2A FE CC                  842        CP      204\r
+    00004B2C 38 08                  843        JR      C,?0036\r
+    00004B2E 3E DF                  844        LD      A,223\r
+    00004B30 BB                     845        CP      E\r
+    00004B31 38 03                  846        JR      C,?0036\r
+    00004B33                        847 ?0038:\r
+    00004B33                        848 ?0037:\r
+    00004B33                        849 ?0035:\r
+    00004B33 69                     850        LD      L,C\r
+    00004B34 60                     851        LD      H,B\r
+    00004B35 23                     852        INC     HL\r
+    00004B36                        853 ?0036:\r
+    00004B36                        854 ?0039:\r
+    00004B36 C3 1F 81               855        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
+    00004B39                        856 stringheight01:\r
+    00004B39 CD 52 81               857        CALL    LWRD ?ENT_PARM_DIRECT_L09\r
+    00004B3C 01 00 00               858        LD      BC,0\r
+    00004B3F                        859 ?0415:\r
+    00004B3F 1A                     860        LD      A,(DE)\r
+    00004B40 5F                     861        LD      E,A\r
+    00004B41 3E 00                  862        LD      A,BYTE3 stringheight\r
+    00004B43 21 1C 4B               863        LD      HL,LWRD stringheight\r
+    00004B46 CD 5E 81               864        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    00004B49 C3 1F 81               865        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
+    00004B4C                        866 stringheight2:\r
+    00004B4C CD 52 81               867        CALL    LWRD ?ENT_PARM_DIRECT_L09\r
+    00004B4F 01 05 00               868        LD      BC,5\r
+    00004B52 C3 3F 4B               869        JP      LWRD ?0415\r
+    00004B55                        870 stringwidth0:\r
+    00004B55 CD 52 81               871        CALL    LWRD ?ENT_PARM_DIRECT_L09\r
+    00004B58 01 00 00               872        LD      BC,0\r
+    00004B5B                        873 ?0416:\r
+    00004B5B 3E 00                  874        LD      A,BYTE3 stringwidth\r
+    00004B5D 21 A3 4A               875        LD      HL,LWRD stringwidth\r
+    00004B60 CD 5E 81               876        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    00004B63 C3 1F 81               877        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
+    00004B66                        878 stringwidth1:\r
+    00004B66 CD 52 81               879        CALL    LWRD ?ENT_PARM_DIRECT_L09\r
+    00004B69 01 02 00               880        LD      BC,2\r
+    00004B6C C3 5B 4B               881        JP      LWRD ?0416\r
+    00004B6F                        882 stringwidth2:\r
+    00004B6F CD 52 81               883        CALL    LWRD ?ENT_PARM_DIRECT_L09\r
+    00004B72 01 03 00               884        LD      BC,3\r
+    00004B75 C3 5B 4B               885        JP      LWRD ?0416\r
+    00004B78                        886 Component_new:\r
+    00004B78 CD 88 81               887        CALL    LWRD ?ENT_AUTO_DIRECT_L09\r
+    00004B7B 00 00                  888        DEFW    0\r
+    00004B7D FD E5                  889        PUSH    IY\r
+    00004B7F 11 28 00               890        LD      DE,40\r
+    00004B82 CD 97 4A               891        CALL    LWRD ?0447\r
+    00004B85 2A C0 86               892        LD      HL,(global)\r
+    00004B88 5E                     893        LD      E,(HL)\r
+    00004B89 23                     894        INC     HL\r
+    00004B8A 56                     895        LD      D,(HL)\r
+    00004B8B 13                     896        INC     DE\r
+    00004B8C 72                     897        LD      (HL),D\r
+    00004B8D 2B                     898        DEC     HL\r
+    00004B8E 73                     899        LD      (HL),E\r
+    00004B8F FD E5                  900        PUSH    IY\r
+    00004B91 E1                     901        POP     HL\r
+    00004B92 73                     902        LD      (HL),E\r
+    00004B93 23                     903        INC     HL\r
+    00004B94 72                     904        LD      (HL),D\r
+    00004B95 DD 6E 02               905        LD      L,(IX+2)\r
+    00004B98 FD 75 02               906        LD      (IY+2),L\r
+    00004B9B DD 66 03               907        LD      H,(IX+3)\r
+    00004B9E FD 74 03               908        LD      (IY+3),H\r
+    00004BA1 FD 71 04               909        LD      (IY+4),C\r
+    00004BA4 FD 70 05               910        LD      (IY+5),B\r
+    00004BA7 DD 6E 0A               911        LD      L,(IX+10)\r
+    00004BAA FD 75 06               912        LD      (IY+6),L\r
+    00004BAD DD 66 0B               913        LD      H,(IX+11)\r
+    00004BB0 FD 74 07               914        LD      (IY+7),H\r
+    00004BB3 DD 6E 0C               915        LD      L,(IX+12)\r
+    00004BB6 FD 75 08               916        LD      (IY+8),L\r
+    00004BB9 DD 66 0D               917        LD      H,(IX+13)\r
+    00004BBC FD 74 09               918        LD      (IY+9),H\r
+    00004BBF AF                     919        XOR     A\r
+    00004BC0 FD 77 0A               920        LD      (IY+10),A\r
+    00004BC3 FD 77 0B               921        LD      (IY+11),A\r
+    00004BC6 FD 77 0C               922        LD      (IY+12),A\r
+    00004BC9 FD 77 0D               923        LD      (IY+13),A\r
+    00004BCC FD 77 0E               924        LD      (IY+14),A\r
+    00004BCF FD 77 0F               925        LD      (IY+15),A\r
+    00004BD2 FD 77 10               926        LD      (IY+16),A\r
+    00004BD5 FD 77 11               927        LD      (IY+17),A\r
+    00004BD8 FD 77 12               928        LD      (IY+18),A\r
+    00004BDB FD 77 13               929        LD      (IY+19),A\r
+    00004BDE FD 77 14               930        LD      (IY+20),A\r
+    00004BE1 FD 77 15               931        LD      (IY+21),A\r
+    00004BE4 FD 77 16               932        LD      (IY+22),A\r
+    00004BE7 FD 77 17               933        LD      (IY+23),A\r
+    00004BEA FD 77 18               934        LD      (IY+24),A\r
+    00004BED FD 77 19               935        LD      (IY+25),A\r
+    00004BF0 FD 77 1A               936        LD      (IY+26),A\r
+    00004BF3 FD 77 1B               937        LD      (IY+27),A\r
+    00004BF6 FD 77 1C               938        LD      (IY+28),A\r
+    00004BF9 FD 77 1D               939        LD      (IY+29),A\r
+    00004BFC FD 77 1E               940        LD      (IY+30),A\r
+    00004BFF FD 77 1F               941        LD      (IY+31),A\r
+    00004C02 FD 77 24               942        LD      (IY+36),A\r
+    00004C05 FD 77 25               943        LD      (IY+37),A\r
+    00004C08 FD 77 26               944        LD      (IY+38),A\r
+    00004C0B FD 77 27               945        LD      (IY+39),A\r
+    00004C0E FD 77 20               946        LD      (IY+32),A\r
+    00004C11 FD 77 21               947        LD      (IY+33),A\r
+    00004C14 FD 77 22               948        LD      (IY+34),A\r
+    00004C17 FD 77 23               949        LD      (IY+35),A\r
+    00004C1A                        950 ?0418:\r
+    00004C1A FD E5                  951        PUSH    IY\r
+    00004C1C E1                     952        POP     HL\r
+    00004C1D FD E1                  953        POP     IY\r
+    00004C1F C3 1F 81               954        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
+    00004C22                        955 Component_setlabel:\r
+    00004C22 CD 88 81               956        CALL    LWRD ?ENT_AUTO_DIRECT_L09\r
+    00004C25 00 00                  957        DEFW    0\r
+    00004C27 FD E5                  958        PUSH    IY\r
+    00004C29 DD 6E 02               959        LD      L,(IX+2)\r
+    00004C2C DD 66 03               960        LD      H,(IX+3)\r
+    00004C2F E5                     961        PUSH    HL\r
+    00004C30 FD E1                  962        POP     IY\r
+    00004C32 11 00 00               963        LD      DE,0\r
+    00004C35                        964 ?0041:\r
+    00004C35 DD 6E 04               965        LD      L,(IX+4)\r
+    00004C38 DD 66 05               966        LD      H,(IX+5)\r
+    00004C3B 19                     967        ADD     HL,DE\r
+    00004C3C 7E                     968        LD      A,(HL)\r
+    00004C3D B7                     969        OR      A\r
+    00004C3E 28 21                  970        JR      Z,?0040\r
+    00004C40 01 14 80               971        LD      BC,32788\r
+    00004C43 6B                     972        LD      L,E\r
+    00004C44 62                     973        LD      H,D\r
+    00004C45 78                     974        LD      A,B\r
+    00004C46 AC                     975        XOR     H\r
+    00004C47 67                     976        LD      H,A\r
+    00004C48 ED 42                  977        SBC     HL,BC\r
+    00004C4A 30 15                  978        JR      NC,?0040\r
+    00004C4C                        979 ?0044:\r
+    00004C4C                        980 ?0043:\r
+    00004C4C                        981 ?0042:\r
+    00004C4C FD 6E 20               982        LD      L,(IY+32)\r
+    00004C4F FD 66 21               983        LD      H,(IY+33)\r
+    00004C52 19                     984        ADD     HL,DE\r
+    00004C53 E5                     985        PUSH    HL\r
+    00004C54 DD 6E 04               986        LD      L,(IX+4)\r
+    00004C57 DD 66 05               987        LD      H,(IX+5)\r
+    00004C5A 19                     988        ADD     HL,DE\r
+    00004C5B 46                     989        LD      B,(HL)\r
+    00004C5C E1                     990        POP     HL\r
+    00004C5D 70                     991        LD      (HL),B\r
+    00004C5E 13                     992        INC     DE\r
+    00004C5F 18 D4                  993        JR      ?0041\r
+    00004C61                        994 ?0040:\r
+    00004C61 FD 6E 20               995        LD      L,(IY+32)\r
+    00004C64 FD 66 21               996        LD      H,(IY+33)\r
+    00004C67 19                     997        ADD     HL,DE\r
+    00004C68 36 00                  998        LD      (HL),0\r
+    00004C6A FD E1                  999        POP     IY\r
+    00004C6C C3 1F 81              1000        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
+    00004C6F                       1001 Component_add:\r
+    00004C6F CD 88 81              1002        CALL    LWRD ?ENT_AUTO_DIRECT_L09\r
+    00004C72 00 00                 1003        DEFW    0\r
+    00004C74 FD E5                 1004        PUSH    IY\r
+    00004C76 59                    1005        LD      E,C\r
+    00004C77 50                    1006        LD      D,B\r
+    00004C78 21 15 00              1007        LD      HL,21\r
+    00004C7B DD 4E 02              1008        LD      C,(IX+2)\r
+    00004C7E DD 46 03              1009        LD      B,(IX+3)\r
+    00004C81 09                    1010        ADD     HL,BC\r
+    00004C82 7E                    1011        LD      A,(HL)\r
+    00004C83 23                    1012        INC     HL\r
+    00004C84 66                    1013        LD      H,(HL)\r
+    00004C85 6F                    1014        LD      L,A\r
+    00004C86 E5                    1015        PUSH    HL\r
+    00004C87 FD E1                 1016        POP     IY\r
+    00004C89 21 15 00              1017        LD      HL,21\r
+    00004C8C 09                    1018        ADD     HL,BC\r
+    00004C8D 7E                    1019        LD      A,(HL)\r
+    00004C8E 23                    1020        INC     HL\r
+    00004C8F B6                    1021        OR      (HL)\r
+    00004C90 20 09                 1022        JR      NZ,?0046\r
+    00004C92                       1023 ?0045:\r
+    00004C92 21 15 00              1024        LD      HL,21\r
+    00004C95 09                    1025        ADD     HL,BC\r
+    00004C96 73                    1026        LD      (HL),E\r
+    00004C97 23                    1027        INC     HL\r
+    00004C98 72                    1028        LD      (HL),D\r
+    00004C99 18 19                 1029        JR      ?0335\r
+    00004C9B                       1030 ?0046:\r
+    00004C9B                       1031 ?0049:\r
+    00004C9B FD 7E 13              1032        LD      A,(IY+19)\r
+    00004C9E FD B6 14              1033        OR      (IY+20)\r
+    00004CA1 28 0B                 1034        JR      Z,?0048\r
+    00004CA3                       1035 ?0050:\r
+    00004CA3 FD 6E 13              1036        LD      L,(IY+19)\r
+    00004CA6 FD 66 14              1037        LD      H,(IY+20)\r
+    00004CA9 E5                    1038        PUSH    HL\r
+    00004CAA FD E1                 1039        POP     IY\r
+    00004CAC 18 ED                 1040        JR      ?0046\r
+    00004CAE                       1041 ?0048:\r
+    00004CAE FD 73 13              1042        LD      (IY+19),E\r
+    00004CB1 FD 72 14              1043        LD      (IY+20),D\r
+    00004CB4                       1044 ?0335:\r
+    00004CB4 21 13 00              1045        LD      HL,19\r
+    00004CB7 19                    1046        ADD     HL,DE\r
+    00004CB8 77                    1047        LD      (HL),A\r
+    00004CB9 23                    1048        INC     HL\r
+    00004CBA 77                    1049        LD      (HL),A\r
+    00004CBB                       1050 ?0047:\r
+    00004CBB 21 11 00              1051        LD      HL,17\r
+    00004CBE 19                    1052        ADD     HL,DE\r
+    00004CBF DD 4E 02              1053        LD      C,(IX+2)\r
+    00004CC2 71                    1054        LD      (HL),C\r
+    00004CC3 DD 46 03              1055        LD      B,(IX+3)\r
+    00004CC6 23                    1056        INC     HL\r
+    00004CC7 70                    1057        LD      (HL),B\r
+    00004CC8 FD E1                 1058        POP     IY\r
+    00004CCA C3 1F 81              1059        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
+    00004CCD                       1060 Component_paint:\r
+    00004CCD C5                    1061        PUSH    BC\r
+    00004CCE FD E5                 1062        PUSH    IY\r
+    00004CD0 DD E5                 1063        PUSH    IX\r
+    00004CD2 21 15 00              1064        LD      HL,21\r
+    00004CD5 19                    1065        ADD     HL,DE\r
+    00004CD6 46                    1066        LD      B,(HL)\r
+    00004CD7 23                    1067        INC     HL\r
+    00004CD8 66                    1068        LD      H,(HL)\r
+    00004CD9 68                    1069        LD      L,B\r
+    00004CDA E5                    1070        PUSH    HL\r
+    00004CDB DD E1                 1071        POP     IX\r
+    00004CDD CD 09 4D              1072        CALL    LWRD ?0477\r
+    00004CE0                       1073 ?0052:\r
+    00004CE0 DD E5                 1074        PUSH    IX\r
+    00004CE2 E1                    1075        POP     HL\r
+    00004CE3 7D                    1076        LD      A,L\r
+    00004CE4 B4                    1077        OR      H\r
+    00004CE5 28 1A                 1078        JR      Z,?0051\r
+    00004CE7                       1079 ?0053:\r
+    00004CE7 DD E5                 1080        PUSH    IX\r
+    00004CE9 D1                    1081        POP     DE\r
+    00004CEA DD 7E 1C              1082        LD      A,(IX+28)\r
+    00004CED DD 6E 1A              1083        LD      L,(IX+26)\r
+    00004CF0 DD 66 1B              1084        LD      H,(IX+27)\r
+    00004CF3 CD 5E 81              1085        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    00004CF6 DD 6E 13              1086        LD      L,(IX+19)\r
+    00004CF9 DD 66 14              1087        LD      H,(IX+20)\r
+    00004CFC E5                    1088        PUSH    HL\r
+    00004CFD DD E1                 1089        POP     IX\r
+    00004CFF 18 DF                 1090        JR      ?0052\r
+    00004D01                       1091 ?0051:\r
+    00004D01 1E 01                 1092        LD      E,1\r
+    00004D03 CD 0B 4D              1093        CALL    LWRD ?0478\r
+    00004D06 C3 27 48              1094        JP      LWRD ?0411\r
+    00004D09                       1095 ?0477:\r
+    00004D09 1E 00                 1096        LD      E,0\r
+    00004D0B                       1097 ?0478:\r
+    00004D0B 3E 00                 1098        LD      A,BYTE3 EnableScreen\r
+    00004D0D 21 C3 48              1099        LD      HL,LWRD EnableScreen\r
+    00004D10 C3 5E 81              1100        JP      LWRD ?BANK_CALL_DIRECT_L08\r
+    00004D13                       1101 Component_findXY:\r
+    00004D13 CD 88 81              1102        CALL    LWRD ?ENT_AUTO_DIRECT_L09\r
+    00004D16 00 00                 1103        DEFW    0\r
+    00004D18 FD E5                 1104        PUSH    IY\r
+    00004D1A DD 6E 02              1105        LD      L,(IX+2)\r
+    00004D1D DD 66 03              1106        LD      H,(IX+3)\r
+    00004D20 E5                    1107        PUSH    HL\r
+    00004D21 FD E1                 1108        POP     IY\r
+    00004D23                       1109 ?0056:\r
+    00004D23 DD 6E 04              1110        LD      L,(IX+4)\r
+    00004D26 DD 66 05              1111        LD      H,(IX+5)\r
+    00004D29 7E                    1112        LD      A,(HL)\r
+    00004D2A FD 86 02              1113        ADD     A,(IY+2)\r
+    00004D2D 77                    1114        LD      (HL),A\r
+    00004D2E 23                    1115        INC     HL\r
+    00004D2F 7E                    1116        LD      A,(HL)\r
+    00004D30 FD 8E 03              1117        ADC     A,(IY+3)\r
+    00004D33 77                    1118        LD      (HL),A\r
+    00004D34 DD 6E 0A              1119        LD      L,(IX+10)\r
+    00004D37 DD 66 0B              1120        LD      H,(IX+11)\r
+    00004D3A 7E                    1121        LD      A,(HL)\r
+    00004D3B FD 86 04              1122        ADD     A,(IY+4)\r
+    00004D3E 77                    1123        LD      (HL),A\r
+    00004D3F 23                    1124        INC     HL\r
+    00004D40 7E                    1125        LD      A,(HL)\r
+    00004D41 FD 8E 05              1126        ADC     A,(IY+5)\r
+    00004D44 77                    1127        LD      (HL),A\r
+    00004D45 FD 6E 11              1128        LD      L,(IY+17)\r
+    00004D48 FD 66 12              1129        LD      H,(IY+18)\r
+    00004D4B E5                    1130        PUSH    HL\r
+    00004D4C FD E1                 1131        POP     IY\r
+    00004D4E 7D                    1132        LD      A,L\r
+    00004D4F B4                    1133        OR      H\r
+    00004D50 20 D1                 1134        JR      NZ,?0056\r
+    00004D52                       1135 ?0054:\r
+    00004D52 FD E1                 1136        POP     IY\r
+    00004D54 C3 1F 81              1137        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
+    00004D57                       1138 Component_find:\r
+    00004D57 CD 88 81              1139        CALL    LWRD ?ENT_AUTO_DIRECT_L09\r
+    00004D5A 00 00                 1140        DEFW    0\r
+    00004D5C 21 15 00              1141        LD      HL,21\r
+    00004D5F DD 4E 02              1142        LD      C,(IX+2)\r
+    00004D62 DD 46 03              1143        LD      B,(IX+3)\r
+    00004D65 09                    1144        ADD     HL,BC\r
+    00004D66                       1145 ?0336:\r
+    00004D66 46                    1146        LD      B,(HL)\r
+    00004D67 23                    1147        INC     HL\r
+    00004D68 66                    1148        LD      H,(HL)\r
+    00004D69 68                    1149        LD      L,B\r
+    00004D6A EB                    1150        EX      DE,HL\r
+    00004D6B                       1151 ?0058:\r
+    00004D6B 7B                    1152        LD      A,E\r
+    00004D6C B2                    1153        OR      D\r
+    00004D6D 28 1B                 1154        JR      Z,?0057\r
+    00004D6F                       1155 ?0059:\r
+    00004D6F 21 10 00              1156        LD      HL,16\r
+    00004D72 19                    1157        ADD     HL,DE\r
+    00004D73 4E                    1158        LD      C,(HL)\r
+    00004D74 06 00                 1159        LD      B,0\r
+    00004D76 DD 6E 04              1160        LD      L,(IX+4)\r
+    00004D79 DD 66 05              1161        LD      H,(IX+5)\r
+    00004D7C A7                    1162        AND     A\r
+    00004D7D ED 42                 1163        SBC     HL,BC\r
+    00004D7F 20 03                 1164        JR      NZ,?0061\r
+    00004D81                       1165 ?0060:\r
+    00004D81 EB                    1166        EX      DE,HL\r
+    00004D82 18 08                 1167        JR      ?0062\r
+    00004D84                       1168 ?0061:\r
+    00004D84 21 13 00              1169        LD      HL,19\r
+    00004D87 19                    1170        ADD     HL,DE\r
+    00004D88 18 DC                 1171        JR      ?0336\r
+    00004D8A                       1172 ?0057:\r
+    00004D8A 6F                    1173        LD      L,A\r
+    00004D8B 67                    1174        LD      H,A\r
+    00004D8C                       1175 ?0062:\r
+    00004D8C C3 1F 81              1176        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
+    00004D8F                       1177 Component_delete:\r
+    00004D8F CD 88 81              1178        CALL    LWRD ?ENT_AUTO_DIRECT_L09\r
+    00004D92 F8 FF                 1179        DEFW    65528\r
+    00004D94 FD E5                 1180        PUSH    IY\r
+    00004D96 DD 6E 02              1181        LD      L,(IX+2)\r
+    00004D99 DD 66 03              1182        LD      H,(IX+3)\r
+    00004D9C E5                    1183        PUSH    HL\r
+    00004D9D FD E1                 1184        POP     IY\r
+    00004D9F FD 6E 15              1185        LD      L,(IY+21)\r
+    00004DA2 DD 75 F8              1186        LD      (IX-8),L\r
+    00004DA5 FD 66 16              1187        LD      H,(IY+22)\r
+    00004DA8 DD 74 F9              1188        LD      (IX-7),H\r
+    00004DAB FD E5                 1189        PUSH    IY\r
+    00004DAD E1                    1190        POP     HL\r
+    00004DAE 7D                    1191        LD      A,L\r
+    00004DAF B4                    1192        OR      H\r
+    00004DB0 CA 42 4F              1193        JP      Z,?0064\r
+    00004DB3                       1194 ?0063:\r
+    00004DB3                       1195 ?0066:\r
+    00004DB3 DD 7E F8              1196        LD      A,(IX-8)\r
+    00004DB6 DD B6 F9              1197        OR      (IX-7)\r
+    00004DB9 28 11                 1198        JR      Z,?0065\r
+    00004DBB                       1199 ?0067:\r
+    00004DBB DD 5E F8              1200        LD      E,(IX-8)\r
+    00004DBE DD 56 F9              1201        LD      D,(IX-7)\r
+    00004DC1 CD 58 4F              1202        CALL    LWRD ?0453\r
+    00004DC4 DD 75 F8              1203        LD      (IX-8),L\r
+    00004DC7 DD 74 F9              1204        LD      (IX-7),H\r
+    00004DCA 18 E7                 1205        JR      ?0063\r
+    00004DCC                       1206 ?0065:\r
+    00004DCC FD 7E 11              1207        LD      A,(IY+17)\r
+    00004DCF FD B6 12              1208        OR      (IY+18)\r
+    00004DD2 CA 5E 4E              1209        JP      Z,?0079\r
+    00004DD5                       1210 ?0068:\r
+    00004DD5 FD 6E 11              1211        LD      L,(IY+17)\r
+    00004DD8 FD 66 12              1212        LD      H,(IY+18)\r
+    00004DDB 01 15 00              1213        LD      BC,21\r
+    00004DDE 09                    1214        ADD     HL,BC\r
+    00004DDF 46                    1215        LD      B,(HL)\r
+    00004DE0 23                    1216        INC     HL\r
+    00004DE1 66                    1217        LD      H,(HL)\r
+    00004DE2 68                    1218        LD      L,B\r
+    00004DE3 FD E5                 1219        PUSH    IY\r
+    00004DE5 C1                    1220        POP     BC\r
+    00004DE6 A7                    1221        AND     A\r
+    00004DE7 ED 42                 1222        SBC     HL,BC\r
+    00004DE9 FD 6E 11              1223        LD      L,(IY+17)\r
+    00004DEC FD 66 12              1224        LD      H,(IY+18)\r
+    00004DEF 01 15 00              1225        LD      BC,21\r
+    00004DF2 09                    1226        ADD     HL,BC\r
+    00004DF3 20 09                 1227        JR      NZ,?0071\r
+    00004DF5                       1228 ?0070:\r
+    00004DF5 E5                    1229        PUSH    HL\r
+    00004DF6 FD 6E 11              1230        LD      L,(IY+17)\r
+    00004DF9 FD 66 12              1231        LD      H,(IY+18)\r
+    00004DFC 18 50                 1232        JR      ?0339\r
+    00004DFE                       1233 ?0071:\r
+    00004DFE 46                    1234        LD      B,(HL)\r
+    00004DFF 23                    1235        INC     HL\r
+    00004E00 66                    1236        LD      H,(HL)\r
+    00004E01 68                    1237        LD      L,B\r
+    00004E02                       1238 ?0338:\r
+    00004E02 DD 75 F8              1239        LD      (IX-8),L\r
+    00004E05 DD 74 F9              1240        LD      (IX-7),H\r
+    00004E08                       1241 ?0074:\r
+    00004E08 21 13 00              1242        LD      HL,19\r
+    00004E0B DD 4E F8              1243        LD      C,(IX-8)\r
+    00004E0E DD 46 F9              1244        LD      B,(IX-7)\r
+    00004E11 09                    1245        ADD     HL,BC\r
+    00004E12 46                    1246        LD      B,(HL)\r
+    00004E13 23                    1247        INC     HL\r
+    00004E14 66                    1248        LD      H,(HL)\r
+    00004E15 68                    1249        LD      L,B\r
+    00004E16 FD E5                 1250        PUSH    IY\r
+    00004E18 C1                    1251        POP     BC\r
+    00004E19 A7                    1252        AND     A\r
+    00004E1A ED 42                 1253        SBC     HL,BC\r
+    00004E1C 28 19                 1254        JR      Z,?0073\r
+    00004E1E 21 13 00              1255        LD      HL,19\r
+    00004E21 DD 4E F8              1256        LD      C,(IX-8)\r
+    00004E24 DD 46 F9              1257        LD      B,(IX-7)\r
+    00004E27 09                    1258        ADD     HL,BC\r
+    00004E28 7E                    1259        LD      A,(HL)\r
+    00004E29 23                    1260        INC     HL\r
+    00004E2A B6                    1261        OR      (HL)\r
+    00004E2B 28 0A                 1262        JR      Z,?0073\r
+    00004E2D                       1263 ?0077:\r
+    00004E2D                       1264 ?0076:\r
+    00004E2D                       1265 ?0075:\r
+    00004E2D 21 13 00              1266        LD      HL,19\r
+    00004E30 09                    1267        ADD     HL,BC\r
+    00004E31 56                    1268        LD      D,(HL)\r
+    00004E32 23                    1269        INC     HL\r
+    00004E33 66                    1270        LD      H,(HL)\r
+    00004E34 6A                    1271        LD      L,D\r
+    00004E35 18 CB                 1272        JR      ?0338\r
+    00004E37                       1273 ?0073:\r
+    00004E37 21 13 00              1274        LD      HL,19\r
+    00004E3A DD 4E F8              1275        LD      C,(IX-8)\r
+    00004E3D DD 46 F9              1276        LD      B,(IX-7)\r
+    00004E40 09                    1277        ADD     HL,BC\r
+    00004E41 7E                    1278        LD      A,(HL)\r
+    00004E42 23                    1279        INC     HL\r
+    00004E43 B6                    1280        OR      (HL)\r
+    00004E44 28 18                 1281        JR      Z,?0079\r
+    00004E46                       1282 ?0078:\r
+    00004E46 21 13 00              1283        LD      HL,19\r
+    00004E49 09                    1284        ADD     HL,BC\r
+    00004E4A E5                    1285        PUSH    HL\r
+    00004E4B 21 13 00              1286        LD      HL,19\r
+    00004E4E                       1287 ?0339:\r
+    00004E4E 09                    1288        ADD     HL,BC\r
+    00004E4F 46                    1289        LD      B,(HL)\r
+    00004E50 23                    1290        INC     HL\r
+    00004E51 66                    1291        LD      H,(HL)\r
+    00004E52 68                    1292        LD      L,B\r
+    00004E53 01 13 00              1293        LD      BC,19\r
+    00004E56 09                    1294        ADD     HL,BC\r
+    00004E57 4E                    1295        LD      C,(HL)\r
+    00004E58 23                    1296        INC     HL\r
+    00004E59 46                    1297        LD      B,(HL)\r
+    00004E5A E1                    1298        POP     HL\r
+    00004E5B 71                    1299        LD      (HL),C\r
+    00004E5C 23                    1300        INC     HL\r
+    00004E5D 70                    1301        LD      (HL),B\r
+    00004E5E                       1302 ?0079:\r
+    00004E5E                       1303 ?0072:\r
+    00004E5E                       1304 ?0069:\r
+    00004E5E FD 6E 13              1305        LD      L,(IY+19)\r
+    00004E61 DD 75 F8              1306        LD      (IX-8),L\r
+    00004E64 FD 66 14              1307        LD      H,(IY+20)\r
+    00004E67 DD 74 F9              1308        LD      (IX-7),H\r
+    00004E6A 3E 04                 1309        LD      A,4\r
+    00004E6C FD AE 24              1310        XOR     (IY+36)\r
+    00004E6F FD B6 25              1311        OR      (IY+37)\r
+    00004E72 C2 0E 4F              1312        JP      NZ,?0088\r
+    00004E75                       1313 ?0080:\r
+    00004E75 FD 6E 11              1314        LD      L,(IY+17)\r
+    00004E78 DD 75 FC              1315        LD      (IX-4),L\r
+    00004E7B FD 66 12              1316        LD      H,(IY+18)\r
+    00004E7E DD 74 FD              1317        LD      (IX-3),H\r
+    00004E81 FD 6E 26              1318        LD      L,(IY+38)\r
+    00004E84 DD 75 FE              1319        LD      (IX-2),L\r
+    00004E87 FD 66 27              1320        LD      H,(IY+39)\r
+    00004E8A DD 74 FF              1321        LD      (IX-1),H\r
+    00004E8D CD 4D 4F              1322        CALL    LWRD ?0451\r
+    00004E90 DD 6E FE              1323        LD      L,(IX-2)\r
+    00004E93 DD 66 FF              1324        LD      H,(IX-1)\r
+    00004E96 23                    1325        INC     HL\r
+    00004E97 23                    1326        INC     HL\r
+    00004E98 CD 4D 4F              1327        CALL    LWRD ?0451\r
+    00004E9B                       1328 ?0083:\r
+    00004E9B DD 7E FC              1329        LD      A,(IX-4)\r
+    00004E9E DD B6 FD              1330        OR      (IX-3)\r
+    00004EA1 28 20                 1331        JR      Z,?0082\r
+    00004EA3 21 24 00              1332        LD      HL,36\r
+    00004EA6 DD 4E FC              1333        LD      C,(IX-4)\r
+    00004EA9 DD 46 FD              1334        LD      B,(IX-3)\r
+    00004EAC 09                    1335        ADD     HL,BC\r
+    00004EAD 3E 04                 1336        LD      A,4\r
+    00004EAF AE                    1337        XOR     (HL)\r
+    00004EB0 23                    1338        INC     HL\r
+    00004EB1 B6                    1339        OR      (HL)\r
+    00004EB2 28 0F                 1340        JR      Z,?0082\r
+    00004EB4                       1341 ?0086:\r
+    00004EB4                       1342 ?0085:\r
+    00004EB4                       1343 ?0084:\r
+    00004EB4 21 11 00              1344        LD      HL,17\r
+    00004EB7 09                    1345        ADD     HL,BC\r
+    00004EB8 56                    1346        LD      D,(HL)\r
+    00004EB9 DD 72 FC              1347        LD      (IX-4),D\r
+    00004EBC 23                    1348        INC     HL\r
+    00004EBD 66                    1349        LD      H,(HL)\r
+    00004EBE DD 74 FD              1350        LD      (IX-3),H\r
+    00004EC1 18 D8                 1351        JR      ?0083\r
+    00004EC3                       1352 ?0082:\r
+    00004EC3 DD 7E FC              1353        LD      A,(IX-4)\r
+    00004EC6 DD B6 FD              1354        OR      (IX-3)\r
+    00004EC9 28 43                 1355        JR      Z,?0088\r
+    00004ECB                       1356 ?0087:\r
+    00004ECB 21 26 00              1357        LD      HL,38\r
+    00004ECE DD 4E FC              1358        LD      C,(IX-4)\r
+    00004ED1 DD 46 FD              1359        LD      B,(IX-3)\r
+    00004ED4 09                    1360        ADD     HL,BC\r
+    00004ED5 46                    1361        LD      B,(HL)\r
+    00004ED6 DD 70 FE              1362        LD      (IX-2),B\r
+    00004ED9 23                    1363        INC     HL\r
+    00004EDA 66                    1364        LD      H,(HL)\r
+    00004EDB DD 74 FF              1365        LD      (IX-1),H\r
+    00004EDE 21 06 00              1366        LD      HL,6\r
+    00004EE1 ED 4B C0 86           1367        LD      BC,(global)\r
+    00004EE5 09                    1368        ADD     HL,BC\r
+    00004EE6 E5                    1369        PUSH    HL\r
+    00004EE7 DD 6E FE              1370        LD      L,(IX-2)\r
+    00004EEA DD 66 FF              1371        LD      H,(IX-1)\r
+    00004EED 5E                    1372        LD      E,(HL)\r
+    00004EEE 23                    1373        INC     HL\r
+    00004EEF 56                    1374        LD      D,(HL)\r
+    00004EF0 E1                    1375        POP     HL\r
+    00004EF1 73                    1376        LD      (HL),E\r
+    00004EF2 23                    1377        INC     HL\r
+    00004EF3 72                    1378        LD      (HL),D\r
+    00004EF4 21 08 00              1379        LD      HL,8\r
+    00004EF7 ED 4B C0 86           1380        LD      BC,(global)\r
+    00004EFB 09                    1381        ADD     HL,BC\r
+    00004EFC E5                    1382        PUSH    HL\r
+    00004EFD DD 4E FE              1383        LD      C,(IX-2)\r
+    00004F00 DD 46 FF              1384        LD      B,(IX-1)\r
+    00004F03 03                    1385        INC     BC\r
+    00004F04 03                    1386        INC     BC\r
+    00004F05 69                    1387        LD      L,C\r
+    00004F06 60                    1388        LD      H,B\r
+    00004F07 4E                    1389        LD      C,(HL)\r
+    00004F08 23                    1390        INC     HL\r
+    00004F09 46                    1391        LD      B,(HL)\r
+    00004F0A E1                    1392        POP     HL\r
+    00004F0B 71                    1393        LD      (HL),C\r
+    00004F0C 23                    1394        INC     HL\r
+    00004F0D 70                    1395        LD      (HL),B\r
+    00004F0E                       1396 ?0088:\r
+    00004F0E                       1397 ?0081:\r
+    00004F0E FD 4E 24              1398        LD      C,(IY+36)\r
+    00004F11 FD 46 25              1399        LD      B,(IY+37)\r
+    00004F14 21 00 00              1400        LD      HL,0\r
+    00004F17 CD A6 81              1401        CALL    LWRD ?SS_CMP_L02\r
+    00004F1A 30 09                 1402        JR      NC,?0090\r
+    00004F1C                       1403 ?0089:\r
+    00004F1C FD 5E 26              1404        LD      E,(IY+38)\r
+    00004F1F FD 56 27              1405        LD      D,(IY+39)\r
+    00004F22 CD 50 4F              1406        CALL    LWRD ?0452\r
+    00004F25                       1407 ?0090:\r
+    00004F25 FD CB 0B 76           1408        BIT     6,(IY+11)\r
+    00004F29 20 11                 1409        JR      NZ,?0092\r
+    00004F2B FD 7E 20              1410        LD      A,(IY+32)\r
+    00004F2E FD B6 21              1411        OR      (IY+33)\r
+    00004F31 28 09                 1412        JR      Z,?0092\r
+    00004F33                       1413 ?0094:\r
+    00004F33                       1414 ?0093:\r
+    00004F33                       1415 ?0091:\r
+    00004F33 FD 5E 20              1416        LD      E,(IY+32)\r
+    00004F36 FD 56 21              1417        LD      D,(IY+33)\r
+    00004F39 CD 50 4F              1418        CALL    LWRD ?0452\r
+    00004F3C                       1419 ?0092:\r
+    00004F3C FD E5                 1420        PUSH    IY\r
+    00004F3E D1                    1421        POP     DE\r
+    00004F3F CD 50 4F              1422        CALL    LWRD ?0452\r
+    00004F42                       1423 ?0064:\r
+    00004F42 DD 6E F8              1424        LD      L,(IX-8)\r
+    00004F45 DD 66 F9              1425        LD      H,(IX-7)\r
+    00004F48 FD E1                 1426        POP     IY\r
+    00004F4A C3 1F 81              1427        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
+    00004F4D                       1428 ?0451:\r
+    00004F4D 5E                    1429        LD      E,(HL)\r
+    00004F4E 23                    1430        INC     HL\r
+    00004F4F 56                    1431        LD      D,(HL)\r
+    00004F50                       1432 ?0452:\r
+    00004F50 3E 00                 1433        LD      A,BYTE3 free\r
+    00004F52 21 E5 73              1434        LD      HL,LWRD free\r
+    00004F55 C3 5E 81              1435        JP      LWRD ?BANK_CALL_DIRECT_L08\r
+    00004F58                       1436 ?0453:\r
+    00004F58 3E 00                 1437        LD      A,BYTE3 Component_delete\r
+    00004F5A 21 8F 4D              1438        LD      HL,LWRD Component_delete\r
+    00004F5D C3 5E 81              1439        JP      LWRD ?BANK_CALL_DIRECT_L08\r
+    00004F60                       1440 Component_delete_children:\r
+    00004F60 C5                    1441        PUSH    BC\r
+    00004F61 FD E5                 1442        PUSH    IY\r
+    00004F63 DD E5                 1443        PUSH    IX\r
+    00004F65 21 15 00              1444        LD      HL,21\r
+    00004F68 19                    1445        ADD     HL,DE\r
+    00004F69 46                    1446        LD      B,(HL)\r
+    00004F6A 23                    1447        INC     HL\r
+    00004F6B 66                    1448        LD      H,(HL)\r
+    00004F6C 68                    1449        LD      L,B\r
+    00004F6D                       1450 ?0341:\r
+    00004F6D E5                    1451        PUSH    HL\r
+    00004F6E DD E1                 1452        POP     IX\r
+    00004F70                       1453 ?0096:\r
+    00004F70 7D                    1454        LD      A,L\r
+    00004F71 B4                    1455        OR      H\r
+    00004F72 28 08                 1456        JR      Z,?0095\r
+    00004F74                       1457 ?0097:\r
+    00004F74 DD E5                 1458        PUSH    IX\r
+    00004F76 D1                    1459        POP     DE\r
+    00004F77 CD 58 4F              1460        CALL    LWRD ?0453\r
+    00004F7A 18 F1                 1461        JR      ?0341\r
+    00004F7C                       1462 ?0095:\r
+    00004F7C C3 27 48              1463        JP      LWRD ?0411\r
+    00004F7F                       1464 Component_changestate_children:\r
+    00004F7F CD 88 81              1465        CALL    LWRD ?ENT_AUTO_DIRECT_L09\r
+    00004F82 00 00                 1466        DEFW    0\r
+    00004F84 FD E5                 1467        PUSH    IY\r
+    00004F86 21 15 00              1468        LD      HL,21\r
+    00004F89 DD 5E 02              1469        LD      E,(IX+2)\r
+    00004F8C DD 56 03              1470        LD      D,(IX+3)\r
+    00004F8F 19                    1471        ADD     HL,DE\r
+    00004F90                       1472 ?0342:\r
+    00004F90 56                    1473        LD      D,(HL)\r
+    00004F91 23                    1474        INC     HL\r
+    00004F92 66                    1475        LD      H,(HL)\r
+    00004F93 6A                    1476        LD      L,D\r
+    00004F94 E5                    1477        PUSH    HL\r
+    00004F95 FD E1                 1478        POP     IY\r
+    00004F97                       1479 ?0099:\r
+    00004F97 7D                    1480        LD      A,L\r
+    00004F98 B4                    1481        OR      H\r
+    00004F99 28 3D                 1482        JR      Z,?0098\r
+    00004F9B                       1483 ?0100:\r
+    00004F9B 21 0A 00              1484        LD      HL,10\r
+    00004F9E FD E5                 1485        PUSH    IY\r
+    00004FA0 C1                    1486        POP     BC\r
+    00004FA1 09                    1487        ADD     HL,BC\r
+    00004FA2 DD 7E 04              1488        LD      A,(IX+4)\r
+    00004FA5 DD 56 05              1489        LD      D,(IX+5)\r
+    00004FA8 2F                    1490        CPL\r
+    00004FA9 5F                    1491        LD      E,A\r
+    00004FAA 7A                    1492        LD      A,D\r
+    00004FAB 2F                    1493        CPL\r
+    00004FAC 57                    1494        LD      D,A\r
+    00004FAD 7E                    1495        LD      A,(HL)\r
+    00004FAE A3                    1496        AND     E\r
+    00004FAF 77                    1497        LD      (HL),A\r
+    00004FB0 23                    1498        INC     HL\r
+    00004FB1 7E                    1499        LD      A,(HL)\r
+    00004FB2 A2                    1500        AND     D\r
+    00004FB3 77                    1501        LD      (HL),A\r
+    00004FB4 21 0A 00              1502        LD      HL,10\r
+    00004FB7 09                    1503        ADD     HL,BC\r
+    00004FB8 7E                    1504        LD      A,(HL)\r
+    00004FB9 DD B6 0A              1505        OR      (IX+10)\r
+    00004FBC 77                    1506        LD      (HL),A\r
+    00004FBD 23                    1507        INC     HL\r
+    00004FBE 7E                    1508        LD      A,(HL)\r
+    00004FBF DD B6 0B              1509        OR      (IX+11)\r
+    00004FC2 77                    1510        LD      (HL),A\r
+    00004FC3 21 0A 00              1511        LD      HL,10\r
+    00004FC6 09                    1512        ADD     HL,BC\r
+    00004FC7 7E                    1513        LD      A,(HL)\r
+    00004FC8 DD AE 0C              1514        XOR     (IX+12)\r
+    00004FCB 77                    1515        LD      (HL),A\r
+    00004FCC 23                    1516        INC     HL\r
+    00004FCD 7E                    1517        LD      A,(HL)\r
+    00004FCE DD AE 0D              1518        XOR     (IX+13)\r
+    00004FD1 77                    1519        LD      (HL),A\r
+    00004FD2 21 13 00              1520        LD      HL,19\r
+    00004FD5 09                    1521        ADD     HL,BC\r
+    00004FD6 18 B8                 1522        JR      ?0342\r
+    00004FD8                       1523 ?0098:\r
+    00004FD8 11 77 85              1524        LD      DE,stdout\r
+    00004FDB 3E 00                 1525        LD      A,BYTE3 fflush\r
+    00004FDD 21 A9 6B              1526        LD      HL,LWRD fflush\r
+    00004FE0 CD 5E 81              1527        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    00004FE3 FD E1                 1528        POP     IY\r
+    00004FE5 C3 1F 81              1529        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
+    00004FE8                       1530 Component_linkstringtable:\r
+    00004FE8 C5                    1531        PUSH    BC\r
+    00004FE9 FD E5                 1532        PUSH    IY\r
+    00004FEB DD E5                 1533        PUSH    IX\r
+    00004FED D5                    1534        PUSH    DE\r
+    00004FEE DD E1                 1535        POP     IX\r
+    00004FF0 21 15 00              1536        LD      HL,21\r
+    00004FF3 19                    1537        ADD     HL,DE\r
+    00004FF4 46                    1538        LD      B,(HL)\r
+    00004FF5 23                    1539        INC     HL\r
+    00004FF6 66                    1540        LD      H,(HL)\r
+    00004FF7 68                    1541        LD      L,B\r
+    00004FF8 E5                    1542        PUSH    HL\r
+    00004FF9 FD E1                 1543        POP     IY\r
+    00004FFB 21 20 00              1544        LD      HL,32\r
+    00004FFE 19                    1545        ADD     HL,DE\r
+    00004FFF 46                    1546        LD      B,(HL)\r
+    00005000 23                    1547        INC     HL\r
+    00005001 66                    1548        LD      H,(HL)\r
+    00005002 68                    1549        LD      L,B\r
+    00005003 01 00 90              1550        LD      BC,36864\r
+    00005006 3E 80                 1551        LD      A,128\r
+    00005008 AC                    1552        XOR     H\r
+    00005009 67                    1553        LD      H,A\r
+    0000500A ED 42                 1554        SBC     HL,BC\r
+    0000500C 30 2E                 1555        JR      NC,?0102\r
+    0000500E DD 4E 20              1556        LD      C,(IX+32)\r
+    00005011 DD 46 21              1557        LD      B,(IX+33)\r
+    00005014 21 00 00              1558        LD      HL,0\r
+    00005017 CD A6 81              1559        CALL    LWRD ?SS_CMP_L02\r
+    0000501A 30 20                 1560        JR      NC,?0102\r
+    0000501C                       1561 ?0104:\r
+    0000501C                       1562 ?0103:\r
+    0000501C                       1563 ?0101:\r
+    0000501C DD 6E 20              1564        LD      L,(IX+32)\r
+    0000501F DD 66 21              1565        LD      H,(IX+33)\r
+    00005022 29                    1566        ADD     HL,HL\r
+    00005023 E5                    1567        PUSH    HL\r
+    00005024 21 08 00              1568        LD      HL,8\r
+    00005027 ED 4B C0 86           1569        LD      BC,(global)\r
+    0000502B 09                    1570        ADD     HL,BC\r
+    0000502C 4E                    1571        LD      C,(HL)\r
+    0000502D 23                    1572        INC     HL\r
+    0000502E 46                    1573        LD      B,(HL)\r
+    0000502F E1                    1574        POP     HL\r
+    00005030 09                    1575        ADD     HL,BC\r
+    00005031 2B                    1576        DEC     HL\r
+    00005032 2B                    1577        DEC     HL\r
+    00005033 46                    1578        LD      B,(HL)\r
+    00005034 DD 70 20              1579        LD      (IX+32),B\r
+    00005037 23                    1580        INC     HL\r
+    00005038 66                    1581        LD      H,(HL)\r
+    00005039 DD 74 21              1582        LD      (IX+33),H\r
+    0000503C                       1583 ?0102:\r
+    0000503C DD 6E 22              1584        LD      L,(IX+34)\r
+    0000503F DD 66 23              1585        LD      H,(IX+35)\r
+    00005042 01 00 90              1586        LD      BC,36864\r
+    00005045 3E 80                 1587        LD      A,128\r
+    00005047 AC                    1588        XOR     H\r
+    00005048 67                    1589        LD      H,A\r
+    00005049 ED 42                 1590        SBC     HL,BC\r
+    0000504B 30 2E                 1591        JR      NC,?0106\r
+    0000504D DD 4E 22              1592        LD      C,(IX+34)\r
+    00005050 DD 46 23              1593        LD      B,(IX+35)\r
+    00005053 21 00 00              1594        LD      HL,0\r
+    00005056 CD A6 81              1595        CALL    LWRD ?SS_CMP_L02\r
+    00005059 30 20                 1596        JR      NC,?0106\r
+    0000505B                       1597 ?0108:\r
+    0000505B                       1598 ?0107:\r
+    0000505B                       1599 ?0105:\r
+    0000505B DD 6E 22              1600        LD      L,(IX+34)\r
+    0000505E DD 66 23              1601        LD      H,(IX+35)\r
+    00005061 29                    1602        ADD     HL,HL\r
+    00005062 E5                    1603        PUSH    HL\r
+    00005063 21 08 00              1604        LD      HL,8\r
+    00005066 ED 4B C0 86           1605        LD      BC,(global)\r
+    0000506A 09                    1606        ADD     HL,BC\r
+    0000506B 4E                    1607        LD      C,(HL)\r
+    0000506C 23                    1608        INC     HL\r
+    0000506D 46                    1609        LD      B,(HL)\r
+    0000506E E1                    1610        POP     HL\r
+    0000506F 09                    1611        ADD     HL,BC\r
+    00005070 2B                    1612        DEC     HL\r
+    00005071 2B                    1613        DEC     HL\r
+    00005072 46                    1614        LD      B,(HL)\r
+    00005073 DD 70 22              1615        LD      (IX+34),B\r
+    00005076 23                    1616        INC     HL\r
+    00005077 66                    1617        LD      H,(HL)\r
+    00005078 DD 74 23              1618        LD      (IX+35),H\r
+    0000507B                       1619 ?0106:\r
+    0000507B                       1620 ?0110:\r
+    0000507B FD E5                 1621        PUSH    IY\r
+    0000507D E1                    1622        POP     HL\r
+    0000507E 7D                    1623        LD      A,L\r
+    0000507F B4                    1624        OR      H\r
+    00005080 28 16                 1625        JR      Z,?0109\r
+    00005082                       1626 ?0111:\r
+    00005082 FD E5                 1627        PUSH    IY\r
+    00005084 D1                    1628        POP     DE\r
+    00005085 3E 00                 1629        LD      A,BYTE3 Component_linkstringtable\r
+    00005087 21 E8 4F              1630        LD      HL,LWRD Component_linkstringtable\r
+    0000508A CD 5E 81              1631        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    0000508D FD 6E 13              1632        LD      L,(IY+19)\r
+    00005090 FD 66 14              1633        LD      H,(IY+20)\r
+    00005093 E5                    1634        PUSH    HL\r
+    00005094 FD E1                 1635        POP     IY\r
+    00005096 18 E3                 1636        JR      ?0106\r
+    00005098                       1637 ?0109:\r
+    00005098 C3 27 48              1638        JP      LWRD ?0411\r
+    0000509B                       1639 Window_handler:\r
+    0000509B CD 88 81              1640        CALL    LWRD ?ENT_AUTO_DIRECT_L09\r
+    0000509E D0 FF                 1641        DEFW    65488\r
+    000050A0 FD E5                 1642        PUSH    IY\r
+    000050A2 AF                    1643        XOR     A\r
+    000050A3 DD 77 FA              1644        LD      (IX-6),A\r
+    000050A6 DD 77 FB              1645        LD      (IX-5),A\r
+    000050A9 DD 77 FC              1646        LD      (IX-4),A\r
+    000050AC DD 77 FD              1647        LD      (IX-3),A\r
+    000050AF 59                    1648        LD      E,C\r
+    000050B0 50                    1649        LD      D,B\r
+    000050B1 CD 6B 81              1650        CALL    LWRD ?S_V_SWITCH_L06\r
+    000050B4 08 00                 1651        DEFW    8\r
+    000050B6 01 00                 1652        DEFW    1\r
+    000050B8 02 00                 1653        DEFW    2\r
+    000050BA 03 00                 1654        DEFW    3\r
+    000050BC 02 01                 1655        DEFW    258\r
+    000050BE 03 01                 1656        DEFW    259\r
+    000050C0 04 01                 1657        DEFW    260\r
+    000050C2 05 01                 1658        DEFW    261\r
+    000050C4 01 04                 1659        DEFW    1025\r
+    000050C6 34 53                 1660        DEFW    ?0159\r
+    000050C8 A2 52                 1661        DEFW    ?0153\r
+    000050CA 35 52                 1662        DEFW    ?0144\r
+    000050CC 61 52                 1663        DEFW    ?0145\r
+    000050CE A9 51                 1664        DEFW    ?0142\r
+    000050D0 BA 51                 1665        DEFW    ?0143\r
+    000050D2 6E 51                 1666        DEFW    ?0131\r
+    000050D4 09 51                 1667        DEFW    ?0119\r
+    000050D6 D8 50                 1668        DEFW    ?0113\r
+    000050D8                       1669 ?0113:\r
+    000050D8 21 15 00              1670        LD      HL,21\r
+    000050DB DD 4E 02              1671        LD      C,(IX+2)\r
+    000050DE DD 46 03              1672        LD      B,(IX+3)\r
+    000050E1 09                    1673        ADD     HL,BC\r
+    000050E2 46                    1674        LD      B,(HL)\r
+    000050E3 23                    1675        INC     HL\r
+    000050E4 66                    1676        LD      H,(HL)\r
+    000050E5 68                    1677        LD      L,B\r
+    000050E6                       1678 ?0344:\r
+    000050E6 E5                    1679        PUSH    HL\r
+    000050E7 FD E1                 1680        POP     IY\r
+    000050E9                       1681 ?0115:\r
+    000050E9 7D                    1682        LD      A,L\r
+    000050EA B4                    1683        OR      H\r
+    000050EB 28 19                 1684        JR      Z,?0114\r
+    000050ED                       1685 ?0116:\r
+    000050ED FD CB 0A 46           1686        BIT     0,(IY+10)\r
+    000050F1 28 0B                 1687        JR      Z,?0118\r
+    000050F3                       1688 ?0117:\r
+    000050F3 DD 6E 0A              1689        LD      L,(IX+10)\r
+    000050F6 DD 66 0B              1690        LD      H,(IX+11)\r
+    000050F9 E5                    1691        PUSH    HL\r
+    000050FA CD 39 53              1692        CALL    LWRD ?0462\r
+    000050FD E1                    1693        POP     HL\r
+    000050FE                       1694 ?0118:\r
+    000050FE FD 6E 13              1695        LD      L,(IY+19)\r
+    00005101 FD 66 14              1696        LD      H,(IY+20)\r
+    00005104 18 E0                 1697        JR      ?0344\r
+    00005106                       1698 ?0114:\r
+    00005106 C3 34 53              1699        JP      LWRD ?0159\r
+    00005109                       1700 ?0119:\r
+    00005109 21 15 00              1701        LD      HL,21\r
+    0000510C DD 4E 02              1702        LD      C,(IX+2)\r
+    0000510F DD 46 03              1703        LD      B,(IX+3)\r
+    00005112 09                    1704        ADD     HL,BC\r
+    00005113 46                    1705        LD      B,(HL)\r
+    00005114 23                    1706        INC     HL\r
+    00005115 66                    1707        LD      H,(HL)\r
+    00005116 68                    1708        LD      L,B\r
+    00005117                       1709 ?0348:\r
+    00005117 E5                    1710        PUSH    HL\r
+    00005118 FD E1                 1711        POP     IY\r
+    0000511A                       1712 ?0121:\r
+    0000511A 7D                    1713        LD      A,L\r
+    0000511B B4                    1714        OR      H\r
+    0000511C 28 4D                 1715        JR      Z,?0120\r
+    0000511E                       1716 ?0122:\r
+    0000511E FD CB 0A 46           1717        BIT     0,(IY+10)\r
+    00005122 28 38                 1718        JR      Z,?0126\r
+    00005124                       1719 ?0123:\r
+    00005124 DD 6E 0A              1720        LD      L,(IX+10)\r
+    00005127 DD 66 0B              1721        LD      H,(IX+11)\r
+    0000512A E5                    1722        PUSH    HL\r
+    0000512B CD 39 53              1723        CALL    LWRD ?0462\r
+    0000512E E1                    1724        POP     HL\r
+    0000512F DD 6E 0A              1725        LD      L,(IX+10)\r
+    00005132 DD 66 0B              1726        LD      H,(IX+11)\r
+    00005135 E5                    1727        PUSH    HL\r
+    00005136 01 03 00              1728        LD      BC,3\r
+    00005139 CD 3F 53              1729        CALL    LWRD ?0463\r
+    0000513C E1                    1730        POP     HL\r
+    0000513D FD 7E 0A              1731        LD      A,(IY+10)\r
+    00005140 E6 22                 1732        AND     34\r
+    00005142 6F                    1733        LD      L,A\r
+    00005143 26 00                 1734        LD      H,0\r
+    00005145 3E 22                 1735        LD      A,34\r
+    00005147 AD                    1736        XOR     L\r
+    00005148 20 12                 1737        JR      NZ,?0126\r
+    0000514A FD 4E 10              1738        LD      C,(IY+16)\r
+    0000514D 44                    1739        LD      B,H\r
+    0000514E DD 6E 0A              1740        LD      L,(IX+10)\r
+    00005151 DD 66 0B              1741        LD      H,(IX+11)\r
+    00005154 ED 42                 1742        SBC     HL,BC\r
+    00005156 20 04                 1743        JR      NZ,?0126\r
+    00005158                       1744 ?0128:\r
+    00005158                       1745 ?0127:\r
+    00005158                       1746 ?0125:\r
+    00005158 FD 21 00 00           1747        LD      IY,0\r
+    0000515C                       1748 ?0126:\r
+    0000515C                       1749 ?0124:\r
+    0000515C FD E5                 1750        PUSH    IY\r
+    0000515E E1                    1751        POP     HL\r
+    0000515F 7D                    1752        LD      A,L\r
+    00005160 B4                    1753        OR      H\r
+    00005161 28 B7                 1754        JR      Z,?0121\r
+    00005163                       1755 ?0129:\r
+    00005163 FD 6E 13              1756        LD      L,(IY+19)\r
+    00005166 FD 66 14              1757        LD      H,(IY+20)\r
+    00005169 18 AC                 1758        JR      ?0348\r
+    0000516B                       1759 ?0130:\r
+    0000516B                       1760 ?0120:\r
+    0000516B C3 34 53              1761        JP      LWRD ?0159\r
+    0000516E                       1762 ?0131:\r
+    0000516E DD 6E 02              1763        LD      L,(IX+2)\r
+    00005171 DD 66 03              1764        LD      H,(IX+3)\r
+    00005174 E5                    1765        PUSH    HL\r
+    00005175 FD E1                 1766        POP     IY\r
+    00005177 21 0A 00              1767        LD      HL,10\r
+    0000517A DD 4E 02              1768        LD      C,(IX+2)\r
+    0000517D DD 46 03              1769        LD      B,(IX+3)\r
+    00005180 09                    1770        ADD     HL,BC\r
+    00005181 CB 46                 1771        BIT     0,(HL)\r
+    00005183 28 21                 1772        JR      Z,?0139\r
+    00005185                       1773 ?0132:\r
+    00005185 FD CB 0A 6E           1774        BIT     5,(IY+10)\r
+    00005189 28 1B                 1775        JR      Z,?0139\r
+    0000518B FD 4E 10              1776        LD      C,(IY+16)\r
+    0000518E 47                    1777        LD      B,A\r
+    0000518F DD 6E 0A              1778        LD      L,(IX+10)\r
+    00005192 DD 66 0B              1779        LD      H,(IX+11)\r
+    00005195 A7                    1780        AND     A\r
+    00005196 ED 42                 1781        SBC     HL,BC\r
+    00005198 20 0C                 1782        JR      NZ,?0139\r
+    0000519A                       1783 ?0137:\r
+    0000519A                       1784 ?0136:\r
+    0000519A                       1785 ?0134:\r
+    0000519A FD 6E 26              1786        LD      L,(IY+38)\r
+    0000519D FD 66 27              1787        LD      H,(IY+39)\r
+    000051A0 FD E5                 1788        PUSH    IY\r
+    000051A2 D1                    1789        POP     DE\r
+    000051A3 CD 5E 53              1790        CALL    LWRD ?0474\r
+    000051A6                       1791 ?0138:\r
+    000051A6                       1792 ?0139:\r
+    000051A6                       1793 ?0135:\r
+    000051A6                       1794 ?0133:\r
+    000051A6                       1795 ?0140:\r
+    000051A6                       1796 ?0141:\r
+    000051A6 C3 34 53              1797        JP      LWRD ?0159\r
+    000051A9                       1798 ?0142:\r
+    000051A9 DD 5E 02              1799        LD      E,(IX+2)\r
+    000051AC 4B                    1800        LD      C,E\r
+    000051AD DD 56 03              1801        LD      D,(IX+3)\r
+    000051B0 42                    1802        LD      B,D\r
+    000051B1 21 1A 00              1803        LD      HL,26\r
+    000051B4 CD 5D 53              1804        CALL    LWRD ?0475\r
+    000051B7 C3 34 53              1805        JP      LWRD ?0159\r
+    000051BA                       1806 ?0143:\r
+    000051BA 21 0A 00              1807        LD      HL,10\r
+    000051BD DD 4E 02              1808        LD      C,(IX+2)\r
+    000051C0 DD 46 03              1809        LD      B,(IX+3)\r
+    000051C3 09                    1810        ADD     HL,BC\r
+    000051C4 7E                    1811        LD      A,(HL)\r
+    000051C5 E6 FC                 1812        AND     252\r
+    000051C7 77                    1813        LD      (HL),A\r
+    000051C8 21 2E 00              1814        LD      HL,46\r
+    000051CB 39                    1815        ADD     HL,SP\r
+    000051CC E5                    1816        PUSH    HL\r
+    000051CD 2B                    1817        DEC     HL\r
+    000051CE 2B                    1818        DEC     HL\r
+    000051CF 4D                    1819        LD      C,L\r
+    000051D0 44                    1820        LD      B,H\r
+    000051D1 DD 5E 02              1821        LD      E,(IX+2)\r
+    000051D4 DD 56 03              1822        LD      D,(IX+3)\r
+    000051D7 CD 55 53              1823        CALL    LWRD ?0466\r
+    000051DA E1                    1824        POP     HL\r
+    000051DB 21 08 00              1825        LD      HL,8\r
+    000051DE DD 4E 02              1826        LD      C,(IX+2)\r
+    000051E1 DD 46 03              1827        LD      B,(IX+3)\r
+    000051E4 09                    1828        ADD     HL,BC\r
+    000051E5 5E                    1829        LD      E,(HL)\r
+    000051E6 23                    1830        INC     HL\r
+    000051E7 56                    1831        LD      D,(HL)\r
+    000051E8 D5                    1832        PUSH    DE\r
+    000051E9 21 06 00              1833        LD      HL,6\r
+    000051EC 09                    1834        ADD     HL,BC\r
+    000051ED 5E                    1835        LD      E,(HL)\r
+    000051EE 23                    1836        INC     HL\r
+    000051EF 56                    1837        LD      D,(HL)\r
+    000051F0 D5                    1838        PUSH    DE\r
+    000051F1 DD 6E FC              1839        LD      L,(IX-4)\r
+    000051F4 DD 66 FD              1840        LD      H,(IX-3)\r
+    000051F7 E5                    1841        PUSH    HL\r
+    000051F8 DD 4E FA              1842        LD      C,(IX-6)\r
+    000051FB DD 46 FB              1843        LD      B,(IX-5)\r
+    000051FE 11 00 00              1844        LD      DE,0\r
+    00005201 CD BB 48              1845        CALL    LWRD ?0471\r
+    00005204 E1                    1846        POP     HL\r
+    00005205 E1                    1847        POP     HL\r
+    00005206 E1                    1848        POP     HL\r
+    00005207 21 00 00              1849        LD      HL,0\r
+    0000520A E5                    1850        PUSH    HL\r
+    0000520B 2E 11                 1851        LD      L,17\r
+    0000520D DD 5E 02              1852        LD      E,(IX+2)\r
+    00005210 DD 56 03              1853        LD      D,(IX+3)\r
+    00005213 19                    1854        ADD     HL,DE\r
+    00005214 5E                    1855        LD      E,(HL)\r
+    00005215 23                    1856        INC     HL\r
+    00005216 56                    1857        LD      D,(HL)\r
+    00005217 21 11 00              1858        LD      HL,17\r
+    0000521A DD 4E 02              1859        LD      C,(IX+2)\r
+    0000521D DD 46 03              1860        LD      B,(IX+3)\r
+    00005220 09                    1861        ADD     HL,BC\r
+    00005221 46                    1862        LD      B,(HL)\r
+    00005222 23                    1863        INC     HL\r
+    00005223 66                    1864        LD      H,(HL)\r
+    00005224 68                    1865        LD      L,B\r
+    00005225 01 17 00              1866        LD      BC,23\r
+    00005228 09                    1867        ADD     HL,BC\r
+    00005229 4E                    1868        LD      C,(HL)\r
+    0000522A 23                    1869        INC     HL\r
+    0000522B 46                    1870        LD      B,(HL)\r
+    0000522C 23                    1871        INC     HL\r
+    0000522D 7E                    1872        LD      A,(HL)\r
+    0000522E 69                    1873        LD      L,C\r
+    0000522F 60                    1874        LD      H,B\r
+    00005230 01 03 01              1875        LD      BC,259\r
+    00005233 18 29                 1876        JR      ?0347\r
+    00005235                       1877 ?0144:\r
+    00005235 21 11 00              1878        LD      HL,17\r
+    00005238 DD 4E 02              1879        LD      C,(IX+2)\r
+    0000523B DD 46 03              1880        LD      B,(IX+3)\r
+    0000523E 09                    1881        ADD     HL,BC\r
+    0000523F 56                    1882        LD      D,(HL)\r
+    00005240 23                    1883        INC     HL\r
+    00005241 66                    1884        LD      H,(HL)\r
+    00005242 6A                    1885        LD      L,D\r
+    00005243 E5                    1886        PUSH    HL\r
+    00005244 FD E1                 1887        POP     IY\r
+    00005246 59                    1888        LD      E,C\r
+    00005247 50                    1889        LD      D,B\r
+    00005248 CD 58 4F              1890        CALL    LWRD ?0453\r
+    0000524B 21 00 00              1891        LD      HL,0\r
+    0000524E E5                    1892        PUSH    HL\r
+    0000524F 01 03 01              1893        LD      BC,259\r
+    00005252 FD E5                 1894        PUSH    IY\r
+    00005254 D1                    1895        POP     DE\r
+    00005255 FD 7E 19              1896        LD      A,(IY+25)\r
+    00005258 FD 6E 17              1897        LD      L,(IY+23)\r
+    0000525B FD 66 18              1898        LD      H,(IY+24)\r
+    0000525E                       1899 ?0347:\r
+    0000525E C3 30 53              1900        JP      LWRD ?0346\r
+    00005261                       1901 ?0145:\r
+    00005261 21 15 00              1902        LD      HL,21\r
+    00005264 DD 4E 02              1903        LD      C,(IX+2)\r
+    00005267 DD 46 03              1904        LD      B,(IX+3)\r
+    0000526A 09                    1905        ADD     HL,BC\r
+    0000526B 46                    1906        LD      B,(HL)\r
+    0000526C 23                    1907        INC     HL\r
+    0000526D 66                    1908        LD      H,(HL)\r
+    0000526E 68                    1909        LD      L,B\r
+    0000526F                       1910 ?0345:\r
+    0000526F E5                    1911        PUSH    HL\r
+    00005270 FD E1                 1912        POP     IY\r
+    00005272                       1913 ?0147:\r
+    00005272 7D                    1914        LD      A,L\r
+    00005273 B4                    1915        OR      H\r
+    00005274 28 29                 1916        JR      Z,?0146\r
+    00005276                       1917 ?0148:\r
+    00005276 DD 6E 0A              1918        LD      L,(IX+10)\r
+    00005279 DD 66 0B              1919        LD      H,(IX+11)\r
+    0000527C FD E5                 1920        PUSH    IY\r
+    0000527E C1                    1921        POP     BC\r
+    0000527F ED 42                 1922        SBC     HL,BC\r
+    00005281 28 14                 1923        JR      Z,?0150\r
+    00005283 FD CB 0A 5E           1924        BIT     3,(IY+10)\r
+    00005287 28 0E                 1925        JR      Z,?0150\r
+    00005289                       1926 ?0152:\r
+    00005289                       1927 ?0151:\r
+    00005289                       1928 ?0149:\r
+    00005289 DD 6E 0A              1929        LD      L,(IX+10)\r
+    0000528C DD 66 0B              1930        LD      H,(IX+11)\r
+    0000528F E5                    1931        PUSH    HL\r
+    00005290 01 03 02              1932        LD      BC,515\r
+    00005293 CD 3F 53              1933        CALL    LWRD ?0463\r
+    00005296 E1                    1934        POP     HL\r
+    00005297                       1935 ?0150:\r
+    00005297 FD 6E 13              1936        LD      L,(IY+19)\r
+    0000529A FD 66 14              1937        LD      H,(IY+20)\r
+    0000529D 18 D0                 1938        JR      ?0345\r
+    0000529F                       1939 ?0146:\r
+    0000529F C3 34 53              1940        JP      LWRD ?0159\r
+    000052A2                       1941 ?0153:\r
+    000052A2 21 11 00              1942        LD      HL,17\r
+    000052A5 DD 4E 02              1943        LD      C,(IX+2)\r
+    000052A8 DD 46 03              1944        LD      B,(IX+3)\r
+    000052AB 09                    1945        ADD     HL,BC\r
+    000052AC 7E                    1946        LD      A,(HL)\r
+    000052AD 23                    1947        INC     HL\r
+    000052AE B6                    1948        OR      (HL)\r
+    000052AF 20 0E                 1949        JR      NZ,?0155\r
+    000052B1                       1950 ?0154:\r
+    000052B1 21 04 00              1951        LD      HL,4\r
+    000052B4 ED 4B C0 86           1952        LD      BC,(global)\r
+    000052B8 09                    1953        ADD     HL,BC\r
+    000052B9 36 01                 1954        LD      (HL),1\r
+    000052BB 23                    1955        INC     HL\r
+    000052BC 77                    1956        LD      (HL),A\r
+    000052BD 18 75                 1957        JR      ?0159\r
+    000052BF                       1958 ?0155:\r
+    000052BF 21 0A 00              1959        LD      HL,10\r
+    000052C2 09                    1960        ADD     HL,BC\r
+    000052C3 23                    1961        INC     HL\r
+    000052C4 CB 6E                 1962        BIT     5,(HL)\r
+    000052C6 20 28                 1963        JR      NZ,?0158\r
+    000052C8                       1964 ?0157:\r
+    000052C8 DD 6E 0A              1965        LD      L,(IX+10)\r
+    000052CB DD 66 0B              1966        LD      H,(IX+11)\r
+    000052CE E5                    1967        PUSH    HL\r
+    000052CF 21 11 00              1968        LD      HL,17\r
+    000052D2 59                    1969        LD      E,C\r
+    000052D3 50                    1970        LD      D,B\r
+    000052D4 19                    1971        ADD     HL,DE\r
+    000052D5 5E                    1972        LD      E,(HL)\r
+    000052D6 23                    1973        INC     HL\r
+    000052D7 56                    1974        LD      D,(HL)\r
+    000052D8 21 11 00              1975        LD      HL,17\r
+    000052DB 09                    1976        ADD     HL,BC\r
+    000052DC 46                    1977        LD      B,(HL)\r
+    000052DD 23                    1978        INC     HL\r
+    000052DE 66                    1979        LD      H,(HL)\r
+    000052DF 68                    1980        LD      L,B\r
+    000052E0 01 17 00              1981        LD      BC,23\r
+    000052E3 09                    1982        ADD     HL,BC\r
+    000052E4 4E                    1983        LD      C,(HL)\r
+    000052E5 23                    1984        INC     HL\r
+    000052E6 46                    1985        LD      B,(HL)\r
+    000052E7 23                    1986        INC     HL\r
+    000052E8 7E                    1987        LD      A,(HL)\r
+    000052E9 69                    1988        LD      L,C\r
+    000052EA 60                    1989        LD      H,B\r
+    000052EB 01 01 04              1990        LD      BC,1025\r
+    000052EE 18 40                 1991        JR      ?0346\r
+    000052F0                       1992 ?0158:\r
+    000052F0 21 11 00              1993        LD      HL,17\r
+    000052F3 09                    1994        ADD     HL,BC\r
+    000052F4 56                    1995        LD      D,(HL)\r
+    000052F5 23                    1996        INC     HL\r
+    000052F6 66                    1997        LD      H,(HL)\r
+    000052F7 6A                    1998        LD      L,D\r
+    000052F8 E5                    1999        PUSH    HL\r
+    000052F9 FD E1                 2000        POP     IY\r
+    000052FB 11 0A 00              2001        LD      DE,10\r
+    000052FE 19                    2002        ADD     HL,DE\r
+    000052FF 7E                    2003        LD      A,(HL)\r
+    00005300 F6 03                 2004        OR      3\r
+    00005302 77                    2005        LD      (HL),A\r
+    00005303 6A                    2006        LD      L,D\r
+    00005304 62                    2007        LD      H,D\r
+    00005305 E5                    2008        PUSH    HL\r
+    00005306 23                    2009        INC     HL\r
+    00005307 E5                    2010        PUSH    HL\r
+    00005308 4A                    2011        LD      C,D\r
+    00005309 42                    2012        LD      B,D\r
+    0000530A FD E5                 2013        PUSH    IY\r
+    0000530C D1                    2014        POP     DE\r
+    0000530D 3E 00                 2015        LD      A,BYTE3 Component_changestate_children\r
+    0000530F 21 7F 4F              2016        LD      HL,LWRD Component_changestate_children\r
+    00005312 CD 5E 81              2017        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    00005315 E1                    2018        POP     HL\r
+    00005316 E1                    2019        POP     HL\r
+    00005317 21 00 00              2020        LD      HL,0\r
+    0000531A E5                    2021        PUSH    HL\r
+    0000531B DD 5E 02              2022        LD      E,(IX+2)\r
+    0000531E 4B                    2023        LD      C,E\r
+    0000531F DD 56 03              2024        LD      D,(IX+3)\r
+    00005322 42                    2025        LD      B,D\r
+    00005323 2E 17                 2026        LD      L,23\r
+    00005325 09                    2027        ADD     HL,BC\r
+    00005326 4E                    2028        LD      C,(HL)\r
+    00005327 23                    2029        INC     HL\r
+    00005328 46                    2030        LD      B,(HL)\r
+    00005329 23                    2031        INC     HL\r
+    0000532A 7E                    2032        LD      A,(HL)\r
+    0000532B 69                    2033        LD      L,C\r
+    0000532C 60                    2034        LD      H,B\r
+    0000532D 01 05 01              2035        LD      BC,261\r
+    00005330                       2036 ?0346:\r
+    00005330 CD 5E 81              2037        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    00005333 E1                    2038        POP     HL\r
+    00005334                       2039 ?0159:\r
+    00005334                       2040 ?0156:\r
+    00005334                       2041 ?0112:\r
+    00005334 FD E1                 2042        POP     IY\r
+    00005336 C3 1F 81              2043        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
+    00005339                       2044 ?0462:\r
+    00005339 DD 4E 04              2045        LD      C,(IX+4)\r
+    0000533C DD 46 05              2046        LD      B,(IX+5)\r
+    0000533F                       2047 ?0463:\r
+    0000533F FD E5                 2048        PUSH    IY\r
+    00005341 D1                    2049        POP     DE\r
+    00005342 FD 7E 19              2050        LD      A,(IY+25)\r
+    00005345 FD 6E 17              2051        LD      L,(IY+23)\r
+    00005348 FD 66 18              2052        LD      H,(IY+24)\r
+    0000534B C3 5E 81              2053        JP      LWRD ?BANK_CALL_DIRECT_L08\r
+    0000534E                       2054 ?0467:\r
+    0000534E 23                    2055        INC     HL\r
+    0000534F 23                    2056        INC     HL\r
+    00005350                       2057 ?0468:\r
+    00005350 4D                    2058        LD      C,L\r
+    00005351 44                    2059        LD      B,H\r
+    00005352 DD E5                 2060        PUSH    IX\r
+    00005354 D1                    2061        POP     DE\r
+    00005355                       2062 ?0466:\r
+    00005355 3E 00                 2063        LD      A,BYTE3 Component_findXY\r
+    00005357 21 13 4D              2064        LD      HL,LWRD Component_findXY\r
+    0000535A C3 5E 81              2065        JP      LWRD ?BANK_CALL_DIRECT_L08\r
+    0000535D                       2066 ?0475:\r
+    0000535D 09                    2067        ADD     HL,BC\r
+    0000535E                       2068 ?0474:\r
+    0000535E 4E                    2069        LD      C,(HL)\r
+    0000535F 23                    2070        INC     HL\r
+    00005360 46                    2071        LD      B,(HL)\r
+    00005361 23                    2072        INC     HL\r
+    00005362 7E                    2073        LD      A,(HL)\r
+    00005363 69                    2074        LD      L,C\r
+    00005364 60                    2075        LD      H,B\r
+    00005365 C3 5E 81              2076        JP      LWRD ?BANK_CALL_DIRECT_L08\r
+    00005368                       2077 Window_paint:\r
+    00005368 CD 88 81              2078        CALL    LWRD ?ENT_AUTO_DIRECT_L09\r
+    0000536B FC FF                 2079        DEFW    -4\r
+    0000536D FD E5                 2080        PUSH    IY\r
+    0000536F DD 6E 02              2081        LD      L,(IX+2)\r
+    00005372 DD 66 03              2082        LD      H,(IX+3)\r
+    00005375 E5                    2083        PUSH    HL\r
+    00005376 FD E1                 2084        POP     IY\r
+    00005378 AF                    2085        XOR     A\r
+    00005379 DD 77 FE              2086        LD      (IX-2),A\r
+    0000537C DD 77 FF              2087        LD      (IX-1),A\r
+    0000537F DD 77 FC              2088        LD      (IX-4),A\r
+    00005382 DD 77 FD              2089        LD      (IX-3),A\r
+    00005385 21 0A 00              2090        LD      HL,10\r
+    00005388 ED 4B C0 86           2091        LD      BC,(global)\r
+    0000538C 09                    2092        ADD     HL,BC\r
+    0000538D 7E                    2093        LD      A,(HL)\r
+    0000538E 23                    2094        INC     HL\r
+    0000538F 66                    2095        LD      H,(HL)\r
+    00005390 6F                    2096        LD      L,A\r
+    00005391 46                    2097        LD      B,(HL)\r
+    00005392 23                    2098        INC     HL\r
+    00005393 66                    2099        LD      H,(HL)\r
+    00005394 68                    2100        LD      L,B\r
+    00005395 FD 4E 0E              2101        LD      C,(IY+14)\r
+    00005398 FD 46 0F              2102        LD      B,(IY+15)\r
+    0000539B A7                    2103        AND     A\r
+    0000539C ED 42                 2104        SBC     HL,BC\r
+    0000539E 28 09                 2105        JR      Z,?0161\r
+    000053A0                       2106 ?0160:\r
+    000053A0 FD 5E 0E              2107        LD      E,(IY+14)\r
+    000053A3 FD 56 0F              2108        LD      D,(IY+15)\r
+    000053A6 CD ED 54              2109        CALL    LWRD ?0472\r
+    000053A9                       2110 ?0161:\r
+    000053A9 FD CB 0A 46           2111        BIT     0,(IY+10)\r
+    000053AD CA A5 54              2112        JP      Z,?0163\r
+    000053B0                       2113 ?0162:\r
+    000053B0 21 02 00              2114        LD      HL,2\r
+    000053B3 39                    2115        ADD     HL,SP\r
+    000053B4 E5                    2116        PUSH    HL\r
+    000053B5 23                    2117        INC     HL\r
+    000053B6 23                    2118        INC     HL\r
+    000053B7 4D                    2119        LD      C,L\r
+    000053B8 44                    2120        LD      B,H\r
+    000053B9 FD E5                 2121        PUSH    IY\r
+    000053BB D1                    2122        POP     DE\r
+    000053BC CD 55 53              2123        CALL    LWRD ?0466\r
+    000053BF E1                    2124        POP     HL\r
+    000053C0 CD 09 4D              2125        CALL    LWRD ?0477\r
+    000053C3 DD 4E FC              2126        LD      C,(IX-4)\r
+    000053C6 DD 46 FD              2127        LD      B,(IX-3)\r
+    000053C9 DD 5E FE              2128        LD      E,(IX-2)\r
+    000053CC DD 56 FF              2129        LD      D,(IX-1)\r
+    000053CF 3E 00                 2130        LD      A,BYTE3 Move\r
+    000053D1 21 6C 46              2131        LD      HL,LWRD Move\r
+    000053D4 CD 5E 81              2132        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    000053D7 FD 4E 08              2133        LD      C,(IY+8)\r
+    000053DA FD 46 09              2134        LD      B,(IY+9)\r
+    000053DD FD 5E 06              2135        LD      E,(IY+6)\r
+    000053E0 FD 56 07              2136        LD      D,(IY+7)\r
+    000053E3 3E 00                 2137        LD      A,BYTE3 ClearRect\r
+    000053E5 21 AB 46              2138        LD      HL,LWRD ClearRect\r
+    000053E8 CD 5E 81              2139        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    000053EB FD 6E 08              2140        LD      L,(IY+8)\r
+    000053EE FD 66 09              2141        LD      H,(IY+9)\r
+    000053F1 E5                    2142        PUSH    HL\r
+    000053F2 FD 6E 06              2143        LD      L,(IY+6)\r
+    000053F5 FD 66 07              2144        LD      H,(IY+7)\r
+    000053F8 E5                    2145        PUSH    HL\r
+    000053F9 DD 6E FC              2146        LD      L,(IX-4)\r
+    000053FC DD 66 FD              2147        LD      H,(IX-3)\r
+    000053FF E5                    2148        PUSH    HL\r
+    00005400 DD 4E FE              2149        LD      C,(IX-2)\r
+    00005403 DD 46 FF              2150        LD      B,(IX-1)\r
+    00005406 11 00 00              2151        LD      DE,0\r
+    00005409 CD BB 48              2152        CALL    LWRD ?0471\r
+    0000540C E1                    2153        POP     HL\r
+    0000540D E1                    2154        POP     HL\r
+    0000540E E1                    2155        POP     HL\r
+    0000540F FD 5E 20              2156        LD      E,(IY+32)\r
+    00005412 FD 56 21              2157        LD      D,(IY+33)\r
+    00005415 21 0A 00              2158        LD      HL,10\r
+    00005418 ED 4B C0 86           2159        LD      BC,(global)\r
+    0000541C 09                    2160        ADD     HL,BC\r
+    0000541D 7E                    2161        LD      A,(HL)\r
+    0000541E 23                    2162        INC     HL\r
+    0000541F 66                    2163        LD      H,(HL)\r
+    00005420 6F                    2164        LD      L,A\r
+    00005421 CD AA 54              2165        CALL    LWRD ?0455\r
+    00005424 DD 4E FC              2166        LD      C,(IX-4)\r
+    00005427 DD 46 FD              2167        LD      B,(IX-3)\r
+    0000542A 09                    2168        ADD     HL,BC\r
+    0000542B 11 04 00              2169        LD      DE,4\r
+    0000542E 19                    2170        ADD     HL,DE\r
+    0000542F 4D                    2171        LD      C,L\r
+    00005430 44                    2172        LD      B,H\r
+    00005431 CD B8 54              2173        CALL    LWRD ?0459\r
+    00005434 7E                    2174        LD      A,(HL)\r
+    00005435 23                    2175        INC     HL\r
+    00005436 66                    2176        LD      H,(HL)\r
+    00005437 6F                    2177        LD      L,A\r
+    00005438 01 05 00              2178        LD      BC,5\r
+    0000543B 09                    2179        ADD     HL,BC\r
+    0000543C 4E                    2180        LD      C,(HL)\r
+    0000543D 23                    2181        INC     HL\r
+    0000543E 46                    2182        LD      B,(HL)\r
+    0000543F 23                    2183        INC     HL\r
+    00005440 7E                    2184        LD      A,(HL)\r
+    00005441 69                    2185        LD      L,C\r
+    00005442 60                    2186        LD      H,B\r
+    00005443 CD DC 49              2187        CALL    LWRD ?0444\r
+    00005446 01 FC FF              2188        LD      BC,65532\r
+    00005449 09                    2189        ADD     HL,BC\r
+    0000544A 4D                    2190        LD      C,L\r
+    0000544B 44                    2191        LD      B,H\r
+    0000544C FD 5E 06              2192        LD      E,(IY+6)\r
+    0000544F FD 56 07              2193        LD      D,(IY+7)\r
+    00005452 3E 00                 2194        LD      A,BYTE3 DrawRectNC\r
+    00005454 21 EE 46              2195        LD      HL,LWRD DrawRectNC\r
+    00005457 CD 5E 81              2196        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    0000545A DD 4E FC              2197        LD      C,(IX-4)\r
+    0000545D DD 46 FD              2198        LD      B,(IX-3)\r
+    00005460 CD B8 54              2199        CALL    LWRD ?0459\r
+    00005463 46                    2200        LD      B,(HL)\r
+    00005464 23                    2201        INC     HL\r
+    00005465 66                    2202        LD      H,(HL)\r
+    00005466 68                    2203        LD      L,B\r
+    00005467 CD AA 54              2204        CALL    LWRD ?0455\r
+    0000546A 01 05 00              2205        LD      BC,5\r
+    0000546D 09                    2206        ADD     HL,BC\r
+    0000546E 4D                    2207        LD      C,L\r
+    0000546F 44                    2208        LD      B,H\r
+    00005470 FD 5E 06              2209        LD      E,(IY+6)\r
+    00005473 FD 56 07              2210        LD      D,(IY+7)\r
+    00005476 3E 00                 2211        LD      A,BYTE3 FillRect\r
+    00005478 21 33 47              2212        LD      HL,LWRD FillRect\r
+    0000547B CD 5E 81              2213        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    0000547E 21 0E 00              2214        LD      HL,14\r
+    00005481 DD 4E FC              2215        LD      C,(IX-4)\r
+    00005484 DD 46 FD              2216        LD      B,(IX-3)\r
+    00005487 09                    2217        ADD     HL,BC\r
+    00005488 4D                    2218        LD      C,L\r
+    00005489 44                    2219        LD      B,H\r
+    0000548A DD 5E FE              2220        LD      E,(IX-2)\r
+    0000548D DD 56 FF              2221        LD      D,(IX-1)\r
+    00005490 13                    2222        INC     DE\r
+    00005491 13                    2223        INC     DE\r
+    00005492 3E 00                 2224        LD      A,BYTE3 Move\r
+    00005494 21 6C 46              2225        LD      HL,LWRD Move\r
+    00005497 CD D5 54              2226        CALL    LWRD ?0460\r
+    0000549A FD E5                 2227        PUSH    IY\r
+    0000549C D1                    2228        POP     DE\r
+    0000549D 3E 00                 2229        LD      A,BYTE3 Component_paint\r
+    0000549F 21 CD 4C              2230        LD      HL,LWRD Component_paint\r
+    000054A2 CD 5E 81              2231        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    000054A5                       2232 ?0163:\r
+    000054A5 FD E1                 2233        POP     IY\r
+    000054A7 C3 1F 81              2234        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
+    000054AA                       2235 ?0455:\r
+    000054AA 01 05 00              2236        LD      BC,5\r
+    000054AD 09                    2237        ADD     HL,BC\r
+    000054AE 4E                    2238        LD      C,(HL)\r
+    000054AF 23                    2239        INC     HL\r
+    000054B0 46                    2240        LD      B,(HL)\r
+    000054B1 23                    2241        INC     HL\r
+    000054B2 7E                    2242        LD      A,(HL)\r
+    000054B3 69                    2243        LD      L,C\r
+    000054B4 60                    2244        LD      H,B\r
+    000054B5 C3 5E 81              2245        JP      LWRD ?BANK_CALL_DIRECT_L08\r
+    000054B8                       2246 ?0459:\r
+    000054B8 DD 5E FE              2247        LD      E,(IX-2)\r
+    000054BB DD 56 FF              2248        LD      D,(IX-1)\r
+    000054BE 3E 00                 2249        LD      A,BYTE3 Move\r
+    000054C0 21 6C 46              2250        LD      HL,LWRD Move\r
+    000054C3 CD 5E 81              2251        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    000054C6 FD 5E 20              2252        LD      E,(IY+32)\r
+    000054C9 FD 56 21              2253        LD      D,(IY+33)\r
+    000054CC 21 0A 00              2254        LD      HL,10\r
+    000054CF ED 4B C0 86           2255        LD      BC,(global)\r
+    000054D3 09                    2256        ADD     HL,BC\r
+    000054D4 C9                    2257        RET\r
+    000054D5                       2258 ?0460:\r
+    000054D5 CD 5E 81              2259        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    000054D8 FD 5E 20              2260        LD      E,(IY+32)\r
+    000054DB FD 56 21              2261        LD      D,(IY+33)\r
+    000054DE 3E 00                 2262        LD      A,BYTE3 Text\r
+    000054E0 21 02 48              2263        LD      HL,LWRD Text\r
+    000054E3 CD 5E 81              2264        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    000054E6 C9                    2265        RET\r
+    000054E7                       2266 ?0473:\r
+    000054E7 DD 5E 0E              2267        LD      E,(IX+14)\r
+    000054EA DD 56 0F              2268        LD      D,(IX+15)\r
+    000054ED                       2269 ?0472:\r
+    000054ED 3E 00                 2270        LD      A,BYTE3 setCurrentFont\r
+    000054EF 21 6E 49              2271        LD      HL,LWRD setCurrentFont\r
+    000054F2 C3 5E 81              2272        JP      LWRD ?BANK_CALL_DIRECT_L08\r
+    000054F5                       2273 Root_paint:\r
+    000054F5 CD 52 81              2274        CALL    LWRD ?ENT_PARM_DIRECT_L09\r
+    000054F8 CD 09 4D              2275        CALL    LWRD ?0477\r
+    000054FB CD A0 48              2276        CALL    LWRD ?0461\r
+    000054FE CD 5E 81              2277        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    00005501 01 80 00              2278        LD      BC,128\r
+    00005504 58                    2279        LD      E,B\r
+    00005505 50                    2280        LD      D,B\r
+    00005506 3E 00                 2281        LD      A,BYTE3 GrayRect\r
+    00005508 21 BD 47              2282        LD      HL,LWRD GrayRect\r
+    0000550B CD 5E 81              2283        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    0000550E 21 80 00              2284        LD      HL,128\r
+    00005511 E5                    2285        PUSH    HL\r
+    00005512 6C                    2286        LD      L,H\r
+    00005513 E5                    2287        PUSH    HL\r
+    00005514 E5                    2288        PUSH    HL\r
+    00005515 CD B8 48              2289        CALL    LWRD ?0470\r
+    00005518 E1                    2290        POP     HL\r
+    00005519 E1                    2291        POP     HL\r
+    0000551A E1                    2292        POP     HL\r
+    0000551B DD 5E 02              2293        LD      E,(IX+2)\r
+    0000551E DD 56 03              2294        LD      D,(IX+3)\r
+    00005521 3E 00                 2295        LD      A,BYTE3 Component_paint\r
+    00005523 21 CD 4C              2296        LD      HL,LWRD Component_paint\r
+    00005526 CD 5E 81              2297        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    00005529 C3 1F 81              2298        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
+    0000552C                       2299 Window_add:\r
+    0000552C CD 52 81              2300        CALL    LWRD ?ENT_PARM_DIRECT_L09\r
+    0000552F 3E 00                 2301        LD      A,BYTE3 Component_add\r
+    00005531 21 6F 4C              2302        LD      HL,LWRD Component_add\r
+    00005534 CD 5E 81              2303        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    00005537 C3 1F 81              2304        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
+    0000553A                       2305 Window_new:\r
+    0000553A CD 88 81              2306        CALL    LWRD ?ENT_AUTO_DIRECT_L09\r
+    0000553D 00 00                 2307        DEFW    0\r
+    0000553F FD E5                 2308        PUSH    IY\r
+    00005541 DD 6E 0C              2309        LD      L,(IX+12)\r
+    00005544 DD 66 0D              2310        LD      H,(IX+13)\r
+    00005547 E5                    2311        PUSH    HL\r
+    00005548 DD 6E 0A              2312        LD      L,(IX+10)\r
+    0000554B DD 66 0B              2313        LD      H,(IX+11)\r
+    0000554E E5                    2314        PUSH    HL\r
+    0000554F CD 7E 55              2315        CALL    LWRD ?0438\r
+    00005552 F1                    2316        POP     AF\r
+    00005553 F1                    2317        POP     AF\r
+    00005554 E5                    2318        PUSH    HL\r
+    00005555 FD E1                 2319        POP     IY\r
+    00005557 01 17 00              2320        LD      BC,23\r
+    0000555A 09                    2321        ADD     HL,BC\r
+    0000555B 36 9B                 2322        LD      (HL),LOW(Window_handler)\r
+    0000555D 23                    2323        INC     HL\r
+    0000555E 36 50                 2324        LD      (HL),HIGH(Window_handler)\r
+    00005560 23                    2325        INC     HL\r
+    00005561 36 00                 2326        LD      (HL),BYTE3 Window_handler\r
+    00005563 FD 36 1A 68           2327        LD      (IY+26),LOW(Window_paint)\r
+    00005567 FD 36 1B 53           2328        LD      (IY+27),HIGH(Window_paint)\r
+    0000556B FD 36 1C 00           2329        LD      (IY+28),BYTE3 Window_paint\r
+    0000556F FD 36 1D 2C           2330        LD      (IY+29),LOW(Window_add)\r
+    00005573 FD 36 1E 55           2331        LD      (IY+30),HIGH(Window_add)\r
+    00005577 FD 36 1F 00           2332        LD      (IY+31),BYTE3 Window_add\r
+    0000557B C3 1A 4C              2333        JP      LWRD ?0418\r
+    0000557E                       2334 ?0438:\r
+    0000557E DD 5E 02              2335        LD      E,(IX+2)\r
+    00005581 DD 56 03              2336        LD      D,(IX+3)\r
+    00005584 3E 00                 2337        LD      A,BYTE3 Component_new\r
+    00005586 21 78 4B              2338        LD      HL,LWRD Component_new\r
+    00005589 C3 5E 81              2339        JP      LWRD ?BANK_CALL_DIRECT_L08\r
+    0000558C                       2340 Button_handler:\r
+    0000558C CD 52 81              2341        CALL    LWRD ?ENT_PARM_DIRECT_L09\r
+    0000558F FD E5                 2342        PUSH    IY\r
+    00005591 D5                    2343        PUSH    DE\r
+    00005592 FD E1                 2344        POP     IY\r
+    00005594 DD 6E 0A              2345        LD      L,(IX+10)\r
+    00005597 DD 66 0B              2346        LD      H,(IX+11)\r
+    0000559A E5                    2347        PUSH    HL\r
+    0000559B 3E 00                 2348        LD      A,BYTE3 Window_handler\r
+    0000559D 21 9B 50              2349        LD      HL,LWRD Window_handler\r
+    000055A0 CD 5E 81              2350        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    000055A3 E1                    2351        POP     HL\r
+    000055A4 3E 03                 2352        LD      A,3\r
+    000055A6 DD AE 04              2353        XOR     (IX+4)\r
+    000055A9 DD B6 05              2354        OR      (IX+5)\r
+    000055AC 20 3E                 2355        JR      NZ,?0169\r
+    000055AE FD 4E 10              2356        LD      C,(IY+16)\r
+    000055B1 47                    2357        LD      B,A\r
+    000055B2 DD 6E 0A              2358        LD      L,(IX+10)\r
+    000055B5 DD 66 0B              2359        LD      H,(IX+11)\r
+    000055B8 ED 42                 2360        SBC     HL,BC\r
+    000055BA 20 30                 2361        JR      NZ,?0169\r
+    000055BC FD 7E 0A              2362        LD      A,(IY+10)\r
+    000055BF E6 03                 2363        AND     3\r
+    000055C1 28 29                 2364        JR      Z,?0169\r
+    000055C3                       2365 ?0167:\r
+    000055C3                       2366 ?0166:\r
+    000055C3                       2367 ?0164:\r
+    000055C3 DD 6E 0A              2368        LD      L,(IX+10)\r
+    000055C6 DD 66 0B              2369        LD      H,(IX+11)\r
+    000055C9 E5                    2370        PUSH    HL\r
+    000055CA FD 5E 11              2371        LD      E,(IY+17)\r
+    000055CD FD 56 12              2372        LD      D,(IY+18)\r
+    000055D0 FD 6E 11              2373        LD      L,(IY+17)\r
+    000055D3 FD 66 12              2374        LD      H,(IY+18)\r
+    000055D6 0E 17                 2375        LD      C,23\r
+    000055D8 CD 19 56              2376        CALL    LWRD ?0464\r
+    000055DB E1                    2377        POP     HL\r
+    000055DC FD CB 0A 66           2378        BIT     4,(IY+10)\r
+    000055E0 28 0A                 2379        JR      Z,?0169\r
+    000055E2                       2380 ?0168:\r
+    000055E2 FD 4E 10              2381        LD      C,(IY+16)\r
+    000055E5 06 00                 2382        LD      B,0\r
+    000055E7 C5                    2383        PUSH    BC\r
+    000055E8 CD 27 56              2384        CALL    LWRD ?0469\r
+    000055EB E1                    2385        POP     HL\r
+    000055EC                       2386 ?0169:\r
+    000055EC                       2387 ?0165:\r
+    000055EC 21 01 02              2388        LD      HL,513\r
+    000055EF DD 4E 04              2389        LD      C,(IX+4)\r
+    000055F2 DD 46 05              2390        LD      B,(IX+5)\r
+    000055F5 A7                    2391        AND     A\r
+    000055F6 ED 42                 2392        SBC     HL,BC\r
+    000055F8 20 0B                 2393        JR      NZ,?0171\r
+    000055FA                       2394 ?0170:\r
+    000055FA DD 6E 0A              2395        LD      L,(IX+10)\r
+    000055FD DD 66 0B              2396        LD      H,(IX+11)\r
+    00005600 E5                    2397        PUSH    HL\r
+    00005601 CD 0A 56              2398        CALL    LWRD ?0465\r
+    00005604 E1                    2399        POP     HL\r
+    00005605                       2400 ?0171:\r
+    00005605 FD E1                 2401        POP     IY\r
+    00005607 C3 1F 81              2402        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
+    0000560A                       2403 ?0465:\r
+    0000560A FD 5E 11              2404        LD      E,(IY+17)\r
+    0000560D FD 56 12              2405        LD      D,(IY+18)\r
+    00005610 FD 6E 11              2406        LD      L,(IY+17)\r
+    00005613 FD 66 12              2407        LD      H,(IY+18)\r
+    00005616 01 17 00              2408        LD      BC,23\r
+    00005619                       2409 ?0464:\r
+    00005619 09                    2410        ADD     HL,BC\r
+    0000561A 4E                    2411        LD      C,(HL)\r
+    0000561B 23                    2412        INC     HL\r
+    0000561C 46                    2413        LD      B,(HL)\r
+    0000561D 23                    2414        INC     HL\r
+    0000561E 7E                    2415        LD      A,(HL)\r
+    0000561F 69                    2416        LD      L,C\r
+    00005620 60                    2417        LD      H,B\r
+    00005621 01 01 02              2418        LD      BC,513\r
+    00005624 C3 5E 81              2419        JP      LWRD ?BANK_CALL_DIRECT_L08\r
+    00005627                       2420 ?0469:\r
+    00005627 FD 5E 11              2421        LD      E,(IY+17)\r
+    0000562A FD 56 12              2422        LD      D,(IY+18)\r
+    0000562D FD 6E 11              2423        LD      L,(IY+17)\r
+    00005630 FD 66 12              2424        LD      H,(IY+18)\r
+    00005633 0E 17                 2425        LD      C,23\r
+    00005635 09                    2426        ADD     HL,BC\r
+    00005636 4E                    2427        LD      C,(HL)\r
+    00005637 23                    2428        INC     HL\r
+    00005638 46                    2429        LD      B,(HL)\r
+    00005639 23                    2430        INC     HL\r
+    0000563A 7E                    2431        LD      A,(HL)\r
+    0000563B 69                    2432        LD      L,C\r
+    0000563C 60                    2433        LD      H,B\r
+    0000563D 01 04 01              2434        LD      BC,260\r
+    00005640 C3 5E 81              2435        JP      LWRD ?BANK_CALL_DIRECT_L08\r
+    00005643                       2436 Button_drawtext:\r
+    00005643 CD 52 81              2437        CALL    LWRD ?ENT_PARM_DIRECT_L09\r
+    00005646 FD E5                 2438        PUSH    IY\r
+    00005648 D5                    2439        PUSH    DE\r
+    00005649 FD E1                 2440        POP     IY\r
+    0000564B 21 0A 00              2441        LD      HL,10\r
+    0000564E 19                    2442        ADD     HL,DE\r
+    0000564F CB 76                 2443        BIT     6,(HL)\r
+    00005651 FD 5E 20              2444        LD      E,(IY+32)\r
+    00005654 FD 56 21              2445        LD      D,(IY+33)\r
+    00005657 21 0A 00              2446        LD      HL,10\r
+    0000565A ED 4B C0 86           2447        LD      BC,(global)\r
+    0000565E 09                    2448        ADD     HL,BC\r
+    0000565F 7E                    2449        LD      A,(HL)\r
+    00005660 23                    2450        INC     HL\r
+    00005661 66                    2451        LD      H,(HL)\r
+    00005662 6F                    2452        LD      L,A\r
+    00005663 01 05 00              2453        LD      BC,5\r
+    00005666 09                    2454        ADD     HL,BC\r
+    00005667 4E                    2455        LD      C,(HL)\r
+    00005668 23                    2456        INC     HL\r
+    00005669 46                    2457        LD      B,(HL)\r
+    0000566A 23                    2458        INC     HL\r
+    0000566B 7E                    2459        LD      A,(HL)\r
+    0000566C 69                    2460        LD      L,C\r
+    0000566D 60                    2461        LD      H,B\r
+    0000566E 28 53                 2462        JR      Z,?0173\r
+    00005670                       2463 ?0172:\r
+    00005670 CD 5E 81              2464        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    00005673 29                    2465        ADD     HL,HL\r
+    00005674 4D                    2466        LD      C,L\r
+    00005675 44                    2467        LD      B,H\r
+    00005676 FD 6E 08              2468        LD      L,(IY+8)\r
+    00005679 FD 66 09              2469        LD      H,(IY+9)\r
+    0000567C A7                    2470        AND     A\r
+    0000567D ED 42                 2471        SBC     HL,BC\r
+    0000567F CD F0 56              2472        CALL    LWRD ?0480\r
+    00005682 0E 0C                 2473        LD      C,12\r
+    00005684 09                    2474        ADD     HL,BC\r
+    00005685 E5                    2475        PUSH    HL\r
+    00005686 FD 5E 20              2476        LD      E,(IY+32)\r
+    00005689 FD 56 21              2477        LD      D,(IY+33)\r
+    0000568C 21 0A 00              2478        LD      HL,10\r
+    0000568F ED 4B C0 86           2479        LD      BC,(global)\r
+    00005693 09                    2480        ADD     HL,BC\r
+    00005694 7E                    2481        LD      A,(HL)\r
+    00005695 23                    2482        INC     HL\r
+    00005696 66                    2483        LD      H,(HL)\r
+    00005697 6F                    2484        LD      L,A\r
+    00005698 CD B0 49              2485        CALL    LWRD ?0442\r
+    0000569B C1                    2486        POP     BC\r
+    0000569C CD D5 54              2487        CALL    LWRD ?0460\r
+    0000569F FD 5E 08              2488        LD      E,(IY+8)\r
+    000056A2 FD 56 09              2489        LD      D,(IY+9)\r
+    000056A5 CD F1 56              2490        CALL    LWRD ?0481\r
+    000056A8 0E 0A                 2491        LD      C,10\r
+    000056AA 09                    2492        ADD     HL,BC\r
+    000056AB E5                    2493        PUSH    HL\r
+    000056AC FD 5E 22              2494        LD      E,(IY+34)\r
+    000056AF FD 56 23              2495        LD      D,(IY+35)\r
+    000056B2 69                    2496        LD      L,C\r
+    000056B3 60                    2497        LD      H,B\r
+    000056B4 CD A7 49              2498        CALL    LWRD ?0443\r
+    000056B7 C1                    2499        POP     BC\r
+    000056B8 CD 5E 81              2500        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    000056BB FD 5E 22              2501        LD      E,(IY+34)\r
+    000056BE FD 56 23              2502        LD      D,(IY+35)\r
+    000056C1 18 20                 2503        JR      ?0350\r
+    000056C3                       2504 ?0173:\r
+    000056C3 CD DC 49              2505        CALL    LWRD ?0444\r
+    000056C6 CD F0 56              2506        CALL    LWRD ?0480\r
+    000056C9 0E 0D                 2507        LD      C,13\r
+    000056CB 09                    2508        ADD     HL,BC\r
+    000056CC E5                    2509        PUSH    HL\r
+    000056CD FD 5E 20              2510        LD      E,(IY+32)\r
+    000056D0 FD 56 21              2511        LD      D,(IY+33)\r
+    000056D3 21 0A 00              2512        LD      HL,10\r
+    000056D6 CD A7 49              2513        CALL    LWRD ?0443\r
+    000056D9 C1                    2514        POP     BC\r
+    000056DA CD 5E 81              2515        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    000056DD FD 5E 20              2516        LD      E,(IY+32)\r
+    000056E0 FD 56 21              2517        LD      D,(IY+33)\r
+    000056E3                       2518 ?0350:\r
+    000056E3 3E 00                 2519        LD      A,BYTE3 Text\r
+    000056E5 21 02 48              2520        LD      HL,LWRD Text\r
+    000056E8                       2521 ?0424:\r
+    000056E8 CD 5E 81              2522        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    000056EB                       2523 ?0174:\r
+    000056EB FD E1                 2524        POP     IY\r
+    000056ED C3 1F 81              2525        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
+    000056F0                       2526 ?0480:\r
+    000056F0 EB                    2527        EX      DE,HL\r
+    000056F1                       2528 ?0481:\r
+    000056F1 01 02 00              2529        LD      BC,2\r
+    000056F4 CD C1 81              2530        CALL    LWRD ?SS_DIV_L02\r
+    000056F7 DD 6E 0A              2531        LD      L,(IX+10)\r
+    000056FA DD 66 0B              2532        LD      H,(IX+11)\r
+    000056FD 19                    2533        ADD     HL,DE\r
+    000056FE C9                    2534        RET\r
+    000056FF                       2535 Button_paint:\r
+    000056FF C5                    2536        PUSH    BC\r
+    00005700 DD E5                 2537        PUSH    IX\r
+    00005702 F5                    2538        PUSH    AF\r
+    00005703 F5                    2539        PUSH    AF\r
+    00005704 D5                    2540        PUSH    DE\r
+    00005705 DD E1                 2541        POP     IX\r
+    00005707 21 02 00              2542        LD      HL,2\r
+    0000570A 39                    2543        ADD     HL,SP\r
+    0000570B AF                    2544        XOR     A\r
+    0000570C 77                    2545        LD      (HL),A\r
+    0000570D 23                    2546        INC     HL\r
+    0000570E 77                    2547        LD      (HL),A\r
+    0000570F 2B                    2548        DEC     HL\r
+    00005710 2B                    2549        DEC     HL\r
+    00005711 2B                    2550        DEC     HL\r
+    00005712 77                    2551        LD      (HL),A\r
+    00005713 23                    2552        INC     HL\r
+    00005714 77                    2553        LD      (HL),A\r
+    00005715 21 0A 00              2554        LD      HL,10\r
+    00005718 ED 4B C0 86           2555        LD      BC,(global)\r
+    0000571C 09                    2556        ADD     HL,BC\r
+    0000571D 7E                    2557        LD      A,(HL)\r
+    0000571E 23                    2558        INC     HL\r
+    0000571F 66                    2559        LD      H,(HL)\r
+    00005720 6F                    2560        LD      L,A\r
+    00005721 46                    2561        LD      B,(HL)\r
+    00005722 23                    2562        INC     HL\r
+    00005723 66                    2563        LD      H,(HL)\r
+    00005724 68                    2564        LD      L,B\r
+    00005725 E5                    2565        PUSH    HL\r
+    00005726 21 0E 00              2566        LD      HL,14\r
+    00005729 19                    2567        ADD     HL,DE\r
+    0000572A 4E                    2568        LD      C,(HL)\r
+    0000572B 23                    2569        INC     HL\r
+    0000572C 46                    2570        LD      B,(HL)\r
+    0000572D E1                    2571        POP     HL\r
+    0000572E A7                    2572        AND     A\r
+    0000572F ED 42                 2573        SBC     HL,BC\r
+    00005731 28 03                 2574        JR      Z,?0176\r
+    00005733                       2575 ?0175:\r
+    00005733 CD E7 54              2576        CALL    LWRD ?0473\r
+    00005736                       2577 ?0176:\r
+    00005736 DD CB 0A 46           2578        BIT     0,(IX+10)\r
+    0000573A CA CF 57              2579        JP      Z,?0178\r
+    0000573D                       2580 ?0177:\r
+    0000573D 21 00 00              2581        LD      HL,0\r
+    00005740 39                    2582        ADD     HL,SP\r
+    00005741 E5                    2583        PUSH    HL\r
+    00005742 CD 4E 53              2584        CALL    LWRD ?0467\r
+    00005745 E1                    2585        POP     HL\r
+    00005746 21 00 00              2586        LD      HL,0\r
+    00005749 39                    2587        ADD     HL,SP\r
+    0000574A CD D7 57              2588        CALL    LWRD ?0457\r
+    0000574D CD 5E 81              2589        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    00005750 DD 6E 08              2590        LD      L,(IX+8)\r
+    00005753 DD 66 09              2591        LD      H,(IX+9)\r
+    00005756 E5                    2592        PUSH    HL\r
+    00005757 DD 6E 06              2593        LD      L,(IX+6)\r
+    0000575A DD 66 07              2594        LD      H,(IX+7)\r
+    0000575D E5                    2595        PUSH    HL\r
+    0000575E 21 04 00              2596        LD      HL,4\r
+    00005761 39                    2597        ADD     HL,SP\r
+    00005762 4E                    2598        LD      C,(HL)\r
+    00005763 23                    2599        INC     HL\r
+    00005764 46                    2600        LD      B,(HL)\r
+    00005765 C5                    2601        PUSH    BC\r
+    00005766 23                    2602        INC     HL\r
+    00005767 4E                    2603        LD      C,(HL)\r
+    00005768 23                    2604        INC     HL\r
+    00005769 46                    2605        LD      B,(HL)\r
+    0000576A DD CB 0A 4E           2606        BIT     1,(IX+10)\r
+    0000576E 28 07                 2607        JR      Z,?0180\r
+    00005770 DD 5E 10              2608        LD      E,(IX+16)\r
+    00005773 16 00                 2609        LD      D,0\r
+    00005775 18 03                 2610        JR      ?0181\r
+    00005777                       2611 ?0180:\r
+    00005777 11 00 00              2612        LD      DE,0\r
+    0000577A                       2613 ?0181:\r
+    0000577A CD BB 48              2614        CALL    LWRD ?0471\r
+    0000577D E1                    2615        POP     HL\r
+    0000577E E1                    2616        POP     HL\r
+    0000577F E1                    2617        POP     HL\r
+    00005780 DD 7E 0A              2618        LD      A,(IX+10)\r
+    00005783 E6 82                 2619        AND     130\r
+    00005785 28 1C                 2620        JR      Z,?0183\r
+    00005787 DD 7E 0A              2621        LD      A,(IX+10)\r
+    0000578A E6 82                 2622        AND     130\r
+    0000578C EE 82                 2623        XOR     130\r
+    0000578E 28 13                 2624        JR      Z,?0183\r
+    00005790                       2625 ?0185:\r
+    00005790                       2626 ?0184:\r
+    00005790                       2627 ?0182:\r
+    00005790 DD 4E 08              2628        LD      C,(IX+8)\r
+    00005793 DD 46 09              2629        LD      B,(IX+9)\r
+    00005796 DD 5E 06              2630        LD      E,(IX+6)\r
+    00005799 DD 56 07              2631        LD      D,(IX+7)\r
+    0000579C 3E 00                 2632        LD      A,BYTE3 FillRectNC\r
+    0000579E 21 78 47              2633        LD      HL,LWRD FillRectNC\r
+    000057A1 18 11                 2634        JR      ?0353\r
+    000057A3                       2635 ?0183:\r
+    000057A3 DD 4E 08              2636        LD      C,(IX+8)\r
+    000057A6 DD 46 09              2637        LD      B,(IX+9)\r
+    000057A9 DD 5E 06              2638        LD      E,(IX+6)\r
+    000057AC DD 56 07              2639        LD      D,(IX+7)\r
+    000057AF 3E 00                 2640        LD      A,BYTE3 DrawRectNC\r
+    000057B1 21 EE 46              2641        LD      HL,LWRD DrawRectNC\r
+    000057B4                       2642 ?0353:\r
+    000057B4 CD 5E 81              2643        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    000057B7                       2644 ?0186:\r
+    000057B7 21 00 00              2645        LD      HL,0\r
+    000057BA 39                    2646        ADD     HL,SP\r
+    000057BB 4E                    2647        LD      C,(HL)\r
+    000057BC 23                    2648        INC     HL\r
+    000057BD 46                    2649        LD      B,(HL)\r
+    000057BE C5                    2650        PUSH    BC\r
+    000057BF 23                    2651        INC     HL\r
+    000057C0 4E                    2652        LD      C,(HL)\r
+    000057C1 23                    2653        INC     HL\r
+    000057C2 46                    2654        LD      B,(HL)\r
+    000057C3 DD E5                 2655        PUSH    IX\r
+    000057C5 D1                    2656        POP     DE\r
+    000057C6 3E 00                 2657        LD      A,BYTE3 Button_drawtext\r
+    000057C8 21 43 56              2658        LD      HL,LWRD Button_drawtext\r
+    000057CB CD 5E 81              2659        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    000057CE E1                    2660        POP     HL\r
+    000057CF                       2661 ?0178:\r
+    000057CF E1                    2662        POP     HL\r
+    000057D0 E1                    2663        POP     HL\r
+    000057D1 DD E1                 2664        POP     IX\r
+    000057D3 C1                    2665        POP     BC\r
+    000057D4 C3 25 81              2666        JP      LWRD ?BANK_FAST_LEAVE_L08\r
+    000057D7                       2667 ?0457:\r
+    000057D7 4E                    2668        LD      C,(HL)\r
+    000057D8 23                    2669        INC     HL\r
+    000057D9 46                    2670        LD      B,(HL)\r
+    000057DA 23                    2671        INC     HL\r
+    000057DB                       2672 ?0458:\r
+    000057DB 5E                    2673        LD      E,(HL)\r
+    000057DC 23                    2674        INC     HL\r
+    000057DD 56                    2675        LD      D,(HL)\r
+    000057DE 3E 00                 2676        LD      A,BYTE3 Move\r
+    000057E0 21 6C 46              2677        LD      HL,LWRD Move\r
+    000057E3 CD 5E 81              2678        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    000057E6 DD 4E 08              2679        LD      C,(IX+8)\r
+    000057E9 DD 46 09              2680        LD      B,(IX+9)\r
+    000057EC DD 5E 06              2681        LD      E,(IX+6)\r
+    000057EF DD 56 07              2682        LD      D,(IX+7)\r
+    000057F2 3E 00                 2683        LD      A,BYTE3 ClearRect\r
+    000057F4 21 AB 46              2684        LD      HL,LWRD ClearRect\r
+    000057F7 C9                    2685        RET\r
+    000057F8                       2686 Button_add:\r
+    000057F8 CD 52 81              2687        CALL    LWRD ?ENT_PARM_DIRECT_L09\r
+    000057FB C3 1F 81              2688        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
+    000057FE                       2689 Button_new:\r
+    000057FE CD 88 81              2690        CALL    LWRD ?ENT_AUTO_DIRECT_L09\r
+    00005801 00 00                 2691        DEFW    0\r
+    00005803 FD E5                 2692        PUSH    IY\r
+    00005805 DD 6E 0C              2693        LD      L,(IX+12)\r
+    00005808 DD 66 0D              2694        LD      H,(IX+13)\r
+    0000580B E5                    2695        PUSH    HL\r
+    0000580C DD 6E 0A              2696        LD      L,(IX+10)\r
+    0000580F DD 66 0B              2697        LD      H,(IX+11)\r
+    00005812 E5                    2698        PUSH    HL\r
+    00005813 CD 7E 55              2699        CALL    LWRD ?0438\r
+    00005816 F1                    2700        POP     AF\r
+    00005817 F1                    2701        POP     AF\r
+    00005818 E5                    2702        PUSH    HL\r
+    00005819 FD E1                 2703        POP     IY\r
+    0000581B 01 0A 00              2704        LD      BC,10\r
+    0000581E 09                    2705        ADD     HL,BC\r
+    0000581F 7E                    2706        LD      A,(HL)\r
+    00005820 F6 03                 2707        OR      3\r
+    00005822 77                    2708        LD      (HL),A\r
+    00005823 DD 46 0E              2709        LD      B,(IX+14)\r
+    00005826 FD 70 10              2710        LD      (IY+16),B\r
+    00005829 FD 36 17 8C           2711        LD      (IY+23),LOW(Button_handler)\r
+    0000582D FD 36 18 55           2712        LD      (IY+24),HIGH(Button_handler)\r
+    00005831 FD 36 19 00           2713        LD      (IY+25),BYTE3 Button_handler\r
+    00005835 FD 36 1A FF           2714        LD      (IY+26),LOW(Button_paint)\r
+    00005839 FD 36 1B 56           2715        LD      (IY+27),HIGH(Button_paint)\r
+    0000583D FD 36 1C 00           2716        LD      (IY+28),BYTE3 Button_paint\r
+    00005841 FD 36 1D F8           2717        LD      (IY+29),LOW(Button_add)\r
+    00005845 FD 36 1E 57           2718        LD      (IY+30),HIGH(Button_add)\r
+    00005849 FD 36 1F 00           2719        LD      (IY+31),BYTE3 Button_add\r
+    0000584D C3 1A 4C              2720        JP      LWRD ?0418\r
+    00005850                       2721 ToggleButton_handler:\r
+    00005850 CD 52 81              2722        CALL    LWRD ?ENT_PARM_DIRECT_L09\r
+    00005853 FD E5                 2723        PUSH    IY\r
+    00005855 D5                    2724        PUSH    DE\r
+    00005856 FD E1                 2725        POP     IY\r
+    00005858 DD 6E 0A              2726        LD      L,(IX+10)\r
+    0000585B DD 66 0B              2727        LD      H,(IX+11)\r
+    0000585E E5                    2728        PUSH    HL\r
+    0000585F 3E 00                 2729        LD      A,BYTE3 Window_handler\r
+    00005861 21 9B 50              2730        LD      HL,LWRD Window_handler\r
+    00005864 CD 5E 81              2731        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    00005867 E1                    2732        POP     HL\r
+    00005868 3E 03                 2733        LD      A,3\r
+    0000586A DD AE 04              2734        XOR     (IX+4)\r
+    0000586D DD B6 05              2735        OR      (IX+5)\r
+    00005870 20 5C                 2736        JR      NZ,?0192\r
+    00005872 FD 4E 10              2737        LD      C,(IY+16)\r
+    00005875 47                    2738        LD      B,A\r
+    00005876 DD 6E 0A              2739        LD      L,(IX+10)\r
+    00005879 DD 66 0B              2740        LD      H,(IX+11)\r
+    0000587C ED 42                 2741        SBC     HL,BC\r
+    0000587E 20 4E                 2742        JR      NZ,?0192\r
+    00005880 FD 7E 0A              2743        LD      A,(IY+10)\r
+    00005883 E6 03                 2744        AND     3\r
+    00005885 28 47                 2745        JR      Z,?0192\r
+    00005887                       2746 ?0190:\r
+    00005887                       2747 ?0189:\r
+    00005887                       2748 ?0187:\r
+    00005887 FD 7E 0A              2749        LD      A,(IY+10)\r
+    0000588A EE 04                 2750        XOR     4\r
+    0000588C FD 77 0A              2751        LD      (IY+10),A\r
+    0000588F DD 6E 0A              2752        LD      L,(IX+10)\r
+    00005892 DD 66 0B              2753        LD      H,(IX+11)\r
+    00005895 E5                    2754        PUSH    HL\r
+    00005896 FD 5E 11              2755        LD      E,(IY+17)\r
+    00005899 FD 56 12              2756        LD      D,(IY+18)\r
+    0000589C FD 6E 11              2757        LD      L,(IY+17)\r
+    0000589F FD 66 12              2758        LD      H,(IY+18)\r
+    000058A2 0E 17                 2759        LD      C,23\r
+    000058A4 09                    2760        ADD     HL,BC\r
+    000058A5 4E                    2761        LD      C,(HL)\r
+    000058A6 23                    2762        INC     HL\r
+    000058A7 46                    2763        LD      B,(HL)\r
+    000058A8 23                    2764        INC     HL\r
+    000058A9 7E                    2765        LD      A,(HL)\r
+    000058AA 69                    2766        LD      L,C\r
+    000058AB 60                    2767        LD      H,B\r
+    000058AC 01 02 02              2768        LD      BC,514\r
+    000058AF CD 5E 81              2769        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    000058B2 E1                    2770        POP     HL\r
+    000058B3 21 00 00              2771        LD      HL,0\r
+    000058B6 E5                    2772        PUSH    HL\r
+    000058B7 01 03 01              2773        LD      BC,259\r
+    000058BA CD 3F 53              2774        CALL    LWRD ?0463\r
+    000058BD E1                    2775        POP     HL\r
+    000058BE FD CB 0A 66           2776        BIT     4,(IY+10)\r
+    000058C2 28 0A                 2777        JR      Z,?0192\r
+    000058C4                       2778 ?0191:\r
+    000058C4 FD 4E 10              2779        LD      C,(IY+16)\r
+    000058C7 06 00                 2780        LD      B,0\r
+    000058C9 C5                    2781        PUSH    BC\r
+    000058CA CD 27 56              2782        CALL    LWRD ?0469\r
+    000058CD E1                    2783        POP     HL\r
+    000058CE                       2784 ?0192:\r
+    000058CE                       2785 ?0188:\r
+    000058CE 21 01 02              2786        LD      HL,513\r
+    000058D1 DD 4E 04              2787        LD      C,(IX+4)\r
+    000058D4 DD 46 05              2788        LD      B,(IX+5)\r
+    000058D7 A7                    2789        AND     A\r
+    000058D8 ED 42                 2790        SBC     HL,BC\r
+    000058DA 20 0B                 2791        JR      NZ,?0194\r
+    000058DC                       2792 ?0193:\r
+    000058DC DD 6E 0A              2793        LD      L,(IX+10)\r
+    000058DF DD 66 0B              2794        LD      H,(IX+11)\r
+    000058E2 E5                    2795        PUSH    HL\r
+    000058E3 CD 0A 56              2796        CALL    LWRD ?0465\r
+    000058E6 E1                    2797        POP     HL\r
+    000058E7                       2798 ?0194:\r
+    000058E7 FD E1                 2799        POP     IY\r
+    000058E9 C3 1F 81              2800        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
+    000058EC                       2801 ToggleButton_paint:\r
+    000058EC C5                    2802        PUSH    BC\r
+    000058ED DD E5                 2803        PUSH    IX\r
+    000058EF F5                    2804        PUSH    AF\r
+    000058F0 F5                    2805        PUSH    AF\r
+    000058F1 D5                    2806        PUSH    DE\r
+    000058F2 DD E1                 2807        POP     IX\r
+    000058F4 21 02 00              2808        LD      HL,2\r
+    000058F7 39                    2809        ADD     HL,SP\r
+    000058F8 AF                    2810        XOR     A\r
+    000058F9 77                    2811        LD      (HL),A\r
+    000058FA 23                    2812        INC     HL\r
+    000058FB 77                    2813        LD      (HL),A\r
+    000058FC 2B                    2814        DEC     HL\r
+    000058FD 2B                    2815        DEC     HL\r
+    000058FE 2B                    2816        DEC     HL\r
+    000058FF 77                    2817        LD      (HL),A\r
+    00005900 23                    2818        INC     HL\r
+    00005901 77                    2819        LD      (HL),A\r
+    00005902 21 0A 00              2820        LD      HL,10\r
+    00005905 ED 4B C0 86           2821        LD      BC,(global)\r
+    00005909 09                    2822        ADD     HL,BC\r
+    0000590A 7E                    2823        LD      A,(HL)\r
+    0000590B 23                    2824        INC     HL\r
+    0000590C 66                    2825        LD      H,(HL)\r
+    0000590D 6F                    2826        LD      L,A\r
+    0000590E 46                    2827        LD      B,(HL)\r
+    0000590F 23                    2828        INC     HL\r
+    00005910 66                    2829        LD      H,(HL)\r
+    00005911 68                    2830        LD      L,B\r
+    00005912 E5                    2831        PUSH    HL\r
+    00005913 21 0E 00              2832        LD      HL,14\r
+    00005916 19                    2833        ADD     HL,DE\r
+    00005917 4E                    2834        LD      C,(HL)\r
+    00005918 23                    2835        INC     HL\r
+    00005919 46                    2836        LD      B,(HL)\r
+    0000591A E1                    2837        POP     HL\r
+    0000591B A7                    2838        AND     A\r
+    0000591C ED 42                 2839        SBC     HL,BC\r
+    0000591E 28 03                 2840        JR      Z,?0196\r
+    00005920                       2841 ?0195:\r
+    00005920 CD E7 54              2842        CALL    LWRD ?0473\r
+    00005923                       2843 ?0196:\r
+    00005923 DD CB 0A 46           2844        BIT     0,(IX+10)\r
+    00005927 CA D5 59              2845        JP      Z,?0198\r
+    0000592A                       2846 ?0197:\r
+    0000592A 21 00 00              2847        LD      HL,0\r
+    0000592D 39                    2848        ADD     HL,SP\r
+    0000592E E5                    2849        PUSH    HL\r
+    0000592F CD 4E 53              2850        CALL    LWRD ?0467\r
+    00005932 E1                    2851        POP     HL\r
+    00005933 21 00 00              2852        LD      HL,0\r
+    00005936 39                    2853        ADD     HL,SP\r
+    00005937 CD D7 57              2854        CALL    LWRD ?0457\r
+    0000593A CD 5E 81              2855        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    0000593D DD CB 0A 4E           2856        BIT     1,(IX+10)\r
+    00005941 28 36                 2857        JR      Z,?0200\r
+    00005943 DD CB 0A 56           2858        BIT     2,(IX+10)\r
+    00005947 28 30                 2859        JR      Z,?0200\r
+    00005949                       2860 ?0202:\r
+    00005949                       2861 ?0201:\r
+    00005949                       2862 ?0199:\r
+    00005949 DD 4E 08              2863        LD      C,(IX+8)\r
+    0000594C DD 46 09              2864        LD      B,(IX+9)\r
+    0000594F DD 5E 06              2865        LD      E,(IX+6)\r
+    00005952 DD 56 07              2866        LD      D,(IX+7)\r
+    00005955 3E 00                 2867        LD      A,BYTE3 FillRectNC\r
+    00005957 21 78 47              2868        LD      HL,LWRD FillRectNC\r
+    0000595A CD 5E 81              2869        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    0000595D DD 6E 08              2870        LD      L,(IX+8)\r
+    00005960 DD 66 09              2871        LD      H,(IX+9)\r
+    00005963 E5                    2872        PUSH    HL\r
+    00005964 DD 6E 06              2873        LD      L,(IX+6)\r
+    00005967 DD 66 07              2874        LD      H,(IX+7)\r
+    0000596A E5                    2875        PUSH    HL\r
+    0000596B 21 04 00              2876        LD      HL,4\r
+    0000596E 39                    2877        ADD     HL,SP\r
+    0000596F 4E                    2878        LD      C,(HL)\r
+    00005970 23                    2879        INC     HL\r
+    00005971 46                    2880        LD      B,(HL)\r
+    00005972 C5                    2881        PUSH    BC\r
+    00005973 23                    2882        INC     HL\r
+    00005974 4E                    2883        LD      C,(HL)\r
+    00005975 23                    2884        INC     HL\r
+    00005976 46                    2885        LD      B,(HL)\r
+    00005977 18 34                 2886        JR      ?0357\r
+    00005979                       2887 ?0200:\r
+    00005979 DD 4E 08              2888        LD      C,(IX+8)\r
+    0000597C DD 46 09              2889        LD      B,(IX+9)\r
+    0000597F DD 5E 06              2890        LD      E,(IX+6)\r
+    00005982 DD 56 07              2891        LD      D,(IX+7)\r
+    00005985 3E 00                 2892        LD      A,BYTE3 DrawRectNC\r
+    00005987 21 EE 46              2893        LD      HL,LWRD DrawRectNC\r
+    0000598A CD 5E 81              2894        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    0000598D DD 6E 08              2895        LD      L,(IX+8)\r
+    00005990 DD 66 09              2896        LD      H,(IX+9)\r
+    00005993 E5                    2897        PUSH    HL\r
+    00005994 DD 6E 06              2898        LD      L,(IX+6)\r
+    00005997 DD 66 07              2899        LD      H,(IX+7)\r
+    0000599A E5                    2900        PUSH    HL\r
+    0000599B 21 04 00              2901        LD      HL,4\r
+    0000599E 39                    2902        ADD     HL,SP\r
+    0000599F 4E                    2903        LD      C,(HL)\r
+    000059A0 23                    2904        INC     HL\r
+    000059A1 46                    2905        LD      B,(HL)\r
+    000059A2 C5                    2906        PUSH    BC\r
+    000059A3 23                    2907        INC     HL\r
+    000059A4 4E                    2908        LD      C,(HL)\r
+    000059A5 23                    2909        INC     HL\r
+    000059A6 46                    2910        LD      B,(HL)\r
+    000059A7 DD CB 0A 4E           2911        BIT     1,(IX+10)\r
+    000059AB 28 07                 2912        JR      Z,?0205\r
+    000059AD                       2913 ?0357:\r
+    000059AD DD 5E 10              2914        LD      E,(IX+16)\r
+    000059B0 16 00                 2915        LD      D,0\r
+    000059B2 18 03                 2916        JR      ?0206\r
+    000059B4                       2917 ?0205:\r
+    000059B4 11 00 00              2918        LD      DE,0\r
+    000059B7                       2919 ?0206:\r
+    000059B7 CD BB 48              2920        CALL    LWRD ?0471\r
+    000059BA E1                    2921        POP     HL\r
+    000059BB E1                    2922        POP     HL\r
+    000059BC E1                    2923        POP     HL\r
+    000059BD                       2924 ?0203:\r
+    000059BD 21 00 00              2925        LD      HL,0\r
+    000059C0 39                    2926        ADD     HL,SP\r
+    000059C1 4E                    2927        LD      C,(HL)\r
+    000059C2 23                    2928        INC     HL\r
+    000059C3 46                    2929        LD      B,(HL)\r
+    000059C4 C5                    2930        PUSH    BC\r
+    000059C5 23                    2931        INC     HL\r
+    000059C6 4E                    2932        LD      C,(HL)\r
+    000059C7 23                    2933        INC     HL\r
+    000059C8 46                    2934        LD      B,(HL)\r
+    000059C9 DD E5                 2935        PUSH    IX\r
+    000059CB D1                    2936        POP     DE\r
+    000059CC 3E 00                 2937        LD      A,BYTE3 Button_drawtext\r
+    000059CE 21 43 56              2938        LD      HL,LWRD Button_drawtext\r
+    000059D1 CD 5E 81              2939        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    000059D4 E1                    2940        POP     HL\r
+    000059D5                       2941 ?0198:\r
+    000059D5 C3 CF 57              2942        JP      LWRD ?0178\r
+    000059D8                       2943 ToggleButton_new:\r
+    000059D8 CD 88 81              2944        CALL    LWRD ?ENT_AUTO_DIRECT_L09\r
+    000059DB 00 00                 2945        DEFW    0\r
+    000059DD FD E5                 2946        PUSH    IY\r
+    000059DF DD 6E 0C              2947        LD      L,(IX+12)\r
+    000059E2 DD 66 0D              2948        LD      H,(IX+13)\r
+    000059E5 E5                    2949        PUSH    HL\r
+    000059E6 DD 6E 0A              2950        LD      L,(IX+10)\r
+    000059E9 DD 66 0B              2951        LD      H,(IX+11)\r
+    000059EC E5                    2952        PUSH    HL\r
+    000059ED CD 7E 55              2953        CALL    LWRD ?0438\r
+    000059F0 F1                    2954        POP     AF\r
+    000059F1 F1                    2955        POP     AF\r
+    000059F2 E5                    2956        PUSH    HL\r
+    000059F3 FD E1                 2957        POP     IY\r
+    000059F5 01 0A 00              2958        LD      BC,10\r
+    000059F8 09                    2959        ADD     HL,BC\r
+    000059F9 7E                    2960        LD      A,(HL)\r
+    000059FA F6 07                 2961        OR      7\r
+    000059FC 77                    2962        LD      (HL),A\r
+    000059FD DD 46 0E              2963        LD      B,(IX+14)\r
+    00005A00 FD 70 10              2964        LD      (IY+16),B\r
+    00005A03 FD 36 17 50           2965        LD      (IY+23),LOW(ToggleButton_handler)\r
+    00005A07 FD 36 18 58           2966        LD      (IY+24),HIGH(ToggleButton_handler)\r
+    00005A0B FD 36 19 00           2967        LD      (IY+25),BYTE3 ToggleButton_handler\r
+    00005A0F FD 36 1A EC           2968        LD      (IY+26),LOW(ToggleButton_paint)\r
+    00005A13 FD 36 1B 58           2969        LD      (IY+27),HIGH(ToggleButton_paint)\r
+    00005A17 FD 36 1C 00           2970        LD      (IY+28),BYTE3 ToggleButton_paint\r
+    00005A1B FD 36 1D F8           2971        LD      (IY+29),LOW(Button_add)\r
+    00005A1F FD 36 1E 57           2972        LD      (IY+30),HIGH(Button_add)\r
+    00005A23 FD 36 1F 00           2973        LD      (IY+31),BYTE3 Button_add\r
+    00005A27 C3 1A 4C              2974        JP      LWRD ?0418\r
+    00005A2A                       2975 Dialog_handler:\r
+    00005A2A CD 52 81              2976        CALL    LWRD ?ENT_PARM_DIRECT_L09\r
+    00005A2D FD E5                 2977        PUSH    IY\r
+    00005A2F D5                    2978        PUSH    DE\r
+    00005A30 FD E1                 2979        POP     IY\r
+    00005A32 DD 6E 0A              2980        LD      L,(IX+10)\r
+    00005A35 DD 66 0B              2981        LD      H,(IX+11)\r
+    00005A38 E5                    2982        PUSH    HL\r
+    00005A39 3E 00                 2983        LD      A,BYTE3 Window_handler\r
+    00005A3B 21 9B 50              2984        LD      HL,LWRD Window_handler\r
+    00005A3E CD 5E 81              2985        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    00005A41 E1                    2986        POP     HL\r
+    00005A42 21 01 02              2987        LD      HL,513\r
+    00005A45 DD 4E 04              2988        LD      C,(IX+4)\r
+    00005A48 DD 46 05              2989        LD      B,(IX+5)\r
+    00005A4B A7                    2990        AND     A\r
+    00005A4C ED 42                 2991        SBC     HL,BC\r
+    00005A4E 20 40                 2992        JR      NZ,?0208\r
+    00005A50 3E FF                 2993        LD      A,255\r
+    00005A52 DD AE 0A              2994        XOR     (IX+10)\r
+    00005A55 DD B6 0B              2995        OR      (IX+11)\r
+    00005A58 20 36                 2996        JR      NZ,?0208\r
+    00005A5A                       2997 ?0210:\r
+    00005A5A                       2998 ?0209:\r
+    00005A5A                       2999 ?0207:\r
+    00005A5A FD CB 0B 66           3000        BIT     4,(IY+11)\r
+    00005A5E E5                    3001        PUSH    HL\r
+    00005A5F 28 05                 3002        JR      Z,?0212\r
+    00005A61                       3003 ?0211:\r
+    00005A61 01 05 01              3004        LD      BC,261\r
+    00005A64 18 03                 3005        JR      ?0358\r
+    00005A66                       3006 ?0212:\r
+    00005A66 01 02 01              3007        LD      BC,258\r
+    00005A69                       3008 ?0358:\r
+    00005A69 CD 3F 53              3009        CALL    LWRD ?0463\r
+    00005A6C E1                    3010        POP     HL\r
+    00005A6D                       3011 ?0213:\r
+    00005A6D FD 4E 10              3012        LD      C,(IY+16)\r
+    00005A70 06 00                 3013        LD      B,0\r
+    00005A72 C5                    3014        PUSH    BC\r
+    00005A73 FD 5E 11              3015        LD      E,(IY+17)\r
+    00005A76 FD 56 12              3016        LD      D,(IY+18)\r
+    00005A79 FD 6E 11              3017        LD      L,(IY+17)\r
+    00005A7C FD 66 12              3018        LD      H,(IY+18)\r
+    00005A7F 0E 17                 3019        LD      C,23\r
+    00005A81 09                    3020        ADD     HL,BC\r
+    00005A82 4E                    3021        LD      C,(HL)\r
+    00005A83 23                    3022        INC     HL\r
+    00005A84 46                    3023        LD      B,(HL)\r
+    00005A85 23                    3024        INC     HL\r
+    00005A86 7E                    3025        LD      A,(HL)\r
+    00005A87 69                    3026        LD      L,C\r
+    00005A88 60                    3027        LD      H,B\r
+    00005A89 01 01 03              3028        LD      BC,769\r
+    00005A8C CD 5E 81              3029        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    00005A8F E1                    3030        POP     HL\r
+    00005A90                       3031 ?0208:\r
+    00005A90 21 01 02              3032        LD      HL,513\r
+    00005A93 DD 4E 04              3033        LD      C,(IX+4)\r
+    00005A96 DD 46 05              3034        LD      B,(IX+5)\r
+    00005A99 A7                    3035        AND     A\r
+    00005A9A ED 42                 3036        SBC     HL,BC\r
+    00005A9C 20 40                 3037        JR      NZ,?0215\r
+    00005A9E 3E FE                 3038        LD      A,254\r
+    00005AA0 DD AE 0A              3039        XOR     (IX+10)\r
+    00005AA3 DD B6 0B              3040        OR      (IX+11)\r
+    00005AA6 20 36                 3041        JR      NZ,?0215\r
+    00005AA8                       3042 ?0217:\r
+    00005AA8                       3043 ?0216:\r
+    00005AA8                       3044 ?0214:\r
+    00005AA8 FD CB 0B 66           3045        BIT     4,(IY+11)\r
+    00005AAC E5                    3046        PUSH    HL\r
+    00005AAD 28 05                 3047        JR      Z,?0219\r
+    00005AAF                       3048 ?0218:\r
+    00005AAF 01 05 01              3049        LD      BC,261\r
+    00005AB2 18 03                 3050        JR      ?0359\r
+    00005AB4                       3051 ?0219:\r
+    00005AB4 01 02 01              3052        LD      BC,258\r
+    00005AB7                       3053 ?0359:\r
+    00005AB7 CD 3F 53              3054        CALL    LWRD ?0463\r
+    00005ABA E1                    3055        POP     HL\r
+    00005ABB                       3056 ?0220:\r
+    00005ABB FD 4E 10              3057        LD      C,(IY+16)\r
+    00005ABE 06 00                 3058        LD      B,0\r
+    00005AC0 C5                    3059        PUSH    BC\r
+    00005AC1 FD 5E 11              3060        LD      E,(IY+17)\r
+    00005AC4 FD 56 12              3061        LD      D,(IY+18)\r
+    00005AC7 FD 6E 11              3062        LD      L,(IY+17)\r
+    00005ACA FD 66 12              3063        LD      H,(IY+18)\r
+    00005ACD 0E 17                 3064        LD      C,23\r
+    00005ACF 09                    3065        ADD     HL,BC\r
+    00005AD0 4E                    3066        LD      C,(HL)\r
+    00005AD1 23                    3067        INC     HL\r
+    00005AD2 46                    3068        LD      B,(HL)\r
+    00005AD3 23                    3069        INC     HL\r
+    00005AD4 7E                    3070        LD      A,(HL)\r
+    00005AD5 69                    3071        LD      L,C\r
+    00005AD6 60                    3072        LD      H,B\r
+    00005AD7 01 02 03              3073        LD      BC,770\r
+    00005ADA CD 5E 81              3074        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    00005ADD E1                    3075        POP     HL\r
+    00005ADE                       3076 ?0215:\r
+    00005ADE FD E1                 3077        POP     IY\r
+    00005AE0 C3 1F 81              3078        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
+    00005AE3                       3079 Dialog_new:\r
+    00005AE3 CD 88 81              3080        CALL    LWRD ?ENT_AUTO_DIRECT_L09\r
+    00005AE6 FE FF                 3081        DEFW    -2\r
+    00005AE8 FD E5                 3082        PUSH    IY\r
+    00005AEA DD 6E 0C              3083        LD      L,(IX+12)\r
+    00005AED DD 66 0D              3084        LD      H,(IX+13)\r
+    00005AF0 E5                    3085        PUSH    HL\r
+    00005AF1 DD 6E 0A              3086        LD      L,(IX+10)\r
+    00005AF4 DD 66 0B              3087        LD      H,(IX+11)\r
+    00005AF7 E5                    3088        PUSH    HL\r
+    00005AF8 CD 7E 55              3089        CALL    LWRD ?0438\r
+    00005AFB F1                    3090        POP     AF\r
+    00005AFC F1                    3091        POP     AF\r
+    00005AFD E5                    3092        PUSH    HL\r
+    00005AFE FD E1                 3093        POP     IY\r
+    00005B00 01 0A 00              3094        LD      BC,10\r
+    00005B03 09                    3095        ADD     HL,BC\r
+    00005B04 CB C6                 3096        SET     0,(HL)\r
+    00005B06 DD 46 0E              3097        LD      B,(IX+14)\r
+    00005B09 FD 70 10              3098        LD      (IY+16),B\r
+    00005B0C FD 36 17 2A           3099        LD      (IY+23),LOW(Dialog_handler)\r
+    00005B10 FD 36 18 5A           3100        LD      (IY+24),HIGH(Dialog_handler)\r
+    00005B14 FD 36 19 00           3101        LD      (IY+25),BYTE3 Dialog_handler\r
+    00005B18 FD 36 1A 68           3102        LD      (IY+26),LOW(Window_paint)\r
+    00005B1C FD 36 1B 53           3103        LD      (IY+27),HIGH(Window_paint)\r
+    00005B20 FD 36 1C 00           3104        LD      (IY+28),BYTE3 Window_paint\r
+    00005B24 FD 36 1D 2C           3105        LD      (IY+29),LOW(Window_add)\r
+    00005B28 FD 36 1E 55           3106        LD      (IY+30),HIGH(Window_add)\r
+    00005B2C FD 36 1F 00           3107        LD      (IY+31),BYTE3 Window_add\r
+    00005B30 21 FF 00              3108        LD      HL,255\r
+    00005B33 E5                    3109        PUSH    HL\r
+    00005B34 2E 14                 3110        LD      L,20\r
+    00005B36 E5                    3111        PUSH    HL\r
+    00005B37 2E 28                 3112        LD      L,40\r
+    00005B39 E5                    3113        PUSH    HL\r
+    00005B3A 21 E4 FF              3114        LD      HL,65508\r
+    00005B3D CD 95 5B              3115        CALL    LWRD ?0439\r
+    00005B40 F1                    3116        POP     AF\r
+    00005B41 F1                    3117        POP     AF\r
+    00005B42 F1                    3118        POP     AF\r
+    00005B43 DD 75 FE              3119        LD      (IX-2),L\r
+    00005B46 DD 74 FF              3120        LD      (IX-1),H\r
+    00005B49 01 20 00              3121        LD      BC,32\r
+    00005B4C 09                    3122        ADD     HL,BC\r
+    00005B4D E5                    3123        PUSH    HL\r
+    00005B4E 11 03 00              3124        LD      DE,3\r
+    00005B51 CD F1 49              3125        CALL    LWRD ?0450\r
+    00005B54 E1                    3126        POP     HL\r
+    00005B55 71                    3127        LD      (HL),C\r
+    00005B56 23                    3128        INC     HL\r
+    00005B57 70                    3129        LD      (HL),B\r
+    00005B58 01 BF 84              3130        LD      BC,?0221\r
+    00005B5B CD B1 5B              3131        CALL    LWRD ?0456\r
+    00005B5E CD 5E 81              3132        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    00005B61 21 FE 00              3133        LD      HL,254\r
+    00005B64 E5                    3134        PUSH    HL\r
+    00005B65 2E 14                 3135        LD      L,20\r
+    00005B67 E5                    3136        PUSH    HL\r
+    00005B68 2E 28                 3137        LD      L,40\r
+    00005B6A E5                    3138        PUSH    HL\r
+    00005B6B 21 C8 FF              3139        LD      HL,65480\r
+    00005B6E CD 95 5B              3140        CALL    LWRD ?0439\r
+    00005B71 F1                    3141        POP     AF\r
+    00005B72 F1                    3142        POP     AF\r
+    00005B73 F1                    3143        POP     AF\r
+    00005B74 DD 75 FE              3144        LD      (IX-2),L\r
+    00005B77 DD 74 FF              3145        LD      (IX-1),H\r
+    00005B7A 01 20 00              3146        LD      BC,32\r
+    00005B7D 09                    3147        ADD     HL,BC\r
+    00005B7E E5                    3148        PUSH    HL\r
+    00005B7F 11 07 00              3149        LD      DE,7\r
+    00005B82 CD F1 49              3150        CALL    LWRD ?0450\r
+    00005B85 E1                    3151        POP     HL\r
+    00005B86 71                    3152        LD      (HL),C\r
+    00005B87 23                    3153        INC     HL\r
+    00005B88 70                    3154        LD      (HL),B\r
+    00005B89 01 C2 84              3155        LD      BC,?0222\r
+    00005B8C CD B1 5B              3156        CALL    LWRD ?0456\r
+    00005B8F CD 5E 81              3157        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    00005B92 C3 1A 4C              3158        JP      LWRD ?0418\r
+    00005B95                       3159 ?0439:\r
+    00005B95 DD 4E 0C              3160        LD      C,(IX+12)\r
+    00005B98 DD 46 0D              3161        LD      B,(IX+13)\r
+    00005B9B 09                    3162        ADD     HL,BC\r
+    00005B9C 4D                    3163        LD      C,L\r
+    00005B9D 44                    3164        LD      B,H\r
+    00005B9E 21 D0 FF              3165        LD      HL,65488\r
+    00005BA1 DD 5E 0A              3166        LD      E,(IX+10)\r
+    00005BA4 DD 56 0B              3167        LD      D,(IX+11)\r
+    00005BA7 19                    3168        ADD     HL,DE\r
+    00005BA8 EB                    3169        EX      DE,HL\r
+    00005BA9                       3170 ?0440:\r
+    00005BA9 3E 00                 3171        LD      A,BYTE3 Button_new\r
+    00005BAB 21 FE 57              3172        LD      HL,LWRD Button_new\r
+    00005BAE C3 5E 81              3173        JP      LWRD ?BANK_CALL_DIRECT_L08\r
+    00005BB1                       3174 ?0456:\r
+    00005BB1 DD 5E FE              3175        LD      E,(IX-2)\r
+    00005BB4 DD 56 FF              3176        LD      D,(IX-1)\r
+    00005BB7 3E 00                 3177        LD      A,BYTE3 Component_setlabel\r
+    00005BB9 21 22 4C              3178        LD      HL,LWRD Component_setlabel\r
+    00005BBC CD 5E 81              3179        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    00005BBF DD 4E FE              3180        LD      C,(IX-2)\r
+    00005BC2 DD 46 FF              3181        LD      B,(IX-1)\r
+    00005BC5 FD E5                 3182        PUSH    IY\r
+    00005BC7 D1                    3183        POP     DE\r
+    00005BC8 FD 7E 1F              3184        LD      A,(IY+31)\r
+    00005BCB FD 6E 1D              3185        LD      L,(IY+29)\r
+    00005BCE FD 66 1E              3186        LD      H,(IY+30)\r
+    00005BD1 C9                    3187        RET\r
+    00005BD2                       3188 Display_handler:\r
+    00005BD2 CD 52 81              3189        CALL    LWRD ?ENT_PARM_DIRECT_L09\r
+    00005BD5 FD E5                 3190        PUSH    IY\r
+    00005BD7 D5                    3191        PUSH    DE\r
+    00005BD8 FD E1                 3192        POP     IY\r
+    00005BDA DD 6E 0A              3193        LD      L,(IX+10)\r
+    00005BDD DD 66 0B              3194        LD      H,(IX+11)\r
+    00005BE0 E5                    3195        PUSH    HL\r
+    00005BE1 3E 00                 3196        LD      A,BYTE3 Button_handler\r
+    00005BE3 21 8C 55              3197        LD      HL,LWRD Button_handler\r
+    00005BE6 CD 5E 81              3198        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    00005BE9 E1                    3199        POP     HL\r
+    00005BEA 21 03 02              3200        LD      HL,515\r
+    00005BED DD 4E 04              3201        LD      C,(IX+4)\r
+    00005BF0 DD 46 05              3202        LD      B,(IX+5)\r
+    00005BF3 A7                    3203        AND     A\r
+    00005BF4 ED 42                 3204        SBC     HL,BC\r
+    00005BF6 20 40                 3205        JR      NZ,?0224\r
+    00005BF8 FD CB 0A 5E           3206        BIT     3,(IY+10)\r
+    00005BFC 28 3A                 3207        JR      Z,?0224\r
+    00005BFE                       3208 ?0226:\r
+    00005BFE                       3209 ?0225:\r
+    00005BFE                       3210 ?0223:\r
+    00005BFE 3E 08                 3211        LD      A,8\r
+    00005C00 DD AE 0A              3212        XOR     (IX+10)\r
+    00005C03 DD B6 0B              3213        OR      (IX+11)\r
+    00005C06 FD 5E 20              3214        LD      E,(IY+32)\r
+    00005C09 FD 56 21              3215        LD      D,(IY+33)\r
+    00005C0C 3E 00                 3216        LD      A,BYTE3 strlen\r
+    00005C0E 21 40 72              3217        LD      HL,LWRD strlen\r
+    00005C11 20 0D                 3218        JR      NZ,?0228\r
+    00005C13                       3219 ?0227:\r
+    00005C13 CD EB 49              3220        CALL    LWRD ?0448\r
+    00005C16 28 15                 3221        JR      Z,?0231\r
+    00005C18                       3222 ?0229:\r
+    00005C18 CD 3D 5C              3223        CALL    LWRD ?0445\r
+    00005C1B 2B                    3224        DEC     HL\r
+    00005C1C 36 00                 3225        LD      (HL),0\r
+    00005C1E                       3226 ?0230:\r
+    00005C1E 18 0D                 3227        JR      ?0231\r
+    00005C20                       3228 ?0228:\r
+    00005C20 CD 48 5C              3229        CALL    LWRD ?0446\r
+    00005C23 23                    3230        INC     HL\r
+    00005C24 36 00                 3231        LD      (HL),0\r
+    00005C26 CD 3D 5C              3232        CALL    LWRD ?0445\r
+    00005C29 DD 46 0A              3233        LD      B,(IX+10)\r
+    00005C2C 70                    3234        LD      (HL),B\r
+    00005C2D                       3235 ?0231:\r
+    00005C2D 21 00 00              3236        LD      HL,0\r
+    00005C30 E5                    3237        PUSH    HL\r
+    00005C31 01 03 01              3238        LD      BC,259\r
+    00005C34 CD 3F 53              3239        CALL    LWRD ?0463\r
+    00005C37 E1                    3240        POP     HL\r
+    00005C38                       3241 ?0224:\r
+    00005C38 FD E1                 3242        POP     IY\r
+    00005C3A C3 1F 81              3243        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
+    00005C3D                       3244 ?0445:\r
+    00005C3D FD 5E 20              3245        LD      E,(IY+32)\r
+    00005C40 FD 56 21              3246        LD      D,(IY+33)\r
+    00005C43 3E 00                 3247        LD      A,BYTE3 strlen\r
+    00005C45 21 40 72              3248        LD      HL,LWRD strlen\r
+    00005C48                       3249 ?0446:\r
+    00005C48 CD 5E 81              3250        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    00005C4B FD 4E 20              3251        LD      C,(IY+32)\r
+    00005C4E FD 46 21              3252        LD      B,(IY+33)\r
+    00005C51 09                    3253        ADD     HL,BC\r
+    00005C52 C9                    3254        RET\r
+    00005C53                       3255 Display_paint:\r
+    00005C53 C5                    3256        PUSH    BC\r
+    00005C54 FD E5                 3257        PUSH    IY\r
+    00005C56 DD E5                 3258        PUSH    IX\r
+    00005C58 21 B8 FF              3259        LD      HL,65464\r
+    00005C5B 39                    3260        ADD     HL,SP\r
+    00005C5C F9                    3261        LD      SP,HL\r
+    00005C5D D5                    3262        PUSH    DE\r
+    00005C5E DD E1                 3263        POP     IX\r
+    00005C60 AF                    3264        XOR     A\r
+    00005C61 77                    3265        LD      (HL),A\r
+    00005C62 23                    3266        INC     HL\r
+    00005C63 77                    3267        LD      (HL),A\r
+    00005C64 23                    3268        INC     HL\r
+    00005C65 77                    3269        LD      (HL),A\r
+    00005C66 23                    3270        INC     HL\r
+    00005C67 77                    3271        LD      (HL),A\r
+    00005C68 21 0A 00              3272        LD      HL,10\r
+    00005C6B ED 4B C0 86           3273        LD      BC,(global)\r
+    00005C6F 09                    3274        ADD     HL,BC\r
+    00005C70 7E                    3275        LD      A,(HL)\r
+    00005C71 23                    3276        INC     HL\r
+    00005C72 66                    3277        LD      H,(HL)\r
+    00005C73 6F                    3278        LD      L,A\r
+    00005C74 46                    3279        LD      B,(HL)\r
+    00005C75 23                    3280        INC     HL\r
+    00005C76 66                    3281        LD      H,(HL)\r
+    00005C77 68                    3282        LD      L,B\r
+    00005C78 E5                    3283        PUSH    HL\r
+    00005C79 21 0E 00              3284        LD      HL,14\r
+    00005C7C 19                    3285        ADD     HL,DE\r
+    00005C7D 4E                    3286        LD      C,(HL)\r
+    00005C7E 23                    3287        INC     HL\r
+    00005C7F 46                    3288        LD      B,(HL)\r
+    00005C80 E1                    3289        POP     HL\r
+    00005C81 A7                    3290        AND     A\r
+    00005C82 ED 42                 3291        SBC     HL,BC\r
+    00005C84 28 03                 3292        JR      Z,?0233\r
+    00005C86                       3293 ?0232:\r
+    00005C86 CD E7 54              3294        CALL    LWRD ?0473\r
+    00005C89                       3295 ?0233:\r
+    00005C89 DD CB 0A 46           3296        BIT     0,(IX+10)\r
+    00005C8D CA 97 5D              3297        JP      Z,?0248\r
+    00005C90                       3298 ?0234:\r
+    00005C90 21 02 00              3299        LD      HL,2\r
+    00005C93 39                    3300        ADD     HL,SP\r
+    00005C94 E5                    3301        PUSH    HL\r
+    00005C95 2B                    3302        DEC     HL\r
+    00005C96 2B                    3303        DEC     HL\r
+    00005C97 CD 50 53              3304        CALL    LWRD ?0468\r
+    00005C9A E1                    3305        POP     HL\r
+    00005C9B 21 02 00              3306        LD      HL,2\r
+    00005C9E 39                    3307        ADD     HL,SP\r
+    00005C9F 4E                    3308        LD      C,(HL)\r
+    00005CA0 23                    3309        INC     HL\r
+    00005CA1 46                    3310        LD      B,(HL)\r
+    00005CA2 2B                    3311        DEC     HL\r
+    00005CA3 2B                    3312        DEC     HL\r
+    00005CA4 2B                    3313        DEC     HL\r
+    00005CA5 CD DB 57              3314        CALL    LWRD ?0458\r
+    00005CA8 CD 5E 81              3315        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    00005CAB DD 6E 08              3316        LD      L,(IX+8)\r
+    00005CAE DD 66 09              3317        LD      H,(IX+9)\r
+    00005CB1 E5                    3318        PUSH    HL\r
+    00005CB2 DD 6E 06              3319        LD      L,(IX+6)\r
+    00005CB5 DD 66 07              3320        LD      H,(IX+7)\r
+    00005CB8 E5                    3321        PUSH    HL\r
+    00005CB9 21 06 00              3322        LD      HL,6\r
+    00005CBC 39                    3323        ADD     HL,SP\r
+    00005CBD 4E                    3324        LD      C,(HL)\r
+    00005CBE 23                    3325        INC     HL\r
+    00005CBF 46                    3326        LD      B,(HL)\r
+    00005CC0 C5                    3327        PUSH    BC\r
+    00005CC1 2B                    3328        DEC     HL\r
+    00005CC2 2B                    3329        DEC     HL\r
+    00005CC3 2B                    3330        DEC     HL\r
+    00005CC4 4E                    3331        LD      C,(HL)\r
+    00005CC5 23                    3332        INC     HL\r
+    00005CC6 46                    3333        LD      B,(HL)\r
+    00005CC7 DD CB 0A 4E           3334        BIT     1,(IX+10)\r
+    00005CCB 28 07                 3335        JR      Z,?0237\r
+    00005CCD DD 5E 10              3336        LD      E,(IX+16)\r
+    00005CD0 16 00                 3337        LD      D,0\r
+    00005CD2 18 03                 3338        JR      ?0238\r
+    00005CD4                       3339 ?0237:\r
+    00005CD4 11 00 00              3340        LD      DE,0\r
+    00005CD7                       3341 ?0238:\r
+    00005CD7 CD BB 48              3342        CALL    LWRD ?0471\r
+    00005CDA E1                    3343        POP     HL\r
+    00005CDB E1                    3344        POP     HL\r
+    00005CDC E1                    3345        POP     HL\r
+    00005CDD DD CB 0A 7E           3346        BIT     7,(IX+10)\r
+    00005CE1 DD 4E 08              3347        LD      C,(IX+8)\r
+    00005CE4 DD 46 09              3348        LD      B,(IX+9)\r
+    00005CE7 DD 5E 06              3349        LD      E,(IX+6)\r
+    00005CEA DD 56 07              3350        LD      D,(IX+7)\r
+    00005CED 20 07                 3351        JR      NZ,?0240\r
+    00005CEF                       3352 ?0239:\r
+    00005CEF 3E 00                 3353        LD      A,BYTE3 FillRectNC\r
+    00005CF1 21 78 47              3354        LD      HL,LWRD FillRectNC\r
+    00005CF4 18 05                 3355        JR      ?0364\r
+    00005CF6                       3356 ?0240:\r
+    00005CF6 3E 00                 3357        LD      A,BYTE3 DrawRectNC\r
+    00005CF8 21 EE 46              3358        LD      HL,LWRD DrawRectNC\r
+    00005CFB                       3359 ?0364:\r
+    00005CFB CD 5E 81              3360        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    00005CFE                       3361 ?0241:\r
+    00005CFE DD 5E 20              3362        LD      E,(IX+32)\r
+    00005D01 DD 56 21              3363        LD      D,(IX+33)\r
+    00005D04 21 0A 00              3364        LD      HL,10\r
+    00005D07 ED 4B C0 86           3365        LD      BC,(global)\r
+    00005D0B 09                    3366        ADD     HL,BC\r
+    00005D0C 46                    3367        LD      B,(HL)\r
+    00005D0D 23                    3368        INC     HL\r
+    00005D0E 66                    3369        LD      H,(HL)\r
+    00005D0F 68                    3370        LD      L,B\r
+    00005D10 01 05 00              3371        LD      BC,5\r
+    00005D13 09                    3372        ADD     HL,BC\r
+    00005D14 4E                    3373        LD      C,(HL)\r
+    00005D15 23                    3374        INC     HL\r
+    00005D16 46                    3375        LD      B,(HL)\r
+    00005D17 23                    3376        INC     HL\r
+    00005D18 7E                    3377        LD      A,(HL)\r
+    00005D19 69                    3378        LD      L,C\r
+    00005D1A 60                    3379        LD      H,B\r
+    00005D1B CD F6 49              3380        CALL    LWRD ?0449\r
+    00005D1E DD 6E 08              3381        LD      L,(IX+8)\r
+    00005D21 DD 66 09              3382        LD      H,(IX+9)\r
+    00005D24 A7                    3383        AND     A\r
+    00005D25 ED 42                 3384        SBC     HL,BC\r
+    00005D27 EB                    3385        EX      DE,HL\r
+    00005D28 01 02 00              3386        LD      BC,2\r
+    00005D2B CD C1 81              3387        CALL    LWRD ?SS_DIV_L02\r
+    00005D2E 69                    3388        LD      L,C\r
+    00005D2F 60                    3389        LD      H,B\r
+    00005D30 39                    3390        ADD     HL,SP\r
+    00005D31 46                    3391        LD      B,(HL)\r
+    00005D32 23                    3392        INC     HL\r
+    00005D33 66                    3393        LD      H,(HL)\r
+    00005D34 68                    3394        LD      L,B\r
+    00005D35 19                    3395        ADD     HL,DE\r
+    00005D36 01 07 00              3396        LD      BC,7\r
+    00005D39 09                    3397        ADD     HL,BC\r
+    00005D3A 4D                    3398        LD      C,L\r
+    00005D3B 44                    3399        LD      B,H\r
+    00005D3C 21 00 00              3400        LD      HL,0\r
+    00005D3F 39                    3401        ADD     HL,SP\r
+    00005D40 5E                    3402        LD      E,(HL)\r
+    00005D41 23                    3403        INC     HL\r
+    00005D42 56                    3404        LD      D,(HL)\r
+    00005D43 13                    3405        INC     DE\r
+    00005D44 13                    3406        INC     DE\r
+    00005D45 3E 00                 3407        LD      A,BYTE3 Move\r
+    00005D47 21 6C 46              3408        LD      HL,LWRD Move\r
+    00005D4A CD 5E 81              3409        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    00005D4D DD CB 0B 46           3410        BIT     0,(IX+11)\r
+    00005D51 28 36                 3411        JR      Z,?0243\r
+    00005D53                       3412 ?0242:\r
+    00005D53 FD 21 00 00           3413        LD      IY,0\r
+    00005D57                       3414 ?0245:\r
+    00005D57 DD 5E 20              3415        LD      E,(IX+32)\r
+    00005D5A DD 56 21              3416        LD      D,(IX+33)\r
+    00005D5D 3E 00                 3417        LD      A,BYTE3 strlen\r
+    00005D5F 21 40 72              3418        LD      HL,LWRD strlen\r
+    00005D62 CD F6 49              3419        CALL    LWRD ?0449\r
+    00005D65 FD E5                 3420        PUSH    IY\r
+    00005D67 E1                    3421        POP     HL\r
+    00005D68 A7                    3422        AND     A\r
+    00005D69 ED 42                 3423        SBC     HL,BC\r
+    00005D6B 21 06 00              3424        LD      HL,6\r
+    00005D6E 30 0B                 3425        JR      NC,?0244\r
+    00005D70                       3426 ?0246:\r
+    00005D70 39                    3427        ADD     HL,SP\r
+    00005D71 FD E5                 3428        PUSH    IY\r
+    00005D73 C1                    3429        POP     BC\r
+    00005D74 09                    3430        ADD     HL,BC\r
+    00005D75 36 2A                 3431        LD      (HL),42\r
+    00005D77 FD 23                 3432        INC     IY\r
+    00005D79 18 DC                 3433        JR      ?0245\r
+    00005D7B                       3434 ?0244:\r
+    00005D7B 39                    3435        ADD     HL,SP\r
+    00005D7C FD E5                 3436        PUSH    IY\r
+    00005D7E C1                    3437        POP     BC\r
+    00005D7F 09                    3438        ADD     HL,BC\r
+    00005D80 36 00                 3439        LD      (HL),0\r
+    00005D82 21 06 00              3440        LD      HL,6\r
+    00005D85 39                    3441        ADD     HL,SP\r
+    00005D86 EB                    3442        EX      DE,HL\r
+    00005D87 18 06                 3443        JR      ?0365\r
+    00005D89                       3444 ?0243:\r
+    00005D89 DD 5E 20              3445        LD      E,(IX+32)\r
+    00005D8C DD 56 21              3446        LD      D,(IX+33)\r
+    00005D8F                       3447 ?0365:\r
+    00005D8F 3E 00                 3448        LD      A,BYTE3 Text\r
+    00005D91 21 02 48              3449        LD      HL,LWRD Text\r
+    00005D94 CD 5E 81              3450        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    00005D97                       3451 ?0248:\r
+    00005D97                       3452 ?0235:\r
+    00005D97 21 48 00              3453        LD      HL,72\r
+    00005D9A 39                    3454        ADD     HL,SP\r
+    00005D9B F9                    3455        LD      SP,HL\r
+    00005D9C C3 27 48              3456        JP      LWRD ?0411\r
+    00005D9F                       3457 Display_new:\r
+    00005D9F CD 88 81              3458        CALL    LWRD ?ENT_AUTO_DIRECT_L09\r
+    00005DA2 00 00                 3459        DEFW    0\r
+    00005DA4 FD E5                 3460        PUSH    IY\r
+    00005DA6 DD 6E 0E              3461        LD      L,(IX+14)\r
+    00005DA9 DD 66 0F              3462        LD      H,(IX+15)\r
+    00005DAC E5                    3463        PUSH    HL\r
+    00005DAD DD 6E 0C              3464        LD      L,(IX+12)\r
+    00005DB0 DD 66 0D              3465        LD      H,(IX+13)\r
+    00005DB3 E5                    3466        PUSH    HL\r
+    00005DB4 DD 6E 0A              3467        LD      L,(IX+10)\r
+    00005DB7 DD 66 0B              3468        LD      H,(IX+11)\r
+    00005DBA E5                    3469        PUSH    HL\r
+    00005DBB DD 5E 02              3470        LD      E,(IX+2)\r
+    00005DBE DD 56 03              3471        LD      D,(IX+3)\r
+    00005DC1 CD A9 5B              3472        CALL    LWRD ?0440\r
+    00005DC4 F1                    3473        POP     AF\r
+    00005DC5 F1                    3474        POP     AF\r
+    00005DC6 F1                    3475        POP     AF\r
+    00005DC7 E5                    3476        PUSH    HL\r
+    00005DC8 FD E1                 3477        POP     IY\r
+    00005DCA 01 0A 00              3478        LD      BC,10\r
+    00005DCD 09                    3479        ADD     HL,BC\r
+    00005DCE CB DE                 3480        SET     3,(HL)\r
+    00005DD0 01 C9 84              3481        LD      BC,?0249\r
+    00005DD3 FD E5                 3482        PUSH    IY\r
+    00005DD5 D1                    3483        POP     DE\r
+    00005DD6 3E 00                 3484        LD      A,BYTE3 Component_setlabel\r
+    00005DD8 21 22 4C              3485        LD      HL,LWRD Component_setlabel\r
+    00005DDB CD 5E 81              3486        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    00005DDE FD 36 1A 53           3487        LD      (IY+26),LOW(Display_paint)\r
+    00005DE2 FD 36 1B 5C           3488        LD      (IY+27),HIGH(Display_paint)\r
+    00005DE6 FD 36 1C 00           3489        LD      (IY+28),BYTE3 Display_paint\r
+    00005DEA FD 36 17 D2           3490        LD      (IY+23),LOW(Display_handler)\r
+    00005DEE FD 36 18 5B           3491        LD      (IY+24),HIGH(Display_handler)\r
+    00005DF2 FD 36 19 00           3492        LD      (IY+25),BYTE3 Display_handler\r
+    00005DF6 C3 1A 4C              3493        JP      LWRD ?0418\r
+    00005DF9                       3494 Label_handler:\r
+    00005DF9 CD 52 81              3495        CALL    LWRD ?ENT_PARM_DIRECT_L09\r
+    00005DFC C3 1F 81              3496        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
+    00005DFF                       3497 Label_paint:\r
+    00005DFF C5                    3498        PUSH    BC\r
+    00005E00 DD E5                 3499        PUSH    IX\r
+    00005E02 F5                    3500        PUSH    AF\r
+    00005E03 F5                    3501        PUSH    AF\r
+    00005E04 D5                    3502        PUSH    DE\r
+    00005E05 DD E1                 3503        POP     IX\r
+    00005E07 21 02 00              3504        LD      HL,2\r
+    00005E0A 39                    3505        ADD     HL,SP\r
+    00005E0B AF                    3506        XOR     A\r
+    00005E0C 77                    3507        LD      (HL),A\r
+    00005E0D 23                    3508        INC     HL\r
+    00005E0E 77                    3509        LD      (HL),A\r
+    00005E0F 2B                    3510        DEC     HL\r
+    00005E10 2B                    3511        DEC     HL\r
+    00005E11 2B                    3512        DEC     HL\r
+    00005E12 77                    3513        LD      (HL),A\r
+    00005E13 23                    3514        INC     HL\r
+    00005E14 77                    3515        LD      (HL),A\r
+    00005E15 21 0A 00              3516        LD      HL,10\r
+    00005E18 ED 4B C0 86           3517        LD      BC,(global)\r
+    00005E1C 09                    3518        ADD     HL,BC\r
+    00005E1D 7E                    3519        LD      A,(HL)\r
+    00005E1E 23                    3520        INC     HL\r
+    00005E1F 66                    3521        LD      H,(HL)\r
+    00005E20 6F                    3522        LD      L,A\r
+    00005E21 46                    3523        LD      B,(HL)\r
+    00005E22 23                    3524        INC     HL\r
+    00005E23 66                    3525        LD      H,(HL)\r
+    00005E24 68                    3526        LD      L,B\r
+    00005E25 E5                    3527        PUSH    HL\r
+    00005E26 21 0E 00              3528        LD      HL,14\r
+    00005E29 19                    3529        ADD     HL,DE\r
+    00005E2A 4E                    3530        LD      C,(HL)\r
+    00005E2B 23                    3531        INC     HL\r
+    00005E2C 46                    3532        LD      B,(HL)\r
+    00005E2D E1                    3533        POP     HL\r
+    00005E2E A7                    3534        AND     A\r
+    00005E2F ED 42                 3535        SBC     HL,BC\r
+    00005E31 28 03                 3536        JR      Z,?0251\r
+    00005E33                       3537 ?0250:\r
+    00005E33 CD E7 54              3538        CALL    LWRD ?0473\r
+    00005E36                       3539 ?0251:\r
+    00005E36 DD CB 0A 46           3540        BIT     0,(IX+10)\r
+    00005E3A 28 21                 3541        JR      Z,?0253\r
+    00005E3C                       3542 ?0252:\r
+    00005E3C 21 00 00              3543        LD      HL,0\r
+    00005E3F 39                    3544        ADD     HL,SP\r
+    00005E40 E5                    3545        PUSH    HL\r
+    00005E41 CD 4E 53              3546        CALL    LWRD ?0467\r
+    00005E44 E1                    3547        POP     HL\r
+    00005E45 21 00 00              3548        LD      HL,0\r
+    00005E48 39                    3549        ADD     HL,SP\r
+    00005E49 4E                    3550        LD      C,(HL)\r
+    00005E4A 23                    3551        INC     HL\r
+    00005E4B 46                    3552        LD      B,(HL)\r
+    00005E4C C5                    3553        PUSH    BC\r
+    00005E4D 23                    3554        INC     HL\r
+    00005E4E 4E                    3555        LD      C,(HL)\r
+    00005E4F 23                    3556        INC     HL\r
+    00005E50 46                    3557        LD      B,(HL)\r
+    00005E51 DD E5                 3558        PUSH    IX\r
+    00005E53 D1                    3559        POP     DE\r
+    00005E54 3E 00                 3560        LD      A,BYTE3 Button_drawtext\r
+    00005E56 21 43 56              3561        LD      HL,LWRD Button_drawtext\r
+    00005E59 CD 5E 81              3562        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    00005E5C E1                    3563        POP     HL\r
+    00005E5D                       3564 ?0253:\r
+    00005E5D C3 CF 57              3565        JP      LWRD ?0178\r
+    00005E60                       3566 Label_new:\r
+    00005E60 CD 88 81              3567        CALL    LWRD ?ENT_AUTO_DIRECT_L09\r
+    00005E63 00 00                 3568        DEFW    0\r
+    00005E65 FD E5                 3569        PUSH    IY\r
+    00005E67 DD 6E 0C              3570        LD      L,(IX+12)\r
+    00005E6A DD 66 0D              3571        LD      H,(IX+13)\r
+    00005E6D E5                    3572        PUSH    HL\r
+    00005E6E DD 6E 0A              3573        LD      L,(IX+10)\r
+    00005E71 DD 66 0B              3574        LD      H,(IX+11)\r
+    00005E74 E5                    3575        PUSH    HL\r
+    00005E75 CD 7E 55              3576        CALL    LWRD ?0438\r
+    00005E78 F1                    3577        POP     AF\r
+    00005E79 F1                    3578        POP     AF\r
+    00005E7A E5                    3579        PUSH    HL\r
+    00005E7B FD E1                 3580        POP     IY\r
+    00005E7D 01 20 00              3581        LD      BC,32\r
+    00005E80 09                    3582        ADD     HL,BC\r
+    00005E81 DD 4E 0E              3583        LD      C,(IX+14)\r
+    00005E84 71                    3584        LD      (HL),C\r
+    00005E85 DD 46 0F              3585        LD      B,(IX+15)\r
+    00005E88 23                    3586        INC     HL\r
+    00005E89 70                    3587        LD      (HL),B\r
+    00005E8A FD 36 0A 01           3588        LD      (IY+10),1\r
+    00005E8E FD 36 0B 00           3589        LD      (IY+11),0\r
+    00005E92 FD 36 17 F9           3590        LD      (IY+23),LOW(Label_handler)\r
+    00005E96 FD 36 18 5D           3591        LD      (IY+24),HIGH(Label_handler)\r
+    00005E9A FD 36 19 00           3592        LD      (IY+25),BYTE3 Label_handler\r
+    00005E9E FD 36 1A FF           3593        LD      (IY+26),LOW(Label_paint)\r
+    00005EA2 FD 36 1B 5D           3594        LD      (IY+27),HIGH(Label_paint)\r
+    00005EA6 FD 36 1C 00           3595        LD      (IY+28),BYTE3 Label_paint\r
+    00005EAA FD 36 1D F8           3596        LD      (IY+29),LOW(Button_add)\r
+    00005EAE FD 36 1E 57           3597        LD      (IY+30),HIGH(Button_add)\r
+    00005EB2 FD 36 1F 00           3598        LD      (IY+31),BYTE3 Button_add\r
+    00005EB6 C3 1A 4C              3599        JP      LWRD ?0418\r
+    00005EB9                       3600 rootWindow_handler:\r
+    00005EB9 CD 88 81              3601        CALL    LWRD ?ENT_AUTO_DIRECT_L09\r
+    00005EBC 00 00                 3602        DEFW    0\r
+    00005EBE DD 6E 0A              3603        LD      L,(IX+10)\r
+    00005EC1 DD 66 0B              3604        LD      H,(IX+11)\r
+    00005EC4 E5                    3605        PUSH    HL\r
+    00005EC5 DD 5E 02              3606        LD      E,(IX+2)\r
+    00005EC8 DD 56 03              3607        LD      D,(IX+3)\r
+    00005ECB 3E 00                 3608        LD      A,BYTE3 Window_handler\r
+    00005ECD 21 9B 50              3609        LD      HL,LWRD Window_handler\r
+    00005ED0 CD 5E 81              3610        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    00005ED3 E1                    3611        POP     HL\r
+    00005ED4 C3 1F 81              3612        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
+    00005ED7                       3613 screenbuilder:\r
+    00005ED7 CD 88 81              3614        CALL    LWRD ?ENT_AUTO_DIRECT_L09\r
+    00005EDA CE FF                 3615        DEFW    65486\r
+    00005EDC FD E5                 3616        PUSH    IY\r
+    00005EDE DD 36 D8 00           3617        LD      (IX-40),0\r
+    00005EE2 21 00 00              3618        LD      HL,0\r
+    00005EE5 E5                    3619        PUSH    HL\r
+    00005EE6 C5                    3620        PUSH    BC\r
+    00005EE7 3E 01                 3621        LD      A,BYTE3 open\r
+    00005EE9 21 AD 42              3622        LD      HL,LWRD open\r
+    00005EEC CD 5E 81              3623        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    00005EEF F1                    3624        POP     AF\r
+    00005EF0 F1                    3625        POP     AF\r
+    00005EF1 DD 75 D4              3626        LD      (IX-44),L\r
+    00005EF4 DD 74 D5              3627        LD      (IX-43),H\r
+    00005EF7 DD 36 F0 2B           3628        LD      (IX-16),43\r
+    00005EFB DD 36 F1 00           3629        LD      (IX-15),0\r
+    00005EFF DD 36 F2 1A           3630        LD      (IX-14),26\r
+    00005F03 DD 36 F3 00           3631        LD      (IX-13),0\r
+    00005F07                       3632 ?0256:\r
+    00005F07 DD 36 F4 00           3633        LD      (IX-12),0\r
+    00005F0B DD 7E D8              3634        LD      A,(IX-40)\r
+    00005F0E FE 73                 3635        CP      115\r
+    00005F10 20 18                 3636        JR      NZ,?0258\r
+    00005F12                       3637 ?0257:\r
+    00005F12 DD 6E D9              3638        LD      L,(IX-39)\r
+    00005F15 DD 66 DA              3639        LD      H,(IX-38)\r
+    00005F18 DD 75 F0              3640        LD      (IX-16),L\r
+    00005F1B DD 74 F1              3641        LD      (IX-15),H\r
+    00005F1E DD 6E DB              3642        LD      L,(IX-37)\r
+    00005F21 DD 66 DC              3643        LD      H,(IX-36)\r
+    00005F24 DD 75 F2              3644        LD      (IX-14),L\r
+    00005F27 DD 74 F3              3645        LD      (IX-13),H\r
+    00005F2A                       3646 ?0258:\r
+    00005F2A DD 7E D8              3647        LD      A,(IX-40)\r
+    00005F2D FE 42                 3648        CP      66\r
+    00005F2F 28 07                 3649        JR      Z,?0261\r
+    00005F31 DD 7E D8              3650        LD      A,(IX-40)\r
+    00005F34 FE 4D                 3651        CP      77\r
+    00005F36 20 4F                 3652        JR      NZ,?0260\r
+    00005F38                       3653 ?0261:\r
+    00005F38                       3654 ?0262:\r
+    00005F38                       3655 ?0259:\r
+    00005F38 DD 4E DD              3656        LD      C,(IX-35)\r
+    00005F3B 06 00                 3657        LD      B,0\r
+    00005F3D C5                    3658        PUSH    BC\r
+    00005F3E CD 97 62              3659        CALL    LWRD ?0482\r
+    00005F41 D5                    3660        PUSH    DE\r
+    00005F42 DD 4E DB              3661        LD      C,(IX-37)\r
+    00005F45 DD 5E F0              3662        LD      E,(IX-16)\r
+    00005F48 DD 56 F1              3663        LD      D,(IX-15)\r
+    00005F4B CD A0 62              3664        CALL    LWRD ?0483\r
+    00005F4E D5                    3665        PUSH    DE\r
+    00005F4F DD 4E DA              3666        LD      C,(IX-38)\r
+    00005F52 DD 5E F2              3667        LD      E,(IX-14)\r
+    00005F55 DD 56 F3              3668        LD      D,(IX-13)\r
+    00005F58 CD 2A 81              3669        CALL    LWRD ?S_MUL_L02\r
+    00005F5B D5                    3670        PUSH    DE\r
+    00005F5C DD 5E D9              3671        LD      E,(IX-39)\r
+    00005F5F 50                    3672        LD      D,B\r
+    00005F60 DD 4E F0              3673        LD      C,(IX-16)\r
+    00005F63 DD 46 F1              3674        LD      B,(IX-15)\r
+    00005F66 CD 2A 81              3675        CALL    LWRD ?S_MUL_L02\r
+    00005F69 3E 00                 3676        LD      A,BYTE3 Button_new\r
+    00005F6B 21 FE 57              3677        LD      HL,LWRD Button_new\r
+    00005F6E C1                    3678        POP     BC\r
+    00005F6F CD 5E 81              3679        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    00005F72 F1                    3680        POP     AF\r
+    00005F73 F1                    3681        POP     AF\r
+    00005F74 F1                    3682        POP     AF\r
+    00005F75 E5                    3683        PUSH    HL\r
+    00005F76 FD E1                 3684        POP     IY\r
+    00005F78 DD 7E D8              3685        LD      A,(IX-40)\r
+    00005F7B FE 4D                 3686        CP      77\r
+    00005F7D 20 04                 3687        JR      NZ,?0264\r
+    00005F7F                       3688 ?0263:\r
+    00005F7F FD CB 0A F6           3689        SET     6,(IY+10)\r
+    00005F83                       3690 ?0264:\r
+    00005F83 DD 36 F4 01           3691        LD      (IX-12),1\r
+    00005F87                       3692 ?0260:\r
+    00005F87 DD 7E D8              3693        LD      A,(IX-40)\r
+    00005F8A FE 54                 3694        CP      84\r
+    00005F8C 20 44                 3695        JR      NZ,?0266\r
+    00005F8E                       3696 ?0265:\r
+    00005F8E DD 4E DD              3697        LD      C,(IX-35)\r
+    00005F91 06 00                 3698        LD      B,0\r
+    00005F93 C5                    3699        PUSH    BC\r
+    00005F94 CD 97 62              3700        CALL    LWRD ?0482\r
+    00005F97 D5                    3701        PUSH    DE\r
+    00005F98 DD 4E DB              3702        LD      C,(IX-37)\r
+    00005F9B DD 5E F0              3703        LD      E,(IX-16)\r
+    00005F9E DD 56 F1              3704        LD      D,(IX-15)\r
+    00005FA1 CD A0 62              3705        CALL    LWRD ?0483\r
+    00005FA4 D5                    3706        PUSH    DE\r
+    00005FA5 DD 4E DA              3707        LD      C,(IX-38)\r
+    00005FA8 DD 5E F2              3708        LD      E,(IX-14)\r
+    00005FAB DD 56 F3              3709        LD      D,(IX-13)\r
+    00005FAE CD 2A 81              3710        CALL    LWRD ?S_MUL_L02\r
+    00005FB1 D5                    3711        PUSH    DE\r
+    00005FB2 DD 5E D9              3712        LD      E,(IX-39)\r
+    00005FB5 50                    3713        LD      D,B\r
+    00005FB6 DD 4E F0              3714        LD      C,(IX-16)\r
+    00005FB9 DD 46 F1              3715        LD      B,(IX-15)\r
+    00005FBC CD 2A 81              3716        CALL    LWRD ?S_MUL_L02\r
+    00005FBF 3E 00                 3717        LD      A,BYTE3 ToggleButton_new\r
+    00005FC1 21 D8 59              3718        LD      HL,LWRD ToggleButton_new\r
+    00005FC4 C1                    3719        POP     BC\r
+    00005FC5 CD 5E 81              3720        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    00005FC8 F1                    3721        POP     AF\r
+    00005FC9 F1                    3722        POP     AF\r
+    00005FCA F1                    3723        POP     AF\r
+    00005FCB E5                    3724        PUSH    HL\r
+    00005FCC FD E1                 3725        POP     IY\r
+    00005FCE DD 36 F4 01           3726        LD      (IX-12),1\r
+    00005FD2                       3727 ?0266:\r
+    00005FD2 DD 7E D8              3728        LD      A,(IX-40)\r
+    00005FD5 FE 44                 3729        CP      68\r
+    00005FD7 20 44                 3730        JR      NZ,?0268\r
+    00005FD9                       3731 ?0267:\r
+    00005FD9 DD 4E DD              3732        LD      C,(IX-35)\r
+    00005FDC 06 00                 3733        LD      B,0\r
+    00005FDE C5                    3734        PUSH    BC\r
+    00005FDF CD 97 62              3735        CALL    LWRD ?0482\r
+    00005FE2 D5                    3736        PUSH    DE\r
+    00005FE3 DD 4E DB              3737        LD      C,(IX-37)\r
+    00005FE6 DD 5E F0              3738        LD      E,(IX-16)\r
+    00005FE9 DD 56 F1              3739        LD      D,(IX-15)\r
+    00005FEC CD A0 62              3740        CALL    LWRD ?0483\r
+    00005FEF D5                    3741        PUSH    DE\r
+    00005FF0 DD 4E DA              3742        LD      C,(IX-38)\r
+    00005FF3 DD 5E F2              3743        LD      E,(IX-14)\r
+    00005FF6 DD 56 F3              3744        LD      D,(IX-13)\r
+    00005FF9 CD 2A 81              3745        CALL    LWRD ?S_MUL_L02\r
+    00005FFC D5                    3746        PUSH    DE\r
+    00005FFD DD 5E D9              3747        LD      E,(IX-39)\r
+    00006000 50                    3748        LD      D,B\r
+    00006001 DD 4E F0              3749        LD      C,(IX-16)\r
+    00006004 DD 46 F1              3750        LD      B,(IX-15)\r
+    00006007 CD 2A 81              3751        CALL    LWRD ?S_MUL_L02\r
+    0000600A 3E 00                 3752        LD      A,BYTE3 Display_new\r
+    0000600C 21 9F 5D              3753        LD      HL,LWRD Display_new\r
+    0000600F C1                    3754        POP     BC\r
+    00006010 CD 5E 81              3755        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    00006013 F1                    3756        POP     AF\r
+    00006014 F1                    3757        POP     AF\r
+    00006015 F1                    3758        POP     AF\r
+    00006016 E5                    3759        PUSH    HL\r
+    00006017 FD E1                 3760        POP     IY\r
+    00006019 DD 36 F4 01           3761        LD      (IX-12),1\r
+    0000601D                       3762 ?0268:\r
+    0000601D DD 7E D8              3763        LD      A,(IX-40)\r
+    00006020 FE 4C                 3764        CP      76\r
+    00006022 20 47                 3765        JR      NZ,?0270\r
+    00006024                       3766 ?0269:\r
+    00006024 21 0C 00              3767        LD      HL,12\r
+    00006027 39                    3768        ADD     HL,SP\r
+    00006028 01 12 00              3769        LD      BC,18\r
+    0000602B 09                    3770        ADD     HL,BC\r
+    0000602C E5                    3771        PUSH    HL\r
+    0000602D CD 97 62              3772        CALL    LWRD ?0482\r
+    00006030 D5                    3773        PUSH    DE\r
+    00006031 DD 4E DB              3774        LD      C,(IX-37)\r
+    00006034 DD 5E F0              3775        LD      E,(IX-16)\r
+    00006037 DD 56 F1              3776        LD      D,(IX-15)\r
+    0000603A CD A0 62              3777        CALL    LWRD ?0483\r
+    0000603D D5                    3778        PUSH    DE\r
+    0000603E DD 4E DA              3779        LD      C,(IX-38)\r
+    00006041 DD 5E F2              3780        LD      E,(IX-14)\r
+    00006044 DD 56 F3              3781        LD      D,(IX-13)\r
+    00006047 CD 2A 81              3782        CALL    LWRD ?S_MUL_L02\r
+    0000604A D5                    3783        PUSH    DE\r
+    0000604B DD 5E D9              3784        LD      E,(IX-39)\r
+    0000604E 50                    3785        LD      D,B\r
+    0000604F DD 4E F0              3786        LD      C,(IX-16)\r
+    00006052 DD 46 F1              3787        LD      B,(IX-15)\r
+    00006055 CD 2A 81              3788        CALL    LWRD ?S_MUL_L02\r
+    00006058 3E 00                 3789        LD      A,BYTE3 Label_new\r
+    0000605A 21 60 5E              3790        LD      HL,LWRD Label_new\r
+    0000605D C1                    3791        POP     BC\r
+    0000605E CD 5E 81              3792        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    00006061 F1                    3793        POP     AF\r
+    00006062 F1                    3794        POP     AF\r
+    00006063 F1                    3795        POP     AF\r
+    00006064 E5                    3796        PUSH    HL\r
+    00006065 FD E1                 3797        POP     IY\r
+    00006067 DD 36 F4 01           3798        LD      (IX-12),1\r
+    0000606B                       3799 ?0270:\r
+    0000606B DD 7E D8              3800        LD      A,(IX-40)\r
+    0000606E FE 41                 3801        CP      65\r
+    00006070 20 51                 3802        JR      NZ,?0272\r
+    00006072                       3803 ?0271:\r
+    00006072 21 26 00              3804        LD      HL,38\r
+    00006075 DD 4E 02              3805        LD      C,(IX+2)\r
+    00006078 DD 46 03              3806        LD      B,(IX+3)\r
+    0000607B 09                    3807        ADD     HL,BC\r
+    0000607C E5                    3808        PUSH    HL\r
+    0000607D 21 2B 00              3809        LD      HL,43\r
+    00006080 39                    3810        ADD     HL,SP\r
+    00006081 EB                    3811        EX      DE,HL\r
+    00006082 E1                    3812        POP     HL\r
+    00006083 73                    3813        LD      (HL),E\r
+    00006084 23                    3814        INC     HL\r
+    00006085 72                    3815        LD      (HL),D\r
+    00006086 DD 6E DE              3816        LD      L,(IX-34)\r
+    00006089 DD 66 DF              3817        LD      H,(IX-33)\r
+    0000608C DD 75 F8              3818        LD      (IX-8),L\r
+    0000608F DD 74 F9              3819        LD      (IX-7),H\r
+    00006092 DD 6E E0              3820        LD      L,(IX-32)\r
+    00006095 DD 66 E1              3821        LD      H,(IX-31)\r
+    00006098 DD 75 FA              3822        LD      (IX-6),L\r
+    0000609B DD 74 FB              3823        LD      (IX-5),H\r
+    0000609E 21 16 00              3824        LD      HL,22\r
+    000060A1 39                    3825        ADD     HL,SP\r
+    000060A2 4E                    3826        LD      C,(HL)\r
+    000060A3 23                    3827        INC     HL\r
+    000060A4 46                    3828        LD      B,(HL)\r
+    000060A5 23                    3829        INC     HL\r
+    000060A6 5E                    3830        LD      E,(HL)\r
+    000060A7 23                    3831        INC     HL\r
+    000060A8 56                    3832        LD      D,(HL)\r
+    000060A9 DD 71 FC              3833        LD      (IX-4),C\r
+    000060AC DD 70 FD              3834        LD      (IX-3),B\r
+    000060AF DD 73 FE              3835        LD      (IX-2),E\r
+    000060B2 DD 72 FF              3836        LD      (IX-1),D\r
+    000060B5 DD 5E 02              3837        LD      E,(IX+2)\r
+    000060B8 DD 56 03              3838        LD      D,(IX+3)\r
+    000060BB 3E 00                 3839        LD      A,BYTE3 root_actionhandler\r
+    000060BD 21 A7 62              3840        LD      HL,LWRD root_actionhandler\r
+    000060C0 CD 5E 81              3841        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    000060C3                       3842 ?0272:\r
+    000060C3 DD 7E D8              3843        LD      A,(IX-40)\r
+    000060C6 FE 53                 3844        CP      83\r
+    000060C8 20 71                 3845        JR      NZ,?0274\r
+    000060CA                       3846 ?0273:\r
+    000060CA 21 0C 00              3847        LD      HL,12\r
+    000060CD 39                    3848        ADD     HL,SP\r
+    000060CE 4D                    3849        LD      C,L\r
+    000060CF 44                    3850        LD      B,H\r
+    000060D0 DD 5E D4              3851        LD      E,(IX-44)\r
+    000060D3 DD 56 D5              3852        LD      D,(IX-43)\r
+    000060D6 3E 00                 3853        LD      A,BYTE3 read_stringtable\r
+    000060D8 21 DF 65              3854        LD      HL,LWRD read_stringtable\r
+    000060DB CD 5E 81              3855        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    000060DE 21 26 00              3856        LD      HL,38\r
+    000060E1 DD 4E 02              3857        LD      C,(IX+2)\r
+    000060E4 DD 46 03              3858        LD      B,(IX+3)\r
+    000060E7 09                    3859        ADD     HL,BC\r
+    000060E8 E5                    3860        PUSH    HL\r
+    000060E9 11 04 00              3861        LD      DE,4\r
+    000060EC CD 8F 62              3862        CALL    LWRD ?0454\r
+    000060EF EB                    3863        EX      DE,HL\r
+    000060F0 E1                    3864        POP     HL\r
+    000060F1 73                    3865        LD      (HL),E\r
+    000060F2 23                    3866        INC     HL\r
+    000060F3 72                    3867        LD      (HL),D\r
+    000060F4 21 26 00              3868        LD      HL,38\r
+    000060F7 09                    3869        ADD     HL,BC\r
+    000060F8 56                    3870        LD      D,(HL)\r
+    000060F9 DD 72 F5              3871        LD      (IX-11),D\r
+    000060FC 23                    3872        INC     HL\r
+    000060FD 66                    3873        LD      H,(HL)\r
+    000060FE DD 74 F6              3874        LD      (IX-10),H\r
+    00006101 21 24 00              3875        LD      HL,36\r
+    00006104 09                    3876        ADD     HL,BC\r
+    00006105 36 04                 3877        LD      (HL),4\r
+    00006107 23                    3878        INC     HL\r
+    00006108 36 00                 3879        LD      (HL),0\r
+    0000610A 6A                    3880        LD      L,D\r
+    0000610B DD 66 F6              3881        LD      H,(IX-10)\r
+    0000610E 23                    3882        INC     HL\r
+    0000610F 23                    3883        INC     HL\r
+    00006110 E5                    3884        PUSH    HL\r
+    00006111 21 08 00              3885        LD      HL,8\r
+    00006114 ED 4B C0 86           3886        LD      BC,(global)\r
+    00006118 09                    3887        ADD     HL,BC\r
+    00006119 5E                    3888        LD      E,(HL)\r
+    0000611A 23                    3889        INC     HL\r
+    0000611B 56                    3890        LD      D,(HL)\r
+    0000611C E1                    3891        POP     HL\r
+    0000611D 73                    3892        LD      (HL),E\r
+    0000611E 23                    3893        INC     HL\r
+    0000611F 72                    3894        LD      (HL),D\r
+    00006120 21 06 00              3895        LD      HL,6\r
+    00006123 ED 4B C0 86           3896        LD      BC,(global)\r
+    00006127 09                    3897        ADD     HL,BC\r
+    00006128 46                    3898        LD      B,(HL)\r
+    00006129 23                    3899        INC     HL\r
+    0000612A 66                    3900        LD      H,(HL)\r
+    0000612B 68                    3901        LD      L,B\r
+    0000612C E5                    3902        PUSH    HL\r
+    0000612D DD 6E F5              3903        LD      L,(IX-11)\r
+    00006130 DD 66 F6              3904        LD      H,(IX-10)\r
+    00006133 C1                    3905        POP     BC\r
+    00006134 71                    3906        LD      (HL),C\r
+    00006135 23                    3907        INC     HL\r
+    00006136 70                    3908        LD      (HL),B\r
+    00006137 DD 36 F4 00           3909        LD      (IX-12),0\r
+    0000613B                       3910 ?0274:\r
+    0000613B AF                    3911        XOR     A\r
+    0000613C DD B6 F4              3912        OR      (IX-12)\r
+    0000613F CA 3B 62              3913        JP      Z,?0276\r
+    00006142                       3914 ?0275:\r
+    00006142 DD 7E DE              3915        LD      A,(IX-34)\r
+    00006145 DD B6 DF              3916        OR      (IX-33)\r
+    00006148 28 69                 3917        JR      Z,?0278\r
+    0000614A                       3918 ?0277:\r
+    0000614A FD CB 0A EE           3919        SET     5,(IY+10)\r
+    0000614E FD 36 24 0B           3920        LD      (IY+36),11\r
+    00006152 FD 36 25 00           3921        LD      (IY+37),0\r
+    00006156 11 0B 00              3922        LD      DE,11\r
+    00006159 CD 8F 62              3923        CALL    LWRD ?0454\r
+    0000615C FD 75 26              3924        LD      (IY+38),L\r
+    0000615F FD 74 27              3925        LD      (IY+39),H\r
+    00006162 FD 6E 26              3926        LD      L,(IY+38)\r
+    00006165 DD 75 D0              3927        LD      (IX-48),L\r
+    00006168 FD 66 27              3928        LD      H,(IY+39)\r
+    0000616B DD 74 D1              3929        LD      (IX-47),H\r
+    0000616E 36 A7                 3930        LD      (HL),LOW(root_actionhandler)\r
+    00006170 23                    3931        INC     HL\r
+    00006171 36 62                 3932        LD      (HL),HIGH(root_actionhandler)\r
+    00006173 23                    3933        INC     HL\r
+    00006174 36 00                 3934        LD      (HL),BYTE3 root_actionhandler\r
+    00006176 DD 6E D0              3935        LD      L,(IX-48)\r
+    00006179 DD 66 D1              3936        LD      H,(IX-47)\r
+    0000617C 23                    3937        INC     HL\r
+    0000617D 23                    3938        INC     HL\r
+    0000617E 23                    3939        INC     HL\r
+    0000617F DD 4E DE              3940        LD      C,(IX-34)\r
+    00006182 71                    3941        LD      (HL),C\r
+    00006183 DD 46 DF              3942        LD      B,(IX-33)\r
+    00006186 23                    3943        INC     HL\r
+    00006187 70                    3944        LD      (HL),B\r
+    00006188 21 05 00              3945        LD      HL,5\r
+    0000618B DD 4E D0              3946        LD      C,(IX-48)\r
+    0000618E DD 46 D1              3947        LD      B,(IX-47)\r
+    00006191 09                    3948        ADD     HL,BC\r
+    00006192 DD 5E E0              3949        LD      E,(IX-32)\r
+    00006195 73                    3950        LD      (HL),E\r
+    00006196 DD 56 E1              3951        LD      D,(IX-31)\r
+    00006199 23                    3952        INC     HL\r
+    0000619A 72                    3953        LD      (HL),D\r
+    0000619B 21 07 00              3954        LD      HL,7\r
+    0000619E 09                    3955        ADD     HL,BC\r
+    0000619F E5                    3956        PUSH    HL\r
+    000061A0 21 18 00              3957        LD      HL,24\r
+    000061A3 39                    3958        ADD     HL,SP\r
+    000061A4 5E                    3959        LD      E,(HL)\r
+    000061A5 23                    3960        INC     HL\r
+    000061A6 56                    3961        LD      D,(HL)\r
+    000061A7 23                    3962        INC     HL\r
+    000061A8 4E                    3963        LD      C,(HL)\r
+    000061A9 23                    3964        INC     HL\r
+    000061AA 46                    3965        LD      B,(HL)\r
+    000061AB E1                    3966        POP     HL\r
+    000061AC 73                    3967        LD      (HL),E\r
+    000061AD 23                    3968        INC     HL\r
+    000061AE 72                    3969        LD      (HL),D\r
+    000061AF 23                    3970        INC     HL\r
+    000061B0 71                    3971        LD      (HL),C\r
+    000061B1 23                    3972        INC     HL\r
+    000061B2 70                    3973        LD      (HL),B\r
+    000061B3                       3974 ?0278:\r
+    000061B3 DD 7E E6              3975        LD      A,(IX-26)\r
+    000061B6 DD B6 E7              3976        OR      (IX-25)\r
+    000061B9 28 0C                 3977        JR      Z,?0280\r
+    000061BB                       3978 ?0279:\r
+    000061BB DD 6E E6              3979        LD      L,(IX-26)\r
+    000061BE FD 75 0A              3980        LD      (IY+10),L\r
+    000061C1 DD 66 E7              3981        LD      H,(IX-25)\r
+    000061C4 FD 74 0B              3982        LD      (IY+11),H\r
+    000061C7                       3983 ?0280:\r
+    000061C7 DD 6E E8              3984        LD      L,(IX-24)\r
+    000061CA FD 75 0E              3985        LD      (IY+14),L\r
+    000061CD DD 66 E9              3986        LD      H,(IX-23)\r
+    000061D0 FD 74 0F              3987        LD      (IY+15),H\r
+    000061D3 DD 6E EA              3988        LD      L,(IX-22)\r
+    000061D6 FD 75 20              3989        LD      (IY+32),L\r
+    000061D9 DD 7E EB              3990        LD      A,(IX-21)\r
+    000061DC E6 0F                 3991        AND     15\r
+    000061DE FD 77 21              3992        LD      (IY+33),A\r
+    000061E1 FD 7E 20              3993        LD      A,(IY+32)\r
+    000061E4 FD B6 21              3994        OR      (IY+33)\r
+    000061E7 20 16                 3995        JR      NZ,?0282\r
+    000061E9                       3996 ?0281:\r
+    000061E9 11 14 00              3997        LD      DE,20\r
+    000061EC CD 8F 62              3998        CALL    LWRD ?0454\r
+    000061EF FD 75 20              3999        LD      (IY+32),L\r
+    000061F2 FD 74 21              4000        LD      (IY+33),H\r
+    000061F5 FD 6E 20              4001        LD      L,(IY+32)\r
+    000061F8 FD 66 21              4002        LD      H,(IY+33)\r
+    000061FB 36 00                 4003        LD      (HL),0\r
+    000061FD 18 04                 4004        JR      ?0283\r
+    000061FF                       4005 ?0282:\r
+    000061FF FD CB 0B F6           4006        SET     6,(IY+11)\r
+    00006203                       4007 ?0283:\r
+    00006203 DD 7E EB              4008        LD      A,(IX-21)\r
+    00006206 2E 00                 4009        LD      L,0\r
+    00006208 4D                    4010        LD      C,L\r
+    00006209 E6 F0                 4011        AND     240\r
+    0000620B 47                    4012        LD      B,A\r
+    0000620C 26 10                 4013        LD      H,16\r
+    0000620E ED 42                 4014        SBC     HL,BC\r
+    00006210 30 10                 4015        JR      NC,?0285\r
+    00006212                       4016 ?0284:\r
+    00006212 DD 6E EA              4017        LD      L,(IX-22)\r
+    00006215 DD 7E EB              4018        LD      A,(IX-21)\r
+    00006218 E6 0F                 4019        AND     15\r
+    0000621A 67                    4020        LD      H,A\r
+    0000621B 23                    4021        INC     HL\r
+    0000621C FD 75 22              4022        LD      (IY+34),L\r
+    0000621F FD 74 23              4023        LD      (IY+35),H\r
+    00006222                       4024 ?0285:\r
+    00006222 FD E5                 4025        PUSH    IY\r
+    00006224 DD 5E 02              4026        LD      E,(IX+2)\r
+    00006227 4B                    4027        LD      C,E\r
+    00006228 DD 56 03              4028        LD      D,(IX+3)\r
+    0000622B 42                    4029        LD      B,D\r
+    0000622C 21 1D 00              4030        LD      HL,29\r
+    0000622F 09                    4031        ADD     HL,BC\r
+    00006230 4E                    4032        LD      C,(HL)\r
+    00006231 23                    4033        INC     HL\r
+    00006232 46                    4034        LD      B,(HL)\r
+    00006233 23                    4035        INC     HL\r
+    00006234 7E                    4036        LD      A,(HL)\r
+    00006235 69                    4037        LD      L,C\r
+    00006236 60                    4038        LD      H,B\r
+    00006237 C1                    4039        POP     BC\r
+    00006238 CD 5E 81              4040        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    0000623B                       4041 ?0276:\r
+    0000623B 21 14 00              4042        LD      HL,20\r
+    0000623E E5                    4043        PUSH    HL\r
+    0000623F 2E 0E                 4044        LD      L,14\r
+    00006241 39                    4045        ADD     HL,SP\r
+    00006242 4D                    4046        LD      C,L\r
+    00006243 44                    4047        LD      B,H\r
+    00006244 DD 5E D4              4048        LD      E,(IX-44)\r
+    00006247 DD 56 D5              4049        LD      D,(IX-43)\r
+    0000624A CD 87 62              4050        CALL    LWRD ?0441\r
+    0000624D F1                    4051        POP     AF\r
+    0000624E 3E 14                 4052        LD      A,20\r
+    00006250 AD                    4053        XOR     L\r
+    00006251 B4                    4054        OR      H\r
+    00006252 CA 07 5F              4055        JP      Z,?0256\r
+    00006255                       4056 ?0254:\r
+    00006255 DD 5E D4              4057        LD      E,(IX-44)\r
+    00006258 DD 56 D5              4058        LD      D,(IX-43)\r
+    0000625B 3E 00                 4059        LD      A,BYTE3 close\r
+    0000625D 21 2B 72              4060        LD      HL,LWRD close\r
+    00006260 CD 5E 81              4061        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    00006263 DD 5E 02              4062        LD      E,(IX+2)\r
+    00006266 DD 56 03              4063        LD      D,(IX+3)\r
+    00006269 3E 00                 4064        LD      A,BYTE3 Component_linkstringtable\r
+    0000626B 21 E8 4F              4065        LD      HL,LWRD Component_linkstringtable\r
+    0000626E CD 5E 81              4066        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    00006271 DD 5E 02              4067        LD      E,(IX+2)\r
+    00006274 4B                    4068        LD      C,E\r
+    00006275 DD 56 03              4069        LD      D,(IX+3)\r
+    00006278 42                    4070        LD      B,D\r
+    00006279 21 1A 00              4071        LD      HL,26\r
+    0000627C 09                    4072        ADD     HL,BC\r
+    0000627D 4E                    4073        LD      C,(HL)\r
+    0000627E 23                    4074        INC     HL\r
+    0000627F 46                    4075        LD      B,(HL)\r
+    00006280 23                    4076        INC     HL\r
+    00006281 7E                    4077        LD      A,(HL)\r
+    00006282 69                    4078        LD      L,C\r
+    00006283 60                    4079        LD      H,B\r
+    00006284 C3 E8 56              4080        JP      LWRD ?0424\r
+    00006287                       4081 ?0441:\r
+    00006287 3E 01                 4082        LD      A,BYTE3 _read\r
+    00006289 21 34 45              4083        LD      HL,LWRD _read\r
+    0000628C C3 5E 81              4084        JP      LWRD ?BANK_CALL_DIRECT_L08\r
+    0000628F                       4085 ?0454:\r
+    0000628F 3E 01                 4086        LD      A,BYTE3 malloc\r
+    00006291 21 D8 42              4087        LD      HL,LWRD malloc\r
+    00006294 C3 5E 81              4088        JP      LWRD ?BANK_CALL_DIRECT_L08\r
+    00006297                       4089 ?0482:\r
+    00006297 DD 4E DC              4090        LD      C,(IX-36)\r
+    0000629A DD 5E F2              4091        LD      E,(IX-14)\r
+    0000629D DD 56 F3              4092        LD      D,(IX-13)\r
+    000062A0                       4093 ?0483:\r
+    000062A0 CD 2A 81              4094        CALL    LWRD ?S_MUL_L02\r
+    000062A3 1B                    4095        DEC     DE\r
+    000062A4 1B                    4096        DEC     DE\r
+    000062A5 1B                    4097        DEC     DE\r
+    000062A6 C9                    4098        RET\r
+    000062A7                       4099 root_actionhandler:\r
+    000062A7 CD 88 81              4100        CALL    LWRD ?ENT_AUTO_DIRECT_L09\r
+    000062AA EA FF                 4101        DEFW    65514\r
+    000062AC FD E5                 4102        PUSH    IY\r
+    000062AE DD 6E 02              4103        LD      L,(IX+2)\r
+    000062B1 DD 66 03              4104        LD      H,(IX+3)\r
+    000062B4 E5                    4105        PUSH    HL\r
+    000062B5 FD E1                 4106        POP     IY\r
+    000062B7 21 06 00              4107        LD      HL,6\r
+    000062BA 39                    4108        ADD     HL,SP\r
+    000062BB EB                    4109        EX      DE,HL\r
+    000062BC 21 A7 84              4110        LD      HL,?0286\r
+    000062BF 01 0E 00              4111        LD      BC,14\r
+    000062C2 ED B0                 4112        LDIR\r
+    000062C4 FD 6E 26              4113        LD      L,(IY+38)\r
+    000062C7 DD 75 EA              4114        LD      (IX-22),L\r
+    000062CA FD 66 27              4115        LD      H,(IY+39)\r
+    000062CD DD 74 EB              4116        LD      (IX-21),H\r
+    000062D0 23                    4117        INC     HL\r
+    000062D1 23                    4118        INC     HL\r
+    000062D2 23                    4119        INC     HL\r
+    000062D3 3E 01                 4120        LD      A,1\r
+    000062D5 AE                    4121        XOR     (HL)\r
+    000062D6 23                    4122        INC     HL\r
+    000062D7 B6                    4123        OR      (HL)\r
+    000062D8 20 08                 4124        JR      NZ,?0288\r
+    000062DA                       4125 ?0287:\r
+    000062DA C5                    4126        PUSH    BC\r
+    000062DB 01 01 04              4127        LD      BC,1025\r
+    000062DE CD 3F 53              4128        CALL    LWRD ?0463\r
+    000062E1 E1                    4129        POP     HL\r
+    000062E2                       4130 ?0288:\r
+    000062E2 DD 6E EA              4131        LD      L,(IX-22)\r
+    000062E5 DD 66 EB              4132        LD      H,(IX-21)\r
+    000062E8 23                    4133        INC     HL\r
+    000062E9 23                    4134        INC     HL\r
+    000062EA 23                    4135        INC     HL\r
+    000062EB 46                    4136        LD      B,(HL)\r
+    000062EC 23                    4137        INC     HL\r
+    000062ED 66                    4138        LD      H,(HL)\r
+    000062EE 68                    4139        LD      L,B\r
+    000062EF CB 85                 4140        RES     0,L\r
+    000062F1 3E 02                 4141        LD      A,2\r
+    000062F3 AD                    4142        XOR     L\r
+    000062F4 B4                    4143        OR      H\r
+    000062F5 C2 12 64              4144        JP      NZ,?0290\r
+    000062F8                       4145 ?0289:\r
+    000062F8 6F                    4146        LD      L,A\r
+    000062F9 67                    4147        LD      H,A\r
+    000062FA E5                    4148        PUSH    HL\r
+    000062FB E5                    4149        PUSH    HL\r
+    000062FC 01 01 00              4150        LD      BC,1\r
+    000062FF FD 5E 11              4151        LD      E,(IY+17)\r
+    00006302 FD 56 12              4152        LD      D,(IY+18)\r
+    00006305 3E 00                 4153        LD      A,BYTE3 Component_changestate_children\r
+    00006307 21 7F 4F              4154        LD      HL,LWRD Component_changestate_children\r
+    0000630A CD 5E 81              4155        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    0000630D E1                    4156        POP     HL\r
+    0000630E E1                    4157        POP     HL\r
+    0000630F FD 6E 11              4158        LD      L,(IY+17)\r
+    00006312 FD 66 12              4159        LD      H,(IY+18)\r
+    00006315 01 08 00              4160        LD      BC,8\r
+    00006318 09                    4161        ADD     HL,BC\r
+    00006319 4E                    4162        LD      C,(HL)\r
+    0000631A 23                    4163        INC     HL\r
+    0000631B 46                    4164        LD      B,(HL)\r
+    0000631C C5                    4165        PUSH    BC\r
+    0000631D FD 6E 11              4166        LD      L,(IY+17)\r
+    00006320 FD 66 12              4167        LD      H,(IY+18)\r
+    00006323 01 06 00              4168        LD      BC,6\r
+    00006326 09                    4169        ADD     HL,BC\r
+    00006327 4E                    4170        LD      C,(HL)\r
+    00006328 23                    4171        INC     HL\r
+    00006329 46                    4172        LD      B,(HL)\r
+    0000632A C5                    4173        PUSH    BC\r
+    0000632B 01 00 00              4174        LD      BC,0\r
+    0000632E 59                    4175        LD      E,C\r
+    0000632F 50                    4176        LD      D,B\r
+    00006330 3E 00                 4177        LD      A,BYTE3 Window_new\r
+    00006332 21 3A 55              4178        LD      HL,LWRD Window_new\r
+    00006335 CD 5E 81              4179        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    00006338 F1                    4180        POP     AF\r
+    00006339 F1                    4181        POP     AF\r
+    0000633A DD 75 EC              4182        LD      (IX-20),L\r
+    0000633D DD 74 ED              4183        LD      (IX-19),H\r
+    00006340 01 0A 00              4184        LD      BC,10\r
+    00006343 09                    4185        ADD     HL,BC\r
+    00006344 36 03                 4186        LD      (HL),3\r
+    00006346 23                    4187        INC     HL\r
+    00006347 70                    4188        LD      (HL),B\r
+    00006348 DD 6E EA              4189        LD      L,(IX-22)\r
+    0000634B DD 66 EB              4190        LD      H,(IX-21)\r
+    0000634E 23                    4191        INC     HL\r
+    0000634F 23                    4192        INC     HL\r
+    00006350 23                    4193        INC     HL\r
+    00006351 CB 46                 4194        BIT     0,(HL)\r
+    00006353 28 0C                 4195        JR      Z,?0292\r
+    00006355                       4196 ?0291:\r
+    00006355 69                    4197        LD      L,C\r
+    00006356 60                    4198        LD      H,B\r
+    00006357 DD 4E EC              4199        LD      C,(IX-20)\r
+    0000635A DD 46 ED              4200        LD      B,(IX-19)\r
+    0000635D 09                    4201        ADD     HL,BC\r
+    0000635E 23                    4202        INC     HL\r
+    0000635F CB EE                 4203        SET     5,(HL)\r
+    00006361                       4204 ?0292:\r
+    00006361 21 17 00              4205        LD      HL,23\r
+    00006364 DD 4E EC              4206        LD      C,(IX-20)\r
+    00006367 DD 46 ED              4207        LD      B,(IX-19)\r
+    0000636A 09                    4208        ADD     HL,BC\r
+    0000636B 36 B9                 4209        LD      (HL),LOW(rootWindow_handler)\r
+    0000636D 23                    4210        INC     HL\r
+    0000636E 36 5E                 4211        LD      (HL),HIGH(rootWindow_handler)\r
+    00006370 23                    4212        INC     HL\r
+    00006371 36 00                 4213        LD      (HL),BYTE3 rootWindow_handler\r
+    00006373 21 1A 00              4214        LD      HL,26\r
+    00006376 09                    4215        ADD     HL,BC\r
+    00006377 36 F5                 4216        LD      (HL),LOW(Root_paint)\r
+    00006379 23                    4217        INC     HL\r
+    0000637A 36 54                 4218        LD      (HL),HIGH(Root_paint)\r
+    0000637C 23                    4219        INC     HL\r
+    0000637D 36 00                 4220        LD      (HL),BYTE3 Root_paint\r
+    0000637F 21 07 00              4221        LD      HL,7\r
+    00006382 DD 5E EA              4222        LD      E,(IX-22)\r
+    00006385 DD 56 EB              4223        LD      D,(IX-21)\r
+    00006388 19                    4224        ADD     HL,DE\r
+    00006389 5E                    4225        LD      E,(HL)\r
+    0000638A EB                    4226        EX      DE,HL\r
+    0000638B DD 75 F3              4227        LD      (IX-13),L\r
+    0000638E 21 07 00              4228        LD      HL,7\r
+    00006391 DD 4E EA              4229        LD      C,(IX-22)\r
+    00006394 DD 46 EB              4230        LD      B,(IX-21)\r
+    00006397 09                    4231        ADD     HL,BC\r
+    00006398 5E                    4232        LD      E,(HL)\r
+    00006399 23                    4233        INC     HL\r
+    0000639A 56                    4234        LD      D,(HL)\r
+    0000639B 23                    4235        INC     HL\r
+    0000639C 4E                    4236        LD      C,(HL)\r
+    0000639D 23                    4237        INC     HL\r
+    0000639E 46                    4238        LD      B,(HL)\r
+    0000639F EB                    4239        EX      DE,HL\r
+    000063A0 3E 08                 4240        LD      A,8\r
+    000063A2 CD F9 81              4241        CALL    LWRD ?SL_RSH_L03\r
+    000063A5 DD 75 F4              4242        LD      (IX-12),L\r
+    000063A8 21 07 00              4243        LD      HL,7\r
+    000063AB DD 4E EA              4244        LD      C,(IX-22)\r
+    000063AE DD 46 EB              4245        LD      B,(IX-21)\r
+    000063B1 09                    4246        ADD     HL,BC\r
+    000063B2 5E                    4247        LD      E,(HL)\r
+    000063B3 23                    4248        INC     HL\r
+    000063B4 56                    4249        LD      D,(HL)\r
+    000063B5 23                    4250        INC     HL\r
+    000063B6 4E                    4251        LD      C,(HL)\r
+    000063B7 23                    4252        INC     HL\r
+    000063B8 46                    4253        LD      B,(HL)\r
+    000063B9 EB                    4254        EX      DE,HL\r
+    000063BA 3E 10                 4255        LD      A,16\r
+    000063BC CD F9 81              4256        CALL    LWRD ?SL_RSH_L03\r
+    000063BF DD 75 F5              4257        LD      (IX-11),L\r
+    000063C2 21 07 00              4258        LD      HL,7\r
+    000063C5 DD 4E EA              4259        LD      C,(IX-22)\r
+    000063C8 DD 46 EB              4260        LD      B,(IX-21)\r
+    000063CB 09                    4261        ADD     HL,BC\r
+    000063CC 5E                    4262        LD      E,(HL)\r
+    000063CD 23                    4263        INC     HL\r
+    000063CE 56                    4264        LD      D,(HL)\r
+    000063CF 23                    4265        INC     HL\r
+    000063D0 4E                    4266        LD      C,(HL)\r
+    000063D1 23                    4267        INC     HL\r
+    000063D2 46                    4268        LD      B,(HL)\r
+    000063D3 EB                    4269        EX      DE,HL\r
+    000063D4 3E 18                 4270        LD      A,24\r
+    000063D6 CD F9 81              4271        CALL    LWRD ?SL_RSH_L03\r
+    000063D9 DD 75 F6              4272        LD      (IX-10),L\r
+    000063DC 21 06 00              4273        LD      HL,6\r
+    000063DF 39                    4274        ADD     HL,SP\r
+    000063E0 4D                    4275        LD      C,L\r
+    000063E1 44                    4276        LD      B,H\r
+    000063E2 DD 5E EC              4277        LD      E,(IX-20)\r
+    000063E5 DD 56 ED              4278        LD      D,(IX-19)\r
+    000063E8 3E 00                 4279        LD      A,BYTE3 screenbuilder\r
+    000063EA 21 D7 5E              4280        LD      HL,LWRD screenbuilder\r
+    000063ED CD 5E 81              4281        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    000063F0 DD 4E EC              4282        LD      C,(IX-20)\r
+    000063F3 DD 46 ED              4283        LD      B,(IX-19)\r
+    000063F6 C5                    4284        PUSH    BC\r
+    000063F7 FD 5E 11              4285        LD      E,(IY+17)\r
+    000063FA FD 56 12              4286        LD      D,(IY+18)\r
+    000063FD FD 6E 11              4287        LD      L,(IY+17)\r
+    00006400 FD 66 12              4288        LD      H,(IY+18)\r
+    00006403 01 1D 00              4289        LD      BC,29\r
+    00006406 09                    4290        ADD     HL,BC\r
+    00006407 4E                    4291        LD      C,(HL)\r
+    00006408 23                    4292        INC     HL\r
+    00006409 46                    4293        LD      B,(HL)\r
+    0000640A 23                    4294        INC     HL\r
+    0000640B 7E                    4295        LD      A,(HL)\r
+    0000640C 69                    4296        LD      L,C\r
+    0000640D 60                    4297        LD      H,B\r
+    0000640E C1                    4298        POP     BC\r
+    0000640F CD 5E 81              4299        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    00006412                       4300 ?0290:\r
+    00006412 DD 6E EA              4301        LD      L,(IX-22)\r
+    00006415 DD 66 EB              4302        LD      H,(IX-21)\r
+    00006418 23                    4303        INC     HL\r
+    00006419 23                    4304        INC     HL\r
+    0000641A 23                    4305        INC     HL\r
+    0000641B 3E 04                 4306        LD      A,4\r
+    0000641D AE                    4307        XOR     (HL)\r
+    0000641E 23                    4308        INC     HL\r
+    0000641F B6                    4309        OR      (HL)\r
+    00006420 C2 B0 65              4310        JP      NZ,?0294\r
+    00006423                       4311 ?0293:\r
+    00006423 21 01 00              4312        LD      HL,1\r
+    00006426 E5                    4313        PUSH    HL\r
+    00006427 FD 6E 11              4314        LD      L,(IY+17)\r
+    0000642A FD 66 12              4315        LD      H,(IY+18)\r
+    0000642D 01 08 00              4316        LD      BC,8\r
+    00006430 09                    4317        ADD     HL,BC\r
+    00006431 46                    4318        LD      B,(HL)\r
+    00006432 23                    4319        INC     HL\r
+    00006433 66                    4320        LD      H,(HL)\r
+    00006434 68                    4321        LD      L,B\r
+    00006435 01 F6 FF              4322        LD      BC,65526\r
+    00006438 09                    4323        ADD     HL,BC\r
+    00006439 E5                    4324        PUSH    HL\r
+    0000643A FD 6E 11              4325        LD      L,(IY+17)\r
+    0000643D FD 66 12              4326        LD      H,(IY+18)\r
+    00006440 01 06 00              4327        LD      BC,6\r
+    00006443 09                    4328        ADD     HL,BC\r
+    00006444 46                    4329        LD      B,(HL)\r
+    00006445 23                    4330        INC     HL\r
+    00006446 66                    4331        LD      H,(HL)\r
+    00006447 68                    4332        LD      L,B\r
+    00006448 01 F6 FF              4333        LD      BC,65526\r
+    0000644B 09                    4334        ADD     HL,BC\r
+    0000644C E5                    4335        PUSH    HL\r
+    0000644D 01 05 00              4336        LD      BC,5\r
+    00006450 59                    4337        LD      E,C\r
+    00006451 50                    4338        LD      D,B\r
+    00006452 3E 00                 4339        LD      A,BYTE3 Dialog_new\r
+    00006454 21 E3 5A              4340        LD      HL,LWRD Dialog_new\r
+    00006457 CD 5E 81              4341        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    0000645A F1                    4342        POP     AF\r
+    0000645B F1                    4343        POP     AF\r
+    0000645C F1                    4344        POP     AF\r
+    0000645D DD 75 EC              4345        LD      (IX-20),L\r
+    00006460 DD 74 ED              4346        LD      (IX-19),H\r
+    00006463 01 0A 00              4347        LD      BC,10\r
+    00006466 09                    4348        ADD     HL,BC\r
+    00006467 36 03                 4349        LD      (HL),3\r
+    00006469 23                    4350        INC     HL\r
+    0000646A 36 10                 4351        LD      (HL),16\r
+    0000646C 21 0E 00              4352        LD      HL,14\r
+    0000646F DD 4E EC              4353        LD      C,(IX-20)\r
+    00006472 DD 46 ED              4354        LD      B,(IX-19)\r
+    00006475 09                    4355        ADD     HL,BC\r
+    00006476 36 30                 4356        LD      (HL),48\r
+    00006478 23                    4357        INC     HL\r
+    00006479 36 00                 4358        LD      (HL),0\r
+    0000647B AF                    4359        XOR     A\r
+    0000647C DD 77 FE              4360        LD      (IX-2),A\r
+    0000647F DD 77 FF              4361        LD      (IX-1),A\r
+    00006482                       4362 ?0296:\r
+    00006482 21 05 00              4363        LD      HL,5\r
+    00006485 DD 4E EA              4364        LD      C,(IX-22)\r
+    00006488 DD 46 EB              4365        LD      B,(IX-21)\r
+    0000648B 09                    4366        ADD     HL,BC\r
+    0000648C 5E                    4367        LD      E,(HL)\r
+    0000648D 23                    4368        INC     HL\r
+    0000648E 56                    4369        LD      D,(HL)\r
+    0000648F 06 0C                 4370        LD      B,12\r
+    00006491 CD 2E 82              4371        CALL    LWRD ?SS_RSH_L02\r
+    00006494 4B                    4372        LD      C,E\r
+    00006495 42                    4373        LD      B,D\r
+    00006496 DD 6E FE              4374        LD      L,(IX-2)\r
+    00006499 DD 66 FF              4375        LD      H,(IX-1)\r
+    0000649C CD A6 81              4376        CALL    LWRD ?SS_CMP_L02\r
+    0000649F 30 04                 4377        JR      NC,?0367\r
+    000064A1 3E 01                 4378        LD      A,1\r
+    000064A3 18 01                 4379        JR      ?0368\r
+    000064A5                       4380 ?0367:\r
+    000064A5 AF                    4381        XOR     A\r
+    000064A6                       4382 ?0368:\r
+    000064A6 E6 0F                 4383        AND     15\r
+    000064A8 CA 44 65              4384        JP      Z,?0295\r
+    000064AB                       4385 ?0297:\r
+    000064AB 21 05 00              4386        LD      HL,5\r
+    000064AE DD 4E EA              4387        LD      C,(IX-22)\r
+    000064B1 DD 46 EB              4388        LD      B,(IX-21)\r
+    000064B4 09                    4389        ADD     HL,BC\r
+    000064B5 46                    4390        LD      B,(HL)\r
+    000064B6 23                    4391        INC     HL\r
+    000064B7 7E                    4392        LD      A,(HL)\r
+    000064B8 68                    4393        LD      L,B\r
+    000064B9 E6 0F                 4394        AND     15\r
+    000064BB 67                    4395        LD      H,A\r
+    000064BC DD 4E FE              4396        LD      C,(IX-2)\r
+    000064BF DD 46 FF              4397        LD      B,(IX-1)\r
+    000064C2 09                    4398        ADD     HL,BC\r
+    000064C3 29                    4399        ADD     HL,HL\r
+    000064C4 E5                    4400        PUSH    HL\r
+    000064C5 21 08 00              4401        LD      HL,8\r
+    000064C8 ED 5B C0 86           4402        LD      DE,(global)\r
+    000064CC 19                    4403        ADD     HL,DE\r
+    000064CD 5E                    4404        LD      E,(HL)\r
+    000064CE 23                    4405        INC     HL\r
+    000064CF 56                    4406        LD      D,(HL)\r
+    000064D0 E1                    4407        POP     HL\r
+    000064D1 19                    4408        ADD     HL,DE\r
+    000064D2 2B                    4409        DEC     HL\r
+    000064D3 2B                    4410        DEC     HL\r
+    000064D4 5E                    4411        LD      E,(HL)\r
+    000064D5 23                    4412        INC     HL\r
+    000064D6 56                    4413        LD      D,(HL)\r
+    000064D7 D5                    4414        PUSH    DE\r
+    000064D8 21 10 00              4415        LD      HL,16\r
+    000064DB E5                    4416        PUSH    HL\r
+    000064DC 2E 06                 4417        LD      L,6\r
+    000064DE DD 5E EC              4418        LD      E,(IX-20)\r
+    000064E1 DD 56 ED              4419        LD      D,(IX-19)\r
+    000064E4 19                    4420        ADD     HL,DE\r
+    000064E5 6E                    4421        LD      L,(HL)\r
+    000064E6 26 00                 4422        LD      H,0\r
+    000064E8 01 F0 FF              4423        LD      BC,65520\r
+    000064EB 09                    4424        ADD     HL,BC\r
+    000064EC E5                    4425        PUSH    HL\r
+    000064ED DD 6E FE              4426        LD      L,(IX-2)\r
+    000064F0 DD 66 FF              4427        LD      H,(IX-1)\r
+    000064F3 29                    4428        ADD     HL,HL\r
+    000064F4 29                    4429        ADD     HL,HL\r
+    000064F5 4D                    4430        LD      C,L\r
+    000064F6 44                    4431        LD      B,H\r
+    000064F7 29                    4432        ADD     HL,HL\r
+    000064F8 09                    4433        ADD     HL,BC\r
+    000064F9 01 14 00              4434        LD      BC,20\r
+    000064FC 09                    4435        ADD     HL,BC\r
+    000064FD 4D                    4436        LD      C,L\r
+    000064FE 44                    4437        LD      B,H\r
+    000064FF 11 08 00              4438        LD      DE,8\r
+    00006502 3E 00                 4439        LD      A,BYTE3 Label_new\r
+    00006504 21 60 5E              4440        LD      HL,LWRD Label_new\r
+    00006507 CD 5E 81              4441        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    0000650A F1                    4442        POP     AF\r
+    0000650B F1                    4443        POP     AF\r
+    0000650C F1                    4444        POP     AF\r
+    0000650D DD 75 FC              4445        LD      (IX-4),L\r
+    00006510 DD 74 FD              4446        LD      (IX-3),H\r
+    00006513 01 0E 00              4447        LD      BC,14\r
+    00006516 09                    4448        ADD     HL,BC\r
+    00006517 36 30                 4449        LD      (HL),48\r
+    00006519 23                    4450        INC     HL\r
+    0000651A 70                    4451        LD      (HL),B\r
+    0000651B DD 4E FC              4452        LD      C,(IX-4)\r
+    0000651E DD 46 FD              4453        LD      B,(IX-3)\r
+    00006521 C5                    4454        PUSH    BC\r
+    00006522 DD 5E EC              4455        LD      E,(IX-20)\r
+    00006525 4B                    4456        LD      C,E\r
+    00006526 DD 56 ED              4457        LD      D,(IX-19)\r
+    00006529 42                    4458        LD      B,D\r
+    0000652A 21 1D 00              4459        LD      HL,29\r
+    0000652D 09                    4460        ADD     HL,BC\r
+    0000652E 4E                    4461        LD      C,(HL)\r
+    0000652F 23                    4462        INC     HL\r
+    00006530 46                    4463        LD      B,(HL)\r
+    00006531 23                    4464        INC     HL\r
+    00006532 7E                    4465        LD      A,(HL)\r
+    00006533 69                    4466        LD      L,C\r
+    00006534 60                    4467        LD      H,B\r
+    00006535 C1                    4468        POP     BC\r
+    00006536 CD 5E 81              4469        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    00006539 DD 34 FE              4470        INC     (IX-2)\r
+    0000653C 20 03                 4471        JR      NZ,?0369\r
+    0000653E DD 34 FF              4472        INC     (IX-1)\r
+    00006541                       4473 ?0369:\r
+    00006541 C3 82 64              4474        JP      LWRD ?0296\r
+    00006544                       4475 ?0295:\r
+    00006544 01 CA 84              4476        LD      BC,?0299\r
+    00006547 DD 5E EC              4477        LD      E,(IX-20)\r
+    0000654A DD 56 ED              4478        LD      D,(IX-19)\r
+    0000654D 3E 00                 4479        LD      A,BYTE3 Component_setlabel\r
+    0000654F 21 22 4C              4480        LD      HL,LWRD Component_setlabel\r
+    00006552 CD 5E 81              4481        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    00006555 01 FF 00              4482        LD      BC,255\r
+    00006558 CD D1 65              4483        CALL    LWRD ?0476\r
+    0000655B 01 0E 00              4484        LD      BC,14\r
+    0000655E 09                    4485        ADD     HL,BC\r
+    0000655F 36 30                 4486        LD      (HL),48\r
+    00006561 23                    4487        INC     HL\r
+    00006562 70                    4488        LD      (HL),B\r
+    00006563 0E FE                 4489        LD      C,254\r
+    00006565 CD D1 65              4490        CALL    LWRD ?0476\r
+    00006568 EB                    4491        EX      DE,HL\r
+    00006569 CD 58 4F              4492        CALL    LWRD ?0453\r
+    0000656C DD 4E EC              4493        LD      C,(IX-20)\r
+    0000656F DD 46 ED              4494        LD      B,(IX-19)\r
+    00006572 C5                    4495        PUSH    BC\r
+    00006573 FD 5E 11              4496        LD      E,(IY+17)\r
+    00006576 FD 56 12              4497        LD      D,(IY+18)\r
+    00006579 FD 6E 11              4498        LD      L,(IY+17)\r
+    0000657C FD 66 12              4499        LD      H,(IY+18)\r
+    0000657F 01 1D 00              4500        LD      BC,29\r
+    00006582 09                    4501        ADD     HL,BC\r
+    00006583 4E                    4502        LD      C,(HL)\r
+    00006584 23                    4503        INC     HL\r
+    00006585 46                    4504        LD      B,(HL)\r
+    00006586 23                    4505        INC     HL\r
+    00006587 7E                    4506        LD      A,(HL)\r
+    00006588 69                    4507        LD      L,C\r
+    00006589 60                    4508        LD      H,B\r
+    0000658A C1                    4509        POP     BC\r
+    0000658B CD 5E 81              4510        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    0000658E 21 00 00              4511        LD      HL,0\r
+    00006591 E5                    4512        PUSH    HL\r
+    00006592 FD 5E 11              4513        LD      E,(IY+17)\r
+    00006595 FD 56 12              4514        LD      D,(IY+18)\r
+    00006598 FD 6E 11              4515        LD      L,(IY+17)\r
+    0000659B FD 66 12              4516        LD      H,(IY+18)\r
+    0000659E 01 17 00              4517        LD      BC,23\r
+    000065A1 09                    4518        ADD     HL,BC\r
+    000065A2 4E                    4519        LD      C,(HL)\r
+    000065A3 23                    4520        INC     HL\r
+    000065A4 46                    4521        LD      B,(HL)\r
+    000065A5 23                    4522        INC     HL\r
+    000065A6 7E                    4523        LD      A,(HL)\r
+    000065A7 69                    4524        LD      L,C\r
+    000065A8 60                    4525        LD      H,B\r
+    000065A9 01 03 01              4526        LD      BC,259\r
+    000065AC CD 5E 81              4527        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    000065AF E1                    4528        POP     HL\r
+    000065B0                       4529 ?0294:\r
+    000065B0 21 10 00              4530        LD      HL,16\r
+    000065B3 ED 4B C0 86           4531        LD      BC,(global)\r
+    000065B7 09                    4532        ADD     HL,BC\r
+    000065B8 7E                    4533        LD      A,(HL)\r
+    000065B9 23                    4534        INC     HL\r
+    000065BA B6                    4535        OR      (HL)\r
+    000065BB 23                    4536        INC     HL\r
+    000065BC B6                    4537        OR      (HL)\r
+    000065BD 28 0D                 4538        JR      Z,?0301\r
+    000065BF                       4539 ?0300:\r
+    000065BF FD E5                 4540        PUSH    IY\r
+    000065C1 D1                    4541        POP     DE\r
+    000065C2 21 10 00              4542        LD      HL,16\r
+    000065C5 ED 4B C0 86           4543        LD      BC,(global)\r
+    000065C9 CD 5D 53              4544        CALL    LWRD ?0475\r
+    000065CC                       4545 ?0301:\r
+    000065CC FD E1                 4546        POP     IY\r
+    000065CE C3 1F 81              4547        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
+    000065D1                       4548 ?0476:\r
+    000065D1 DD 5E EC              4549        LD      E,(IX-20)\r
+    000065D4 DD 56 ED              4550        LD      D,(IX-19)\r
+    000065D7 3E 00                 4551        LD      A,BYTE3 Component_find\r
+    000065D9 21 57 4D              4552        LD      HL,LWRD Component_find\r
+    000065DC C3 5E 81              4553        JP      LWRD ?BANK_CALL_DIRECT_L08\r
+    000065DF                       4554 read_stringtable:\r
+    000065DF CD 88 81              4555        CALL    LWRD ?ENT_AUTO_DIRECT_L09\r
+    000065E2 F8 FF                 4556        DEFW    -8\r
+    000065E4 FD E5                 4557        PUSH    IY\r
+    000065E6 03                    4558        INC     BC\r
+    000065E7 0A                    4559        LD      A,(BC)\r
+    000065E8 DD 77 FE              4560        LD      (IX-2),A\r
+    000065EB 03                    4561        INC     BC\r
+    000065EC 0A                    4562        LD      A,(BC)\r
+    000065ED DD 77 FF              4563        LD      (IX-1),A\r
+    000065F0 03                    4564        INC     BC\r
+    000065F1 69                    4565        LD      L,C\r
+    000065F2 60                    4566        LD      H,B\r
+    000065F3 4E                    4567        LD      C,(HL)\r
+    000065F4 DD 71 FC              4568        LD      (IX-4),C\r
+    000065F7 23                    4569        INC     HL\r
+    000065F8 46                    4570        LD      B,(HL)\r
+    000065F9 DD 70 FD              4571        LD      (IX-3),B\r
+    000065FC DD 6E FE              4572        LD      L,(IX-2)\r
+    000065FF 67                    4573        LD      H,A\r
+    00006600 29                    4574        ADD     HL,HL\r
+    00006601 EB                    4575        EX      DE,HL\r
+    00006602 CD 8F 62              4576        CALL    LWRD ?0454\r
+    00006605 DD 75 FA              4577        LD      (IX-6),L\r
+    00006608 DD 74 FB              4578        LD      (IX-5),H\r
+    0000660B 59                    4579        LD      E,C\r
+    0000660C 50                    4580        LD      D,B\r
+    0000660D CD 97 4A              4581        CALL    LWRD ?0447\r
+    00006610 C5                    4582        PUSH    BC\r
+    00006611 4D                    4583        LD      C,L\r
+    00006612 44                    4584        LD      B,H\r
+    00006613 DD 5E 02              4585        LD      E,(IX+2)\r
+    00006616 DD 56 03              4586        LD      D,(IX+3)\r
+    00006619 CD 87 62              4587        CALL    LWRD ?0441\r
+    0000661C F1                    4588        POP     AF\r
+    0000661D 11 00 00              4589        LD      DE,0\r
+    00006620 AF                    4590        XOR     A\r
+    00006621 DD 77 F8              4591        LD      (IX-8),A\r
+    00006624 DD 77 F9              4592        LD      (IX-7),A\r
+    00006627                       4593 ?0303:\r
+    00006627 DD 4E FC              4594        LD      C,(IX-4)\r
+    0000662A DD 46 FD              4595        LD      B,(IX-3)\r
+    0000662D 6B                    4596        LD      L,E\r
+    0000662E 62                    4597        LD      H,D\r
+    0000662F CD A6 81              4598        CALL    LWRD ?SS_CMP_L02\r
+    00006632 30 35                 4599        JR      NC,?0302\r
+    00006634 CD A5 66              4600        CALL    LWRD ?0479\r
+    00006637 30 30                 4601        JR      NC,?0302\r
+    00006639                       4602 ?0306:\r
+    00006639                       4603 ?0305:\r
+    00006639                       4604 ?0304:\r
+    00006639 23                    4605        INC     HL\r
+    0000663A DD 75 F8              4606        LD      (IX-8),L\r
+    0000663D DD 74 F9              4607        LD      (IX-7),H\r
+    00006640 2B                    4608        DEC     HL\r
+    00006641 29                    4609        ADD     HL,HL\r
+    00006642 DD 4E FA              4610        LD      C,(IX-6)\r
+    00006645 DD 46 FB              4611        LD      B,(IX-5)\r
+    00006648 09                    4612        ADD     HL,BC\r
+    00006649 E5                    4613        PUSH    HL\r
+    0000664A FD E5                 4614        PUSH    IY\r
+    0000664C E1                    4615        POP     HL\r
+    0000664D 19                    4616        ADD     HL,DE\r
+    0000664E 4D                    4617        LD      C,L\r
+    0000664F 44                    4618        LD      B,H\r
+    00006650 E1                    4619        POP     HL\r
+    00006651 71                    4620        LD      (HL),C\r
+    00006652 23                    4621        INC     HL\r
+    00006653 70                    4622        LD      (HL),B\r
+    00006654                       4623 ?0308:\r
+    00006654 FD E5                 4624        PUSH    IY\r
+    00006656 E1                    4625        POP     HL\r
+    00006657 19                    4626        ADD     HL,DE\r
+    00006658 7E                    4627        LD      A,(HL)\r
+    00006659 B7                    4628        OR      A\r
+    0000665A 28 03                 4629        JR      Z,?0307\r
+    0000665C                       4630 ?0309:\r
+    0000665C 13                    4631        INC     DE\r
+    0000665D 18 F5                 4632        JR      ?0308\r
+    0000665F                       4633 ?0307:\r
+    0000665F 6B                    4634        LD      L,E\r
+    00006660 62                    4635        LD      H,D\r
+    00006661 13                    4636        INC     DE\r
+    00006662 FD E5                 4637        PUSH    IY\r
+    00006664 C1                    4638        POP     BC\r
+    00006665 09                    4639        ADD     HL,BC\r
+    00006666 77                    4640        LD      (HL),A\r
+    00006667 18 BE                 4641        JR      ?0303\r
+    00006669                       4642 ?0302:\r
+    00006669 CD A5 66              4643        CALL    LWRD ?0479\r
+    0000666C 30 13                 4644        JR      NC,?0311\r
+    0000666E                       4645 ?0310:\r
+    0000666E 29                    4646        ADD     HL,HL\r
+    0000666F DD 4E FA              4647        LD      C,(IX-6)\r
+    00006672 DD 46 FB              4648        LD      B,(IX-5)\r
+    00006675 09                    4649        ADD     HL,BC\r
+    00006676 E5                    4650        PUSH    HL\r
+    00006677 FD E5                 4651        PUSH    IY\r
+    00006679 E1                    4652        POP     HL\r
+    0000667A 19                    4653        ADD     HL,DE\r
+    0000667B 4D                    4654        LD      C,L\r
+    0000667C 44                    4655        LD      B,H\r
+    0000667D E1                    4656        POP     HL\r
+    0000667E 71                    4657        LD      (HL),C\r
+    0000667F 23                    4658        INC     HL\r
+    00006680 70                    4659        LD      (HL),B\r
+    00006681                       4660 ?0311:\r
+    00006681 21 06 00              4661        LD      HL,6\r
+    00006684 ED 4B C0 86           4662        LD      BC,(global)\r
+    00006688 09                    4663        ADD     HL,BC\r
+    00006689 FD E5                 4664        PUSH    IY\r
+    0000668B C1                    4665        POP     BC\r
+    0000668C 71                    4666        LD      (HL),C\r
+    0000668D 23                    4667        INC     HL\r
+    0000668E 70                    4668        LD      (HL),B\r
+    0000668F 21 08 00              4669        LD      HL,8\r
+    00006692 ED 4B C0 86           4670        LD      BC,(global)\r
+    00006696 09                    4671        ADD     HL,BC\r
+    00006697 DD 4E FA              4672        LD      C,(IX-6)\r
+    0000669A 71                    4673        LD      (HL),C\r
+    0000669B DD 46 FB              4674        LD      B,(IX-5)\r
+    0000669E 23                    4675        INC     HL\r
+    0000669F 70                    4676        LD      (HL),B\r
+    000066A0 FD E1                 4677        POP     IY\r
+    000066A2 C3 1F 81              4678        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
+    000066A5                       4679 ?0479:\r
+    000066A5 DD 4E FE              4680        LD      C,(IX-2)\r
+    000066A8 DD 46 FF              4681        LD      B,(IX-1)\r
+    000066AB DD 6E F8              4682        LD      L,(IX-8)\r
+    000066AE DD 66 F9              4683        LD      H,(IX-7)\r
+    000066B1 C3 A6 81              4684        JP      LWRD ?SS_CMP_L02\r
+    000066B4                       4685 gui_globals:\r
+    000066B4 2A C0 86              4686        LD      HL,(global)\r
+    000066B7 C3 25 81              4687        JP      LWRD ?BANK_FAST_LEAVE_L08\r
+    000066BA                       4688 GUIinit:\r
+    000066BA C5                    4689        PUSH    BC\r
+    000066BB D5                    4690        PUSH    DE\r
+    000066BC 11 13 00              4691        LD      DE,19\r
+    000066BF CD 8F 62              4692        CALL    LWRD ?0454\r
+    000066C2 22 C0 86              4693        LD      (global),HL\r
+    000066C5 AF                    4694        XOR     A\r
+    000066C6 77                    4695        LD      (HL),A\r
+    000066C7 23                    4696        INC     HL\r
+    000066C8 77                    4697        LD      (HL),A\r
+    000066C9 21 04 00              4698        LD      HL,4\r
+    000066CC ED 4B C0 86           4699        LD      BC,(global)\r
+    000066D0 09                    4700        ADD     HL,BC\r
+    000066D1 77                    4701        LD      (HL),A\r
+    000066D2 23                    4702        INC     HL\r
+    000066D3 77                    4703        LD      (HL),A\r
+    000066D4 21 0A 00              4704        LD      HL,10\r
+    000066D7 ED 4B C0 86           4705        LD      BC,(global)\r
+    000066DB 09                    4706        ADD     HL,BC\r
+    000066DC 77                    4707        LD      (HL),A\r
+    000066DD 23                    4708        INC     HL\r
+    000066DE 77                    4709        LD      (HL),A\r
+    000066DF 21 0C 00              4710        LD      HL,12\r
+    000066E2 ED 4B C0 86           4711        LD      BC,(global)\r
+    000066E6 09                    4712        ADD     HL,BC\r
+    000066E7 77                    4713        LD      (HL),A\r
+    000066E8 23                    4714        INC     HL\r
+    000066E9 77                    4715        LD      (HL),A\r
+    000066EA 21 08 00              4716        LD      HL,8\r
+    000066ED ED 4B C0 86           4717        LD      BC,(global)\r
+    000066F1 09                    4718        ADD     HL,BC\r
+    000066F2 77                    4719        LD      (HL),A\r
+    000066F3 23                    4720        INC     HL\r
+    000066F4 77                    4721        LD      (HL),A\r
+    000066F5 21 06 00              4722        LD      HL,6\r
+    000066F8 ED 4B C0 86           4723        LD      BC,(global)\r
+    000066FC 09                    4724        ADD     HL,BC\r
+    000066FD 77                    4725        LD      (HL),A\r
+    000066FE 23                    4726        INC     HL\r
+    000066FF 77                    4727        LD      (HL),A\r
+    00006700 21 10 00              4728        LD      HL,16\r
+    00006703 ED 4B C0 86           4729        LD      BC,(global)\r
+    00006707 09                    4730        ADD     HL,BC\r
+    00006708 77                    4731        LD      (HL),A\r
+    00006709 23                    4732        INC     HL\r
+    0000670A 77                    4733        LD      (HL),A\r
+    0000670B 23                    4734        INC     HL\r
+    0000670C 77                    4735        LD      (HL),A\r
+    0000670D 3E 00                 4736        LD      A,BYTE3 GraphicsOpen\r
+    0000670F 21 C9 45              4737        LD      HL,LWRD GraphicsOpen\r
+    00006712 CD 5E 81              4738        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    00006715 21 00 00              4739        LD      HL,0\r
+    00006718 E5                    4740        PUSH    HL\r
+    00006719 E5                    4741        PUSH    HL\r
+    0000671A 0E 00                 4742        LD      C,BYTE3 stringheight01\r
+    0000671C C5                    4743        PUSH    BC\r
+    0000671D 21 39 4B              4744        LD      HL,LWRD stringheight01\r
+    00006720 E5                    4745        PUSH    HL\r
+    00006721 0E 00                 4746        LD      C,BYTE3 stringwidth0\r
+    00006723 C5                    4747        PUSH    BC\r
+    00006724 21 55 4B              4748        LD      HL,LWRD stringwidth0\r
+    00006727 E5                    4749        PUSH    HL\r
+    00006728 11 30 00              4750        LD      DE,48\r
+    0000672B CD D9 67              4751        CALL    LWRD ?0484\r
+    0000672E 21 0C 00              4752        LD      HL,12\r
+    00006731 39                    4753        ADD     HL,SP\r
+    00006732 F9                    4754        LD      SP,HL\r
+    00006733 21 00 00              4755        LD      HL,0\r
+    00006736 E5                    4756        PUSH    HL\r
+    00006737 E5                    4757        PUSH    HL\r
+    00006738 0E 00                 4758        LD      C,BYTE3 stringheight01\r
+    0000673A C5                    4759        PUSH    BC\r
+    0000673B 21 39 4B              4760        LD      HL,LWRD stringheight01\r
+    0000673E E5                    4761        PUSH    HL\r
+    0000673F 0E 00                 4762        LD      C,BYTE3 stringwidth1\r
+    00006741 C5                    4763        PUSH    BC\r
+    00006742 21 66 4B              4764        LD      HL,LWRD stringwidth1\r
+    00006745 E5                    4765        PUSH    HL\r
+    00006746 11 31 00              4766        LD      DE,49\r
+    00006749 CD D9 67              4767        CALL    LWRD ?0484\r
+    0000674C 21 0C 00              4768        LD      HL,12\r
+    0000674F 39                    4769        ADD     HL,SP\r
+    00006750 F9                    4770        LD      SP,HL\r
+    00006751 21 00 00              4771        LD      HL,0\r
+    00006754 E5                    4772        PUSH    HL\r
+    00006755 E5                    4773        PUSH    HL\r
+    00006756 0E 00                 4774        LD      C,BYTE3 stringheight2\r
+    00006758 C5                    4775        PUSH    BC\r
+    00006759 21 4C 4B              4776        LD      HL,LWRD stringheight2\r
+    0000675C E5                    4777        PUSH    HL\r
+    0000675D 0E 00                 4778        LD      C,BYTE3 stringwidth2\r
+    0000675F C5                    4779        PUSH    BC\r
+    00006760 21 6F 4B              4780        LD      HL,LWRD stringwidth2\r
+    00006763 E5                    4781        PUSH    HL\r
+    00006764 11 32 00              4782        LD      DE,50\r
+    00006767 CD D9 67              4783        CALL    LWRD ?0484\r
+    0000676A 21 0C 00              4784        LD      HL,12\r
+    0000676D 39                    4785        ADD     HL,SP\r
+    0000676E F9                    4786        LD      SP,HL\r
+    0000676F 21 0E 00              4787        LD      HL,14\r
+    00006772 ED 4B C0 86           4788        LD      BC,(global)\r
+    00006776 09                    4789        ADD     HL,BC\r
+    00006777 E5                    4790        PUSH    HL\r
+    00006778 11 80 00              4791        LD      DE,128\r
+    0000677B D5                    4792        PUSH    DE\r
+    0000677C 5A                    4793        LD      E,D\r
+    0000677D D5                    4794        PUSH    DE\r
+    0000677E 4B                    4795        LD      C,E\r
+    0000677F 42                    4796        LD      B,D\r
+    00006780 3E 00                 4797        LD      A,BYTE3 Window_new\r
+    00006782 21 3A 55              4798        LD      HL,LWRD Window_new\r
+    00006785 CD 5E 81              4799        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    00006788 F1                    4800        POP     AF\r
+    00006789 F1                    4801        POP     AF\r
+    0000678A 4D                    4802        LD      C,L\r
+    0000678B 44                    4803        LD      B,H\r
+    0000678C E1                    4804        POP     HL\r
+    0000678D 71                    4805        LD      (HL),C\r
+    0000678E 23                    4806        INC     HL\r
+    0000678F 70                    4807        LD      (HL),B\r
+    00006790 21 0E 00              4808        LD      HL,14\r
+    00006793 ED 4B C0 86           4809        LD      BC,(global)\r
+    00006797 09                    4810        ADD     HL,BC\r
+    00006798 56                    4811        LD      D,(HL)\r
+    00006799 23                    4812        INC     HL\r
+    0000679A 66                    4813        LD      H,(HL)\r
+    0000679B 6A                    4814        LD      L,D\r
+    0000679C 11 0A 00              4815        LD      DE,10\r
+    0000679F 19                    4816        ADD     HL,DE\r
+    000067A0 36 01                 4817        LD      (HL),1\r
+    000067A2 23                    4818        INC     HL\r
+    000067A3 72                    4819        LD      (HL),D\r
+    000067A4 21 0E 00              4820        LD      HL,14\r
+    000067A7 ED 4B C0 86           4821        LD      BC,(global)\r
+    000067AB 09                    4822        ADD     HL,BC\r
+    000067AC 56                    4823        LD      D,(HL)\r
+    000067AD 23                    4824        INC     HL\r
+    000067AE 66                    4825        LD      H,(HL)\r
+    000067AF 6A                    4826        LD      L,D\r
+    000067B0 11 17 00              4827        LD      DE,23\r
+    000067B3 19                    4828        ADD     HL,DE\r
+    000067B4 36 B9                 4829        LD      (HL),LOW(rootWindow_handler)\r
+    000067B6 23                    4830        INC     HL\r
+    000067B7 36 5E                 4831        LD      (HL),HIGH(rootWindow_handler)\r
+    000067B9 23                    4832        INC     HL\r
+    000067BA 36 00                 4833        LD      (HL),BYTE3 rootWindow_handler\r
+    000067BC 21 0E 00              4834        LD      HL,14\r
+    000067BF ED 4B C0 86           4835        LD      BC,(global)\r
+    000067C3 09                    4836        ADD     HL,BC\r
+    000067C4 46                    4837        LD      B,(HL)\r
+    000067C5 23                    4838        INC     HL\r
+    000067C6 66                    4839        LD      H,(HL)\r
+    000067C7 68                    4840        LD      L,B\r
+    000067C8 01 1A 00              4841        LD      BC,26\r
+    000067CB 09                    4842        ADD     HL,BC\r
+    000067CC 36 F5                 4843        LD      (HL),LOW(Root_paint)\r
+    000067CE 23                    4844        INC     HL\r
+    000067CF 36 54                 4845        LD      (HL),HIGH(Root_paint)\r
+    000067D1 23                    4846        INC     HL\r
+    000067D2 36 00                 4847        LD      (HL),BYTE3 Root_paint\r
+    000067D4 D1                    4848        POP     DE\r
+    000067D5 C1                    4849        POP     BC\r
+    000067D6 C3 25 81              4850        JP      LWRD ?BANK_FAST_LEAVE_L08\r
+    000067D9                       4851 ?0484:\r
+    000067D9 3E 00                 4852        LD      A,BYTE3 loadFont\r
+    000067DB 21 FC 49              4853        LD      HL,LWRD loadFont\r
+    000067DE C3 5E 81              4854        JP      LWRD ?BANK_CALL_DIRECT_L08\r
+    000067E1                       4855 GUIunit:\r
+    000067E1 C5                    4856        PUSH    BC\r
+    000067E2 D5                    4857        PUSH    DE\r
+    000067E3 21 0E 00              4858        LD      HL,14\r
+    000067E6 ED 4B C0 86           4859        LD      BC,(global)\r
+    000067EA 09                    4860        ADD     HL,BC\r
+    000067EB 5E                    4861        LD      E,(HL)\r
+    000067EC 23                    4862        INC     HL\r
+    000067ED 56                    4863        LD      D,(HL)\r
+    000067EE CD 58 4F              4864        CALL    LWRD ?0453\r
+    000067F1 3E 00                 4865        LD      A,BYTE3 ClearScreen\r
+    000067F3 21 86 48              4866        LD      HL,LWRD ClearScreen\r
+    000067F6 CD 5E 81              4867        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    000067F9 3E 00                 4868        LD      A,BYTE3 GraphicsClose\r
+    000067FB 21 57 46              4869        LD      HL,LWRD GraphicsClose\r
+    000067FE CD 5E 81              4870        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    00006801 D1                    4871        POP     DE\r
+    00006802 C1                    4872        POP     BC\r
+    00006803 C3 25 81              4873        JP      LWRD ?BANK_FAST_LEAVE_L08\r
+    00006806                       4874 GUIgo:\r
+    00006806 CD 88 81              4875        CALL    LWRD ?ENT_AUTO_DIRECT_L09\r
+    00006809 FE FF                 4876        DEFW    65534\r
+    0000680B DD 4E 02              4877        LD      C,(IX+2)\r
+    0000680E DD 46 03              4878        LD      B,(IX+3)\r
+    00006811 21 0E 00              4879        LD      HL,14\r
+    00006814 ED 5B C0 86           4880        LD      DE,(global)\r
+    00006818 19                    4881        ADD     HL,DE\r
+    00006819 5E                    4882        LD      E,(HL)\r
+    0000681A 23                    4883        INC     HL\r
+    0000681B 56                    4884        LD      D,(HL)\r
+    0000681C 3E 00                 4885        LD      A,BYTE3 screenbuilder\r
+    0000681E 21 D7 5E              4886        LD      HL,LWRD screenbuilder\r
+    00006821 CD 5E 81              4887        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    00006824                       4888 ?0313:\r
+    00006824 21 04 00              4889        LD      HL,4\r
+    00006827 ED 4B C0 86           4890        LD      BC,(global)\r
+    0000682B 09                    4891        ADD     HL,BC\r
+    0000682C 7E                    4892        LD      A,(HL)\r
+    0000682D 23                    4893        INC     HL\r
+    0000682E B6                    4894        OR      (HL)\r
+    0000682F C2 C4 68              4895        JP      NZ,?0312\r
+    00006832                       4896 ?0314:\r
+    00006832 21 01 00              4897        LD      HL,1\r
+    00006835 E5                    4898        PUSH    HL\r
+    00006836 23                    4899        INC     HL\r
+    00006837 39                    4900        ADD     HL,SP\r
+    00006838 4D                    4901        LD      C,L\r
+    00006839 44                    4902        LD      B,H\r
+    0000683A 2A C0 86              4903        LD      HL,(global)\r
+    0000683D 23                    4904        INC     HL\r
+    0000683E 23                    4905        INC     HL\r
+    0000683F 5E                    4906        LD      E,(HL)\r
+    00006840 23                    4907        INC     HL\r
+    00006841 56                    4908        LD      D,(HL)\r
+    00006842 CD 87 62              4909        CALL    LWRD ?0441\r
+    00006845 F1                    4910        POP     AF\r
+    00006846 3E 01                 4911        LD      A,1\r
+    00006848 AD                    4912        XOR     L\r
+    00006849 B4                    4913        OR      H\r
+    0000684A 20 D8                 4914        JR      NZ,?0313\r
+    0000684C                       4915 ?0315:\r
+    0000684C DD 4E FE              4916        LD      C,(IX-2)\r
+    0000684F 47                    4917        LD      B,A\r
+    00006850 C5                    4918        PUSH    BC\r
+    00006851 21 D6 84              4919        LD      HL,?0317\r
+    00006854 E5                    4920        PUSH    HL\r
+    00006855 3E 00                 4921        LD      A,BYTE3 printf\r
+    00006857 21 0A 6E              4922        LD      HL,LWRD printf\r
+    0000685A CD 5E 81              4923        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    0000685D F1                    4924        POP     AF\r
+    0000685E F1                    4925        POP     AF\r
+    0000685F AF                    4926        XOR     A\r
+    00006860 DD B6 FE              4927        OR      (IX-2)\r
+    00006863 28 29                 4928        JR      Z,?0319\r
+    00006865                       4929 ?0318:\r
+    00006865 4F                    4930        LD      C,A\r
+    00006866 C5                    4931        PUSH    BC\r
+    00006867 21 0E 00              4932        LD      HL,14\r
+    0000686A ED 5B C0 86           4933        LD      DE,(global)\r
+    0000686E 19                    4934        ADD     HL,DE\r
+    0000686F 5E                    4935        LD      E,(HL)\r
+    00006870 23                    4936        INC     HL\r
+    00006871 56                    4937        LD      D,(HL)\r
+    00006872 21 0E 00              4938        LD      HL,14\r
+    00006875 ED 4B C0 86           4939        LD      BC,(global)\r
+    00006879 09                    4940        ADD     HL,BC\r
+    0000687A 46                    4941        LD      B,(HL)\r
+    0000687B 23                    4942        INC     HL\r
+    0000687C 66                    4943        LD      H,(HL)\r
+    0000687D 68                    4944        LD      L,B\r
+    0000687E 01 17 00              4945        LD      BC,23\r
+    00006881 09                    4946        ADD     HL,BC\r
+    00006882 4E                    4947        LD      C,(HL)\r
+    00006883 23                    4948        INC     HL\r
+    00006884 46                    4949        LD      B,(HL)\r
+    00006885 23                    4950        INC     HL\r
+    00006886 7E                    4951        LD      A,(HL)\r
+    00006887 69                    4952        LD      L,C\r
+    00006888 60                    4953        LD      H,B\r
+    00006889 01 01 00              4954        LD      BC,1\r
+    0000688C 18 29                 4955        JR      ?0370\r
+    0000688E                       4956 ?0319:\r
+    0000688E DD 4E FF              4957        LD      C,(IX-1)\r
+    00006891 C5                    4958        PUSH    BC\r
+    00006892 21 0E 00              4959        LD      HL,14\r
+    00006895 ED 5B C0 86           4960        LD      DE,(global)\r
+    00006899 19                    4961        ADD     HL,DE\r
+    0000689A 5E                    4962        LD      E,(HL)\r
+    0000689B 23                    4963        INC     HL\r
+    0000689C 56                    4964        LD      D,(HL)\r
+    0000689D 21 0E 00              4965        LD      HL,14\r
+    000068A0 ED 4B C0 86           4966        LD      BC,(global)\r
+    000068A4 09                    4967        ADD     HL,BC\r
+    000068A5 46                    4968        LD      B,(HL)\r
+    000068A6 23                    4969        INC     HL\r
+    000068A7 66                    4970        LD      H,(HL)\r
+    000068A8 68                    4971        LD      L,B\r
+    000068A9 01 17 00              4972        LD      BC,23\r
+    000068AC 09                    4973        ADD     HL,BC\r
+    000068AD 4E                    4974        LD      C,(HL)\r
+    000068AE 23                    4975        INC     HL\r
+    000068AF 46                    4976        LD      B,(HL)\r
+    000068B0 23                    4977        INC     HL\r
+    000068B1 7E                    4978        LD      A,(HL)\r
+    000068B2 69                    4979        LD      L,C\r
+    000068B3 60                    4980        LD      H,B\r
+    000068B4 01 02 00              4981        LD      BC,2\r
+    000068B7                       4982 ?0370:\r
+    000068B7 CD 5E 81              4983        CALL    LWRD ?BANK_CALL_DIRECT_L08\r
+    000068BA E1                    4984        POP     HL\r
+    000068BB                       4985 ?0320:\r
+    000068BB DD 46 FE              4986        LD      B,(IX-2)\r
+    000068BE DD 70 FF              4987        LD      (IX-1),B\r
+    000068C1                       4988 ?0316:\r
+    000068C1 C3 24 68              4989        JP      LWRD ?0313\r
+    000068C4                       4990 ?0312:\r
+    000068C4 C3 1F 81              4991        JP      LWRD ?BANK_LEAVE_DIRECT_L08\r
                                    4992        RSEG    CSTR\r
-    000084E3                       4993 ?0001:\r
-    000084E3 2F 64 65 76 2F 6C 63  4994        DEFB    '/dev/lcd0'\r
+    000084B5                       4993 ?0001:\r
+    000084B5 2F 64 65 76 2F 6C 63  4994        DEFB    '/dev/lcd0'\r
              64 30\r
-    000084EC 00                    4995        DEFB    0\r
-    000084ED                       4996 ?0221:\r
-    000084ED 4F 4B                 4997        DEFB    'OK'\r
-    000084EF 00                    4998        DEFB    0\r
-    000084F0                       4999 ?0222:\r
-    000084F0 43 61 6E 63 65 6C     5000        DEFB    'Cancel'\r
-    000084F6 00                    5001        DEFB    0\r
-    000084F7                       5002 ?0249:\r
-    000084F7 00                    5003        DEFB    0\r
-    000084F8                       5004 ?0299:\r
-    000084F8 4D 65 73 73 61 67 65  5005        DEFB    'Message Box'\r
+    000084BE 00                    4995        DEFB    0\r
+    000084BF                       4996 ?0221:\r
+    000084BF 4F 4B                 4997        DEFB    'OK'\r
+    000084C1 00                    4998        DEFB    0\r
+    000084C2                       4999 ?0222:\r
+    000084C2 43 61 6E 63 65 6C     5000        DEFB    'Cancel'\r
+    000084C8 00                    5001        DEFB    0\r
+    000084C9                       5002 ?0249:\r
+    000084C9 00                    5003        DEFB    0\r
+    000084CA                       5004 ?0299:\r
+    000084CA 4D 65 73 73 61 67 65  5005        DEFB    'Message Box'\r
              20 42 6F 78\r
-    00008503 00                    5006        DEFB    0\r
-    00008504                       5007 ?0317:\r
-    00008504 30 78 25 30 32 78     5008        DEFB    '0x%02x'\r
-    0000850A 0A 00                 5009        DEFB    10,0\r
+    000084D5 00                    5006        DEFB    0\r
+    000084D6                       5007 ?0317:\r
+    000084D6 30 78 25 30 32 78     5008        DEFB    '0x%02x'\r
+    000084DC 0A 00                 5009        DEFB    10,0\r
                                    5010        RSEG    CONST\r
-    000084AF                       5011 ?0000:\r
-    000084AF 1B                    5012        DEFB    27\r
-    000084B0 4B                    5013        DEFB    'K'\r
-    000084B1                       5014 ?0002:\r
-    000084B1 1B                    5015        DEFB    27\r
-    000084B2 53                    5016        DEFB    'S'\r
-    000084B3 00                    5017        DEFB    0\r
-    000084B4 00                    5018        DEFB    0\r
-    000084B5                       5019 ?0003:\r
-    000084B5 1B                    5020        DEFB    27\r
-    000084B6 43                    5021        DEFB    'C'\r
-    000084B7 00                    5022        DEFB    0\r
-    000084B8 00                    5023        DEFB    0\r
-    000084B9                       5024 ?0004:\r
-    000084B9 1B                    5025        DEFB    27\r
-    000084BA 4E                    5026        DEFB    'N'\r
-    000084BB 00                    5027        DEFB    0\r
-    000084BC 00                    5028        DEFB    0\r
-    000084BD                       5029 ?0005:\r
-    000084BD 1B                    5030        DEFB    27\r
-    000084BE 52                    5031        DEFB    'R'\r
-    000084BF 00                    5032        DEFB    0\r
-    000084C0 00                    5033        DEFB    0\r
-    000084C1                       5034 ?0006:\r
-    000084C1 1B                    5035        DEFB    27\r
-    000084C2 46                    5036        DEFB    'F'\r
-    000084C3 00                    5037        DEFB    0\r
-    000084C4 00                    5038        DEFB    0\r
-    000084C5                       5039 ?0007:\r
-    000084C5 1B                    5040        DEFB    27\r
-    000084C6 68                    5041        DEFB    'h'\r
-    000084C7 00                    5042        DEFB    0\r
-    000084C8 00                    5043        DEFB    0\r
-    000084C9                       5044 ?0008:\r
-    000084C9 1B                    5045        DEFB    27\r
-    000084CA 5A                    5046        DEFB    'Z'\r
-    000084CB 00                    5047        DEFB    0\r
-    000084CC 00                    5048        DEFB    0\r
-    000084CD 00                    5049        DEFB    0\r
-    000084CE 00                    5050        DEFB    0\r
-    000084CF 00                    5051        DEFB    0\r
-    000084D0                       5052 ?0009:\r
-    000084D0 1B                    5053        DEFB    27\r
-    000084D1 45                    5054        DEFB    'E'\r
-    000084D2 00                    5055        DEFB    0\r
-    000084D3                       5056 ?0010:\r
-    000084D3 1B                    5057        DEFB    27\r
-    000084D4 00                    5058        DEFB    0\r
-    000084D5                       5059 ?0286:\r
-    000084D5 2F                    5060        DEFB    '/'\r
-    000084D6 77                    5061        DEFB    'w'\r
-    000084D7 6E                    5062        DEFB    'n'\r
-    000084D8 64                    5063        DEFB    'd'\r
-    000084D9 2F                    5064        DEFB    '/'\r
-    000084DA 30                    5065        DEFB    '0'\r
-    000084DB 30                    5066        DEFB    '0'\r
-    000084DC 30                    5067        DEFB    '0'\r
-    000084DD 30                    5068        DEFB    '0'\r
-    000084DE 2E                    5069        DEFB    '.'\r
-    000084DF 73                    5070        DEFB    's'\r
-    000084E0 63                    5071        DEFB    'c'\r
-    000084E1 72                    5072        DEFB    'r'\r
-    000084E2 00                    5073        DEFB    0\r
+    00008481                       5011 ?0000:\r
+    00008481 1B                    5012        DEFB    27\r
+    00008482 4B                    5013        DEFB    'K'\r
+    00008483                       5014 ?0002:\r
+    00008483 1B                    5015        DEFB    27\r
+    00008484 53                    5016        DEFB    'S'\r
+    00008485 00                    5017        DEFB    0\r
+    00008486 00                    5018        DEFB    0\r
+    00008487                       5019 ?0003:\r
+    00008487 1B                    5020        DEFB    27\r
+    00008488 43                    5021        DEFB    'C'\r
+    00008489 00                    5022        DEFB    0\r
+    0000848A 00                    5023        DEFB    0\r
+    0000848B                       5024 ?0004:\r
+    0000848B 1B                    5025        DEFB    27\r
+    0000848C 4E                    5026        DEFB    'N'\r
+    0000848D 00                    5027        DEFB    0\r
+    0000848E 00                    5028        DEFB    0\r
+    0000848F                       5029 ?0005:\r
+    0000848F 1B                    5030        DEFB    27\r
+    00008490 52                    5031        DEFB    'R'\r
+    00008491 00                    5032        DEFB    0\r
+    00008492 00                    5033        DEFB    0\r
+    00008493                       5034 ?0006:\r
+    00008493 1B                    5035        DEFB    27\r
+    00008494 46                    5036        DEFB    'F'\r
+    00008495 00                    5037        DEFB    0\r
+    00008496 00                    5038        DEFB    0\r
+    00008497                       5039 ?0007:\r
+    00008497 1B                    5040        DEFB    27\r
+    00008498 68                    5041        DEFB    'h'\r
+    00008499 00                    5042        DEFB    0\r
+    0000849A 00                    5043        DEFB    0\r
+    0000849B                       5044 ?0008:\r
+    0000849B 1B                    5045        DEFB    27\r
+    0000849C 5A                    5046        DEFB    'Z'\r
+    0000849D 00                    5047        DEFB    0\r
+    0000849E 00                    5048        DEFB    0\r
+    0000849F 00                    5049        DEFB    0\r
+    000084A0 00                    5050        DEFB    0\r
+    000084A1 00                    5051        DEFB    0\r
+    000084A2                       5052 ?0009:\r
+    000084A2 1B                    5053        DEFB    27\r
+    000084A3 45                    5054        DEFB    'E'\r
+    000084A4 00                    5055        DEFB    0\r
+    000084A5                       5056 ?0010:\r
+    000084A5 1B                    5057        DEFB    27\r
+    000084A6 00                    5058        DEFB    0\r
+    000084A7                       5059 ?0286:\r
+    000084A7 2F                    5060        DEFB    '/'\r
+    000084A8 77                    5061        DEFB    'w'\r
+    000084A9 6E                    5062        DEFB    'n'\r
+    000084AA 64                    5063        DEFB    'd'\r
+    000084AB 2F                    5064        DEFB    '/'\r
+    000084AC 30                    5065        DEFB    '0'\r
+    000084AD 30                    5066        DEFB    '0'\r
+    000084AE 30                    5067        DEFB    '0'\r
+    000084AF 30                    5068        DEFB    '0'\r
+    000084B0 2E                    5069        DEFB    '.'\r
+    000084B1 73                    5070        DEFB    's'\r
+    000084B2 63                    5071        DEFB    'c'\r
+    000084B3 72                    5072        DEFB    'r'\r
+    000084B4 00                    5073        DEFB    0\r
                                    5074        RSEG    UDATA0\r
-    0000873F                       5075 global:\r
-    0000873F                       5076        DEFS    2\r
+    000086C0                       5075 global:\r
+    000086C0                       5076        DEFS    2\r
     00000002                       5077        END\r
 \fASxxxx Assembler V03.11  (Zilog Z80 / Hitachi HD64180), page 1.\r
 Hexadecimal [32-Bits]\r
index f3ea38b..b789884 100644 (file)
@@ -271,13 +271,15 @@ as-z80 -l -o testsystem.s01
 \r
 iccz80 -S -w -mb -v1 -z -A -I..\..\..\include\ -I..\cmx\ -I..\uzi\ -I..\libc\ -DDEBUG=2 ..\uzi\touchscreen\r
 @if errorlevel 1 goto failure\r
-del testsystem.r01\r
+del touchscreen.r01\r
 as-z80 -l -o touchscreen.s01\r
 @if errorlevel 1 goto failure\r
 \r
+rem link everything\r
+rem link everything\r
 rem link everything\r
 \r
-link-z80 -f kernel\r
+link-z80 -i -f kernel\r
 @if errorlevel 1 goto failure\r
 ihex2bin -l kernel.i86 ..\..\..\bin\kernel.bin\r
 @if errorlevel 1 goto failure\r
similarity index 89%
rename from src/kernel/build.ban%
rename to src/kernel/build.ban.save
index 83196ca..a230af3 100644 (file)
@@ -269,9 +269,29 @@ del testsystem.r01
 as-z80 -l -o testsystem.s01\r
 @if errorlevel 1 goto failure\r
 \r
+iccz80 -S -w -mb -v1 -z -A -I..\..\..\include\ -I..\cmx\ -I..\uzi\ -I..\libc\ -DDEBUG=2 ..\uzi\touchscreen\r
+@if errorlevel 1 goto failure\r
+del touchscreen.r01\r
+as-z80 -l -o touchscreen.s01\r
+@if errorlevel 1 goto failure\r
+\r
+iccz80 -S -w -mb -v1 -z -A -I..\..\..\include\ -I..\cmx\ -I..\uzi\ -I..\libc\ -DDEBUG=2 -DVAX ..\uzi\xfs\r
+@if errorlevel 1 goto failure\r
+del xfs.r01\r
+as-z80 -l -o xfs.s01\r
+@if errorlevel 1 goto failure\r
+\r
+iccz80 -S -w -mb -v1 -z -A -I..\..\..\include\ -I..\cmx\ -I..\uzi\ -I..\libc\ -DVAX -DUTIL -DDEBUG=1 -c ..\uzi\utils.c\r
+@if errorlevel 1 goto failure\r
+del utils.r01\r
+as-z80 -l -o utils.s01\r
+@if errorlevel 1 goto failure\r
+\r
+rem link everything\r
+rem link everything\r
 rem link everything\r
 \r
-link-z80 -f kernel\r
+link-z80 -i -f kernel\r
 @if errorlevel 1 goto failure\r
 ihex2bin -l kernel.i86 ..\..\..\bin\kernel.bin\r
 @if errorlevel 1 goto failure\r
index 8ba7ba6..6f530b5 100644 (file)
@@ -102,7 +102,7 @@ _escc0_setup::
 \r
        ld      d,12\r
        out     (c),d                   ; address WR12\r
-       ld      a,6 ; 6=57600 4=76800 2=115200\r
+       ld      a,6 ; 10=38400 6=57600 4=76800 2=115200 (RPB: added divisor 10)\r
        out     (c),a                   ; divisor 0002h indicates 115200 bps\r
        inc     d                       ; ld d,13\r
        out     (c),d                   ; address WR13\r
@@ -210,7 +210,8 @@ _escc1_setup::
 \r
        ld      d,12\r
        out     (c),d                   ; address WR12\r
-       ld      a,6 ; 6=57600 4=76800 2=115200\r
+       ld      a,10 ; 10=38400 6=57600 4=76800 2=115200 (RPB: added divisor 10)\r
+                                       ; RPB: set speed to 38400 on escc2\r
        out     (c),a                   ; divisor 0002h indicates 115200 bps\r
        inc     d                       ; ld d,13\r
        out     (c),d                   ; address WR13\r
diff --git a/src/kernel/cmx/escc.asm% b/src/kernel/cmx/escc.asm%
new file mode 100644 (file)
index 0000000..abfbac4
--- /dev/null
@@ -0,0 +1,980 @@
+; escc.asm\r
+; Interrupt driven serial driver for built in Z180 ports (Hytech CMX)\r
+\r
+; -----------------------------------------------------------------------------\r
+\r
+$ io64180.inc\r
+\r
+       extern  _sdevs\r
+       extern  _K_OS_Intrp_Entry\r
+       extern  _K_OS_Intrp_Exit\r
+       extern  ?BANK_CALL_DIRECT_L08\r
+       extern  ?BANK_FAST_LEAVE_L08\r
+       extern  abyte\r
+\r
+XMIT_SIZE equ  256     ; must match cxfuncs.h, size of transmitter buffer\r
+RECV_SIZE equ  256     ; must match cxfuncs.h, size of reciever buffer\r
+\r
+; must match cxfuncs.h, fields in SDEV structure:  ** ASSUMES 3 BYTE CODE PTRS!\r
+sxmit  equ     0                       ; offset of embedded CMX XMIT structure\r
+srecv  equ     13                      ; offset of embedded CMX RECV structure\r
+sport  equ     13+13\r
+stxvec equ     13+13+1                 ; called by interrupt, returns l=chr\r
+srxvec equ     13+13+4                 ; called by interrupt, passed c=chr\r
+smsvec equ     13+13+7                 ; called by interrupt, passed c=bits\r
+sesvec equ     13+13+10                ; called by interrupt, passed c=bits\r
+stevec equ     13+13+13                ; vector to start asci/escc transmitter\r
+stdvec equ     13+13+16                ; vector to stop asci/escc transmitter\r
+sstat  equ     13+13+19                ; address to read status (8530 02xxh)\r
+stxdr  equ     13+13+20                ; address to write tx data (8530 02xxh)\r
+srxdr  equ     13+13+21                ; address to read rx data (8530 02xxh)\r
+swr1   equ     13+13+22                ; wr1 contents (interrupt enable bits)\r
+swr5   equ     13+13+23                ; wr5 contents (modem control outputs)\r
+swr15  equ     13+13+24                ; wr15 contents (modem control int ena)\r
+sinint equ     13+13+25                ; says whether wr1 really reflects wr1!\r
+sdvlen equ     13+13+26                ; byte size of block per serial port\r
+\r
+; -----------------------------------------------------------------------------\r
+\r
+       rseg    CODE\r
+\r
+       public  _escc0_setup\r
+\r
+_escc0_setup::\r
+       push    bc\r
+       push    de\r
+\r
+       ld      iy,_sdevs+2*sdvlen\r
+       ld      (iy+sstat),.low.AC8530\r
+       ld      (iy+stxdr),.low.AD8530\r
+       ld      (iy+srxdr),.low.AD8530\r
+       ld      (iy+stevec),.low._escc_tx_enable\r
+       ld      (iy+stevec+1),.high._escc_tx_enable\r
+       ld      (iy+stevec+2),BYTE3 _escc_tx_enable\r
+\r
+       ld      bc,AC8530\r
+       di                              ; so int doesn't corrupt address reg\r
+       in      (c) ;f,(c)              ; reset pointer bits\r
+\r
+       ld      d,9\r
+       out     (c),d                   ; address WR9\r
+       ld      a,00000010b\r
+       out     (c),a                   ; mie off, status lo, no vector\r
+\r
+       nop                             ; ld d,9\r
+       out     (c),d                   ; address WR9\r
+       ld      a,10000010b\r
+       out     (c),a                   ; channel reset A, status lo, no vector\r
+\r
+       ; allow at least 4 clock cycles for reset\r
+\r
+       ld      d,5\r
+       out     (c),d                   ; address WR5\r
+       ld      a,11101010b\r
+       out     (c),a                   ; dtr on, 8 data, tx enable, rts on\r
+       ld      (iy+swr5),a             ; set up shadow for swr5sb, swr5rb\r
+\r
+       ld      d,2\r
+       out     (c),d                   ; address WR2\r
+       sub     a\r
+       out     (c),a                   ; redundantly set up interrupt vector\r
+\r
+       ld      d,4\r
+       out     (c),d                   ; address WR4\r
+       ld      a,01000100b             ; *16 with 1 stop bit, no parity\r
+       out     (c),a\r
+\r
+       ld      d,3\r
+       out     (c),d                   ; address WR3\r
+       ld      a,11000001b\r
+       out     (c),a                   ; 8 data, auto disable, rx enable\r
+\r
+       ld      d,15\r
+       out     (c),d                   ; address WR15\r
+       sub     a\r
+       out     (c),a                   ; modem status interrupts disabled\r
+       ld      (iy+swr15),a            ; set up shadow for swr15s, swr15r\r
+\r
+       dec     d                       ; ld d,14\r
+       out     (c),d                   ; address WR14\r
+       sub     a\r
+       out     (c),a                   ; disable baud rate generator\r
+\r
+       ld      d,12\r
+       out     (c),d                   ; address WR12\r
+       ld      a,10 ; 10=38400 6=57600 4=76800 2=115200\r
+       out     (c),a                   ; divisor 0002h indicates 115200 bps\r
+       inc     d                       ; ld d,13\r
+       out     (c),d                   ; address WR13\r
+       sub     a\r
+       out     (c),a                   ; divisor 0002h indicates 115200 bps\r
+       inc     d                       ; ld d,14\r
+       out     (c),d                   ; address WR14\r
+       ld      a,00000010b\r
+       out     (c),a                   ; set pclk input\r
+       nop                             ; ld d,14\r
+       out     (c),d                   ; address WR14\r
+       or      1\r
+       out     (c),a                   ; enable baud rate generator\r
+       ld      d,11\r
+       out     (c),d                   ; address WR11\r
+       ld      a,01010010b             ; use baud rate generator\r
+       out     (c),a\r
+\r
+       ld      d,1\r
+       out     (c),d                   ; address WR1\r
+       ld      a,00010001b\r
+       out     (c),a                   ; rx int on all, no tx int, ext int\r
+       ld      (iy+swr1),a             ; set up shadow for swr1sb, swr1rb\r
+\r
+       ld      a,00010000b             ; reset ext status ints\r
+       out     (c),a\r
+\r
+       ld      d,9\r
+       out     (c),d                   ; address WR9\r
+       ld      a,00001010b             ; mie on, status lo, no vector\r
+       out     (c),a\r
+\r
+; not yet... this will be done by the escc1 setup routine when both ports ok\r
+;      in0     a,(ITC)\r
+;      or      INT2SW\r
+;      out0    (ITC),a\r
+\r
+       ei\r
+\r
+       pop     de\r
+       pop     bc\r
+       jp      ?BANK_FAST_LEAVE_L08\r
+\r
+       public  _escc1_setup\r
+\r
+_escc1_setup::\r
+       push    bc\r
+       push    de\r
+\r
+       ld      iy,_sdevs+3*sdvlen\r
+       ld      (iy+sstat),.low.BC8530\r
+       ld      (iy+stxdr),.low.BD8530\r
+       ld      (iy+srxdr),.low.BD8530\r
+       ld      (iy+stevec),.low._escc_tx_enable\r
+       ld      (iy+stevec+1),.high._escc_tx_enable\r
+       ld      (iy+stevec+2),BYTE3 _escc_tx_enable\r
+\r
+       ld      bc,BC8530\r
+       di                              ; so int doesn't corrupt address reg\r
+       in      (c) ;f,(c)              ; reset pointer bits\r
+\r
+       ld      d,9\r
+       out     (c),d                   ; address WR9\r
+       ld      a,00000010b\r
+       out     (c),a                   ; mie off, status lo, no vector\r
+\r
+       nop                             ; ld d,9\r
+       out     (c),d                   ; address WR9\r
+       ld      a,01000010b\r
+       out     (c),a                   ; channel reset B, status lo, no vector\r
+\r
+       ; allow at least 4 clock cycles for reset\r
+\r
+       ld      d,5\r
+       out     (c),d                   ; address WR5\r
+       ld      a,11101010b\r
+       out     (c),a                   ; dtr on, 8 data, tx enable, rts on\r
+       ld      (iy+swr5),a             ; set up shadow for swr5sb, swr5rb\r
+\r
+       ld      d,2\r
+       out     (c),d                   ; address WR2\r
+       sub     a\r
+       out     (c),a                   ; redundantly set up interrupt vector\r
+\r
+       ld      d,4\r
+       out     (c),d                   ; address WR4\r
+       ld      a,01000100b             ; *16 with 1 stop bit, no parity\r
+       out     (c),a\r
+\r
+       ld      d,3\r
+       out     (c),d                   ; address WR3\r
+       ld      a,11000001b\r
+       out     (c),a                   ; 8 data, auto disable, rx enable\r
+\r
+       ld      d,15\r
+       out     (c),d                   ; address WR15\r
+       sub     a\r
+       out     (c),a                   ; modem status interrupts disabled\r
+       ld      (iy+swr15),a            ; set up shadow for swr15s, swr15r\r
+\r
+       dec     d                       ; ld d,14\r
+       out     (c),d                   ; address WR14\r
+       sub     a\r
+       out     (c),a                   ; disable baud rate generator\r
+\r
+       ld      d,12\r
+       out     (c),d                   ; address WR12\r
+       ld      a,6 ; 10=38400 6=57600 4=76800 2=115200\r
+       out     (c),a                   ; divisor 0002h indicates 115200 bps\r
+       inc     d                       ; ld d,13\r
+       out     (c),d                   ; address WR13\r
+       sub     a\r
+       out     (c),a                   ; divisor 0002h indicates 115200 bps\r
+       inc     d                       ; ld d,14\r
+       out     (c),d                   ; address WR14\r
+       ld      a,00000010b\r
+       out     (c),a                   ; set pclk input\r
+       nop                             ; ld d,14\r
+       out     (c),d                   ; address WR14\r
+       inc     a                       ; or 1\r
+       out     (c),a                   ; enable baud rate generator\r
+       ld      d,11\r
+       out     (c),d                   ; address WR11\r
+       ld      a,01010010b             ; use baud rate generator\r
+       out     (c),a\r
+\r
+       ld      d,1\r
+       out     (c),d                   ; address WR1\r
+       ld      a,00010001b\r
+       out     (c),a                   ; rx int on all, no tx int, ext int\r
+       ld      (iy+swr1),a             ; set up shadow for swr1sb, swr1rb\r
+\r
+; this is only done for S3DEV, and is intended to disconnect LAN optocoupler\r
+       ld      d,5\r
+       out     (c),d                   ; address WR5\r
+       ld      a,11101000b\r
+       out     (c),a                   ; dtr on, 8 data, tx enable, rts off\r
+       ld      (iy+swr5),a             ; update our knowledge of wr5 contents\r
+\r
+       ld      a,00010000b             ; reset ext status ints\r
+       out     (c),a\r
+\r
+       ld      d,9\r
+       out     (c),d                   ; address WR9\r
+       ld      a,00001010b             ; mie on, status lo, no vector\r
+       out     (c),a\r
+\r
+       in0     a,(ITC)\r
+       or      INT2SW\r
+       out0    (ITC),a\r
+\r
+       ei\r
+\r
+       pop     de\r
+       pop     bc\r
+       jp      ?BANK_FAST_LEAVE_L08\r
+\r
+; -----------------------------------------------------------------------------\r
+\r
+       public  _escc_tx_enable\r
+\r
+_escc_tx_enable::\r
+       push    bc\r
+       push    de\r
+\r
+;      ld      iy,_sdevs+0*sdvlen\r
+       push    de\r
+       pop     iy\r
+       di\r
+ .if 1\r
+       ld      hl,LWRD swr1te\r
+       ld      a,BYTE3 swr1te\r
+       call    ?BANK_CALL_DIRECT_L08\r
+ .else\r
+       call    swr1te\r
+ .endif\r
+       ei\r
+\r
+       pop     de\r
+       pop     bc\r
+;      ret\r
+       jp      ?BANK_FAST_LEAVE_L08\r
+\r
+       public  _escc_tx_disable\r
+\r
+_escc_tx_disable::\r
+       push    bc\r
+       push    de\r
+\r
+;      ld      iy,_sdevs+0*sdvlen\r
+       push    de\r
+       pop     iy\r
+       di\r
+ .if 1\r
+       ld      hl,LWRD swr1td\r
+       ld      a,BYTE3 swr1td\r
+       call    ?BANK_CALL_DIRECT_L08\r
+ .else\r
+       call    swr1td\r
+ .endif\r
+       ei\r
+\r
+       pop     de\r
+       pop     bc\r
+;      ret\r
+       jp      ?BANK_FAST_LEAVE_L08\r
+\r
+; -----------------------------------------------------------------------------\r
+\r
+       rseg    RCODE\r
+\r
+       public  _int2_vector\r
+\r
+_int2_vector::\r
+ .if 1\r
+ ;ld a,'.'\r
+ ;out0 (TDR1),a\r
+       call    _K_OS_Intrp_Entry\r
+ .else\r
+       push    af\r
+       push    bc\r
+       push    de\r
+       push    hl\r
+       push    iy\r
+ .endif\r
+\r
+ .if 1\r
+       ld      bc,AC8530\r
+       in      (c) ;f,(c)              ; reset pointer bits\r
+\r
+       ld      d,9\r
+       out     (c),d                   ; address WR9\r
+       ld      a,00000010b\r
+       out     (c),a                   ; mie off, status lo, no vector\r
+       ei                              ; allow other interrupts to occur\r
+ .endif\r
+\r
+ .if 1\r
+ .if 1 ; prevent overrun by polling the ports after each interrupt\r
+       ld      hl,LWRD si23iv\r
+       ld      a,BYTE3 si23iv\r
+       call    ?BANK_CALL_DIRECT_L08\r
+\r
+       ; routine to allow arbitrary tests for rx char (prevents overrun)\r
+       ld      bc,AC8530               ; enter with interrupts disabled!!\r
+       in      a,(c)                   ; read rr0 (channel a = s2dev)\r
+       rra                             ; test bit 0 = rx char available\r
+\r
+       ld      hl,LWRD si2rx\r
+       ld      a,BYTE3 si2rx\r
+       call    c,?BANK_CALL_DIRECT_L08 ; something ready, use the normal si2rx\r
+                                       ; (this clobbers bc if char received)\r
+       ld      bc,BC8530\r
+       in      a,(c)                   ; read rr0\r
+       rra                             ; test bit 0 = rx char available\r
+\r
+       ld      hl,LWRD si3rx\r
+       ld      a,BYTE3 si3rx\r
+       call    c,?BANK_CALL_DIRECT_L08 ; something ready, use the normal si2rx\r
+                                       ; (this clobbers bc if char received)\r
+ .else\r
+       ld      hl,LWRD si23\r
+       ld      a,BYTE3 si23\r
+       call    ?BANK_CALL_DIRECT_L08\r
+ .endif\r
+ .else\r
+       call    si23\r
+ .endif\r
+\r
+ .if 1\r
+       ld      bc,AC8530\r
+       di                              ; prevent ints occurring immediately\r
+       in      (c) ;f,(c)              ; reset pointer bits\r
+\r
+       ld      d,9\r
+       out     (c),d                   ; address WR9\r
+       ld      a,00001010b\r
+       out     (c),a                   ; mie on, status lo, no vector\r
+ .endif\r
+\r
+ .if 1\r
+       call    _K_OS_Intrp_Exit\r
+ .else\r
+       pop     iy\r
+       pop     hl\r
+       pop     de\r
+       pop     bc\r
+       pop     af\r
+       ei\r
+       ret\r
+ .endif\r
+\r
+; -----------------------------------------------------------------------------\r
+\r
+       rseg    CODE\r
+\r
+ .if 0 ; 17sep02 routine to allow arbitrary tests for rx char (prevents overrun)\r
+ .if 1 ; 17sep02 enhancement for extra safety against overruns (esp. @ 6.144 mhz)\r
+public si23\r
+\r
+si23:\r
+ .if 1\r
+       ld      hl,LWRD si23iv\r
+       ld      a,BYTE3 si23iv\r
+       call    ?BANK_CALL_DIRECT_L08\r
+ .else\r
+       call    LWRD si23iv             ; first process interrupt via vector\r
+ .endif\r
+       ; fall into si23rx routine (it could also be useful during other ints!)\r
+ .endif\r
+\r
+public si23rx\r
+\r
+si23rx:        ; routine to allow arbitrary tests for rx char (prevents overrun)\r
+       ld      bc,AC8530               ; enter with interrupts disabled!!\r
+       in      a,(c)                   ; read rr0 (channel a = s2dev)\r
+       rra                             ; test bit 0 = rx char available\r
+ .if 1\r
+       ld      hl,LWRD si2rx\r
+       ld      a,BYTE3 si2rx\r
+       call    c,?BANK_CALL_DIRECT_L08 ; something ready, use the normal si2rx\r
+ .else\r
+       call    c,LWRD si2rx            ; something ready, use the normal si2rx\r
+ .endif\r
+                                       ; (this clobbers bc if char received)\r
+       ld      bc,BC8530\r
+       in      a,(c)                   ; read rr0\r
+       rra                             ; test bit 0 = rx char available\r
+ .if 1\r
+       jp      nc,?BANK_FAST_LEAVE_L08 ; nothing ready, no-op (ints disabled)\r
+ .else\r
+       ret     nc                      ; nothing ready, no-op (ints disabled)\r
+ .endif\r
+       ; fall into the same si3rx routine as used by the interrupt system\r
+       jp      LWRD si3rx\r
+ .endif\r
+\r
+ .if 0\r
+silly: ; enter with special receive condition status byte in e\r
+ ld a,e\r
+ rrca\r
+ rrca\r
+ rrca\r
+ rrca\r
+ and 7\r
+ add a,'0'\r
+ rst 18h ;call abyte\r
+ ret\r
+ .endif\r
+\r
+ .if 0\r
+sillyx: ; enter with modem control input status byte in e\r
+ ld a,e\r
+ and 28h\r
+ rrca ; 14h\r
+ rrca ; 0ah\r
+ rrca ; 05h\r
+ add a,'0'\r
+ rst 18h ;call abyte\r
+ ret\r
+ .endif\r
+\r
+si3tx:\r
+ .if 1\r
+       ld      iy,_sdevs+3*sdvlen\r
+ .endif\r
+\r
+ .if 1\r
+       ld      de,_sdevs+3*sdvlen      ; de = 1st parameter (word16)\r
+\r
+       ld      hl,(_sdevs+3*sdvlen+stxvec)\r
+       ld      a,(_sdevs+3*sdvlen+stxvec+2)\r
+       call    ?BANK_CALL_DIRECT_L08\r
+\r
+       inc     h                       ; hl = 0ffffh indicates no char for tx\r
+       jp      z,LWRD swr1td\r
+\r
+       ; client has provided character for tx, send it\r
+       ld      bc,BD8530\r
+       out     (c),l                   ; send char on behalf of client\r
+ .else\r
+       ld      bc,(_sdevs+3*sdvlen+stxvec)\r
+       call    0eb53h                  ; winved\r
+ di ;;!! 24may02 for no good reason\r
+       jp      c,swr1td ;jr c,si3td\r
+\r
+       ; client has provided character for tx, send it\r
+       ld      bc,BD8530\r
+       out     (c),e                   ; send char on behalf of client\r
+ .endif\r
+ .if 1\r
+       jp      ?BANK_FAST_LEAVE_L08\r
+ .else\r
+       ret ;jr si23                    ; check for further interrupts pending\r
+ .endif\r
+\r
+;si3td:        call    swr1td                  ; serial write register 1 tx disable\r
+;      ret ;jr si23                    ; check for further interrupts pending\r
+\r
+ .if 1 ; 16dec01 so that swint can be a regular modem status handler\r
+si3ms:\r
+ .if 0\r
+       ld      iy,_sdevs+3*sdvlen\r
+ .endif\r
+       in      e,(c)                   ; read modem status inputs for client\r
+\r
+ .if 0\r
+ call sillyx\r
+ .endif\r
+\r
+       ld      a,00010000b             ; reset ext status interrupts\r
+       out     (c),a\r
+\r
+ .if 1\r
+       ld      c,e                     ; c = 2nd parameter (byte)\r
+       ld      de,_sdevs+3*sdvlen      ; de = 1st parameter (word16)\r
+\r
+       ld      hl,(_sdevs+3*sdvlen+smsvec)\r
+       ld      a,(_sdevs+3*sdvlen+smsvec+2)\r
+ .if 1\r
+       jp      LWRD ?BANK_JMP_DIRECT_L08\r
+ .else\r
+       jp      ?BANK_CALL_DIRECT_L08\r
+ .endif\r
+ .else\r
+       ld      bc,(_sdevs+3*sdvlen+smsvec)\r
+;      call    0eb53h                  ; winved, ignore the cf return for now\r
+;      ret ;jr si23                    ; check for further interrupts pending\r
+       jp      0eb53h                  ; winved, ignore the cf return for now\r
+ .endif\r
+ .else\r
+si3ms: ; bc is already set up to read channel b modem status\r
+;      call    swint\r
+;      ret ;jr si23                    ; check for further interrupts pending\r
+       jp      swint\r
+ .endif\r
+\r
+si3rx:\r
+ .if 0\r
+       ld      iy,_sdevs+3*sdvlen\r
+ .endif\r
+\r
+       ld      c,low BD8530\r
+ .if 1\r
+       in      c,(c)                   ; c = 2nd parameter (byte)\r
+       ld      de,_sdevs+3*sdvlen      ; de = 1st parameter (word16)\r
+\r
+       ld      hl,(_sdevs+3*sdvlen+srxvec)\r
+       ld      a,(_sdevs+3*sdvlen+srxvec+2)\r
+ .if 1\r
+       jp      LWRD ?BANK_JMP_DIRECT_L08\r
+ .else\r
+       jp      ?BANK_CALL_DIRECT_L08\r
+ .endif\r
+ .else\r
+       in      e,(c)                   ; read character for client\r
+\r
+       ld      bc,(_sdevs+3*sdvlen+srxvec)\r
+;      call    0eb53h                  ; winved, ignore the cf return for now\r
+;      ret ;jr si23                    ; check for further interrupts pending\r
+       jp      0eb53h                  ; winved, ignore the cf return for now\r
+ .endif\r
+\r
+si3es: dec     d                       ; ld d,1\r
+       out     (c),d                   ; select rr1\r
+ .if 0\r
+       ld      iy,_sdevs+3*sdvlen\r
+ .else\r
+       nop\r
+ .endif\r
+       in      e,(c)                   ; read special receive condition status\r
+\r
+ .if 0\r
+ call silly\r
+ .endif\r
+\r
+ .if 0 ; 16dec01 when nothing pending, go to clkint via s3dev error status\r
+ .if 1 ; 16oct02 make sure we don't depend on ckimsr when the hardware is new\r
+       ld      a,(hwtype)\r
+       or      a\r
+       jr      nz,skpclk\r
+ .endif\r
+       ld      a,e\r
+       and     01110000b               ; bit 6=framing, 5=overrun, 4=parity\r
+       ;jp     z,int2c                 ; in ser.mac for no good reason\r
+       jr      z,int2c                 ; 14jun02 now here, & proper ret logic\r
+ .if 1 ; 16oct02 make sure we don't depend on ckimsr when the hardware is new\r
+skpclk:\r
+ .endif\r
+ .endif\r
+\r
+ .if 0\r
+ ld a,'%'\r
+ rst 18h ;call abyte\r
+ .endif\r
+\r
+       ld      a,00110000b             ; error reset\r
+       out     (c),a\r
+\r
+ .if 1\r
+       ld      c,e                     ; c = 2nd parameter (byte)\r
+       ld      de,_sdevs+3*sdvlen      ; de = 1st parameter (word16)\r
+\r
+       ld      hl,(_sdevs+3*sdvlen+sesvec)\r
+       ld      a,(_sdevs+3*sdvlen+sesvec+2)\r
+ .if 1\r
+       jp      LWRD ?BANK_JMP_DIRECT_L08\r
+ .else\r
+       jp      ?BANK_CALL_DIRECT_L08\r
+ .endif\r
+ .else\r
+       ld      bc,(_sdevs+3*sdvlen+sesvec)\r
+;      call    0eb53h                  ; winved, ignore the cf return for now\r
+;      ret ;jr si23                    ; check for further interrupts pending\r
+       jp      0eb53h                  ; winved, ignore the cf return for now\r
+ .endif\r
+\r
+ .if 0 ; 14jun02 this is now moved to ser.inc as it was misleading\r
+int2c:\r
+ .if noints\r
+       ld      bc,ckimsr\r
+       in      a,(c)                   ; reset irq\r
+       ret ;jr si23\r
+ .else\r
+       wjpd    clkint                  ; clock is interrupting\r
+       ; clkint should be modified,\r
+       ; as it no longer needs to preserve de/hl/iy\r
+ .endif\r
+ .endif\r
+\r
+; -----------------------------------------------------------------------------\r
+\r
+ .if 1 ; 17sep02 enhancement for extra safety against overruns (esp. 6.144 MHz)\r
+si23iv: ; routine to perform interrupt vectoring... not the main int. handler!\r
+ .else\r
+public si23\r
+\r
+si23:  ; without the enhancement, this routine is also the main int. handler!\r
+ .endif\r
+ .if 0 ; 20may02 hope this works (it does, but see below)\r
+ ld a,'.'\r
+ call abyte\r
+ .endif\r
+       ld      bc,BC8530\r
+       ld      d,2\r
+       out     (c),d                   ; select rr2\r
+       ld      hl,LWRD si23jt-200h     ; we'll also rely on d=2 later\r
+       in      e,(c)                   ; read interrupt vector with status\r
+ .if 0;xyz1    ; 15dec01 diagnostic interrupt vector output, requires abfast\r
+ ld a,e\r
+ rrca\r
+ add a,10h\r
+ ;bit 1,e ; 0 indicates tx/rx int, 1 indicates modem/error int\r
+ ;call nz,abyte\r
+ out0 (TDR1),a\r
+ .endif\r
+       add     hl,de\r
+       jp      (hl)\r
+\r
+si23jt:        jr      si3tx\r
+       jr      si3ms\r
+       jr      si3rx\r
+       jr      si3es\r
+       jr      si2tx\r
+       jr      si2ms\r
+       jr      si2rx\r
+       jr      si2es\r
+\r
+; -----------------------------------------------------------------------------\r
+\r
+si2tx:\r
+ .if 1\r
+       ld      iy,_sdevs+2*sdvlen\r
+ .endif\r
+\r
+ .if 1\r
+       ld      de,_sdevs+2*sdvlen      ; de = 1st parameter (word16)\r
+\r
+       ld      hl,(_sdevs+2*sdvlen+stxvec)\r
+       ld      a,(_sdevs+2*sdvlen+stxvec+2)\r
+       call    ?BANK_CALL_DIRECT_L08\r
+\r
+       inc     h                       ; hl = 0ffffh indicates no char for tx\r
+       jp      z,LWRD swr1td\r
+\r
+       ; client has provided character for tx, send it\r
+       ld      bc,AD8530\r
+       out     (c),l                   ; send char on behalf of client\r
+ .else\r
+       ld      bc,(_sdevs+2*sdvlen+stxvec)\r
+       call    0eb53h                  ; winved\r
+ di ;;!! 24may02 for no good reason\r
+       jp      c,swr1td ;jr c,si2td\r
+\r
+       ; client has provided character for tx, send it\r
+       ld      bc,AD8530\r
+       out     (c),e                   ; send char on behalf of client\r
+ .endif\r
+; ld a,e\r
+; jp abyte\r
+ .if 1\r
+       jp      ?BANK_FAST_LEAVE_L08\r
+ .else\r
+       ret ;jr si23                    ; check for further interrupts pending\r
+ .endif\r
+\r
+;si2td:        call    swr1td                  ; serial write register 1 tx disable\r
+;      ret ;jr si23                    ; check for further interrupts pending\r
+\r
+si2ms:\r
+ .if 0\r
+       ld      iy,_sdevs+2*sdvlen\r
+ .endif\r
+\r
+       inc     c                       ; ld c,low AC8530\r
+       in      e,(c)                   ; read modem status inputs for client\r
+\r
+       ld      a,00010000b             ; reset ext status interrupts\r
+       out     (c),a\r
+\r
+ .if 1\r
+       ld      c,e                     ; c = 2nd parameter (byte)\r
+       ld      de,_sdevs+2*sdvlen      ; de = 1st parameter (word16)\r
+\r
+       ld      hl,(_sdevs+2*sdvlen+smsvec)\r
+       ld      a,(_sdevs+2*sdvlen+smsvec+2)\r
+ .if 1\r
+       jp      LWRD ?BANK_JMP_DIRECT_L08\r
+ .else\r
+       jp      ?BANK_CALL_DIRECT_L08\r
+ .endif\r
+ .else\r
+       ld      bc,(_sdevs+2*sdvlen+smsvec)\r
+;      call    0eb53h                  ; winved, ignore the cf return for now\r
+;      ret ;jr si23                    ; check for further interrupts pending\r
+       jp      0eb53h                  ; winved, ignore the cf return for now\r
+ .endif\r
+\r
+si2rx:\r
+ .if 0\r
+       ld      iy,_sdevs+2*sdvlen\r
+ .endif\r
+\r
+       ld      c,low AD8530\r
+ .if 1\r
+       in      c,(c)                   ; c = 2nd parameter (byte)\r
+       ld      de,_sdevs+2*sdvlen      ; de = 1st parameter (word16)\r
+\r
+       ld      hl,(_sdevs+2*sdvlen+srxvec)\r
+       ld      a,(_sdevs+2*sdvlen+srxvec+2)\r
+ .if 1\r
+       jp      LWRD ?BANK_JMP_DIRECT_L08\r
+ .else\r
+       jp      ?BANK_CALL_DIRECT_L08\r
+ .endif\r
+ .else\r
+       in      e,(c)                   ; read character for client\r
+\r
+       ld      bc,(_sdevs+2*sdvlen+srxvec)\r
+;      call    0eb53h                  ; winved, ignore the cf return for now\r
+;      ret ;jr si23                    ; check for further interrupts pending\r
+       jp      0eb53h                  ; winved, ignore the cf return for now\r
+ .endif\r
+\r
+si2es: inc     c                       ; ld c,low AC8530\r
+       dec     d                       ; ld d,1\r
+       out     (c),d                   ; select rr1\r
+ .if 0\r
+       ld      iy,_sdevs+2*sdvlen\r
+ .else\r
+       nop\r
+ .endif\r
+       in      e,(c)                   ; read special receive condition status\r
+\r
+       ld      a,00110000b             ; error reset\r
+       out     (c),a\r
+\r
+ .if 1\r
+       ld      c,e                     ; c = 2nd parameter (byte)\r
+       ld      de,_sdevs+2*sdvlen      ; de = 1st parameter (word16)\r
+\r
+       ld      hl,(_sdevs+2*sdvlen+sesvec)\r
+       ld      a,(_sdevs+2*sdvlen+sesvec+2)\r
+ .if 1\r
+       jp      LWRD ?BANK_JMP_DIRECT_L08\r
+ .else\r
+       jp      ?BANK_CALL_DIRECT_L08\r
+ .endif\r
+ .else\r
+       ld      bc,(_sdevs+2*sdvlen+sesvec)\r
+;      call    0eb53h                  ; winved, ignore the cf return for now\r
+;      ret ;jr si23                    ; check for further interrupts pending\r
+       jp      0eb53h                  ; winved, ignore the cf return for now\r
+ .endif\r
+\r
+; rather silly routine provided to save code space in the handlers above:\r
+\r
+?BANK_JMP_DIRECT_L08:\r
+       call    ?BANK_CALL_DIRECT_L08\r
+       jp      ?BANK_FAST_LEAVE_L08\r
+\r
+; -----------------------------------------------------------------------------\r
+; utility subroutines for use by our clients - 8530 ports (serial 2/3)\r
+\r
+swr1te:        ; serial write register 1 transmit enable - enter with di\r
+ ;ld a,(iy+sdev)\r
+ ;cp s2dev\r
+ ;ld a,'e'\r
+ ;call z,abyte\r
+\r
+; ld a,(iy+sdev)\r
+; cp s2dev\r
+; jr nz,twatx\r
+; call twatx\r
+; jp abyte\r
+;twatx:\r
+       bit     1,(iy+swr1)\r
+; ld a,'a'\r
+ .if 1\r
+       jp      nz,?BANK_FAST_LEAVE_L08 ; transmit interrupt already enabled\r
+ .else\r
+       ret     nz                      ; transmit interrupt already enabled\r
+ .endif\r
+\r
+ .if 1\r
+       push    iy\r
+       pop     de                      ; de = 1st parameter (word16)\r
+\r
+       ld      l,(iy+stxvec)\r
+       ld      h,(iy+stxvec+1)\r
+       ld      a,(iy+stxvec+2)\r
+       call    ?BANK_CALL_DIRECT_L08\r
+\r
+       inc     h                       ; hl = 0ffffh indicates no char for tx\r
+; ld a,'b'\r
+ .if 1\r
+       jp      z,?BANK_FAST_LEAVE_L08\r
+ .else\r
+       ret     z\r
+ .endif\r
+ .else\r
+       ld      c,(iy+stxvec)\r
+       ld      b,(iy+stxvec+1)\r
+       call    0eb53h                  ; winved\r
+; ld a,'b'\r
+       ret     c                       ; there was really nothing to transmit\r
+       ld      l,e\r
+ .endif\r
+\r
+       ld      e,2\r
+ .if 1\r
+ push hl ; oops !\r
+       ld      hl,LWRD swr1sb\r
+       ld      a,BYTE3 swr1sb\r
+       call    ?BANK_CALL_DIRECT_L08   ; explicitly enable transmit interrupt\r
+ pop hl ; oops !\r
+ .else\r
+       call    LWRD swr1sb             ; explicitly enable transmit interrupt\r
+ .endif\r
+\r
+       ld      c,(iy+stxdr)\r
+       out     (c),l                   ; send char on behalf of client\r
+; ld a,(iy+sdev)\r
+; cp s2dev\r
+; ret nz\r
+; ld a,55h\r
+; call abyte\r
+; ld a,l\r
+; jp abyte\r
+; ld a,'c'\r
+ .if 1\r
+       jp      ?BANK_FAST_LEAVE_L08\r
+ .else\r
+       ret\r
+ .endif\r
+\r
+swr1sb:        ; serial write register 1 set bits - enter with di\r
+       ld      c,(iy+sstat)\r
+       ld      b,2 ;(iy+sbase)\r
+       ld      d,1\r
+       out     (c),d\r
+       ld      a,e\r
+       or      (iy+swr1)\r
+       out     (c),a\r
+       ld      (iy+swr1),a\r
+ .if 1\r
+       jp      ?BANK_FAST_LEAVE_L08\r
+ .else\r
+       ret\r
+ .endif\r
+\r
+swr1td:        ; serial write register 1 transmit disable - enter with di\r
+ ;ld a,(iy+sdev)\r
+ ;cp s2dev\r
+ ;ld a,'d'\r
+ ;call z,abyte\r
+       ld      e,0fdh\r
+swr1rb:        ; serial write register 1 reset bits - enter with di\r
+       ld      c,(iy+sstat)\r
+       ld      b,2 ;(iy+sbase)\r
+       ld      d,1\r
+       out     (c),d\r
+       ld      a,e\r
+       and     (iy+swr1)\r
+       out     (c),a\r
+       ld      (iy+swr1),a\r
+ .if 1\r
+       jp      ?BANK_FAST_LEAVE_L08\r
+ .else\r
+       ret\r
+ .endif\r
+\r
+swr5sb:        ; serial write register 5 set bits - enter with di\r
+       ld      c,(iy+sstat)\r
+       ld      b,2 ;(iy+sbase)\r
+       ld      d,5\r
+       out     (c),d\r
+       ld      a,e\r
+       or      (iy+swr5)\r
+       out     (c),a\r
+       ld      (iy+swr5),a\r
+ .if 1\r
+       jp      ?BANK_FAST_LEAVE_L08\r
+ .else\r
+       ret\r
+ .endif\r
+\r
+swr5rb:        ; serial write register 5 reset bits - enter with di\r
+       ld      c,(iy+sstat)\r
+       ld      b,2 ;(iy+sbase)\r
+       ld      d,5\r
+       out     (c),d\r
+       ld      a,e\r
+       and     (iy+swr5)\r
+       out     (c),a\r
+       ld      (iy+swr5),a\r
+ .if 1\r
+       jp      ?BANK_FAST_LEAVE_L08\r
+ .else\r
+       ret\r
+ .endif\r
+\r
+swr15s:        ; serial write register 15 set bits - enter with di\r
+       ld      c,(iy+sstat)\r
+       ld      b,2 ;(iy+sbase)\r
+       ld      d,15\r
+       out     (c),d\r
+       ld      a,e\r
+       or      (iy+swr15)\r
+       out     (c),a\r
+       ld      (iy+swr15),a\r
+ .if 1\r
+       jp      ?BANK_FAST_LEAVE_L08\r
+ .else\r
+       ret\r
+ .endif\r
+\r
+swr15r:        ; serial write register 15 reset bits - enter with di\r
+       ld      c,(iy+sstat)\r
+       ld      b,2 ;(iy+sbase)\r
+       ld      d,15\r
+       out     (c),d\r
+       ld      a,e\r
+       and     (iy+swr15)\r
+       out     (c),a\r
+       ld      (iy+swr15),a\r
+ .if 1\r
+       jp      ?BANK_FAST_LEAVE_L08\r
+ .else\r
+       ret\r
+ .endif\r
+\r
+; -----------------------------------------------------------------------------\r
+\r
+       END\r
diff --git a/src/kernel/cmx/escc.asm.org b/src/kernel/cmx/escc.asm.org
new file mode 100644 (file)
index 0000000..8ba7ba6
--- /dev/null
@@ -0,0 +1,980 @@
+; escc.asm\r
+; Interrupt driven serial driver for built in Z180 ports (Hytech CMX)\r
+\r
+; -----------------------------------------------------------------------------\r
+\r
+$ io64180.inc\r
+\r
+       extern  _sdevs\r
+       extern  _K_OS_Intrp_Entry\r
+       extern  _K_OS_Intrp_Exit\r
+       extern  ?BANK_CALL_DIRECT_L08\r
+       extern  ?BANK_FAST_LEAVE_L08\r
+       extern  abyte\r
+\r
+XMIT_SIZE equ  256     ; must match cxfuncs.h, size of transmitter buffer\r
+RECV_SIZE equ  256     ; must match cxfuncs.h, size of reciever buffer\r
+\r
+; must match cxfuncs.h, fields in SDEV structure:  ** ASSUMES 3 BYTE CODE PTRS!\r
+sxmit  equ     0                       ; offset of embedded CMX XMIT structure\r
+srecv  equ     13                      ; offset of embedded CMX RECV structure\r
+sport  equ     13+13\r
+stxvec equ     13+13+1                 ; called by interrupt, returns l=chr\r
+srxvec equ     13+13+4                 ; called by interrupt, passed c=chr\r
+smsvec equ     13+13+7                 ; called by interrupt, passed c=bits\r
+sesvec equ     13+13+10                ; called by interrupt, passed c=bits\r
+stevec equ     13+13+13                ; vector to start asci/escc transmitter\r
+stdvec equ     13+13+16                ; vector to stop asci/escc transmitter\r
+sstat  equ     13+13+19                ; address to read status (8530 02xxh)\r
+stxdr  equ     13+13+20                ; address to write tx data (8530 02xxh)\r
+srxdr  equ     13+13+21                ; address to read rx data (8530 02xxh)\r
+swr1   equ     13+13+22                ; wr1 contents (interrupt enable bits)\r
+swr5   equ     13+13+23                ; wr5 contents (modem control outputs)\r
+swr15  equ     13+13+24                ; wr15 contents (modem control int ena)\r
+sinint equ     13+13+25                ; says whether wr1 really reflects wr1!\r
+sdvlen equ     13+13+26                ; byte size of block per serial port\r
+\r
+; -----------------------------------------------------------------------------\r
+\r
+       rseg    CODE\r
+\r
+       public  _escc0_setup\r
+\r
+_escc0_setup::\r
+       push    bc\r
+       push    de\r
+\r
+       ld      iy,_sdevs+2*sdvlen\r
+       ld      (iy+sstat),.low.AC8530\r
+       ld      (iy+stxdr),.low.AD8530\r
+       ld      (iy+srxdr),.low.AD8530\r
+       ld      (iy+stevec),.low._escc_tx_enable\r
+       ld      (iy+stevec+1),.high._escc_tx_enable\r
+       ld      (iy+stevec+2),BYTE3 _escc_tx_enable\r
+\r
+       ld      bc,AC8530\r
+       di                              ; so int doesn't corrupt address reg\r
+       in      (c) ;f,(c)              ; reset pointer bits\r
+\r
+       ld      d,9\r
+       out     (c),d                   ; address WR9\r
+       ld      a,00000010b\r
+       out     (c),a                   ; mie off, status lo, no vector\r
+\r
+       nop                             ; ld d,9\r
+       out     (c),d                   ; address WR9\r
+       ld      a,10000010b\r
+       out     (c),a                   ; channel reset A, status lo, no vector\r
+\r
+       ; allow at least 4 clock cycles for reset\r
+\r
+       ld      d,5\r
+       out     (c),d                   ; address WR5\r
+       ld      a,11101010b\r
+       out     (c),a                   ; dtr on, 8 data, tx enable, rts on\r
+       ld      (iy+swr5),a             ; set up shadow for swr5sb, swr5rb\r
+\r
+       ld      d,2\r
+       out     (c),d                   ; address WR2\r
+       sub     a\r
+       out     (c),a                   ; redundantly set up interrupt vector\r
+\r
+       ld      d,4\r
+       out     (c),d                   ; address WR4\r
+       ld      a,01000100b             ; *16 with 1 stop bit, no parity\r
+       out     (c),a\r
+\r
+       ld      d,3\r
+       out     (c),d                   ; address WR3\r
+       ld      a,11000001b\r
+       out     (c),a                   ; 8 data, auto disable, rx enable\r
+\r
+       ld      d,15\r
+       out     (c),d                   ; address WR15\r
+       sub     a\r
+       out     (c),a                   ; modem status interrupts disabled\r
+       ld      (iy+swr15),a            ; set up shadow for swr15s, swr15r\r
+\r
+       dec     d                       ; ld d,14\r
+       out     (c),d                   ; address WR14\r
+       sub     a\r
+       out     (c),a                   ; disable baud rate generator\r
+\r
+       ld      d,12\r
+       out     (c),d                   ; address WR12\r
+       ld      a,6 ; 6=57600 4=76800 2=115200\r
+       out     (c),a                   ; divisor 0002h indicates 115200 bps\r
+       inc     d                       ; ld d,13\r
+       out     (c),d                   ; address WR13\r
+       sub     a\r
+       out     (c),a                   ; divisor 0002h indicates 115200 bps\r
+       inc     d                       ; ld d,14\r
+       out     (c),d                   ; address WR14\r
+       ld      a,00000010b\r
+       out     (c),a                   ; set pclk input\r
+       nop                             ; ld d,14\r
+       out     (c),d                   ; address WR14\r
+       or      1\r
+       out     (c),a                   ; enable baud rate generator\r
+       ld      d,11\r
+       out     (c),d                   ; address WR11\r
+       ld      a,01010010b             ; use baud rate generator\r
+       out     (c),a\r
+\r
+       ld      d,1\r
+       out     (c),d                   ; address WR1\r
+       ld      a,00010001b\r
+       out     (c),a                   ; rx int on all, no tx int, ext int\r
+       ld      (iy+swr1),a             ; set up shadow for swr1sb, swr1rb\r
+\r
+       ld      a,00010000b             ; reset ext status ints\r
+       out     (c),a\r
+\r
+       ld      d,9\r
+       out     (c),d                   ; address WR9\r
+       ld      a,00001010b             ; mie on, status lo, no vector\r
+       out     (c),a\r
+\r
+; not yet... this will be done by the escc1 setup routine when both ports ok\r
+;      in0     a,(ITC)\r
+;      or      INT2SW\r
+;      out0    (ITC),a\r
+\r
+       ei\r
+\r
+       pop     de\r
+       pop     bc\r
+       jp      ?BANK_FAST_LEAVE_L08\r
+\r
+       public  _escc1_setup\r
+\r
+_escc1_setup::\r
+       push    bc\r
+       push    de\r
+\r
+       ld      iy,_sdevs+3*sdvlen\r
+       ld      (iy+sstat),.low.BC8530\r
+       ld      (iy+stxdr),.low.BD8530\r
+       ld      (iy+srxdr),.low.BD8530\r
+       ld      (iy+stevec),.low._escc_tx_enable\r
+       ld      (iy+stevec+1),.high._escc_tx_enable\r
+       ld      (iy+stevec+2),BYTE3 _escc_tx_enable\r
+\r
+       ld      bc,BC8530\r
+       di                              ; so int doesn't corrupt address reg\r
+       in      (c) ;f,(c)              ; reset pointer bits\r
+\r
+       ld      d,9\r
+       out     (c),d                   ; address WR9\r
+       ld      a,00000010b\r
+       out     (c),a                   ; mie off, status lo, no vector\r
+\r
+       nop                             ; ld d,9\r
+       out     (c),d                   ; address WR9\r
+       ld      a,01000010b\r
+       out     (c),a                   ; channel reset B, status lo, no vector\r
+\r
+       ; allow at least 4 clock cycles for reset\r
+\r
+       ld      d,5\r
+       out     (c),d                   ; address WR5\r
+       ld      a,11101010b\r
+       out     (c),a                   ; dtr on, 8 data, tx enable, rts on\r
+       ld      (iy+swr5),a             ; set up shadow for swr5sb, swr5rb\r
+\r
+       ld      d,2\r
+       out     (c),d                   ; address WR2\r
+       sub     a\r
+       out     (c),a                   ; redundantly set up interrupt vector\r
+\r
+       ld      d,4\r
+       out     (c),d                   ; address WR4\r
+       ld      a,01000100b             ; *16 with 1 stop bit, no parity\r
+       out     (c),a\r
+\r
+       ld      d,3\r
+       out     (c),d                   ; address WR3\r
+       ld      a,11000001b\r
+       out     (c),a                   ; 8 data, auto disable, rx enable\r
+\r
+       ld      d,15\r
+       out     (c),d                   ; address WR15\r
+       sub     a\r
+       out     (c),a                   ; modem status interrupts disabled\r
+       ld      (iy+swr15),a            ; set up shadow for swr15s, swr15r\r
+\r
+       dec     d                       ; ld d,14\r
+       out     (c),d                   ; address WR14\r
+       sub     a\r
+       out     (c),a                   ; disable baud rate generator\r
+\r
+       ld      d,12\r
+       out     (c),d                   ; address WR12\r
+       ld      a,6 ; 6=57600 4=76800 2=115200\r
+       out     (c),a                   ; divisor 0002h indicates 115200 bps\r
+       inc     d                       ; ld d,13\r
+       out     (c),d                   ; address WR13\r
+       sub     a\r
+       out     (c),a                   ; divisor 0002h indicates 115200 bps\r
+       inc     d                       ; ld d,14\r
+       out     (c),d                   ; address WR14\r
+       ld      a,00000010b\r
+       out     (c),a                   ; set pclk input\r
+       nop                             ; ld d,14\r
+       out     (c),d                   ; address WR14\r
+       inc     a                       ; or 1\r
+       out     (c),a                   ; enable baud rate generator\r
+       ld      d,11\r
+       out     (c),d                   ; address WR11\r
+       ld      a,01010010b             ; use baud rate generator\r
+       out     (c),a\r
+\r
+       ld      d,1\r
+       out     (c),d                   ; address WR1\r
+       ld      a,00010001b\r
+       out     (c),a                   ; rx int on all, no tx int, ext int\r
+       ld      (iy+swr1),a             ; set up shadow for swr1sb, swr1rb\r
+\r
+; this is only done for S3DEV, and is intended to disconnect LAN optocoupler\r
+       ld      d,5\r
+       out     (c),d                   ; address WR5\r
+       ld      a,11101000b\r
+       out     (c),a                   ; dtr on, 8 data, tx enable, rts off\r
+       ld      (iy+swr5),a             ; update our knowledge of wr5 contents\r
+\r
+       ld      a,00010000b             ; reset ext status ints\r
+       out     (c),a\r
+\r
+       ld      d,9\r
+       out     (c),d                   ; address WR9\r
+       ld      a,00001010b             ; mie on, status lo, no vector\r
+       out     (c),a\r
+\r
+       in0     a,(ITC)\r
+       or      INT2SW\r
+       out0    (ITC),a\r
+\r
+       ei\r
+\r
+       pop     de\r
+       pop     bc\r
+       jp      ?BANK_FAST_LEAVE_L08\r
+\r
+; -----------------------------------------------------------------------------\r
+\r
+       public  _escc_tx_enable\r
+\r
+_escc_tx_enable::\r
+       push    bc\r
+       push    de\r
+\r
+;      ld      iy,_sdevs+0*sdvlen\r
+       push    de\r
+       pop     iy\r
+       di\r
+ .if 1\r
+       ld      hl,LWRD swr1te\r
+       ld      a,BYTE3 swr1te\r
+       call    ?BANK_CALL_DIRECT_L08\r
+ .else\r
+       call    swr1te\r
+ .endif\r
+       ei\r
+\r
+       pop     de\r
+       pop     bc\r
+;      ret\r
+       jp      ?BANK_FAST_LEAVE_L08\r
+\r
+       public  _escc_tx_disable\r
+\r
+_escc_tx_disable::\r
+       push    bc\r
+       push    de\r
+\r
+;      ld      iy,_sdevs+0*sdvlen\r
+       push    de\r
+       pop     iy\r
+       di\r
+ .if 1\r
+       ld      hl,LWRD swr1td\r
+       ld      a,BYTE3 swr1td\r
+       call    ?BANK_CALL_DIRECT_L08\r
+ .else\r
+       call    swr1td\r
+ .endif\r
+       ei\r
+\r
+       pop     de\r
+       pop     bc\r
+;      ret\r
+       jp      ?BANK_FAST_LEAVE_L08\r
+\r
+; -----------------------------------------------------------------------------\r
+\r
+       rseg    RCODE\r
+\r
+       public  _int2_vector\r
+\r
+_int2_vector::\r
+ .if 1\r
+ ;ld a,'.'\r
+ ;out0 (TDR1),a\r
+       call    _K_OS_Intrp_Entry\r
+ .else\r
+       push    af\r
+       push    bc\r
+       push    de\r
+       push    hl\r
+       push    iy\r
+ .endif\r
+\r
+ .if 1\r
+       ld      bc,AC8530\r
+       in      (c) ;f,(c)              ; reset pointer bits\r
+\r
+       ld      d,9\r
+       out     (c),d                   ; address WR9\r
+       ld      a,00000010b\r
+       out     (c),a                   ; mie off, status lo, no vector\r
+       ei                              ; allow other interrupts to occur\r
+ .endif\r
+\r
+ .if 1\r
+ .if 1 ; prevent overrun by polling the ports after each interrupt\r
+       ld      hl,LWRD si23iv\r
+       ld      a,BYTE3 si23iv\r
+       call    ?BANK_CALL_DIRECT_L08\r
+\r
+       ; routine to allow arbitrary tests for rx char (prevents overrun)\r
+       ld      bc,AC8530               ; enter with interrupts disabled!!\r
+       in      a,(c)                   ; read rr0 (channel a = s2dev)\r
+       rra                             ; test bit 0 = rx char available\r
+\r
+       ld      hl,LWRD si2rx\r
+       ld      a,BYTE3 si2rx\r
+       call    c,?BANK_CALL_DIRECT_L08 ; something ready, use the normal si2rx\r
+                                       ; (this clobbers bc if char received)\r
+       ld      bc,BC8530\r
+       in      a,(c)                   ; read rr0\r
+       rra                             ; test bit 0 = rx char available\r
+\r
+       ld      hl,LWRD si3rx\r
+       ld      a,BYTE3 si3rx\r
+       call    c,?BANK_CALL_DIRECT_L08 ; something ready, use the normal si2rx\r
+                                       ; (this clobbers bc if char received)\r
+ .else\r
+       ld      hl,LWRD si23\r
+       ld      a,BYTE3 si23\r
+       call    ?BANK_CALL_DIRECT_L08\r
+ .endif\r
+ .else\r
+       call    si23\r
+ .endif\r
+\r
+ .if 1\r
+       ld      bc,AC8530\r
+       di                              ; prevent ints occurring immediately\r
+       in      (c) ;f,(c)              ; reset pointer bits\r
+\r
+       ld      d,9\r
+       out     (c),d                   ; address WR9\r
+       ld      a,00001010b\r
+       out     (c),a                   ; mie on, status lo, no vector\r
+ .endif\r
+\r
+ .if 1\r
+       call    _K_OS_Intrp_Exit\r
+ .else\r
+       pop     iy\r
+       pop     hl\r
+       pop     de\r
+       pop     bc\r
+       pop     af\r
+       ei\r
+       ret\r
+ .endif\r
+\r
+; -----------------------------------------------------------------------------\r
+\r
+       rseg    CODE\r
+\r
+ .if 0 ; 17sep02 routine to allow arbitrary tests for rx char (prevents overrun)\r
+ .if 1 ; 17sep02 enhancement for extra safety against overruns (esp. @ 6.144 mhz)\r
+public si23\r
+\r
+si23:\r
+ .if 1\r
+       ld      hl,LWRD si23iv\r
+       ld      a,BYTE3 si23iv\r
+       call    ?BANK_CALL_DIRECT_L08\r
+ .else\r
+       call    LWRD si23iv             ; first process interrupt via vector\r
+ .endif\r
+       ; fall into si23rx routine (it could also be useful during other ints!)\r
+ .endif\r
+\r
+public si23rx\r
+\r
+si23rx:        ; routine to allow arbitrary tests for rx char (prevents overrun)\r
+       ld      bc,AC8530               ; enter with interrupts disabled!!\r
+       in      a,(c)                   ; read rr0 (channel a = s2dev)\r
+       rra                             ; test bit 0 = rx char available\r
+ .if 1\r
+       ld      hl,LWRD si2rx\r
+       ld      a,BYTE3 si2rx\r
+       call    c,?BANK_CALL_DIRECT_L08 ; something ready, use the normal si2rx\r
+ .else\r
+       call    c,LWRD si2rx            ; something ready, use the normal si2rx\r
+ .endif\r
+                                       ; (this clobbers bc if char received)\r
+       ld      bc,BC8530\r
+       in      a,(c)                   ; read rr0\r
+       rra                             ; test bit 0 = rx char available\r
+ .if 1\r
+       jp      nc,?BANK_FAST_LEAVE_L08 ; nothing ready, no-op (ints disabled)\r
+ .else\r
+       ret     nc                      ; nothing ready, no-op (ints disabled)\r
+ .endif\r
+       ; fall into the same si3rx routine as used by the interrupt system\r
+       jp      LWRD si3rx\r
+ .endif\r
+\r
+ .if 0\r
+silly: ; enter with special receive condition status byte in e\r
+ ld a,e\r
+ rrca\r
+ rrca\r
+ rrca\r
+ rrca\r
+ and 7\r
+ add a,'0'\r
+ rst 18h ;call abyte\r
+ ret\r
+ .endif\r
+\r
+ .if 0\r
+sillyx: ; enter with modem control input status byte in e\r
+ ld a,e\r
+ and 28h\r
+ rrca ; 14h\r
+ rrca ; 0ah\r
+ rrca ; 05h\r
+ add a,'0'\r
+ rst 18h ;call abyte\r
+ ret\r
+ .endif\r
+\r
+si3tx:\r
+ .if 1\r
+       ld      iy,_sdevs+3*sdvlen\r
+ .endif\r
+\r
+ .if 1\r
+       ld      de,_sdevs+3*sdvlen      ; de = 1st parameter (word16)\r
+\r
+       ld      hl,(_sdevs+3*sdvlen+stxvec)\r
+       ld      a,(_sdevs+3*sdvlen+stxvec+2)\r
+       call    ?BANK_CALL_DIRECT_L08\r
+\r
+       inc     h                       ; hl = 0ffffh indicates no char for tx\r
+       jp      z,LWRD swr1td\r
+\r
+       ; client has provided character for tx, send it\r
+       ld      bc,BD8530\r
+       out     (c),l                   ; send char on behalf of client\r
+ .else\r
+       ld      bc,(_sdevs+3*sdvlen+stxvec)\r
+       call    0eb53h                  ; winved\r
+ di ;;!! 24may02 for no good reason\r
+       jp      c,swr1td ;jr c,si3td\r
+\r
+       ; client has provided character for tx, send it\r
+       ld      bc,BD8530\r
+       out     (c),e                   ; send char on behalf of client\r
+ .endif\r
+ .if 1\r
+       jp      ?BANK_FAST_LEAVE_L08\r
+ .else\r
+       ret ;jr si23                    ; check for further interrupts pending\r
+ .endif\r
+\r
+;si3td:        call    swr1td                  ; serial write register 1 tx disable\r
+;      ret ;jr si23                    ; check for further interrupts pending\r
+\r
+ .if 1 ; 16dec01 so that swint can be a regular modem status handler\r
+si3ms:\r
+ .if 0\r
+       ld      iy,_sdevs+3*sdvlen\r
+ .endif\r
+       in      e,(c)                   ; read modem status inputs for client\r
+\r
+ .if 0\r
+ call sillyx\r
+ .endif\r
+\r
+       ld      a,00010000b             ; reset ext status interrupts\r
+       out     (c),a\r
+\r
+ .if 1\r
+       ld      c,e                     ; c = 2nd parameter (byte)\r
+       ld      de,_sdevs+3*sdvlen      ; de = 1st parameter (word16)\r
+\r
+       ld      hl,(_sdevs+3*sdvlen+smsvec)\r
+       ld      a,(_sdevs+3*sdvlen+smsvec+2)\r
+ .if 1\r
+       jp      LWRD ?BANK_JMP_DIRECT_L08\r
+ .else\r
+       jp      ?BANK_CALL_DIRECT_L08\r
+ .endif\r
+ .else\r
+       ld      bc,(_sdevs+3*sdvlen+smsvec)\r
+;      call    0eb53h                  ; winved, ignore the cf return for now\r
+;      ret ;jr si23                    ; check for further interrupts pending\r
+       jp      0eb53h                  ; winved, ignore the cf return for now\r
+ .endif\r
+ .else\r
+si3ms: ; bc is already set up to read channel b modem status\r
+;      call    swint\r
+;      ret ;jr si23                    ; check for further interrupts pending\r
+       jp      swint\r
+ .endif\r
+\r
+si3rx:\r
+ .if 0\r
+       ld      iy,_sdevs+3*sdvlen\r
+ .endif\r
+\r
+       ld      c,low BD8530\r
+ .if 1\r
+       in      c,(c)                   ; c = 2nd parameter (byte)\r
+       ld      de,_sdevs+3*sdvlen      ; de = 1st parameter (word16)\r
+\r
+       ld      hl,(_sdevs+3*sdvlen+srxvec)\r
+       ld      a,(_sdevs+3*sdvlen+srxvec+2)\r
+ .if 1\r
+       jp      LWRD ?BANK_JMP_DIRECT_L08\r
+ .else\r
+       jp      ?BANK_CALL_DIRECT_L08\r
+ .endif\r
+ .else\r
+       in      e,(c)                   ; read character for client\r
+\r
+       ld      bc,(_sdevs+3*sdvlen+srxvec)\r
+;      call    0eb53h                  ; winved, ignore the cf return for now\r
+;      ret ;jr si23                    ; check for further interrupts pending\r
+       jp      0eb53h                  ; winved, ignore the cf return for now\r
+ .endif\r
+\r
+si3es: dec     d                       ; ld d,1\r
+       out     (c),d                   ; select rr1\r
+ .if 0\r
+       ld      iy,_sdevs+3*sdvlen\r
+ .else\r
+       nop\r
+ .endif\r
+       in      e,(c)                   ; read special receive condition status\r
+\r
+ .if 0\r
+ call silly\r
+ .endif\r
+\r
+ .if 0 ; 16dec01 when nothing pending, go to clkint via s3dev error status\r
+ .if 1 ; 16oct02 make sure we don't depend on ckimsr when the hardware is new\r
+       ld      a,(hwtype)\r
+       or      a\r
+       jr      nz,skpclk\r
+ .endif\r
+       ld      a,e\r
+       and     01110000b               ; bit 6=framing, 5=overrun, 4=parity\r
+       ;jp     z,int2c                 ; in ser.mac for no good reason\r
+       jr      z,int2c                 ; 14jun02 now here, & proper ret logic\r
+ .if 1 ; 16oct02 make sure we don't depend on ckimsr when the hardware is new\r
+skpclk:\r
+ .endif\r
+ .endif\r
+\r
+ .if 0\r
+ ld a,'%'\r
+ rst 18h ;call abyte\r
+ .endif\r
+\r
+       ld      a,00110000b             ; error reset\r
+       out     (c),a\r
+\r
+ .if 1\r
+       ld      c,e                     ; c = 2nd parameter (byte)\r
+       ld      de,_sdevs+3*sdvlen      ; de = 1st parameter (word16)\r
+\r
+       ld      hl,(_sdevs+3*sdvlen+sesvec)\r
+       ld      a,(_sdevs+3*sdvlen+sesvec+2)\r
+ .if 1\r
+       jp      LWRD ?BANK_JMP_DIRECT_L08\r
+ .else\r
+       jp      ?BANK_CALL_DIRECT_L08\r
+ .endif\r
+ .else\r
+       ld      bc,(_sdevs+3*sdvlen+sesvec)\r
+;      call    0eb53h                  ; winved, ignore the cf return for now\r
+;      ret ;jr si23                    ; check for further interrupts pending\r
+       jp      0eb53h                  ; winved, ignore the cf return for now\r
+ .endif\r
+\r
+ .if 0 ; 14jun02 this is now moved to ser.inc as it was misleading\r
+int2c:\r
+ .if noints\r
+       ld      bc,ckimsr\r
+       in      a,(c)                   ; reset irq\r
+       ret ;jr si23\r
+ .else\r
+       wjpd    clkint                  ; clock is interrupting\r
+       ; clkint should be modified,\r
+       ; as it no longer needs to preserve de/hl/iy\r
+ .endif\r
+ .endif\r
+\r
+; -----------------------------------------------------------------------------\r
+\r
+ .if 1 ; 17sep02 enhancement for extra safety against overruns (esp. 6.144 MHz)\r
+si23iv: ; routine to perform interrupt vectoring... not the main int. handler!\r
+ .else\r
+public si23\r
+\r
+si23:  ; without the enhancement, this routine is also the main int. handler!\r
+ .endif\r
+ .if 0 ; 20may02 hope this works (it does, but see below)\r
+ ld a,'.'\r
+ call abyte\r
+ .endif\r
+       ld      bc,BC8530\r
+       ld      d,2\r
+       out     (c),d                   ; select rr2\r
+       ld      hl,LWRD si23jt-200h     ; we'll also rely on d=2 later\r
+       in      e,(c)                   ; read interrupt vector with status\r
+ .if 0;xyz1    ; 15dec01 diagnostic interrupt vector output, requires abfast\r
+ ld a,e\r
+ rrca\r
+ add a,10h\r
+ ;bit 1,e ; 0 indicates tx/rx int, 1 indicates modem/error int\r
+ ;call nz,abyte\r
+ out0 (TDR1),a\r
+ .endif\r
+       add     hl,de\r
+       jp      (hl)\r
+\r
+si23jt:        jr      si3tx\r
+       jr      si3ms\r
+       jr      si3rx\r
+       jr      si3es\r
+       jr      si2tx\r
+       jr      si2ms\r
+       jr      si2rx\r
+       jr      si2es\r
+\r
+; -----------------------------------------------------------------------------\r
+\r
+si2tx:\r
+ .if 1\r
+       ld      iy,_sdevs+2*sdvlen\r
+ .endif\r
+\r
+ .if 1\r
+       ld      de,_sdevs+2*sdvlen      ; de = 1st parameter (word16)\r
+\r
+       ld      hl,(_sdevs+2*sdvlen+stxvec)\r
+       ld      a,(_sdevs+2*sdvlen+stxvec+2)\r
+       call    ?BANK_CALL_DIRECT_L08\r
+\r
+       inc     h                       ; hl = 0ffffh indicates no char for tx\r
+       jp      z,LWRD swr1td\r
+\r
+       ; client has provided character for tx, send it\r
+       ld      bc,AD8530\r
+       out     (c),l                   ; send char on behalf of client\r
+ .else\r
+       ld      bc,(_sdevs+2*sdvlen+stxvec)\r
+       call    0eb53h                  ; winved\r
+ di ;;!! 24may02 for no good reason\r
+       jp      c,swr1td ;jr c,si2td\r
+\r
+       ; client has provided character for tx, send it\r
+       ld      bc,AD8530\r
+       out     (c),e                   ; send char on behalf of client\r
+ .endif\r
+; ld a,e\r
+; jp abyte\r
+ .if 1\r
+       jp      ?BANK_FAST_LEAVE_L08\r
+ .else\r
+       ret ;jr si23                    ; check for further interrupts pending\r
+ .endif\r
+\r
+;si2td:        call    swr1td                  ; serial write register 1 tx disable\r
+;      ret ;jr si23                    ; check for further interrupts pending\r
+\r
+si2ms:\r
+ .if 0\r
+       ld      iy,_sdevs+2*sdvlen\r
+ .endif\r
+\r
+       inc     c                       ; ld c,low AC8530\r
+       in      e,(c)                   ; read modem status inputs for client\r
+\r
+       ld      a,00010000b             ; reset ext status interrupts\r
+       out     (c),a\r
+\r
+ .if 1\r
+       ld      c,e                     ; c = 2nd parameter (byte)\r
+       ld      de,_sdevs+2*sdvlen      ; de = 1st parameter (word16)\r
+\r
+       ld      hl,(_sdevs+2*sdvlen+smsvec)\r
+       ld      a,(_sdevs+2*sdvlen+smsvec+2)\r
+ .if 1\r
+       jp      LWRD ?BANK_JMP_DIRECT_L08\r
+ .else\r
+       jp      ?BANK_CALL_DIRECT_L08\r
+ .endif\r
+ .else\r
+       ld      bc,(_sdevs+2*sdvlen+smsvec)\r
+;      call    0eb53h                  ; winved, ignore the cf return for now\r
+;      ret ;jr si23                    ; check for further interrupts pending\r
+       jp      0eb53h                  ; winved, ignore the cf return for now\r
+ .endif\r
+\r
+si2rx:\r
+ .if 0\r
+       ld      iy,_sdevs+2*sdvlen\r
+ .endif\r
+\r
+       ld      c,low AD8530\r
+ .if 1\r
+       in      c,(c)                   ; c = 2nd parameter (byte)\r
+       ld      de,_sdevs+2*sdvlen      ; de = 1st parameter (word16)\r
+\r
+       ld      hl,(_sdevs+2*sdvlen+srxvec)\r
+       ld      a,(_sdevs+2*sdvlen+srxvec+2)\r
+ .if 1\r
+       jp      LWRD ?BANK_JMP_DIRECT_L08\r
+ .else\r
+       jp      ?BANK_CALL_DIRECT_L08\r
+ .endif\r
+ .else\r
+       in      e,(c)                   ; read character for client\r
+\r
+       ld      bc,(_sdevs+2*sdvlen+srxvec)\r
+;      call    0eb53h                  ; winved, ignore the cf return for now\r
+;      ret ;jr si23                    ; check for further interrupts pending\r
+       jp      0eb53h                  ; winved, ignore the cf return for now\r
+ .endif\r
+\r
+si2es: inc     c                       ; ld c,low AC8530\r
+       dec     d                       ; ld d,1\r
+       out     (c),d                   ; select rr1\r
+ .if 0\r
+       ld      iy,_sdevs+2*sdvlen\r
+ .else\r
+       nop\r
+ .endif\r
+       in      e,(c)                   ; read special receive condition status\r
+\r
+       ld      a,00110000b             ; error reset\r
+       out     (c),a\r
+\r
+ .if 1\r
+       ld      c,e                     ; c = 2nd parameter (byte)\r
+       ld      de,_sdevs+2*sdvlen      ; de = 1st parameter (word16)\r
+\r
+       ld      hl,(_sdevs+2*sdvlen+sesvec)\r
+       ld      a,(_sdevs+2*sdvlen+sesvec+2)\r
+ .if 1\r
+       jp      LWRD ?BANK_JMP_DIRECT_L08\r
+ .else\r
+       jp      ?BANK_CALL_DIRECT_L08\r
+ .endif\r
+ .else\r
+       ld      bc,(_sdevs+2*sdvlen+sesvec)\r
+;      call    0eb53h                  ; winved, ignore the cf return for now\r
+;      ret ;jr si23                    ; check for further interrupts pending\r
+       jp      0eb53h                  ; winved, ignore the cf return for now\r
+ .endif\r
+\r
+; rather silly routine provided to save code space in the handlers above:\r
+\r
+?BANK_JMP_DIRECT_L08:\r
+       call    ?BANK_CALL_DIRECT_L08\r
+       jp      ?BANK_FAST_LEAVE_L08\r
+\r
+; -----------------------------------------------------------------------------\r
+; utility subroutines for use by our clients - 8530 ports (serial 2/3)\r
+\r
+swr1te:        ; serial write register 1 transmit enable - enter with di\r
+ ;ld a,(iy+sdev)\r
+ ;cp s2dev\r
+ ;ld a,'e'\r
+ ;call z,abyte\r
+\r
+; ld a,(iy+sdev)\r
+; cp s2dev\r
+; jr nz,twatx\r
+; call twatx\r
+; jp abyte\r
+;twatx:\r
+       bit     1,(iy+swr1)\r
+; ld a,'a'\r
+ .if 1\r
+       jp      nz,?BANK_FAST_LEAVE_L08 ; transmit interrupt already enabled\r
+ .else\r
+       ret     nz                      ; transmit interrupt already enabled\r
+ .endif\r
+\r
+ .if 1\r
+       push    iy\r
+       pop     de                      ; de = 1st parameter (word16)\r
+\r
+       ld      l,(iy+stxvec)\r
+       ld      h,(iy+stxvec+1)\r
+       ld      a,(iy+stxvec+2)\r
+       call    ?BANK_CALL_DIRECT_L08\r
+\r
+       inc     h                       ; hl = 0ffffh indicates no char for tx\r
+; ld a,'b'\r
+ .if 1\r
+       jp      z,?BANK_FAST_LEAVE_L08\r
+ .else\r
+       ret     z\r
+ .endif\r
+ .else\r
+       ld      c,(iy+stxvec)\r
+       ld      b,(iy+stxvec+1)\r
+       call    0eb53h                  ; winved\r
+; ld a,'b'\r
+       ret     c                       ; there was really nothing to transmit\r
+       ld      l,e\r
+ .endif\r
+\r
+       ld      e,2\r
+ .if 1\r
+ push hl ; oops !\r
+       ld      hl,LWRD swr1sb\r
+       ld      a,BYTE3 swr1sb\r
+       call    ?BANK_CALL_DIRECT_L08   ; explicitly enable transmit interrupt\r
+ pop hl ; oops !\r
+ .else\r
+       call    LWRD swr1sb             ; explicitly enable transmit interrupt\r
+ .endif\r
+\r
+       ld      c,(iy+stxdr)\r
+       out     (c),l                   ; send char on behalf of client\r
+; ld a,(iy+sdev)\r
+; cp s2dev\r
+; ret nz\r
+; ld a,55h\r
+; call abyte\r
+; ld a,l\r
+; jp abyte\r
+; ld a,'c'\r
+ .if 1\r
+       jp      ?BANK_FAST_LEAVE_L08\r
+ .else\r
+       ret\r
+ .endif\r
+\r
+swr1sb:        ; serial write register 1 set bits - enter with di\r
+       ld      c,(iy+sstat)\r
+       ld      b,2 ;(iy+sbase)\r
+       ld      d,1\r
+       out     (c),d\r
+       ld      a,e\r
+       or      (iy+swr1)\r
+       out     (c),a\r
+       ld      (iy+swr1),a\r
+ .if 1\r
+       jp      ?BANK_FAST_LEAVE_L08\r
+ .else\r
+       ret\r
+ .endif\r
+\r
+swr1td:        ; serial write register 1 transmit disable - enter with di\r
+ ;ld a,(iy+sdev)\r
+ ;cp s2dev\r
+ ;ld a,'d'\r
+ ;call z,abyte\r
+       ld      e,0fdh\r
+swr1rb:        ; serial write register 1 reset bits - enter with di\r
+       ld      c,(iy+sstat)\r
+       ld      b,2 ;(iy+sbase)\r
+       ld      d,1\r
+       out     (c),d\r
+       ld      a,e\r
+       and     (iy+swr1)\r
+       out     (c),a\r
+       ld      (iy+swr1),a\r
+ .if 1\r
+       jp      ?BANK_FAST_LEAVE_L08\r
+ .else\r
+       ret\r
+ .endif\r
+\r
+swr5sb:        ; serial write register 5 set bits - enter with di\r
+       ld      c,(iy+sstat)\r
+       ld      b,2 ;(iy+sbase)\r
+       ld      d,5\r
+       out     (c),d\r
+       ld      a,e\r
+       or      (iy+swr5)\r
+       out     (c),a\r
+       ld      (iy+swr5),a\r
+ .if 1\r
+       jp      ?BANK_FAST_LEAVE_L08\r
+ .else\r
+       ret\r
+ .endif\r
+\r
+swr5rb:        ; serial write register 5 reset bits - enter with di\r
+       ld      c,(iy+sstat)\r
+       ld      b,2 ;(iy+sbase)\r
+       ld      d,5\r
+       out     (c),d\r
+       ld      a,e\r
+       and     (iy+swr5)\r
+       out     (c),a\r
+       ld      (iy+swr5),a\r
+ .if 1\r
+       jp      ?BANK_FAST_LEAVE_L08\r
+ .else\r
+       ret\r
+ .endif\r
+\r
+swr15s:        ; serial write register 15 set bits - enter with di\r
+       ld      c,(iy+sstat)\r
+       ld      b,2 ;(iy+sbase)\r
+       ld      d,15\r
+       out     (c),d\r
+       ld      a,e\r
+       or      (iy+swr15)\r
+       out     (c),a\r
+       ld      (iy+swr15),a\r
+ .if 1\r
+       jp      ?BANK_FAST_LEAVE_L08\r
+ .else\r
+       ret\r
+ .endif\r
+\r
+swr15r:        ; serial write register 15 reset bits - enter with di\r
+       ld      c,(iy+sstat)\r
+       ld      b,2 ;(iy+sbase)\r
+       ld      d,15\r
+       out     (c),d\r
+       ld      a,e\r
+       and     (iy+swr15)\r
+       out     (c),a\r
+       ld      (iy+swr15),a\r
+ .if 1\r
+       jp      ?BANK_FAST_LEAVE_L08\r
+ .else\r
+       ret\r
+ .endif\r
+\r
+; -----------------------------------------------------------------------------\r
+\r
+       END\r
index f2695b7..ac314c9 100644 (file)
@@ -1,4 +1,6 @@
 -k ..\..\..\lib\r
+-l libsysb.lib\r
+-l libcb.lib\r
 -l libiar.lib\r
 -m\r
 -u\r
index 0326417..04f57e3 100644 (file)
@@ -1,4 +1,6 @@
 -k ..\..\..\lib\r
+-l libsysb.lib\r
+-l libc.lib\r
 -l libiar.lib\r
 -m\r
 -u\r
@@ -53,3 +55,4 @@ abort
 exit\r
 _exit\r
 testsystem\r
+touchscreen\r
index 723a746..cc2a41e 100644 (file)
@@ -2,5 +2,5 @@ md build
 cd build\r
 copy ..\kernel.lnk\r
 copy ..\build.ban n.bat\r
-call n\r
+call n %1\r
 cd ..\r
diff --git a/src/kernel/n.bat.org b/src/kernel/n.bat.org
new file mode 100644 (file)
index 0000000..723a746
--- /dev/null
@@ -0,0 +1,6 @@
+md build\r
+cd build\r
+copy ..\kernel.lnk\r
+copy ..\build.ban n.bat\r
+call n\r
+cd ..\r
diff --git a/src/kernel/uzi/devno.h b/src/kernel/uzi/devno.h
new file mode 100644 (file)
index 0000000..e955442
--- /dev/null
@@ -0,0 +1,34 @@
+/* devno.h for UZI180 by Rob */
+
+#define DEVOUT_BASE    0x20    /* above this number means output to device */
+
+#define _2SDEV(p)      ((p)-1) /* p is a minor device number */
+#define _2MINOR(p)     ((p)+1) /* p is an SDEV device number */
+
+
+/* Minor device numbers */
+#define DEV_S0 1               /* Serial 0 */
+#define DEV_S1 2               /* Serial 1 */
+#define DEV_S2 3               /* Serial 2 */
+#define DEV_S3 4               /* Serial 3 */
+#define DEV_LC 5               /* Load cell */
+#define DEV_TS 6               /* Touchscreen */
+#define DEV_CD 7               /* Customer display */
+#define DEV_TP 9               /* Thermal printer */
+
+
+/*
+ * Struct functioning as a wrapper to certain parts of SDEV,
+ * in order to maintain some extra administration for devices
+ */
+typedef struct 
+{
+       char tsyshook;
+       /*
+        * vector[0] occupied by test system RX hook
+        * vector[1] occupied by device original RX handler
+        */
+       void (*saved_rx_vector[2])(SDEV *device, char c);
+} wsdevsT;
+
+extern wsdevsT wsdevs[PORTS];
diff --git a/src/kernel/uzi/devtty.c.org b/src/kernel/uzi/devtty.c.org
deleted file mode 100644 (file)
index 17d55f1..0000000
+++ /dev/null
@@ -1,502 +0,0 @@
-/***************************************************************\r
-   UZI (Unix Z80 Implementation) Kernel:  devtty.c\r
-----------------------------------------------------------------\r
- Adapted from UZI By Doug Braun, and UZI280 by Stefan Nitschke\r
-            Copyright (C) 1998 by Harold F. Bower\r
-       Portions Copyright (C) 1995 by Stefan Nitschke\r
-****************************************************************/\r
-/* Revisions:\r
- *  22.12.97 - Moved __putc & tty_int to MACHASM.ASZ.       HFB\r
- *  24.05.98 - Restructured tty_inproc, parse CTRL chars\r
- *     based on flag set bit (deletes CPM_CTRL in 280), add\r
- *     equate for Number of TTY terminals.                  HFB\r
- */\r
-\r
-#if 0 /* Nick */\r
-#define DEBUG            /* UNdefine to delete debug code sequences */\r
-\r
-#define NTTYS  9 /* 2 */         /* Number of TTY ports defined */\r
-#endif\r
-\r
-#include "vendor.h" /* Nick, must come first */\r
-#include <unix.h>\r
-#include <config.h>\r
-#include <extern.h>\r
-#include "devtty.h" /* prototypes added by Nick */\r
-\r
-struct s_tty_data tty_data[NTTYS+1];        /* tty_data[0] is not used */\r
-\r
-struct s_tty_data tty_default =\r
-       {\r
-       0,         0,         '\b',       CTRL('x'), DFLT_MODE,\r
-       CTRL('c'), CTRL('\\'), CTRL('q'), CTRL('s'), CTRL('d'), 0\r
-       };\r
-\r
-#if 1 /* Nick */\r
-void (*tty_vector[NTTYS+1])(int minor, char c) =\r
-       {\r
-       tty_inproc_dummy, /* this entry is never used */\r
-       tty_inproc_dummy,\r
-       tty_inproc_dummy,\r
-       tty_inproc_dummy,\r
-       tty_inproc_dummy,\r
-       tty_inproc_dummy,\r
-       tty_inproc_dummy,\r
-       tty_inproc_dummy,\r
-       tty_inproc_dummy,\r
-       tty_inproc_dummy\r
-       };\r
-\r
-extern char xmit_bufs[PORTS][XMIT_SIZE];\r
-extern char recv_bufs[PORTS][RECV_SIZE];\r
-\r
-struct s_queue ttyinq[NTTYS+1] =\r
-       {\r
-       { NULL, NULL, NULL, 0, 0, 0 },  /* this entry is never used */\r
-       { recv_bufs[0], recv_bufs[0], recv_bufs[0], TTYSIZ, 0, TTYSIZ/2 },\r
-       { recv_bufs[1], recv_bufs[1], recv_bufs[1], TTYSIZ, 0, TTYSIZ/2 },\r
-       { recv_bufs[2], recv_bufs[2], recv_bufs[2], TTYSIZ, 0, TTYSIZ/2 },\r
-       { recv_bufs[3], recv_bufs[3], recv_bufs[3], TTYSIZ, 0, TTYSIZ/2 },\r
-       { recv_bufs[4], recv_bufs[4], recv_bufs[4], TTYSIZ, 0, TTYSIZ/2 },\r
-       { recv_bufs[5], recv_bufs[5], recv_bufs[5], TTYSIZ, 0, TTYSIZ/2 },\r
-       { recv_bufs[6], recv_bufs[6], recv_bufs[6], TTYSIZ, 0, TTYSIZ/2 },\r
-       { recv_bufs[7], recv_bufs[7], recv_bufs[7], TTYSIZ, 0, TTYSIZ/2 },\r
-       { recv_bufs[8], recv_bufs[8], recv_bufs[8], TTYSIZ, 0, TTYSIZ/2 }\r
-       };\r
-#else\r
-/* Character Input Queue size */\r
-#define TTYSIZ 132\r
-\r
-char tbuf1[TTYSIZ];\r
-char tbuf2[TTYSIZ];\r
-\r
-struct  s_queue  ttyinq[NTTYS+1] = {       /* ttyinq[0] is never used */\r
-{   NULL,    NULL,    NULL,    0,        0,       0    },\r
-{   tbuf1,   tbuf1,   tbuf1,   TTYSIZ,   0,   TTYSIZ/2 },\r
-{   tbuf2,   tbuf2,   tbuf2,   TTYSIZ,   0,   TTYSIZ/2 }\r
-};\r
-#endif\r
-\r
-int stopflag[NTTYS+1];   /* Flag for ^S/^Q */\r
-int flshflag[NTTYS+1];   /* Flag for ^O */\r
-\r
-int tty_read(uchar minor, uchar rawflag)\r
-{\r
-    int  nread;\r
-    char c;\r
-    int  remq();\r
-\r
-#if DEBUG >= 2\r
- dprintf(2, "tty_read(%d, %d) starting\n", minor, rawflag);\r
-#endif\r
-\r
-       /* Minor == 0 means that it is the controlling tty of the process */\r
-    ifnot (minor)\r
-        minor = udata.u_ptab->p_tty;\r
-    ifnot (udata.u_ptab->p_tty)\r
-        udata.u_ptab->p_tty = minor;\r
-\r
-    if ((minor < 1) || (minor > NTTYS+1)) {\r
-        udata.u_error = ENODEV;\r
-#if DEBUG >= 2\r
- dprintf(2, "tty_read() returning -1, error %d\n", udata.u_error);\r
-#endif\r
-        return (-1);\r
-    }\r
-\r
-    nread = 0;\r
-    while (nread < udata.u_count)\r
-    {\r
-        for (;;)\r
-        {\r
-            di_absolute(); /* Nick */\r
-            if (remq (&ttyinq[minor], &c)) {\r
-#if 1 /* Nick */\r
-                ei_absolute(); /* Nick */\r
-#endif\r
-                if (udata.u_sysio)\r
-                    *udata.u_base = c;\r
-                else\r
-                    uputc (c, udata.u_base);\r
-                break;\r
-            }\r
-#if 1 /* Nick */\r
-            ei_absolute();\r
-#endif\r
-#if 1 /* Nick */\r
-            /* In unbuffered mode, don't wait when no input */\r
-            if (tty_data[minor].t_flags & UNBUFF)\r
- {\r
-#if DEBUG >= 2\r
- dprintf(2, "tty_read() returning %d, success\n", nread);\r
-#endif\r
-                return(nread);\r
- }\r
-#endif\r
-#if 1 /* Nick, original uzi code, it can be handy to disable this sometimes */\r
-            psleep (&ttyinq[minor]);\r
-            if (udata.u_cursig || udata.u_ptab->p_pending) {     /* messy */\r
-                udata.u_error = EINTR;\r
-#if DEBUG >= 2\r
- dprintf(2, "tty_read() returning -1, error %d\n", udata.u_error);\r
-#endif\r
-                return (-1);\r
-            }\r
-#endif\r
-        }\r
-#if 0 /* Nick, removed as this is now done immediately after calling remq */\r
-        ei_absolute(); /* Nick */\r
-#endif\r
-        if ((nread++ == 0) && (c == tty_data[minor].t_eof))   /* ^D */\r
- {\r
-#if DEBUG >= 2\r
- dprintf(2, "tty_read() returning 0, eof\n");\r
-#endif\r
-            return(0);\r
- }\r
-\r
-        /* In raw or cbreak mode, return after one char */\r
-#if 1 /* Nick */\r
-        if ((tty_data[minor].t_flags & UNBUFF) == 0 &&\r
-               (c == '\n' || tty_data[minor].t_flags & (RAW|CBREAK)))\r
-               {\r
-               break;\r
-               }\r
-#else\r
-        if (tty_data[minor].t_flags & (RAW|CBREAK))\r
-            break;\r
-        if (c == '\n')\r
-            break;\r
-#endif\r
-        ++udata.u_base;\r
-    } \r
-#if DEBUG >= 2\r
- dprintf(2, "tty_read() returning %d, success\n", nread);\r
-#endif\r
-    return(nread);\r
-}\r
-\r
-\r
-\r
-int tty_write(uchar minor, uchar rawflag)\r
-{\r
-    int towrite, c;\r
-/* Nick    int ugetc(); */\r
-\r
-       /* Minor == 0 means that it is the controlling tty of the process */\r
-    ifnot (minor)\r
-        minor = udata.u_ptab->p_tty;\r
-    ifnot (udata.u_ptab->p_tty)\r
-        udata.u_ptab->p_tty = minor;\r
-\r
-    if ((minor < 1) || (minor > NTTYS+1)) {\r
-        udata.u_error = ENODEV;\r
-        return (-1);\r
-    }\r
-\r
-    towrite = udata.u_count;\r
-\r
-    while (udata.u_count-- != 0)\r
-    {\r
-        for (;;)        /* Wait on the ^S/^Q flag */\r
-        {\r
-            di_absolute(); /* Nick */\r
-            ifnot (stopflag[minor])\r
-                break;\r
-            psleep (&stopflag[minor]);\r
-            if (udata.u_cursig || udata.u_ptab->p_pending)  /* messy */\r
-            {\r
-                udata.u_error = EINTR;\r
-                return (-1);\r
-            }\r
-        }\r
-        ei_absolute(); /* Nick */\r
-\r
-        ifnot (flshflag[minor])\r
-        {\r
-            if (udata.u_sysio)\r
-                c = *udata.u_base;\r
-            else\r
-                c = ugetc (udata.u_base);\r
-\r
-            if (c == '\n' && (tty_data[minor].t_flags & CRMOD))\r
-                _putc (minor, '\r');\r
-            _putc (minor, c);\r
-        }\r
-        ++udata.u_base;\r
-    }\r
-    return (towrite);\r
-}\r
-\r
-\r
-\r
-int tty_open(uchar minor)\r
-{\r
-       /* Minor == 0 means that it is the controlling tty of the process */\r
-    ifnot (minor)\r
-        minor = udata.u_ptab->p_tty;\r
-\r
-#if 1 /* Nick */\r
-    if ((minor < 1) || (minor > NTTYS+1))\r
-       {\r
-       udata.u_error = ENODEV;\r
-       return (-1);\r
-       }\r
-#endif\r
-\r
-       /* If there is no controlling tty for the process, establish it */\r
-    ifnot (udata.u_ptab->p_tty)\r
-        udata.u_ptab->p_tty = minor;\r
-\r
-       /* Initialize the tty_data */\r
-    bcopy (&tty_default, &tty_data[minor], sizeof (struct s_tty_data));\r
-\r
-#if 1 /* Nick */\r
-    di_absolute();\r
-    tty_vector[minor] = tty_inproc;\r
-    ei_absolute();\r
-#endif\r
-\r
-    return (0);\r
-}\r
-\r
-\r
-int tty_close(uchar minor)\r
-{\r
-       /* If we are closing the controlling tty, make note */\r
-    if (minor == udata.u_ptab->p_tty)\r
-        udata.u_ptab->p_tty = 0;\r
-\r
-#if 1 /* Nick */\r
-    if ((minor < 1) || (minor > NTTYS+1))\r
-       {\r
-       udata.u_error = ENODEV;\r
-       return (-1);\r
-       }\r
-#endif\r
-\r
-#if 1 /* Nick */\r
-    di_absolute();\r
-    tty_vector[minor] = tty_inproc_dummy;\r
-    ei_absolute();\r
-#endif\r
-\r
-    return (0);\r
-}\r
-\r
-\r
-/* Data in User Space */\r
-int tty_ioctl(uchar minor, int request, char *data)\r
-{\r
-       /* Minor == 0 means that it is the controlling tty of the process */\r
-    ifnot (minor)\r
-        minor = udata.u_ptab->p_tty;\r
-    if ((minor < 1) || (minor > NTTYS+1)) {\r
-        udata.u_error = ENODEV;\r
-        return (-1);\r
-    }\r
-    switch (request)\r
-    {\r
-        case TIOCGETP:\r
-            uput (&tty_data[minor], data, 6);\r
-            break;\r
-        case TIOCSETP:\r
-            uget (data, &tty_data[minor], 6);\r
-            break;\r
-        case TIOCGETC:\r
-            uput (&tty_data[minor].t_intr, data, 5);\r
-            break;\r
-        case TIOCSETC:\r
-            uget (data, &tty_data[minor].t_intr, 5);\r
-            break;\r
-        case TIOCSETN:\r
-            uput (&ttyinq[minor].q_count, data, 2);\r
-            break;\r
-        case TIOCFLUSH:\r
-            clrq (&tty_data[minor]);\r
-            break;\r
-        case TIOCTLSET:\r
-            tty_data[minor].ctl_char = 1;\r
-            break;\r
-        case TIOCTLRES:\r
-            tty_data[minor].ctl_char = 0;\r
-            break;\r
-        default:\r
-            udata.u_error = EINVAL;\r
-            return (-1);\r
-    }\r
-    return (0);\r
-}\r
-\r
-\r
-/* This routine processes a character in response to an interrupt.  It\r
- * adds the character to the tty input queue, echoing and processing\r
- * backspace and carriage return.  If the queue contains a full line,\r
- * it wakes up anything waiting on it.  If it is totally full, it beeps\r
- * at the user.\r
- * UZI180 - This routine is called from the raw Hardware read routine,\r
- * either interrupt or polled, to process the input character.  HFB\r
- */\r
-\r
-void tty_inproc(int minor, char c)\r
-{\r
-    char  oc;\r
-    struct s_tty_data *td;\r
-    int   mode;\r
-    int   insq(), uninsq();\r
-\r
-    td = &tty_data[minor];\r
-#if 1 /* Nick */\r
-    if ((td->t_flags & (RAW|CBREAK|COOKED|UNBUFF)) == (RAW|UNBUFF))\r
-       {\r
-       insq (&ttyinq[minor], c);\r
-       return; /* don't bother checking for error or waking task */\r
-       }\r
-#endif\r
-    mode = td->t_flags & (RAW|CBREAK|COOKED);\r
-\r
-/***    if (c == 0x1b && td->t_flags == DFLT_MODE)\r
-/***            return;                   /* my terminal hates it SN */\r
-\r
-    if (mode != RAW)\r
- { /* Nick */\r
-        c &= 0x7f;                /* Strip off parity */\r
-    if (!c)\r
-        return;                   /* Simply quit if Null character */\r
- } /* Nick */\r
-\r
-    if (td->ctl_char == 0)         /* Don't parse ctl chars if Non-0 */\r
-    {\r
-        if ((mode & RAW) == 0)       /* if mode == COOKED or CBREAK */\r
-        {\r
-#if DEBUG\r
-          if (c == 0x1a)                /* ^Z */\r
-              {\r
-              idump();                  /*   (For debugging) */\r
-              return;\r
-              }\r
-          else if (c == 0x0e)           /* ^N Nick */\r
-              {\r
-              traceon = !traceon;\r
-              return;\r
-              }\r
-#endif\r
-\r
-            if (c == '\r' && (td->t_flags & CRMOD))\r
-                c = '\n';\r
-\r
-            if (c == td->t_intr) {                   /* ^C */\r
-                sgrpsig (minor, SIGQUIT);\r
-                clrq (&ttyinq[minor]);\r
-                stopflag[minor] = flshflag[minor] = 0;\r
-                return;\r
-            }\r
-            else if (c == td->t_quit) {              /* ^\ */\r
-                sgrpsig (minor, SIGINT);\r
-                clrq (&ttyinq[minor]);\r
-                stopflag[minor] = flshflag[minor] = 0;\r
-                return;\r
-            }\r
-            else if (c == '\017') {                  /* ^O */\r
-                flshflag[minor] = !flshflag[minor];\r
-                return;\r
-            }\r
-            else if (c == td->t_stop) {              /* ^S */\r
-                stopflag[minor] = 1;\r
-                return;\r
-            }\r
-            else if (c == td->t_start) {             /* ^Q */\r
-                stopflag[minor] = 0;\r
-                wakeup (&stopflag[minor]);\r
-                return;\r
-            }\r
-        }\r
-\r
-        if (mode == COOKED)\r
-        {\r
-            if (c == td->t_erase)\r
-            {\r
-                if (uninsq (&ttyinq[minor], &oc))\r
-                {\r
-                   if (oc == '\n')\r
-                        insq (&ttyinq[minor], oc);  /* Don't erase past nl */\r
-                    else\r
-                    {\r
-                        echo (minor, '\b');\r
-                        echo (minor, ' ');\r
-                        echo (minor, '\b');\r
-                    }\r
-                }\r
-                return;\r
-            }\r
-            else if (c == td->t_kill)\r
-            {\r
-                while (uninsq (&ttyinq[minor], &oc))\r
-                {\r
-                    if (oc == '\n')\r
-                    {\r
-                        insq (&ttyinq[minor], oc);  /* Don't erase past nl */\r
-                        break;\r
-                    }\r
-                    echo (minor, '\b');\r
-                    echo (minor, ' ');\r
-                    echo (minor, '\b');\r
-                }\r
-                return;\r
-            }\r
-        }\r
-    }\r
-       /* All modes come here */\r
-\r
-    if (c == '\n' && (td->t_flags & CRMOD))\r
-        echo (minor, '\r');\r
-\r
-    if (insq (&ttyinq[minor], c))\r
-        echo (minor, c);\r
-    else\r
-        _putc (minor, '\007');        /* Beep if no more room */\r
-\r
-    if ((mode != COOKED || c == '\n' || c == td->t_eof)\r
-       && (td->ctl_char == 0))                 /* ^D */\r
-          wakeup (&ttyinq[minor]);\r
-/* abyte('^'); */\r
-/* abyte(c); */\r
-/* while (1) */\r
-/*  ; */\r
-}\r
-\r
-\r
-#if 1 /* Nick */\r
-void tty_inproc_dummy(int minor, char c)\r
-       {\r
-       }\r
-#endif\r
-\r
-\r
-void echo(int minor, char c)\r
-{\r
-    if (tty_data[minor].t_flags & ECHO)\r
-        _putc (minor, c);\r
-}\r
-\r
-\r
-#if 0\r
-char silly_pause(void)\r
-       {\r
-       char c;\r
-\r
-       for (;;)\r
-               {\r
-               di_absolute(); /* Nick */\r
-               if (remq (&ttyinq[2], &c))\r
-                       {\r
-                       return c;\r
-                       }\r
-#if 1 /* Nick... very temporary!! */\r
- ei_absolute();\r
-#endif\r
-               }\r
-       }\r
-#endif\r
-\r
-\r
index 4a3ae3d..21e5b13 100644 (file)
@@ -10,6 +10,7 @@
 #include <config.h>\r
 #include <extern.h>\r
 #include "devtty.h"\r
+#include "devno.h"\r
 #include "touchscreen.h"\r
 #include "testsystem.h"\r
 \r
@@ -90,6 +91,10 @@ void initsysx(void)
        }\r
 #endif\r
 \r
+/* Admin. wrapper for sdevs */\r
+wsdevsT wsdevs[PORTS];\r
+\r
+\r
 void main(int argc, char **argv)\r
        {\r
 #if 1\r
@@ -202,13 +207,17 @@ void main(int argc, char **argv)
        /* redirect incoming data from CompactFlash to the uzi scsi handler */\r
        sdevs[10].rx_vector = compactflash_rx_handler;\r
 \r
+       K_OS_Enable_Interrupts();\r
+\r
+       /* initialise device extra administration */\r
+       memset(&wsdevs, 0, sizeof(wsdevsT));\r
+\r
        /* initialise test system */\r
        testsystem_init();\r
 \r
        /* initialise touchscreen hooks */\r
        touchscreen_init();\r
 \r
-       K_OS_Enable_Interrupts();\r
 #endif\r
 \r
        K_OS_Start();         /* enter CMX RTOS */\r
@@ -405,7 +414,6 @@ int count;
                *dest++ = *src++;\r
                }\r
        }\r
-\r
 int int_min(int a, int b)\r
 {\r
        return (b < a ? b : a);\r
diff --git a/src/kernel/uzi/main.c.org b/src/kernel/uzi/main.c.org
deleted file mode 100644 (file)
index 229c500..0000000
+++ /dev/null
@@ -1,832 +0,0 @@
-/* main.c for uzi180 by Nick - initialises CMX and then starts UZI as a task */\r
-\r
-/* #define POLLED */ /* causes console I/O to be output via abyte() */\r
-\r
-#include "vendor.h" /* Nick, must come first */\r
-#include <cxfuncs.h>\r
-#include <cxextern.h>\r
-#include <string.h>\r
-#include <unix.h>\r
-#include <config.h>\r
-#include <extern.h>\r
-#include "devtty.h"\r
-\r
-void asci0_setup(void);\r
-void asci1_setup(void);\r
-void escc0_setup(void);\r
-void escc1_setup(void);\r
-void apibus_setup(void);\r
-void apibus_priority(char command);\r
-void timer0_setup(void);       /* initializes timer 3, for CMX tick */\r
-\r
-extern char osBank;                            /* defined in machasm */\r
-/* extern int root_dev; /* should be dev_t */  /* defined in extern.h */\r
-\r
-/* extern char silly; */ /* Nick, very silly !! */\r
-extern char rom_serial_no[]; /* 5 digits (leading space padded) plus null */\r
-\r
-#if 1 /* Nick UZIX compatible */\r
-char UZIX[14]="UZI180"; /* Nick "UZIX"; should be 13 chars or fewer */\r
-char HOST[14]="sn00000"; /* Nick kdata.k_host should be 13 chars or fewer */\r
-#endif\r
-\r
-byte uzi_slot;  /* UZI task global slot number */\r
-extern void initsys(void); /* start of the UZI task's code */\r
-\r
-extern char cmdblk[8]; /* for scsiop(), defined in devhd.c */\r
-extern long hd_offset;\r
-extern long hd_sector;\r
-extern char *dptr;\r
-extern int dlen;\r
-extern char *cptr;\r
-extern int busid;\r
-\r
-void main(int argc, char **argv);\r
-void timer0_handler(void);\r
-#if 0 /* Nick, see kprintf.c */\r
-void kprintf(char *fmt, ...);\r
-#endif\r
-void kputchar(char c);\r
-void puts(char *s);\r
-void _putc(int minor, char c);\r
-void tty_inproc(int minor, char c); /* in devtty.c */\r
-void my_tty_inproc(SDEV *device, char c);\r
-#if 0\r
-void my_tty_inproc5(SDEV *device, char c);\r
-#endif\r
-#if 0 /* Nick, see kprintf.c */\r
-char *itob(int n, char *s, int base);\r
-#endif\r
-void bzero(char *ptr, int count);\r
-void bcopy(char *src, char *dest, int count);\r
-int int_min(int a, int b);\r
-int int_max(int a, int b);\r
-int scsiop(void);\r
-void my_compactflash_in(SDEV *device, char c);\r
-void my_touchscreen_in(SDEV *device, char c);\r
-void sttime(time_t *tvec);\r
-void hostname_setup(void);\r
-\r
-#if 0\r
-tcbpointer compactflash_tcbptr; /* must be initialised to NULL by runtime!! */\r
-#else\r
-char compactflash_enable; /* must be initialised to 0 by runtime!! */\r
-#endif\r
-\r
-#if 0\r
-byte t0_cnt;      /* used by interrupt, for counter */\r
-byte go_ahead;    /* used by interrupt, to determine when to send messages */\r
-\r
-char int_mesg[] = {"interrupt mesg"};  /* message that interrupt will send */\r
-#endif\r
-\r
-#if 0\r
-void initsysx(void)\r
-       {\r
-       while (1)\r
-               {\r
-               abyte ('#');\r
-               }\r
-       }\r
-#endif\r
-\r
-void main(int argc, char **argv)\r
-       {\r
-#if 1\r
-       int i;\r
-#endif\r
-       byte status;\r
-\r
-       /* abyte('C'); */\r
-\r
-#if 1\r
-       amess("kernel: parameters:");\r
-       if (argc < 2)\r
-               {\r
-               amess(" none");\r
-               }\r
-       else\r
-               {\r
-               for (i = 1; i < argc; i++)\r
-                       {\r
-                       abyte(' ');\r
-                       amess(argv[i]);\r
-                       }\r
-               }\r
-       acrlf();\r
-\r
-       root_dev = -1;\r
-       for (i = 1; i < argc; i++)\r
-               {\r
-               if (strlen(argv[i]) == 8 &&\r
-                               strncmp(argv[i], "root=hd", 7) == 0 &&\r
-                               (status = argv[i][7]) >= '0' && status <= '9')\r
-                       {\r
-                       root_dev = status - '0';\r
-                       }\r
-               }\r
-/* abyte('a'); */\r
-#endif\r
-\r
-       K_OS_Init();  /* initialize ram and things */\r
-/* abyte('b'); */\r
-       K_Init_Sdevs(); /* set up serial port buffers */\r
-/* abyte('c'); */\r
-       /* abyte('D'); */\r
-\r
-       asci0_setup();\r
-/* abyte('d'); */\r
-       asci1_setup();\r
-/* abyte('e'); */\r
-       escc0_setup();\r
-/* abyte('f'); */\r
-       escc1_setup();\r
-/* abyte('g'); */\r
-       apibus_setup();\r
-/* abyte('h'); */\r
-       /* abyte('E'); */\r
-\r
-       /* initialise compactflash card (and synchronise WPO chip tx count) */\r
-       K_Put_Str(10, "\x1bI", 2);\r
-/* abyte('i'); */\r
-\r
-#if 1\r
-       K_Put_Str(1, "\r\nWelcome to Hytech CMX version 1.0\r\n", 37);\r
-/* abyte('j'); */\r
-       /* abyte('F'); */\r
-#endif\r
-\r
-       K_Task_Create(2, &uzi_slot, initsys, 128); /* create UZI task */\r
-       K_Task_Start(uzi_slot); /* trigger UZI task */\r
-\r
-       timer0_setup(); /* initialize and start timer, to produce CMX TICK */\r
-       /* abyte('0'); */\r
-\r
-#if 0\r
-       K_Put_Str(0, "\r\nHello from Hytech CMX, serial port 0\r\n", 40);\r
-/*     K_Put_Str(1, "\r\nHello from Hytech CMX, serial port 1\r\n", 40); */\r
-       K_Put_Str(2, "\r\nHello from Hytech CMX, serial port 2\r\n", 40);\r
-       K_Put_Str(3, "\r\nHello from Hytech CMX, serial port 3\r\n", 40);\r
-       K_Put_Str(5, "\x1bKHello from Hytech CMX, apibus port 5\r\n", 40);\r
-       K_Put_Str(6, "\x1bKHello from Hytech CMX, apibus port 6\r\n", 40);\r
-#endif\r
-\r
-#if 0\r
-       K_Put_Str(1, "\r\nPress any key to start the scheduler... ", 42);\r
-\r
-       while (!K_Get_Char(1, &status))\r
-          /* abyte('.') */; /* can't use CMX task blocking functions just yet */\r
- /* abyte('>'); */\r
-\r
-       K_Put_Char(1, &status);\r
-\r
-       K_Put_Str(1, "\r\nStarting the RTOS scheduler\r\n", 31);\r
-#endif\r
-\r
-#if 1\r
-       hostname_setup();\r
-\r
-       K_OS_Disable_Interrupts();\r
-\r
-       /* redirect incoming characters on SERIAL 0 to the uzi tty handler */\r
-       sdevs[0].rx_vector = my_tty_inproc;\r
-       sdevs[1].rx_vector = my_tty_inproc;\r
-       sdevs[2].rx_vector = my_tty_inproc;\r
-       sdevs[3].rx_vector = my_tty_inproc;\r
-       sdevs[4].rx_vector = my_tty_inproc;\r
-       sdevs[5].rx_vector = my_touchscreen_in;\r
-       sdevs[6].rx_vector = my_tty_inproc;\r
-       sdevs[7].rx_vector = my_tty_inproc;\r
-       sdevs[8].rx_vector = my_tty_inproc;\r
-\r
-       /* redirect incoming data from CompactFlash to the uzi scsi handler */\r
-       sdevs[10].rx_vector = my_compactflash_in;\r
-\r
-       K_OS_Enable_Interrupts();\r
-#endif\r
-\r
-       K_OS_Start();         /* enter CMX RTOS */\r
-       }\r
-\r
-void timer0_handler(void)\r
-       {\r
-#if 0 /* Nick, very temporary */\r
-       K_OS_Tick_Update();\r
-#endif\r
-#if 0\r
-       if (go_ahead)   /* see if task has enable message sending */\r
-               {\r
-               if (++t0_cnt == 2)      /* see if count = 2. */\r
-                       {\r
-                       t0_cnt = 0;                     /* reset count */\r
-\r
-                       /* The following allows an interrupt to use a CMX function, but\r
-                               it must use it indirectly. Thus the interrupt must call\r
-                               the respective CMX function with a leading 'int_' to the\r
-                               function. */\r
-                       K_Intrp_Mesg_Send(0,int_mesg);\r
-                       }\r
-               }\r
-#endif\r
-       }\r
-\r
-#if 0 /* Nick, see kprintf.c */\r
-void kprintf (char *fmt, ...)\r
-{\r
-    register char *arg;\r
-    register char c;\r
-    int  base;\r
-    char s[7], *itob();\r
-\r
-/* abyte('{'); */\r
-    arg = (char *)(&fmt+1);        /* NOTE: Assumes Pointer to 2-byte Word */\r
-#if 0\r
- while (c = *fmt++)\r
-  {\r
-  kputchar(c);\r
-  }\r
- ahexw(*(int *)arg);\r
- abyte('}');\r
- return;\r
-#endif\r
-    while (c = *fmt++) {\r
-        if (c != '%') {\r
-            kputchar (c);\r
-            continue;\r
-        }\r
-        switch (c = *fmt++) {\r
-            case 'c': kputchar (*arg++); arg++; /* for IAR compiler */\r
-                      continue;\r
-            case 'd': base = -10;\r
-                      goto prt;\r
-            case 'o': base = 8;\r
-                      goto prt;\r
-            case 'u': base = 10;\r
-                      goto prt;\r
-            case 'p': /* Nick */\r
-            case 'x': base = 16;\r
-   prt:\r
-                      puts (itob (*(int *)arg, s, base));\r
-                      arg++;  arg++;   /* NOTE: for Size of Word Ptr */\r
-                      continue;\r
-            case 's': puts (*(char **)arg);\r
-                      arg++;  arg++;    /* NOTE: for Size of Word Ptr */\r
-                     continue;\r
-            default: kputchar (c);\r
-                     continue;\r
-        }\r
-    }\r
-/* abyte('}'); */\r
-}\r
-#endif\r
-\r
-void kputchar(char c)\r
-       {\r
-       if (c == '\n')\r
-#if 0\r
-               {\r
-               abyte('\r');\r
-               }\r
-       abyte(c);\r
-#else\r
-               {\r
-               _putc(0, '\r'); /* Use default TTY, minor=0 */\r
-               }\r
-       _putc(0, c);\r
-#endif\r
-       }\r
-\r
-void puts(char *s)\r
-       {\r
-       while (*s)\r
-               {\r
-               kputchar(*s++);\r
-               }\r
-       }\r
-\r
-void _putc(int minor, char c)\r
-       {\r
-#ifdef POLLED\r
-       if (minor == 0 || minor == 2)\r
-               {\r
-               abyte(c);\r
-#else\r
-       if (minor == 0)\r
-               {\r
-               K_Put_Char_Wait(1, &c, 0x1000);\r
-#endif\r
-               }\r
-       else\r
-               {\r
-               K_Put_Char_Wait(minor - 1, &c, 0x1000);\r
-               }\r
-       }\r
-\r
-void my_tty_inproc(SDEV *device, char c)\r
-       {\r
-#if 1\r
-       register int minor;\r
-\r
-       minor = device->port + 1;\r
-       (*tty_vector[minor])(minor, c);\r
-#else\r
-       tty_inproc(1, c);\r
-#endif\r
-       }\r
-\r
-#if 0\r
-void my_tty_inproc5(SDEV *device, char c)\r
-       {\r
-       tty_inproc(2, c);\r
-       }\r
-#endif\r
-\r
-#if 0 /* Nick, see kprintf.c */\r
-#define TRUE 1\r
-#define FALSE 0\r
-\r
-/* convert an integer to a string in any base (2-36) */\r
-char *itob (int n, char *s, int base)\r
-    {\r
-    register unsigned int u;\r
-    register char *p, *q;\r
-    register negative, c;\r
-    if ((n < 0) && (base == -10)) {\r
-        negative = TRUE;\r
-        u = -n;\r
-        }\r
-    else {\r
-        negative = FALSE;\r
-        u = n;\r
-        }\r
-    if (base == -10)            /* Signals signed conversion */\r
-         base = 10;\r
-    p = q = s;\r
-    do {                        /* Generate digits in reverse order */\r
-        if ((*p = u % base + '0') > '9')\r
-            *p += ('A' - ('9' + 1));\r
-        ++p;\r
-        u = u / base;\r
-        } while (u > 0);\r
-    if (negative)\r
-        *p++ = '-';\r
-    *p = '\0';                  /* Terminate the string */\r
-    while (q < --p) {           /* Reverse the digits */\r
-        c = *q;\r
-        *q++ = *p;\r
-        *p = c;\r
-        }\r
-    return s;\r
-    }\r
-#endif\r
-\r
-void bzero(ptr, count)\r
-char *ptr;\r
-int count;\r
-       {\r
-       while (count--)\r
-               {\r
-               *ptr++ = 0;\r
-               }\r
-       }\r
-\r
-void bcopy(src, dest, count)\r
-char *src, *dest;\r
-int count;\r
-       {\r
-       while (count--)\r
-               {\r
-               *dest++ = *src++;\r
-               }\r
-       }\r
-\r
-int int_min(int a, int b)\r
-{\r
-       return (b < a ? b : a);\r
-}\r
-\r
-int int_max(int a, int b)\r
-{\r
-       return (b > a ? b : a);\r
-}\r
-\r
-int scsiop(void)\r
-       {\r
-       register char i, k;\r
-       register unsigned int j; /* counts up to n*0x200 */\r
-       char checksum; /* can't be register */\r
-       int timecnt = 0x1000;\r
-\r
-#if 0\r
- if (silly == 0)\r
-  while (1)\r
-   ;\r
-#endif\r
-\r
-/** abyte(':'); **/\r
-#if 0 /* Nick very temporary */\r
- if (cmdblk[1] == 'W')\r
-  return 0;\r
-#endif\r
-\r
-#if DEBUG >= 2\r
- dprintf(2, "scsiop: %c %u+%u,%u -> 0x%x\n", cmdblk[1],\r
-                                            (unsigned int)hd_sector,\r
-                                            (unsigned int)hd_offset,\r
-                                            (unsigned int)cmdblk[7],\r
-                                            (unsigned int)dptr);\r
-#endif\r
-\r
-       /* check for special hd_offset indicating the ramdrive is wanted */\r
-       if (hd_offset == 0)\r
-               {\r
-               j = ((unsigned int)cmdblk[7]) << 9;\r
-               hd_sector = 0x40000L + (hd_sector << 9);\r
-               hd_offset = (((long)osBank) << 12) + (long)dptr;\r
-\r
-               switch(cmdblk[1])\r
-                       {\r
-               case 'R':\r
-/* dprintf(2, "R %08lx -> %08lx, %04x\n", hd_sector, hd_offset, j); */\r
-                       copyr(hd_sector, hd_offset, j);\r
-                       break;\r
-               case 'W':\r
-/* dprintf(2, "W %08lx -> %08lx, %04x\n", hd_offset, hd_sector, j); */\r
-                       copyr(hd_offset, hd_sector, j);\r
-                       break;\r
-                       }\r
-\r
-               return 0;\r
-               }\r
-\r
-       /* at this point partitioning doesn't matter, so clobber hd_sector */\r
-       hd_sector += hd_offset;\r
-/** abyte('a'); **/\r
-\r
-       apibus_priority(0x17); /* set device 7 = priority 1 (maximum) */\r
-\r
-       for (i = 0; i < cmdblk[7]; i++)\r
-               {\r
-/** abyte('b'); **/\r
-               cmdblk[2] = hd_sector;\r
-               cmdblk[3] = hd_sector >> 8;\r
-               cmdblk[4] = hd_sector >> 16;\r
-               cmdblk[5] = hd_sector >> 24;\r
-/** abyte('c'); **/\r
-               cmdblk[6] = 0xff - cmdblk[5] - cmdblk[4]\r
-                                - cmdblk[3] - cmdblk[2];\r
-/** abyte('d'); **/\r
-\r
-#if 0\r
-               /* tell transmitter task waiting. */\r
-               compactflash_tcbptr = activetcb;\r
-#else\r
-               compactflash_enable = 1; /* prepare to receive esc sequence */\r
-#endif\r
-\r
-/* abyte('&'); */\r
-               switch(cmdblk[1])\r
-                       {\r
-\r
-               case 'R':\r
-/** abyte('e'); **/\r
-                       if (K_Put_Str_Wait(10, cmdblk, 7, timecnt) != K_OK)\r
-                               {\r
-/** abyte('f'); **/\r
-                               /* set device 7 = priority 7 (minimum) */\r
-                               apibus_priority(0x77);\r
-\r
-                               return 1;\r
-                               }\r
-/** abyte('g'); **/\r
-                       break;\r
-\r
-               case 'W':\r
-                       if (K_Put_Str_Wait(10, cmdblk, 6, timecnt) != K_OK)\r
-                               {\r
-                               /* set device 7 = priority 7 (minimum) */\r
-                               apibus_priority(0x77);\r
-\r
-                               return 1;\r
-                               }\r
-\r
-                       checksum = cmdblk[6];\r
-                       for (j = 0; j < 0x200; j += 0x20)\r
-                               {\r
-                               if (K_Put_Str_Wait(10, dptr + j, 0x20, timecnt)\r
-                                                                      != K_OK)\r
-                                       {\r
-                                       /* set device 7 = priority 7 (min) */\r
-                                       apibus_priority(0x77);\r
-\r
-                                       return 1;\r
-                                       }\r
-                               for (k = 0; k < 0x20; k++)\r
-                                       {\r
-                                       checksum -= dptr[j + k];\r
-                                       }\r
-/* abyte('.'); */\r
-                               }\r
-\r
-                       if (K_Put_Char_Wait(10, &checksum, timecnt) != K_OK)\r
-                               {\r
-                               /* set device 7 = priority 7 (minimum) */\r
-                               apibus_priority(0x77);\r
-\r
-                               return 1;\r
-                               }\r
-                       break;\r
-\r
-                       }\r
-\r
-/* abyte('*'); */\r
-#if 0\r
-               K_I_Disable_Sched();    /* set task block. */\r
-\r
-               /* see if still waiting for a response */\r
-               K_OS_Disable_Interrupts();      /* DISABLE INTERRUPTS. */\r
-               if (compactflash_tcbptr != NULL)\r
-                       {\r
-                       if (timecnt)    /* wait on time too? */\r
-                               {\r
-                               /* put task to sleep, indicating why */\r
-                               activetcb->tcbstate = WAIT | TIME;\r
-                               }\r
-                       else\r
-                               {\r
-                               /* put task to sleep, indicating why */\r
-                               activetcb->tcbstate = WAIT;\r
-                               }\r
-                       K_OS_Enable_Interrupts();       /* RE-ENABLE INTERRUPTS */\r
-\r
-                       K_I_Insert_Link(timecnt);       /* insert it into time link. */\r
-                       compactflash_tcbptr = NULL;     /* task will return to here. */\r
-\r
-                       K_I_Disable_Sched();    /* set task block. */\r
-                       if(K_I_Remove_Link())   /* remove from link. */\r
-                               {\r
-                               /* set device 7 = priority 7 (minimum) */\r
-                               apibus_priority(0x77);\r
-\r
-                               K_I_Func_Return();      /* time out occurred. */\r
-                               return(K_TIMEOUT);\r
-                               }\r
-                       }\r
-               else\r
-                       {\r
-                       K_OS_Enable_Interrupts();       /* RE-ENABLE INTERRUPTS */\r
-                       }\r
-               K_I_Func_Return();\r
-#else\r
-               while (compactflash_enable)\r
-                       ; /* rather primitive for the moment */\r
-#endif\r
-\r
-               dptr += 0x200;\r
-               hd_sector++;\r
-               }\r
-/** abyte(';'); **/\r
-\r
-       apibus_priority(0x77); /* set device 7 = priority 7 (minimum) */\r
-\r
-       return 0;\r
-       }\r
-\r
-void my_compactflash_in(SDEV *device, char c)\r
-       {\r
-       static char state = 0;\r
-       static char *dest;\r
-       static int count;\r
-\r
-#if 0\r
-       if (compactflash_tcbptr == NULL)\r
-#else\r
-       if (compactflash_enable == 0)\r
-#endif\r
-               {\r
-#if 0\r
- if (c == '0' || c == '1')\r
-  {\r
-  abyte(c + 6);\r
-  }\r
-#endif\r
-               return;\r
-               }\r
-\r
-       switch (state)\r
-               {\r
-\r
-       case 0:\r
-               switch (c)\r
-                       {\r
-\r
-               case '0':\r
-               case '1':\r
-#if 0\r
- abyte(c + 8);\r
-#endif\r
-                       break;\r
-\r
-               case 0x1b:\r
-                       state++;\r
-                       break;\r
-\r
-                       }\r
-               break;\r
-\r
-       case 1:\r
-       case 2:\r
-       case 3:\r
-       case 4:\r
-#if 0\r
- if (state == 1)\r
-  {\r
-  abyte(c);\r
-  }\r
-#endif\r
-               if (c == cmdblk[state])\r
-                       {\r
-                       state++;\r
-                       break;\r
-                       }\r
-               state = 0;\r
-               break;\r
-\r
-       case 5:\r
-               if (c == cmdblk[5])\r
-                       {\r
-                       switch (cmdblk[1])\r
-                               {\r
-\r
-                       case 'R':\r
-                               state = 6; /* reading, prepare for data xfer */\r
-                               dest = dptr;\r
-                               count = 0x200;\r
-                               break;\r
-\r
-                       case 'W':\r
-                               state = 7; /* writing, skip data xfer step */\r
-                               break;\r
-\r
-                       default:\r
-                               state = 0; /* should never get here */\r
-                               break;\r
-\r
-                               }\r
-                       break;\r
-                       }\r
-               state = 0;\r
-               break;\r
-\r
-       case 6:\r
-               cmdblk[6] -= c;\r
-               *dest++ = c;\r
-#if 0\r
- if ((count & 0x1f) == 0)\r
-  {\r
-  abyte('.');\r
-  }\r
-#endif\r
-               if (--count)\r
-                       {\r
-                       break;\r
-                       }\r
-               state = 7;\r
-               break;\r
-\r
-       case 7:\r
-               if (c == cmdblk[6])\r
-                       {\r
-#if 0\r
- abyte('$');\r
-#endif\r
-#if 0\r
-                       /* see if task waiting. */\r
-                       if (compactflash_tcbptr->tcbstate & WAIT)\r
-                               {\r
-                               /* yes, wake task. */\r
-                               device->xmit.tcbptr->tcbstate = RESUME;\r
-                               if (compactflash_tcbptr->priority <\r
-                                               active_priority)\r
-                                       {\r
-                                       PREEMPTED; /*cmx_flag1 |= preempted;*/  /* yes, set preempted K_I_Scheduler flag */\r
-                                       }\r
-                               }\r
-\r
-                       compactflash_tcbptr = NULL;\r
-#else\r
-                       compactflash_enable = 0; /* command done ok */\r
-#endif\r
-                       }\r
-#if 0\r
- else { abyte('%'); }\r
-#endif\r
-               /* we could also include retry stuff here */\r
-               state = 0;\r
-               break;\r
-\r
-               }\r
-       }\r
-\r
-void my_touchscreen_in(SDEV *device, char c)\r
-       {\r
-       static char state = 0;\r
-       static unsigned char message[8];\r
-\r
-       message[state] = c;\r
-\r
-       switch (state)\r
-               {\r
-\r
-       case 0:\r
-               switch (c)\r
-                       {\r
-\r
-               case 0x1b:\r
-                       state++;\r
-                       break;\r
-\r
-               default:\r
-#if 1\r
-                       (*tty_vector[6])(6, c);\r
-#else\r
-                       tty_inproc(2, c);\r
-#endif\r
-                       break;\r
-\r
-                       }\r
-               break;\r
-\r
-       case 1:\r
-               if (c == 'T')\r
-                       {\r
-                       state++;\r
-                       }\r
-               else\r
-                       {\r
-                       state = 0;\r
-                       }\r
-               break;\r
-\r
-       case 2: /* hour */\r
-       case 3: /* mins */\r
-       case 4: /* secs */\r
-       case 5: /* month */\r
-       case 6: /* day */\r
-               state++;\r
-               break;\r
-\r
-       case 7: /* year-1980 */\r
-               tod.t_time = ((int)message[4] >> 1) |\r
-                            ((int)message[3] << 5) |\r
-                            ((int)message[2] << 11);\r
-\r
-               tod.t_date = (int)message[6] |\r
-                            ((int)message[5] << 5) |\r
-                            ((int)message[7] << 9);\r
-\r
-               state = 0;\r
-               break;\r
-               }\r
-       }\r
-\r
-void sttime(time_t *tvec)\r
-       {\r
-       char message[8];\r
-\r
-       message[0] = 0x1b;\r
-       message[1] = 'T';\r
-       message[2] = (tvec->t_time >> 11) & 0x1f;       /* hour */\r
-       message[3] = (tvec->t_time >> 5) & 0x3f;        /* mins */\r
-       message[4] = (tvec->t_time << 1) & 0x3f;        /* secs */\r
-       message[5] = (tvec->t_date >> 5) & 0xf;         /* month */\r
-       message[6] = tvec->t_date & 0x1f;               /* day */\r
-       message[7] = (tvec->t_date >> 9) & 0x3f;        /* year */\r
-\r
-       if (K_Put_Str_Wait(5, message, 8, 0x1000) != K_OK)\r
-               {\r
-               panic("can't sttime");\r
-               }\r
-       }\r
-\r
-void hostname_setup(void)\r
-       {\r
-       register char i, j;\r
-\r
-       for (i = 0; i < 5; i++)\r
-               {\r
-               if (rom_serial_no[i] != ' ')\r
-                       {\r
-                       break;\r
-                       }\r
-               }\r
-\r
-       j = 2;\r
-       while (i < 5 && rom_serial_no[i])\r
-               {\r
-               HOST[j++] = rom_serial_no[i++];\r
-               }\r
-\r
-       HOST[j] = 0;\r
-       }\r
-\r
index 6c4ce83..c1d827f 100644 (file)
 #include <config.h>\r
 #include <extern.h>\r
 #include "devtty.h"\r
+#include <stdio.h>\r
+#include <syscalls.h>\r
+#include "kprintf.h"\r
+#include "extern.h"\r
+#include "devno.h"\r
+#include "touchscreen.h"\r
+#include "testsystem.h"\r
+\r
+\r
+extern void _putc(int minor, char c);\r
 \r
-void _putc(int minor, char c);\r
 void testsystem_rx_hook(SDEV *device, char c);\r
 void testsystem_rx_handler(SDEV *device, char c);\r
 \r
-void (*save_rx_vector[PORTS])(SDEV *device, char c);\r
+/* Testsystem defaults */\r
+tsysT tsys = {\r
+               0,      /* Testsystem not enabled */\r
+               0       /* No recording of RTC data */\r
+            };\r
 \r
 \r
 void testsystem_rx_handler(SDEV *device, char c)\r
 {\r
-       /* Do some special things */\r
+       /*\r
+        * Receives and interprets the input stream from Serial 3,\r
+        * which is assumed to be simulated or recorded data, interleaved\r
+        * with special command sequences.\r
+        */\r
+       static int state = 0, port = -1;\r
+\r
+       if (tsys.enabled)\r
+       {\r
+               /* Hunt for a command or escaped sequence (starts with ESC) */\r
+               if (c == 0x1b)\r
+               {\r
+                       if (!state)\r
+                       {\r
+                               /* Start of command sequence */\r
+                               state = 1;\r
+                               return;\r
+                       }\r
+                       else\r
+                       {\r
+                               /* Escaped sequence */\r
+                               state = 0;\r
+                       }\r
+               }\r
+               else if (state)\r
+               {\r
+                       switch (c)\r
+                       {\r
+                       case 'R': /* Toggle ext. RTC on/off */\r
+                               rtc.source = rtc.source == RTC_INT ?\r
+                                                          RTC_EXT :\r
+                                                          RTC_INT;\r
+                               break;\r
+                       case 'r': /* Toggle recording int. RTC on/off */\r
+                               tsys.rtc_rec = tsys.rtc_rec ? 0 : 1;\r
+                               break;\r
+                       default: /* 'Raw minor' device id */\r
+                               port = c;\r
+                       }\r
+                       \r
+                       state = 0;\r
+                       return;\r
+               }\r
 \r
-       /* For now, just simulate touchscreen */\r
-       device->port = 5;\r
-       sdevs[device->port].rx_vector(device, c);\r
+\r
+               /*\r
+                * First assume simulated INPUT from device\r
+                */\r
+               switch (port)\r
+               {\r
+               case DEV_TS: /* Touchscreen */\r
+                       if (rtc.source == RTC_EXT && RTC_extract(c, RTC_EXT))\r
+                               break;\r
+                       /* Fall through */\r
+               case DEV_TP: /* Thermal printer */\r
+               case DEV_S1: /* Serial 1 - scanner */\r
+               case DEV_LC: /* Load cell */\r
+               case DEV_CD: /* Customer display */\r
+                       port = _2SDEV(port);\r
+                       sdevs[port].rx_vector(&sdevs[port], c);\r
+                       break;\r
+               default:\r
+                       /*\r
+                        * Next, assume OUTPUT to device;\r
+                        * Bring 'raw minor' device id in normal range\r
+                        */\r
+                       port -= DEVOUT_BASE;\r
+\r
+                       switch (port)\r
+                       {\r
+                       case DEV_TS:/* Touchscreen */\r
+                       case DEV_TP:/* Thermal printer */\r
+                       case DEV_S1:/* Serial 1 - scanner */\r
+                       case DEV_LC:/* Load cell */\r
+                       case DEV_CD:/* Customer display */\r
+#ifdef RPB_DEBUG\r
+                               kprintf("p=%d, c=0x%x\n", port, c);\r
+#endif\r
+                               _putc(port, c);\r
+                               break;\r
+                       default:\r
+                               /* No such device */\r
+                               kprintf("testsystem_rx_handler: ERROR port = %d, c = %d\n", port, c);\r
+                       }\r
+               }\r
+       }\r
 }\r
+       \r
+\r
 \r
 void testsystem_rx_hook(SDEV *device, char c)\r
 {\r
-       /* For now, just echo character on serial 3 */\r
-       _putc(4, c);\r
+       /*\r
+        * Tags each received character with its source device id.\r
+        * Escapes special characters in the data stream.\r
+        */\r
+       static char current_port = 0;\r
+       char port;\r
+\r
+       if (tsys.enabled)\r
+       {\r
+               port = _2MINOR(device->port);\r
+\r
+               if (port != DEV_TS &&\r
+                   port != DEV_TP &&\r
+                   port != DEV_S1 &&\r
+                   port != DEV_LC &&\r
+                   port != DEV_CD) \r
+               {\r
+                       /* Not supported yet or error */\r
+                       kprintf("testsystem_rx_hook p=0x%x\n", (int)c);\r
+                       return;\r
+               }\r
+\r
+#if 0\r
+               /*\r
+                * This part, remembering the current port, has problems\r
+                * with the testsystem_rx_handler() which keeps on\r
+                * interfering and overwrites 'current_port'.\r
+                * No solution to the problem yet (better understand it\r
+                * first), hence EACH received character output on S3\r
+                * is tagged with the device id.\r
+                */\r
+\r
+               /*\r
+                * This may cause problems since all testsystem_rx_hooks\r
+                * access this same static current_port. Should be protected\r
+                * by a mutex => TODO\r
+                */\r
+               if (port != current_port)\r
+               {\r
+                       /* Insert minor device id before character received */\r
+                       _putc(DEV_S3, 0x1b);\r
+                       _putc(DEV_S3, port);\r
+                       current_port = port;\r
+               }\r
+#endif\r
 \r
-       save_rx_vector[device->port](device, c);\r
+               /* Insert minor device id before character received */\r
+               _putc(DEV_S3, 0x1b);\r
+               _putc(DEV_S3, port);\r
+\r
+               /* Escape an ESC in the data stream */\r
+               if (c == 0x1b)\r
+                       _putc(DEV_S3, 0x1b);\r
+\r
+               _putc(DEV_S3, c);\r
+       }\r
+\r
+       /* Don't pass on RTC data */\r
+       if (!rtc.seq)\r
+               wsdevs[device->port].saved_rx_vector[1](device, c);\r
 }\r
 \r
 void testsystem_init(void)\r
 {\r
-#if 0\r
-       int i;\r
+       /*\r
+        * Initialises testsystem\r
+        */\r
+       char p;\r
+\r
+       /* Configures which devices get the testsystem hook installed */\r
+       wsdevs[_2SDEV(DEV_S1)].tsyshook = 1;\r
+       wsdevs[_2SDEV(DEV_LC)].tsyshook = 0;\r
+       wsdevs[_2SDEV(DEV_TS)].tsyshook = 1;\r
+       wsdevs[_2SDEV(DEV_CD)].tsyshook = 1;\r
+       wsdevs[_2SDEV(DEV_TP)].tsyshook = 1;\r
 \r
-       for (i = 0; i < PORTS; i++)\r
+       K_OS_Disable_Interrupts();\r
+\r
+       for (p = 0; p < PORTS; p++)\r
        {\r
-               save_rx_vector[i] = sdevs[i].rx_vector;\r
+               /* Skip Serial 3 itself */\r
+               if (p != _2SDEV(DEV_S3))\r
+               {\r
+                       /* Install testsystem hook on selected ports */\r
+                       if (wsdevs[p].tsyshook)\r
+                       {\r
+                               if (wsdevs[p].saved_rx_vector[0])\r
+                               {\r
+                                       /* Install behind device special handler */\r
+                                       wsdevs[p].saved_rx_vector[1] = wsdevs[p].saved_rx_vector[0];\r
+                                       wsdevs[p].saved_rx_vector[0] = testsystem_rx_hook;\r
+                               }\r
+                               else\r
+                               {\r
+                                       /* No device special handler */\r
+                                       wsdevs[p].saved_rx_vector[1] = sdevs[p].rx_vector;\r
+                                       sdevs[p].rx_vector = testsystem_rx_hook;\r
+                               }\r
+                       }\r
+               }\r
+               else\r
+               {\r
+                       /* Install testsystem RX handler on serial 3 */\r
+                       if (wsdevs[p].saved_rx_vector[0])\r
+                       {\r
+                               /* Install behind device special handler */\r
+                               wsdevs[p].saved_rx_vector[1] = wsdevs[p].saved_rx_vector[0];\r
+                               wsdevs[p].saved_rx_vector[0] = testsystem_rx_handler;\r
+                       }\r
+                       else\r
+                       {\r
+                               /* No device special handler */\r
+                               wsdevs[p].saved_rx_vector[1] = sdevs[p].rx_vector;\r
+                               sdevs[p].rx_vector = testsystem_rx_handler;\r
+                       }\r
+               }\r
        }\r
-#endif\r
 \r
-       /* For now, the test system only operates on the touchscreen */\r
-       save_rx_vector[5] = sdevs[5].rx_vector;\r
-       sdevs[5].rx_vector = testsystem_rx_hook;\r
+       K_OS_Enable_Interrupts();\r
+       tsys.enabled = 1;\r
 \r
-       /* And install testsystem rx handler on serial 3 */\r
-       save_rx_vector[3] = sdevs[3].rx_vector;\r
-       sdevs[3].rx_vector = testsystem_rx_handler;\r
+       kprintf("Test system enabled\n");\r
 }\r
 \r
+void testsystem_exit(void)\r
+{\r
+       /*\r
+        * Disables the testsystem\r
+        */\r
+       char p;\r
+\r
+       K_OS_Disable_Interrupts();\r
+\r
+       for (p = 0; p < PORTS; p++)\r
+       {\r
+               /* Skip Serial 3 itself */\r
+               if (p != _2SDEV(DEV_S3))\r
+               {\r
+                       /* De-install testsystem hook on selected ports */\r
+                       if (wsdevs[p].tsyshook)\r
+                       {\r
+                               if (wsdevs[p].saved_rx_vector[0])\r
+                               {\r
+                                       /* Remove behind device special handler */\r
+                                       wsdevs[p].saved_rx_vector[0] = wsdevs[p].saved_rx_vector[1];\r
+                               }\r
+                               else\r
+                               {\r
+                                       /* No device special handler */\r
+                                       sdevs[p].rx_vector = wsdevs[p].saved_rx_vector[1];\r
+                               }\r
+                       }\r
+               }\r
+               else\r
+               {\r
+                       /* Remove testsystem RX handler from Serial 3 */\r
+                       sdevs[p].rx_vector = wsdevs[p].saved_rx_vector[1];\r
+               }\r
+       }\r
+\r
+       K_OS_Enable_Interrupts();\r
+       tsys.enabled = 0;\r
+\r
+       kprintf("Test system disabled\n");\r
+}\r
 \r
index 1e901a6..cd784be 100644 (file)
@@ -1,4 +1,13 @@
 /* testsystem.h for uzi180 - testsystem definitions and declarations */\r
 \r
-extern void testsystem_init();\r
+typedef struct\r
+{\r
+       unsigned char enabled;  /* status of test system */\r
+       unsigned char rtc_rec;  /* Internal RTC being recorded */\r
+} tsysT;\r
+\r
+extern tsysT tsys;\r
+\r
+extern void tsys_init();\r
+extern void tsys_exit();\r
 \r
index 31b42be..0512ff6 100644 (file)
@@ -8,57 +8,89 @@
 #include <config.h>\r
 #include <extern.h>\r
 #include "devtty.h"\r
-\r
-void sttime(time_t *tvec);\r
-void touchscreen_rx_hook(SDEV *device, char c);\r
-void (*touchscreen_save_rx_vector)(SDEV *device, char c);\r
+#include "devno.h"\r
+#include "touchscreen.h"\r
+#include "testsystem.h"\r
 \r
 \r
+/* RTC defaults */\r
+rtcT rtc = {\r
+               0,              /* No RTC sequence in progress */\r
+               RTC_INT         /* RTC source is internal */\r
+          };\r
 \r
 void touchscreen_init(void)\r
 {\r
-       touchscreen_save_rx_vector = sdevs[5].rx_vector;\r
-       sdevs[5].rx_vector = touchscreen_rx_hook;\r
+        K_OS_Disable_Interrupts();\r
+\r
+       /* Install touchscreen RX hook */\r
+       wsdevs[_2SDEV(DEV_TS)].saved_rx_vector[0] = sdevs[_2SDEV(DEV_TS)].rx_vector;\r
+       sdevs[_2SDEV(DEV_TS)].rx_vector = touchscreen_rx_hook;\r
+\r
+        K_OS_Enable_Interrupts();\r
 }\r
 \r
 void touchscreen_rx_hook(SDEV *device, char c)\r
-       {\r
-       static char state = 0;\r
-       static unsigned char message[8];\r
+{\r
+       /* Extract RTC data from input stream */\r
+       if (!RTC_extract(c, RTC_INT))\r
+               (*wsdevs[_2SDEV(DEV_TS)].saved_rx_vector[0])(device, c);\r
 \r
-       message[state] = c;\r
+       /* If the testsystem is recording, pass the RTC data on */\r
+       else if (tsys.rtc_rec)\r
+               (*wsdevs[_2SDEV(DEV_TS)].saved_rx_vector[0])(device, c);\r
+}\r
 \r
-       switch (state)\r
-               {\r
+/*\r
+ * s: RTC source => s == RTC_INT : internal RTC\r
+ *                  s == RTC_EXT : external RTC\r
+*/\r
+int RTC_extract(char c, char s)\r
+{\r
+\r
+       static unsigned char state[2] = {0, 0};\r
+       static unsigned char message[2][8];\r
+\r
+       message[s][state[s]] = c;\r
+\r
+       switch (state[s])\r
+       {\r
 \r
        case 0:\r
                switch (c)\r
-                       {\r
+               {\r
 \r
                case 0x1b:\r
-                       state++;\r
+                       /*\r
+                        * There's still a problem with this first ESC:\r
+                        * it either IS or IS NOT given to the application\r
+                        * depending on how the return code for this\r
+                        * first ESC (1) is interpreted. \r
+                        */\r
+                       state[s]++;\r
+                       rtc.seq = 1;\r
                        break;\r
 \r
                default:\r
-#if 1\r
-                       (*touchscreen_save_rx_vector)(device, c);\r
-#else\r
-                       tty_inproc(2, c);\r
-#endif\r
-                       break;\r
+                       /* Encountered no sequence at all */\r
+                       return(0);\r
 \r
-                       }\r
+               }\r
                break;\r
 \r
        case 1:\r
                if (c == 'T')\r
-                       {\r
-                       state++;\r
-                       }\r
+               {\r
+                       state[s]++;\r
+               }\r
                else\r
-                       {\r
-                       state = 0;\r
-                       }\r
+               {\r
+                       state[s] = 0;\r
+                       rtc.seq = 0;\r
+                       /* Unknown ESC sequence */\r
+                       return(0);\r
+               }\r
+\r
                break;\r
 \r
        case 2: /* hour */\r
@@ -66,25 +98,33 @@ void touchscreen_rx_hook(SDEV *device, char c)
        case 4: /* secs */\r
        case 5: /* month */\r
        case 6: /* day */\r
-               state++;\r
+               state[s]++;\r
                break;\r
 \r
        case 7: /* year-1980 */\r
-               tod.t_time = ((int)message[4] >> 1) |\r
-                            ((int)message[3] << 5) |\r
-                            ((int)message[2] << 11);\r
-\r
-               tod.t_date = (int)message[6] |\r
-                            ((int)message[5] << 5) |\r
-                            ((int)message[7] << 9);\r
+               if (rtc.source == s)\r
+               {\r
+                       tod.t_time = ((int)message[s][4] >> 1) |\r
+                                    ((int)message[s][3] << 5) |\r
+                                    ((int)message[s][2] << 11);\r
 \r
-               state = 0;\r
-               break;\r
+                       tod.t_date = (int)message[s][6] |\r
+                                    ((int)message[s][5] << 5) |\r
+                                    ((int)message[s][7] << 9);\r
                }\r
+\r
+               state[s] = 0;\r
+               rtc.seq = 0;\r
+               /* Encountered complete RTC sequence */\r
+               return(2);\r
        }\r
 \r
+       /* Partial RTC sequence */\r
+       return(1);\r
+}\r
+\r
 void sttime(time_t *tvec)\r
-       {\r
+{\r
        char message[8];\r
 \r
        message[0] = 0x1b;\r
@@ -96,9 +136,9 @@ void sttime(time_t *tvec)
        message[6] = tvec->t_date & 0x1f;               /* day */\r
        message[7] = (tvec->t_date >> 9) & 0x3f;        /* year */\r
 \r
-       if (K_Put_Str_Wait(5, message, 8, 0x1000) != K_OK)\r
-               {\r
+       if (K_Put_Str_Wait(_2SDEV(DEV_TS), message, 8, 0x1000) != K_OK)\r
+       {\r
                panic("can't sttime");\r
-               }\r
        }\r
+}\r
 \r
index 5bc950a..7c57599 100644 (file)
@@ -1,3 +1,17 @@
 /* touchscreen.h for uzi180 - touchscreen definitions and declarations */\r
 \r
+#define RTC_INT        0       /* internal RTC */\r
+#define RTC_EXT        1       /* external RTC */\r
+\r
+typedef struct\r
+{\r
+       unsigned char seq;      /* RTC sequence in progress */\r
+       unsigned char source;   /* RTC source */\r
+} rtcT;\r
+\r
+extern rtcT rtc;\r
+\r
+extern int RTC_extract(char c, char s);\r
+extern void sttime(time_t *tvec);\r
 extern void touchscreen_init(void);\r
+extern void touchscreen_rx_hook(SDEV *device, char c);\r
diff --git a/src/mkutil/revava-0.3/Avr.C b/src/mkutil/revava-0.3/Avr.C
new file mode 100644 (file)
index 0000000..4f81c43
--- /dev/null
@@ -0,0 +1,427 @@
+/*\r
+  Program: revava - Atmel Dis-Assembler\r
+  File: Avr.C\r
+  Parts of this are Copyright (C) 1997-1999 Uros Platise\r
+  The rest of it is Copyright (C) 2001 Daniel J. Winker\r
+\r
+  This program is free software; you can redistribute it and/or\r
+  modify it under the terms of the GNU General Public License\r
+  as published by the Free Software Foundation; either version 2\r
+  of the License, or (at your option) any later version.\r
+\r
+  This program is distributed in the hope that it will be useful,\r
+  but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+  GNU General Public License for more details.\r
+\r
+  You should have received a copy of the GNU General Public License\r
+  along with this program; if not, write to the Free Software\r
+  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
+*/\r
+\r
+#include <stdio.h>\r
+#include <string.h> /* Nick */\r
+\r
+#include "Avr.h"\r
+#include "Error.h"\r
+\r
+#define FALSE 0\r
+#define TRUE  (!FALSE)\r
+\r
+//#define DEBUG_3\r
+\r
+// The "---" entry at the end is necessary because of the way\r
+// TAvr::Word2Instruction signals the calling function that no matching entry\r
+// was found.  It returns 0 to do that.  If TAvr::InstSet[] had the "wdr" entry\r
+// just before the NULL entry then an actual "wdr" causes 0 to be returned.\r
+TAvr::TInstSet TAvr::InstSet [] = { \r
+       { "adc",  "dr", "000111rdddddrrrr", ARG_0_31,        ARG_0_31        }, // rol is a special case of adc\r
+       { "add",  "dr", "000011rdddddrrrr", ARG_0_31,        ARG_0_31        }, // Complement of lsl\r
+       { "adiw", "dK", "10010110KKddKKKK", ARG_24_26_28_30, ARG_0_63        },\r
+       { "and",  "dr", "001000rdddddrrrr", ARG_0_31,        ARG_0_31        }, // tst is a special case of and\r
+       { "andi", "dK", "0111KKKKddddKKKK", ARG_16_31,       ARG_0_255       }, // Complement of cbr\r
+       { "asr",  "d",  "1001010ddddd0101", ARG_0_31,        ARG_none        },\r
+       { "bclr", "s",  "100101001sss1000", ARG_0_7,         ARG_none        }, // clz is a special case of bclr\r
+       { "bld",  "db", "1111100ddddd0bbb", ARG_0_31,        ARG_0_7         },\r
+       { "brbc", "sk", "111101kkkkkkksss", ARG_0_7,         ARG_neg64_63    }, // brge, brid, brpl, brtc is a special case of brbc\r
+       { "brbs", "sk", "111100kkkkkkksss", ARG_0_7,         ARG_neg64_63    }, // brcs, breq, brhs, brie, brlo, brlt, brts is a special case of brbs\r
+       { "brcc", "k",  "111101kkkkkkk000", ARG_neg64_63,    ARG_none        },\r
+       { "brcs", "k",  "111100kkkkkkk000", ARG_neg64_63,    ARG_none        }, // brcs is a special case of brbs\r
+       { "breq", "k",  "111100kkkkkkk001", ARG_neg64_63,    ARG_none        }, // breq is a special case of brbs\r
+       { "brge", "k",  "111101kkkkkkk100", ARG_neg64_63,    ARG_none        }, // brge is a special case of brbc\r
+       { "brhc", "k",  "111101kkkkkkk101", ARG_neg64_63,    ARG_none        },\r
+       { "brhs", "k",  "111100kkkkkkk101", ARG_neg64_63,    ARG_none        }, // brhs is a special case of brbs\r
+       { "brid", "k",  "111101kkkkkkk111", ARG_neg64_63,    ARG_none        },\r
+       { "brie", "k",  "111100kkkkkkk111", ARG_neg64_63,    ARG_none        }, // brie is a special case of brbs\r
+       { "brlo", "k",  "111100kkkkkkk000", ARG_neg64_63,    ARG_none        }, // brlo is a special case of brbs\r
+       { "brlt", "k",  "111100kkkkkkk100", ARG_neg64_63,    ARG_none        }, // brlt is a special case of brbs\r
+       { "brmi", "k",  "111100kkkkkkk010", ARG_neg64_63,    ARG_none        },\r
+       { "brne", "k",  "111101kkkkkkk001", ARG_neg64_63,    ARG_none        },\r
+       { "brpl", "k",  "111101kkkkkkk010", ARG_neg64_63,    ARG_none        }, // brpl is a special case of brbc\r
+       { "brsh", "k",  "111101kkkkkkk000", ARG_neg64_63,    ARG_none        },\r
+       { "brtc", "k",  "111101kkkkkkk110", ARG_neg64_63,    ARG_none        }, // brtc is a special case of brbc\r
+       { "brts", "k",  "111100kkkkkkk110", ARG_neg64_63,    ARG_none        }, // brts is a special case of brbs\r
+       { "brvc", "k",  "111101kkkkkkk011", ARG_neg64_63,    ARG_none        },\r
+       { "brvs", "k",  "111100kkkkkkk011", ARG_neg64_63,    ARG_none        },\r
+       { "bset", "s",  "100101000sss1000", ARG_0_7,         ARG_none        },\r
+       { "bst",  "db", "1111101ddddd0bbb", ARG_0_31,        ARG_0_7         },\r
+//     { "call", "k",  "1001010kkkkk111k", ARG_longCall,    ARG_none        }, // from ava: "Instruction not supported by selected model: call"\r
+       { "cbi",  "Pb", "10011000PPPPPbbb", ARG_0_31,        ARG_0_7         },\r
+       { "cbr",  "dK", "0111KKKKddddKKKK", ARG_16_31,       ARG_cm0_cm255   }, // Complement of andi (Really Complement)\r
+       { "clc",  "",   "1001010010001000", ARG_none,        ARG_none        },\r
+       { "clh",  "",   "1001010011011000", ARG_none,        ARG_none        },\r
+       { "cli",  "",   "1001010011111000", ARG_none,        ARG_none        },\r
+       { "cln",  "",   "1001010010101000", ARG_none,        ARG_none        },\r
+       { "clr",  "d",  "001001CdddddCCCC", ARG_0_31,        ARG_copyArg     }, // Complement of eor\r
+       { "cls",  "",   "1001010011001000", ARG_none,        ARG_none        },\r
+       { "clt",  "",   "1001010011101000", ARG_none,        ARG_none        },\r
+       { "clv",  "",   "1001010010111000", ARG_none,        ARG_none        },\r
+       { "clz",  "",   "1001010010011000", ARG_none,        ARG_none        }, // clz is a special case of bclr\r
+       { "com",  "d",  "1001010ddddd0000", ARG_0_31,        ARG_none        },\r
+       { "cp",   "dr", "000101rdddddrrrr", ARG_0_31,        ARG_0_31        },\r
+       { "cpc",  "dr", "000001rdddddrrrr", ARG_0_31,        ARG_0_31        },\r
+       { "cpi",  "dK", "0011KKKKddddKKKK", ARG_16_31,       ARG_0_255       },\r
+       { "cpse", "dr", "000100rdddddrrrr", ARG_0_31,        ARG_0_31        },\r
+       { "dec",  "d",  "1001010ddddd1010", ARG_0_31,        ARG_none        },\r
+       { "eor",  "dr", "001001rdddddrrrr", ARG_0_31,        ARG_0_31        }, // Complement of clr\r
+       { "icall","",   "1001010100001001", ARG_none,        ARG_none        },\r
+       { "ijmp", "",   "1001010000001001", ARG_none,        ARG_none        },\r
+       { "in",   "dP", "10110PPdddddPPPP", ARG_0_31,        ARG_0_63        },\r
+       { "inc",  "d",  "1001010ddddd0011", ARG_0_31,        ARG_none        },\r
+//     { "jmp",  "k",  "1001010kkkkk110k", ARG_longCall,    ARG_none        }, // from ava: "Instruction not supported by selected model: jmp"\r
+       { "ld",   "dX", "1001000ddddd1100", ARG_0_31,        ARG_specialX    },\r
+       { "ld",   "dX", "1001000ddddd1101", ARG_0_31,        ARG_specialIncX },\r
+       { "ld",   "dX", "1001000ddddd1110", ARG_0_31,        ARG_specialDecX },\r
+       { "ld",   "dY", "1000000ddddd1000", ARG_0_31,        ARG_specialY    }, // ld4 is a special case of ldd1\r
+       { "ld",   "dY", "1001000ddddd1001", ARG_0_31,        ARG_specialIncY },\r
+       { "ld",   "dY", "1001000ddddd1010", ARG_0_31,        ARG_specialDecY },\r
+       { "ld",   "dZ", "1000000ddddd0000", ARG_0_31,        ARG_specialZ    }, // ld7 is a special case of ldd2\r
+       { "ld",   "dZ", "1001000ddddd0001", ARG_0_31,        ARG_specialIncZ },\r
+       { "ld",   "dZ", "1001000ddddd0010", ARG_0_31,        ARG_specialDecZ },\r
+       { "ldd",  "dY", "10Y0YY0ddddd1YYY", ARG_0_31,        ARG_0_63        },\r
+       { "ldd",  "dZ", "10Z0ZZ0ddddd0ZZZ", ARG_0_31,        ARG_0_63        },\r
+       { "ldi",  "dK", "1110KKKKddddKKKK", ARG_16_31,       ARG_0_255       },\r
+       { "lds",  "dK", "1001000ddddd0000", ARG_0_31,        ARG_longCall    },\r
+       { "lpm",  "",   "1001010111001000", ARG_none,        ARG_none        },\r
+       { "lsl",  "d",  "000011CdddddCCCC", ARG_0_31,        ARG_copyArg     }, // Complement of add\r
+       { "lsr",  "d",  "1001010ddddd0110", ARG_0_31,        ARG_none        },\r
+       { "mov",  "dr", "001011rdddddrrrr", ARG_0_31,        ARG_0_31        },\r
+//     { "mul",  "dr", "100111rdddddrrrr", ARG_0_31,        ARG_0_31        }, // from ava: "Instruction not supported by selected model: mul"\r
+       { "neg",  "d",  "1001010ddddd0001", ARG_0_31,        ARG_none        },\r
+       { "nop",  "",   "0000000000000000", ARG_none,        ARG_none        },\r
+       { "or",   "dr", "001010rdddddrrrr", ARG_0_31,        ARG_0_31        },\r
+       { "ori",  "dK", "0110KKKKddddKKKK", ARG_16_31,       ARG_0_255       }, // Complement of sbr\r
+       { "out",  "Pr", "10111PPrrrrrPPPP", ARG_0_63,        ARG_0_31        },\r
+       { "pop",  "d",  "1001000ddddd1111", ARG_0_31,        ARG_none        },\r
+       { "push", "d",  "1001001ddddd1111", ARG_0_31,        ARG_none        },\r
+       { "rcall","k",  "1101kkkkkkkkkkkk", ARG_neg2KB_2KB,  ARG_none        },\r
+       { "ret",  "",   "1001010100001000", ARG_none,        ARG_none        },\r
+       { "reti", "",   "1001010100011000", ARG_none,        ARG_none        },\r
+       { "rjmp", "k",  "1100kkkkkkkkkkkk", ARG_neg2KB_2KB,  ARG_none        },\r
+       { "rol",  "d",  "000111CdddddCCCC", ARG_0_31,        ARG_copyArg     }, // rol is a special case of adc\r
+       { "ror",  "d",  "1001010ddddd0111", ARG_0_31,        ARG_none        },\r
+       { "sbc",  "dr", "000010rdddddrrrr", ARG_0_31,        ARG_0_31        },\r
+       { "sbci", "dK", "0100KKKKddddKKKK", ARG_16_31,       ARG_0_255       },\r
+       { "sbi",  "pb", "10011010pppppbbb", ARG_0_31,        ARG_0_7         },\r
+       { "sbic", "pb", "10011001pppppbbb", ARG_0_31,        ARG_0_7         },\r
+       { "sbis", "pb", "10011011pppppbbb", ARG_0_31,        ARG_0_7         },\r
+       { "sbiw", "dK", "10010111KKddKKKK", ARG_24_26_28_30, ARG_0_63        },\r
+       { "sbr",  "dK", "0110KKKKddddKKKK", ARG_16_31,       ARG_0_255       }, // Complement of ori\r
+       { "sbrc", "rb", "1111110rrrrr0bbb", ARG_0_31,        ARG_0_7         },\r
+       { "sbrs", "rb", "1111111rrrrr0bbb", ARG_0_31,        ARG_0_7         },\r
+       { "sec",  "",   "1001010000001000", ARG_none,        ARG_none        },\r
+       { "seh",  "",   "1001010001011000", ARG_none,        ARG_none        },\r
+       { "sei",  "",   "1001010001111000", ARG_none,        ARG_none        },\r
+       { "sen",  "",   "1001010000101000", ARG_none,        ARG_none        },\r
+       { "ser",  "d",  "11101111dddd1111", ARG_16_31,       ARG_none        },\r
+       { "ses",  "",   "1001010001001000", ARG_none,        ARG_none        },\r
+       { "set",  "",   "1001010001101000", ARG_none,        ARG_none        },\r
+       { "sev",  "",   "1001010000111000", ARG_none,        ARG_none        },\r
+       { "sez",  "",   "1001010000011000", ARG_none,        ARG_none        },\r
+       { "sleep","",   "1001010110001000", ARG_none,        ARG_none        },\r
+       { "st",   "Xr", "1001001rrrrr1100", ARG_specialX,    ARG_0_31        }, /*DO NOT CHANGE THE ORDER!*/\r
+       { "st",   "Xr", "1001001rrrrr1101", ARG_specialIncX, ARG_0_31        },\r
+       { "st",   "Xr", "1001001rrrrr1110", ARG_specialDecX, ARG_0_31        },\r
+       { "st",   "Yr", "1000001rrrrr1000", ARG_specialY,    ARG_0_31        }, // st4 is a special case of std1\r
+       { "st",   "Yr", "1001001rrrrr1001", ARG_specialIncY, ARG_0_31        },\r
+       { "st",   "Yr", "1001001rrrrr1010", ARG_specialDecY, ARG_0_31        },\r
+       { "st",   "Zr", "1000001rrrrr0000", ARG_specialZ,    ARG_0_31        }, // st7 is a special case of std2\r
+       { "st",   "Zr", "1001001rrrrr0001", ARG_specialIncZ, ARG_0_31        },\r
+       { "st",   "Zr", "1001001rrrrr0010", ARG_specialDecZ, ARG_0_31        },  \r
+       { "std",  "Yr", "10Y0YY1rrrrr1YYY", ARG_0_63,        ARG_0_31        }, // st4 is a special case of std1\r
+       { "std",  "Zr", "10Z0ZZ1rrrrr0ZZZ", ARG_0_63,        ARG_0_31        }, // st7 is a special case of std2\r
+       { "sts",  "Kd", "1001001ddddd0000", ARG_longCall,    ARG_0_31        },\r
+       { "sub",  "dr", "000110rdddddrrrr", ARG_0_31,        ARG_0_31        },\r
+       { "subi", "dK", "0101KKKKddddKKKK", ARG_16_31,       ARG_0_255       },\r
+       { "swap", "d",  "1001010ddddd0010", ARG_0_31,        ARG_none        },\r
+       { "tst",  "d",  "001000CdddddCCCC", ARG_0_31,        ARG_copyArg     }, // tst is a special case of and\r
+       { "wdr",  "",   "1001010110101000", ARG_none,        ARG_none        },\r
+       { "---",  "",   "",                 ARG_none,        ARG_none        },\r
+       { "",     "",   "",                 ARG_none,        ARG_none        }\r
+};\r
+\r
+int TAvr::Word2Instruction(\r
+       TInstruction*  pInstruction,\r
+       unsigned short code_word,\r
+       int            index ){\r
+\r
+       TInstSet*      pInstSet;\r
+       int            match;\r
+       unsigned short mask;\r
+       unsigned short mask0;\r
+       unsigned short mask1;\r
+       unsigned short maskC;\r
+       int            haveC;\r
+       unsigned short arg0 = 0;\r
+       unsigned short arg1 = 0;\r
+       unsigned short argC = 0;\r
+       char*          pc;\r
+\r
+       #ifdef DEBUG\r
+               printf( "DEBUG - Word2Instruction: Entering Function With index = %d\n", index );\r
+       #endif\r
+\r
+       // Look through the instruction set starting at index until we find a\r
+       // pInstSet->opcode[] that matches with our code_word.  Return\r
+       // ( index + 1 ) of the Instruction found, or return 0 if there was\r
+       // no matching instruction between index passed in and the end of the\r
+       // array.\r
+\r
+       if( index < 0 ||\r
+               index >= (int)( sizeof( InstSet ) / sizeof( InstSet[ 0 ] ))){\r
+\r
+               char msg[ 80 ]; // FIXME - Magic Number\r
+               sprintf( msg, "Word2Instruction: illegal index: %d\n", index );\r
+               throw TGenericError( msg ); \r
+       }\r
+\r
+       pInstSet = &InstSet[ index ];\r
+       match = FALSE;\r
+       while( !match && '\0' != pInstSet->name[ 0 ] ){\r
+\r
+               // Kludgy fix for the kludgy "---" instruction thing.  We have to\r
+               // increment pInstSet and bust out of this loop to avoid matching on\r
+               // "---".\r
+               if( 0 == strcmp( "---", pInstSet->name ) ){\r
+                       pInstSet++;\r
+                       break;\r
+               }\r
+\r
+               haveC = FALSE;\r
+\r
+               match = TRUE;\r
+               pc    = pInstSet->opcode;\r
+               mask  = 0x8000;\r
+               while( *pc ){\r
+\r
+                       if( '0' == *pc ){\r
+                               // Current bit of opcode is a 0\r
+                               if( code_word & mask ){\r
+                                       // Current bit of code_word is a 1\r
+                                       match = FALSE;\r
+                                       break;\r
+                               }\r
+                       } else if( '1' == *pc ){\r
+                               // Current bit of opcode is a 1\r
+                               if( !( code_word & mask ) ){\r
+                                       // Current bit of code_word is a 0\r
+                                       match = FALSE;\r
+                                       break;\r
+                               }\r
+                       }\r
+\r
+                       // Go to the next bit\r
+                       pc++;\r
+                       mask >>= 1;\r
+               }\r
+\r
+               if( match ){\r
+\r
+                       #ifdef DEBUG\r
+                               printf( "DEBUG - Word2Instruction: We Have A Match at index = %d\n", index );\r
+                       #endif\r
+\r
+                       strcpy( pInstruction->name, pInstSet->name );\r
+                       pInstruction->arg0_format = pInstSet->arg[ 0 ];\r
+                       pInstruction->arg1_format = pInstSet->arg[ 1 ];\r
+                       pInstruction->arg0_type   = pInstSet->arg0_type;\r
+                       pInstruction->arg1_type   = pInstSet->arg1_type;\r
+\r
+                       #ifdef DEBUG_2\r
+                               printf( "pInstSet->name     = %s\n",   pInstSet->name );\r
+                               printf( "pInstSet->opcode   = %s\n",   pInstSet->opcode );\r
+                               printf( "pInstSet->arg[ 0 ] = '%c'\n", pInstSet->arg[ 0 ] );\r
+                               printf( "pInstSet->arg[ 1 ] = '%c'\n", pInstSet->arg[ 1 ] );\r
+                       #endif\r
+\r
+                       // The args are hard to get out of the code_word.  We will use a\r
+                       // process borrowed from above.  One big difference though is that\r
+                       // here we start on the least significant bit.\r
+                       pc    = pInstSet->opcode + 15;\r
+                       mask  = 0x0001;\r
+                       arg0  = 0;\r
+                       arg1  = 0;\r
+                       argC  = 0;\r
+                       mask0 = 0x0001;\r
+                       mask1 = 0x0001;\r
+                       maskC = 0x0001;\r
+                       while( pc >= pInstSet->opcode ){\r
+\r
+                               #ifdef DEBUG_2\r
+                                       printf( "*pc   = %c\n",    *pc );\r
+                                       printf( "mask  = 0x%04X\n", mask );\r
+                                       printf( "arg0  = 0x%04X\n", arg0 );\r
+                                       printf( "arg1  = 0x%04X\n", arg1 );\r
+                                       printf( "argC  = 0x%04X\n", argC );\r
+                                       printf( "mask0 = 0x%04X\n", mask0 );\r
+                                       printf( "mask1 = 0x%04X\n", mask1 );\r
+                                       printf( "maskC = 0x%04X\n", maskC );\r
+                               #endif\r
+\r
+                               if( ARG_none != pInstSet->arg0_type && pInstSet->arg[ 0 ] == *pc ){\r
+\r
+                                       // Current bit of opcode is current bit of arg0\r
+                                       if( code_word & mask ){\r
+                                               arg0 |= mask0;\r
+                                       }\r
+\r
+                                       mask0 <<= 1;\r
+\r
+                               } else if( ARG_none != pInstSet->arg1_type && pInstSet->arg[ 1 ] == *pc ){\r
+\r
+                                       // Current bit of opcode is current bit of arg1\r
+                                       if( code_word & mask ){\r
+                                               arg1 |= mask1;\r
+                                       }\r
+\r
+                                       mask1 <<= 1;\r
+                               } else if( 'C' == *pc ){\r
+\r
+                                       // We have to test and see if C equals arg[ 0 ]\r
+                                       if( code_word & mask ){\r
+                                               argC |= maskC;\r
+                                       }\r
+\r
+                                       haveC = TRUE;\r
+                                       maskC <<= 1;\r
+                               }\r
+\r
+                               // Go to the next higher bit in the opcode\r
+                               mask <<= 1;\r
+                               pc--;\r
+                       }\r
+\r
+                       pInstruction->arg0 = AdjustArg( arg0, pInstSet->arg0_type );\r
+                       pInstruction->arg1 = AdjustArg( arg1, pInstSet->arg1_type );\r
+\r
+                       // If we're trying for a C equals arg[ 0 ] instruction this will\r
+                       // correctly set match\r
+                       match = !( haveC ) || ( argC == arg0 );\r
+               }\r
+\r
+               pInstSet++;\r
+               index++;\r
+       }\r
+\r
+       if( '\0' == pInstSet->name[ 0 ] )\r
+               index = 0;\r
+\r
+       #ifdef DEBUG_3\r
+               printf( "DEBUG - Word2Instruction Ending with index = %d\n", index );\r
+               printf( "DEBUG - pInstruction->name        = %s\n",     pInstruction->name );\r
+               printf( "DEBUG - pInstruction->arg0_format = '%c'\n",   pInstruction->arg0_format );\r
+               printf( "DEBUG - pInstruction->arg1_format = '%c'\n",   pInstruction->arg1_format );\r
+               printf( "DEBUG - pInstruction->arg0_type   = %d\n",     pInstruction->arg0_type );\r
+               printf( "DEBUG - pInstruction->arg1_type   = %d\n",     pInstruction->arg1_type );\r
+               printf( "DEBUG - pInstruction->arg0        = 0x%02X\n", pInstruction->arg0 );\r
+               printf( "DEBUG - pInstruction->arg1        = 0x%02X\n", pInstruction->arg1 );\r
+       #endif\r
+\r
+       return( index );\r
+}\r
+\r
+unsigned short TAvr::AdjustArg( unsigned short arg, eArgTypes eArgType ){\r
+\r
+       switch( eArgType ){\r
+\r
+               case ARG_16_31:\r
+                       arg += 16;\r
+                       break;\r
+\r
+               case ARG_neg64_63:\r
+\r
+                       // Take times 2 (because in the assembler source\r
+                       // "brbc 0, -1" and "brbc 0, -2" are the same thing),\r
+                       // and then sign extend it.\r
+                       arg <<= 1;\r
+\r
+                       if( 0x80 & arg )\r
+                               arg |= 0xFF00;\r
+\r
+                       break;\r
+\r
+               case ARG_cm0_cm255:\r
+                       // complement bits\r
+                       break;\r
+\r
+               case ARG_neg2KB_2KB:\r
+\r
+                       // Take times 2 (because in the assembler source\r
+                       // "rcall 2" and "rcall 3" are the same thing),\r
+                       // and then sign extend it.\r
+                       arg <<= 1;\r
+\r
+                       if( 0x1000 & arg )\r
+                               arg |= 0xF000;\r
+\r
+                       break;\r
+\r
+               case ARG_24_26_28_30:\r
+                       // 0 => 24\r
+                       // 1 => 26\r
+                       // 2 => 28\r
+                       // 3 => 30\r
+                       arg = 2 * ( arg + 12 );\r
+                       break;\r
+\r
+               case ARG_specialX:\r
+               case ARG_specialY:\r
+               case ARG_specialZ:\r
+                       arg = (unsigned short)' ';\r
+                       break;\r
+\r
+               case ARG_specialIncX:\r
+               case ARG_specialIncY:\r
+               case ARG_specialIncZ:\r
+                       arg = (unsigned short)'+';\r
+                       break;\r
+\r
+               case ARG_specialDecX:\r
+               case ARG_specialDecY:\r
+               case ARG_specialDecZ:\r
+                       arg = (unsigned short)'-';\r
+                       break;\r
+\r
+\r
+               case ARG_none:\r
+               case ARG_0_31:\r
+               case ARG_0_7:\r
+               case ARG_0_63:\r
+               case ARG_0_255:\r
+               case ARG_longCall:\r
+               case ARG_copyArg:\r
+                       // Do nothing\r
+                       break;\r
+\r
+               default: {\r
+\r
+                       char msg[ 80 ]; // FIXME - Magic Number\r
+                       sprintf( msg, "AdjustArg: Unhandled Arg Type: %d\n", eArgType );\r
+                       throw TGenericError( msg ); \r
+                       \r
+                       break;\r
+               }\r
+       }\r
+\r
+       return arg;\r
+}\r
diff --git a/src/mkutil/revava-0.3/Avr.h b/src/mkutil/revava-0.3/Avr.h
new file mode 100644 (file)
index 0000000..c440ef9
--- /dev/null
@@ -0,0 +1,91 @@
+/*\r
+  Program: revava - Atmel Dis-Assembler\r
+  File: Avr.h\r
+  Parts of this are Copyright (C) 1997-1999 Uros Platise\r
+  The rest of it is Copyright (C) 2001 Daniel J. Winker\r
+\r
+  This program is free software; you can redistribute it and/or\r
+  modify it under the terms of the GNU General Public License\r
+  as published by the Free Software Foundation; either version 2\r
+  of the License, or (at your option) any later version.\r
+\r
+  This program is distributed in the hope that it will be useful,\r
+  but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+  GNU General Public License for more details.\r
+\r
+  You should have received a copy of the GNU General Public License\r
+  along with this program; if not, write to the Free Software\r
+  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
+*/\r
+\r
+#ifndef __AVR\r
+#define __AVR\r
+\r
+class TAvr{\r
+\r
+       public:\r
+\r
+               enum eArgTypes {\r
+                       ARG_none,\r
+                       ARG_0_31,       /* registers and constants */\r
+                       ARG_0_7,\r
+                       ARG_0_63,\r
+                       ARG_16_31,      /* registers only */\r
+                       ARG_0_255,\r
+                       ARG_neg64_63,\r
+                       ARG_cm0_cm255,  /* complement bits */\r
+                       ARG_neg2KB_2KB,\r
+                       ARG_24_26_28_30,\r
+                       ARG_longCall,\r
+                       ARG_copyArg,\r
+                       ARG_specialX,\r
+                       ARG_specialIncX,\r
+                       ARG_specialDecX,\r
+                       ARG_specialY,\r
+                       ARG_specialIncY,\r
+                       ARG_specialDecY,\r
+                       ARG_specialZ,\r
+                       ARG_specialIncZ,\r
+                       ARG_specialDecZ\r
+               };\r
+\r
+               // It was actually kind of dumb to make this structure since by the\r
+               // time I was done I basically just copied most of TInstSet to this.\r
+               struct TInstruction {\r
+                       char           name[ 6 ];\r
+                       char           arg0_format;\r
+                       char           arg1_format;\r
+                       eArgTypes      arg0_type;\r
+                       eArgTypes      arg1_type;\r
+                       unsigned short arg0;\r
+                       unsigned short arg1;\r
+               };\r
+\r
+               TAvr (){}\r
+               ~TAvr (){}\r
+\r
+               int TAvr::Word2Instruction(\r
+                       TInstruction*  pInstruction,\r
+                       unsigned short code_word,\r
+                       int            index );\r
+\r
+       private:\r
+\r
+               unsigned short AdjustArg( unsigned short arg, eArgTypes eArgType );\r
+\r
+       // protected, not private, so make_test_source can use it.\r
+       protected:\r
+\r
+               struct TInstSet {               /* instruction entry */\r
+                       char      name[ 6 ];\r
+                       char      arg[ 4 ];\r
+                       char      opcode[ 17 ];\r
+                       eArgTypes arg0_type;\r
+                       eArgTypes arg1_type;\r
+               };  \r
+\r
+               static TInstSet InstSet [];\r
+};\r
+\r
+#endif\r
diff --git a/src/mkutil/revava-0.3/Avr.o b/src/mkutil/revava-0.3/Avr.o
new file mode 100644 (file)
index 0000000..ad1378f
Binary files /dev/null and b/src/mkutil/revava-0.3/Avr.o differ
diff --git a/src/mkutil/revava-0.3/CHANGES b/src/mkutil/revava-0.3/CHANGES
new file mode 100644 (file)
index 0000000..3f9ab44
--- /dev/null
@@ -0,0 +1,28 @@
+RELEASE: revava-0.2, 5-Mar-2001\r
+CHANGES: First Official Release\r
+\r
+RELEASE: revava-0.3, xx-xxx-xxxx\r
+CHANGES: Bug_0001 Fixed.\r
+         make_labels.pl included in the release.\r
+        website address added to README.\r
+\r
+Bug_0001 Description:\r
+\r
+When decoding a double word instruction revava gets the address wrong in\r
+the address wrong in the comment field.  For instance, here is a listing\r
+of an assembled revava output:\r
+\r
+       0510: E6A0 ;            ldi     r26, 0x60       ; 0510\r
+       0512: 93B00143\r
+                  ;            sts     0x0143, r27     ; 0514\r
+       0516: 93A00142\r
+                  ;            sts     0x0142, r26     ; 0518\r
+       051A: EA0F ;            ldi     r16, 0xAF       ; 051A\r
+\r
+You can see the "sts" instructions are double word instructions and the\r
+assembler lists the address of the first word as the address of the\r
+instruction while revava lists the address of the second word as the\r
+address of the instruction.  This was discovered when writing\r
+make_labels.pl.  Listing the address of the first word seems more\r
+correct and will make make_labels.pl work right, so I'm calling this a\r
+revava bug.\r
diff --git a/src/mkutil/revava-0.3/COPYING b/src/mkutil/revava-0.3/COPYING
new file mode 100644 (file)
index 0000000..45645b4
--- /dev/null
@@ -0,0 +1,340 @@
+                   GNU GENERAL PUBLIC LICENSE\r
+                      Version 2, June 1991\r
+\r
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.\r
+                       59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\r
+ Everyone is permitted to copy and distribute verbatim copies\r
+ of this license document, but changing it is not allowed.\r
+\r
+                           Preamble\r
+\r
+  The licenses for most software are designed to take away your\r
+freedom to share and change it.  By contrast, the GNU General Public\r
+License is intended to guarantee your freedom to share and change free\r
+software--to make sure the software is free for all its users.  This\r
+General Public License applies to most of the Free Software\r
+Foundation's software and to any other program whose authors commit to\r
+using it.  (Some other Free Software Foundation software is covered by\r
+the GNU Library General Public License instead.)  You can apply it to\r
+your programs, too.\r
+\r
+  When we speak of free software, we are referring to freedom, not\r
+price.  Our General Public Licenses are designed to make sure that you\r
+have the freedom to distribute copies of free software (and charge for\r
+this service if you wish), that you receive source code or can get it\r
+if you want it, that you can change the software or use pieces of it\r
+in new free programs; and that you know you can do these things.\r
+\r
+  To protect your rights, we need to make restrictions that forbid\r
+anyone to deny you these rights or to ask you to surrender the rights.\r
+These restrictions translate to certain responsibilities for you if you\r
+distribute copies of the software, or if you modify it.\r
+\r
+  For example, if you distribute copies of such a program, whether\r
+gratis or for a fee, you must give the recipients all the rights that\r
+you have.  You must make sure that they, too, receive or can get the\r
+source code.  And you must show them these terms so they know their\r
+rights.\r
+\r
+  We protect your rights with two steps: (1) copyright the software, and\r
+(2) offer you this license which gives you legal permission to copy,\r
+distribute and/or modify the software.\r
+\r
+  Also, for each author's protection and ours, we want to make certain\r
+that everyone understands that there is no warranty for this free\r
+software.  If the software is modified by someone else and passed on, we\r
+want its recipients to know that what they have is not the original, so\r
+that any problems introduced by others will not reflect on the original\r
+authors' reputations.\r
+\r
+  Finally, any free program is threatened constantly by software\r
+patents.  We wish to avoid the danger that redistributors of a free\r
+program will individually obtain patent licenses, in effect making the\r
+program proprietary.  To prevent this, we have made it clear that any\r
+patent must be licensed for everyone's free use or not licensed at all.\r
+\r
+  The precise terms and conditions for copying, distribution and\r
+modification follow.\r
+\f\r
+                   GNU GENERAL PUBLIC LICENSE\r
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\r
+\r
+  0. This License applies to any program or other work which contains\r
+a notice placed by the copyright holder saying it may be distributed\r
+under the terms of this General Public License.  The "Program", below,\r
+refers to any such program or work, and a "work based on the Program"\r
+means either the Program or any derivative work under copyright law:\r
+that is to say, a work containing the Program or a portion of it,\r
+either verbatim or with modifications and/or translated into another\r
+language.  (Hereinafter, translation is included without limitation in\r
+the term "modification".)  Each licensee is addressed as "you".\r
+\r
+Activities other than copying, distribution and modification are not\r
+covered by this License; they are outside its scope.  The act of\r
+running the Program is not restricted, and the output from the Program\r
+is covered only if its contents constitute a work based on the\r
+Program (independent of having been made by running the Program).\r
+Whether that is true depends on what the Program does.\r
+\r
+  1. You may copy and distribute verbatim copies of the Program's\r
+source code as you receive it, in any medium, provided that you\r
+conspicuously and appropriately publish on each copy an appropriate\r
+copyright notice and disclaimer of warranty; keep intact all the\r
+notices that refer to this License and to the absence of any warranty;\r
+and give any other recipients of the Program a copy of this License\r
+along with the Program.\r
+\r
+You may charge a fee for the physical act of transferring a copy, and\r
+you may at your option offer warranty protection in exchange for a fee.\r
+\r
+  2. You may modify your copy or copies of the Program or any portion\r
+of it, thus forming a work based on the Program, and copy and\r
+distribute such modifications or work under the terms of Section 1\r
+above, provided that you also meet all of these conditions:\r
+\r
+    a) You must cause the modified files to carry prominent notices\r
+    stating that you changed the files and the date of any change.\r
+\r
+    b) You must cause any work that you distribute or publish, that in\r
+    whole or in part contains or is derived from the Program or any\r
+    part thereof, to be licensed as a whole at no charge to all third\r
+    parties under the terms of this License.\r
+\r
+    c) If the modified program normally reads commands interactively\r
+    when run, you must cause it, when started running for such\r
+    interactive use in the most ordinary way, to print or display an\r
+    announcement including an appropriate copyright notice and a\r
+    notice that there is no warranty (or else, saying that you provide\r
+    a warranty) and that users may redistribute the program under\r
+    these conditions, and telling the user how to view a copy of this\r
+    License.  (Exception: if the Program itself is interactive but\r
+    does not normally print such an announcement, your work based on\r
+    the Program is not required to print an announcement.)\r
+\f\r
+These requirements apply to the modified work as a whole.  If\r
+identifiable sections of that work are not derived from the Program,\r
+and can be reasonably considered independent and separate works in\r
+themselves, then this License, and its terms, do not apply to those\r
+sections when you distribute them as separate works.  But when you\r
+distribute the same sections as part of a whole which is a work based\r
+on the Program, the distribution of the whole must be on the terms of\r
+this License, whose permissions for other licensees extend to the\r
+entire whole, and thus to each and every part regardless of who wrote it.\r
+\r
+Thus, it is not the intent of this section to claim rights or contest\r
+your rights to work written entirely by you; rather, the intent is to\r
+exercise the right to control the distribution of derivative or\r
+collective works based on the Program.\r
+\r
+In addition, mere aggregation of another work not based on the Program\r
+with the Program (or with a work based on the Program) on a volume of\r
+a storage or distribution medium does not bring the other work under\r
+the scope of this License.\r
+\r
+  3. You may copy and distribute the Program (or a work based on it,\r
+under Section 2) in object code or executable form under the terms of\r
+Sections 1 and 2 above provided that you also do one of the following:\r
+\r
+    a) Accompany it with the complete corresponding machine-readable\r
+    source code, which must be distributed under the terms of Sections\r
+    1 and 2 above on a medium customarily used for software interchange; or,\r
+\r
+    b) Accompany it with a written offer, valid for at least three\r
+    years, to give any third party, for a charge no more than your\r
+    cost of physically performing source distribution, a complete\r
+    machine-readable copy of the corresponding source code, to be\r
+    distributed under the terms of Sections 1 and 2 above on a medium\r
+    customarily used for software interchange; or,\r
+\r
+    c) Accompany it with the information you received as to the offer\r
+    to distribute corresponding source code.  (This alternative is\r
+    allowed only for noncommercial distribution and only if you\r
+    received the program in object code or executable form with such\r
+    an offer, in accord with Subsection b above.)\r
+\r
+The source code for a work means the preferred form of the work for\r
+making modifications to it.  For an executable work, complete source\r
+code means all the source code for all modules it contains, plus any\r
+associated interface definition files, plus the scripts used to\r
+control compilation and installation of the executable.  However, as a\r
+special exception, the source code distributed need not include\r
+anything that is normally distributed (in either source or binary\r
+form) with the major components (compiler, kernel, and so on) of the\r
+operating system on which the executable runs, unless that component\r
+itself accompanies the executable.\r
+\r
+If distribution of executable or object code is made by offering\r
+access to copy from a designated place, then offering equivalent\r
+access to copy the source code from the same place counts as\r
+distribution of the source code, even though third parties are not\r
+compelled to copy the source along with the object code.\r
+\f\r
+  4. You may not copy, modify, sublicense, or distribute the Program\r
+except as expressly provided under this License.  Any attempt\r
+otherwise to copy, modify, sublicense or distribute the Program is\r
+void, and will automatically terminate your rights under this License.\r
+However, parties who have received copies, or rights, from you under\r
+this License will not have their licenses terminated so long as such\r
+parties remain in full compliance.\r
+\r
+  5. You are not required to accept this License, since you have not\r
+signed it.  However, nothing else grants you permission to modify or\r
+distribute the Program or its derivative works.  These actions are\r
+prohibited by law if you do not accept this License.  Therefore, by\r
+modifying or distributing the Program (or any work based on the\r
+Program), you indicate your acceptance of this License to do so, and\r
+all its terms and conditions for copying, distributing or modifying\r
+the Program or works based on it.\r
+\r
+  6. Each time you redistribute the Program (or any work based on the\r
+Program), the recipient automatically receives a license from the\r
+original licensor to copy, distribute or modify the Program subject to\r
+these terms and conditions.  You may not impose any further\r
+restrictions on the recipients' exercise of the rights granted herein.\r
+You are not responsible for enforcing compliance by third parties to\r
+this License.\r
+\r
+  7. If, as a consequence of a court judgment or allegation of patent\r
+infringement or for any other reason (not limited to patent issues),\r
+conditions are imposed on you (whether by court order, agreement or\r
+otherwise) that contradict the conditions of this License, they do not\r
+excuse you from the conditions of this License.  If you cannot\r
+distribute so as to satisfy simultaneously your obligations under this\r
+License and any other pertinent obligations, then as a consequence you\r
+may not distribute the Program at all.  For example, if a patent\r
+license would not permit royalty-free redistribution of the Program by\r
+all those who receive copies directly or indirectly through you, then\r
+the only way you could satisfy both it and this License would be to\r
+refrain entirely from distribution of the Program.\r
+\r
+If any portion of this section is held invalid or unenforceable under\r
+any particular circumstance, the balance of the section is intended to\r
+apply and the section as a whole is intended to apply in other\r
+circumstances.\r
+\r
+It is not the purpose of this section to induce you to infringe any\r
+patents or other property right claims or to contest validity of any\r
+such claims; this section has the sole purpose of protecting the\r
+integrity of the free software distribution system, which is\r
+implemented by public license practices.  Many people have made\r
+generous contributions to the wide range of software distributed\r
+through that system in reliance on consistent application of that\r
+system; it is up to the author/donor to decide if he or she is willing\r
+to distribute software through any other system and a licensee cannot\r
+impose that choice.\r
+\r
+This section is intended to make thoroughly clear what is believed to\r
+be a consequence of the rest of this License.\r
+\f\r
+  8. If the distribution and/or use of the Program is restricted in\r
+certain countries either by patents or by copyrighted interfaces, the\r
+original copyright holder who places the Program under this License\r
+may add an explicit geographical distribution limitation excluding\r
+those countries, so that distribution is permitted only in or among\r
+countries not thus excluded.  In such case, this License incorporates\r
+the limitation as if written in the body of this License.\r
+\r
+  9. The Free Software Foundation may publish revised and/or new versions\r
+of the General Public License from time to time.  Such new versions will\r
+be similar in spirit to the present version, but may differ in detail to\r
+address new problems or concerns.\r
+\r
+Each version is given a distinguishing version number.  If the Program\r
+specifies a version number of this License which applies to it and "any\r
+later version", you have the option of following the terms and conditions\r
+either of that version or of any later version published by the Free\r
+Software Foundation.  If the Program does not specify a version number of\r
+this License, you may choose any version ever published by the Free Software\r
+Foundation.\r
+\r
+  10. If you wish to incorporate parts of the Program into other free\r
+programs whose distribution conditions are different, write to the author\r
+to ask for permission.  For software which is copyrighted by the Free\r
+Software Foundation, write to the Free Software Foundation; we sometimes\r
+make exceptions for this.  Our decision will be guided by the two goals\r
+of preserving the free status of all derivatives of our free software and\r
+of promoting the sharing and reuse of software generally.\r
+\r
+                           NO WARRANTY\r
+\r
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY\r
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN\r
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES\r
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED\r
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS\r
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE\r
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,\r
+REPAIR OR CORRECTION.\r
+\r
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING\r
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR\r
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,\r
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING\r
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED\r
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY\r
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER\r
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE\r
+POSSIBILITY OF SUCH DAMAGES.\r
+\r
+                    END OF TERMS AND CONDITIONS\r
+\f\r
+           How to Apply These Terms to Your New Programs\r
+\r
+  If you develop a new program, and you want it to be of the greatest\r
+possible use to the public, the best way to achieve this is to make it\r
+free software which everyone can redistribute and change under these terms.\r
+\r
+  To do so, attach the following notices to the program.  It is safest\r
+to attach them to the start of each source file to most effectively\r
+convey the exclusion of warranty; and each file should have at least\r
+the "copyright" line and a pointer to where the full notice is found.\r
+\r
+    <one line to give the program's name and a brief idea of what it does.>\r
+    Copyright (C) <year>  <name of author>\r
+\r
+    This program is free software; you can redistribute it and/or modify\r
+    it under the terms of the GNU General Public License as published by\r
+    the Free Software Foundation; either version 2 of the License, or\r
+    (at your option) any later version.\r
+\r
+    This program is distributed in the hope that it will be useful,\r
+    but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+    GNU General Public License for more details.\r
+\r
+    You should have received a copy of the GNU General Public License\r
+    along with this program; if not, write to the Free Software\r
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\r
+\r
+\r
+Also add information on how to contact you by electronic and paper mail.\r
+\r
+If the program is interactive, make it output a short notice like this\r
+when it starts in an interactive mode:\r
+\r
+    Gnomovision version 69, Copyright (C) year name of author\r
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.\r
+    This is free software, and you are welcome to redistribute it\r
+    under certain conditions; type `show c' for details.\r
+\r
+The hypothetical commands `show w' and `show c' should show the appropriate\r
+parts of the General Public License.  Of course, the commands you use may\r
+be called something other than `show w' and `show c'; they could even be\r
+mouse-clicks or menu items--whatever suits your program.\r
+\r
+You should also get your employer (if you work as a programmer) or your\r
+school, if any, to sign a "copyright disclaimer" for the program, if\r
+necessary.  Here is a sample; alter the names:\r
+\r
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program\r
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.\r
+\r
+  <signature of Ty Coon>, 1 April 1989\r
+  Ty Coon, President of Vice\r
+\r
+This General Public License does not permit incorporating your program into\r
+proprietary programs.  If your program is a subroutine library, you may\r
+consider it more useful to permit linking proprietary applications with the\r
+library.  If this is what you want to do, use the GNU Library General\r
+Public License instead of this License.\r
diff --git a/src/mkutil/revava-0.3/Error.h b/src/mkutil/revava-0.3/Error.h
new file mode 100644 (file)
index 0000000..1c1e28b
--- /dev/null
@@ -0,0 +1,99 @@
+/*\r
+  Program: revava - Atmel Dis-Assembler\r
+  File: Error.h\r
+  Parts of this are Copyright (C) 1997-1999 Uros Platise\r
+  The rest of it is Copyright (C) 2001 Daniel J. Winker\r
+\r
+  This program is free software; you can redistribute it and/or\r
+  modify it under the terms of the GNU General Public License\r
+  as published by the Free Software Foundation; either version 2\r
+  of the License, or (at your option) any later version.\r
+\r
+  This program is distributed in the hope that it will be useful,\r
+  but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+  GNU General Public License for more details.\r
+\r
+  You should have received a copy of the GNU General Public License\r
+  along with this program; if not, write to the Free Software\r
+  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
+*/\r
+\r
+#ifndef __ERROR\r
+#define __ERROR\r
+\r
+#include <stdio.h>\r
+\r
+/* Global Error Class - Abstract Type */\r
+class TGlobalError{\r
+       public:\r
+               TGlobalError(){}\r
+               virtual ~TGlobalError(){}\r
+               virtual void report(FILE* fd=stderr) = 0;\r
+};\r
+\r
+/* Generic Error Class */\r
+class TGenericError : public TGlobalError{\r
+       public:\r
+               TGenericError(const char* msg){\r
+                       strcpy( errmsg, msg );\r
+                       op[0] = '\0';\r
+               }\r
+\r
+               TGenericError(const char* msg, const char* _op){\r
+                       strcpy( errmsg, msg );\r
+                       strcpy( op, _op );\r
+               }\r
+\r
+               ~TGenericError(){}\r
+\r
+               void report(FILE* fd=stderr){\r
+                       if( op[0] == '\0' ){\r
+                               fprintf (fd, "Fatal Error: %s\n", errmsg);\r
+                       } else {\r
+                               fprintf (fd, "Fatal Error: %s: %s\n", errmsg, op);\r
+                       }\r
+               }\r
+\r
+               void prepend_message( const char* msg ){\r
+                       char temp[256];\r
+                       sprintf( temp, "%s%s", msg, errmsg );\r
+                       strcpy( errmsg, temp );\r
+               }\r
+\r
+//             void append_message( const char* msg ){\r
+//                     sprintf( errmsg, "%s%s", errmsg, msg );\r
+//             }\r
+\r
+       private:\r
+               char errmsg[256];\r
+               char op[256];\r
+};\r
+\r
+/* File Error Class */\r
+class TFileError: public TGlobalError{\r
+       public:\r
+               TFileError(const char *msg, const char* _op=NULL){\r
+                       errmsg = msg;\r
+                       op     = _op;\r
+               }\r
+\r
+               void report(FILE* fd=stderr){\r
+\r
+                       if ( op == NULL ){\r
+                               fprintf ( fd, "Fatal Error: %s, ", errmsg);\r
+                       } else {\r
+                               fprintf( fd, "Fatal Error:%s %s, ", errmsg, op);\r
+                       }\r
+\r
+                       perror( "" );\r
+               }\r
+\r
+               ~TFileError (){}\r
+\r
+       private:\r
+               const char* errmsg;\r
+               const char* op;\r
+};\r
+\r
+#endif\r
diff --git a/src/mkutil/revava-0.3/Flash.C b/src/mkutil/revava-0.3/Flash.C
new file mode 100644 (file)
index 0000000..01000f4
--- /dev/null
@@ -0,0 +1,268 @@
+/*\r
+  Program: revava - Atmel Dis-Assembler\r
+  File: Flash.C, Copyright (C) 2001 Daniel J. Winker\r
+\r
+  This program is free software; you can redistribute it and/or\r
+  modify it under the terms of the GNU General Public License\r
+  as published by the Free Software Foundation; either version 2\r
+  of the License, or (at your option) any later version.\r
+\r
+  This program is distributed in the hope that it will be useful,\r
+  but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+  GNU General Public License for more details.\r
+\r
+  You should have received a copy of the GNU General Public License\r
+  along with this program; if not, write to the Free Software\r
+  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
+*/\r
+\r
+#include <string.h>\r
+#include "Error.h"\r
+#include "Flash.h"\r
+\r
+#define FALSE 0\r
+#define TRUE  (!FALSE)\r
+\r
+TFlash::TFlash(){\r
+       // Clear the Arrays because I don't remember what the rules of\r
+       // C++ are on this.\r
+       memset( (void *)code_space,        0, sizeof( code_space ));\r
+       memset( (void *)code_byte_written, 0, sizeof( code_byte_written ));\r
+}\r
+\r
+void TFlash::FlipEndian( void ){\r
+       int           i;\r
+       unsigned char temp;\r
+\r
+       for( i = 0; i < FLASH_SIZE; i += 2 ){\r
+               temp = code_space[ i ];\r
+               code_space[ i     ] = code_space[ i + 1 ] ;\r
+               code_space[ i + 1 ] = temp;\r
+       }\r
+}\r
+\r
+void TFlash::flashset(\r
+       unsigned short       addr,\r
+       unsigned char        nbytes,\r
+       const unsigned char* data){\r
+\r
+       int*           pi;\r
+       unsigned char* pc;\r
+\r
+       pi = code_byte_written + addr;\r
+       pc = code_space + addr;\r
+\r
+       // Check boundries\r
+       if(( addr + nbytes ) > FLASH_SIZE ){\r
+               char msg[ 80 ]; // FIXME - Magic Number\r
+               sprintf(\r
+                       msg,\r
+                       "Address: %04X, Offset: %02X exceeds FLASH_SIZE: %04X", \r
+                       addr, nbytes - 1, FLASH_SIZE);\r
+               throw TGenericError( msg ); \r
+       }\r
+       \r
+       while( nbytes-- ){\r
+               // Increment counter for this byte, then increment the pointer\r
+               // to the byte counter.\r
+               ++( *( pi++ ) );\r
+\r
+               *pc++ = *data++;\r
+       }\r
+}\r
+\r
+unsigned short TFlash::get_flash_word(\r
+       unsigned short addr,\r
+       int*           high_byte_written,\r
+       int*           low_byte_written ){\r
+\r
+       // Check boundry\r
+       if(( addr + 1 ) >= FLASH_SIZE ){\r
+               char msg[ 80 ]; // FIXME - Magic Number\r
+               sprintf(\r
+                       msg,\r
+                       "get_flash_word: Word Address: %04X, exceeds FLASH_SIZE: %04X", \r
+                       addr, FLASH_SIZE);\r
+               throw TGenericError( msg ); \r
+       }\r
+\r
+       *high_byte_written = code_byte_written[ addr ];\r
+       *low_byte_written  = code_byte_written[ addr + 1 ];\r
+\r
+       return( ( code_space[ addr ] << 8 ) | code_space[ addr + 1 ] );\r
+}\r
+\r
+void TFlash::Dump( void ){\r
+       char code_line[ 60 ];   // FIXME - Magic Number\r
+       char ascii_line[ 20 ];  // FIXME - Magic Number\r
+       char* pcode_line;\r
+       char* pascii_line;\r
+       unsigned char c1;\r
+       unsigned char c2;\r
+       int have_data;\r
+\r
+       int i;\r
+       int j;\r
+\r
+       for( i = 0; i < FLASH_SIZE; i += 0x10 ){\r
+\r
+               pcode_line  = code_line;\r
+               pascii_line = ascii_line;\r
+               have_data   = FALSE;\r
+\r
+               for( j = 0; j < 0x8; j += 2 ){\r
+\r
+                       c1 = code_space[ i + j ];\r
+                       c2 = code_space[ i + j + 1 ];\r
+\r
+                       sprintf( pcode_line, "%02X%02X ", c1, c2 );\r
+\r
+                       sprintf(\r
+                               pascii_line,\r
+                               "%c%c",\r
+                               c1 >= (unsigned char)' ' && c1 <= (unsigned char)'~' ? c1 : '.',\r
+                               c2 >= (unsigned char)' ' && c2 <= (unsigned char)'~' ? c2 : '.' );\r
+\r
+                       // Cover them up if they weren't really there.\r
+                       if( code_byte_written[ i + j ] ){\r
+                               have_data = TRUE;\r
+                       } else {\r
+                               *( pcode_line  + 0 ) = '-';\r
+                               *( pcode_line  + 1 ) = '-';\r
+                               *( pascii_line + 0 ) = ' ';\r
+                       }\r
+\r
+                       if( code_byte_written[ i + j + 1 ] ){\r
+                               have_data = TRUE;\r
+                       } else {\r
+                               *( pcode_line  + 2 ) = '-';\r
+                               *( pcode_line  + 3 ) = '-';\r
+                               *( pascii_line + 1 ) = ' ';\r
+                       }\r
+\r
+                       pcode_line  += 5;\r
+                       pascii_line += 2;\r
+               }\r
+\r
+               *pascii_line++ = ' ';\r
+\r
+               while( j < 0x10 ){\r
+\r
+                       c1 = code_space[ i + j ];\r
+                       c2 = code_space[ i + j + 1 ];\r
+\r
+                       sprintf( pcode_line, " %02X%02X", c1, c2 );\r
+\r
+                       sprintf(\r
+                               pascii_line,\r
+                               "%c%c",\r
+                               c1 >= (unsigned char)' ' && c1 <= (unsigned char)'~' ? c1 : '.',\r
+                               c2 >= (unsigned char)' ' && c2 <= (unsigned char)'~' ? c2 : '.' );\r
+\r
+                       // Cover them up if they weren't really there.\r
+                       if( code_byte_written[ i + j ] ){\r
+                               have_data = TRUE;\r
+                       } else {\r
+                               *( pcode_line  + 1 ) = '-';\r
+                               *( pcode_line  + 2 ) = '-';\r
+                               *( pascii_line + 0 ) = ' ';\r
+                       }\r
+\r
+                       if( code_byte_written[ i + j + 1 ] ){\r
+                               have_data = TRUE;\r
+                       } else {\r
+                               *( pcode_line  + 3 ) = '-';\r
+                               *( pcode_line  + 4 ) = '-';\r
+                               *( pascii_line + 1 ) = ' ';\r
+                       }\r
+\r
+                       pcode_line  += 5;\r
+                       pascii_line += 2;\r
+                       j += 2;\r
+               }\r
+\r
+               if( have_data ){\r
+                       printf( "%04X: %s  %s\n", i, code_line, ascii_line );\r
+               }\r
+       }\r
+}\r
+\r
+void TFlash::DebugDump( void ){\r
+       char code_line[ 60 ];   // FIXME - Magic Number\r
+       char flag_line[ 20 ];   // FIXME - Magic Number\r
+       char ascii_line[ 20 ];  // FIXME - Magic Number\r
+       char* pcode_line;\r
+       char* pflag_line;\r
+       char* pascii_line;\r
+       unsigned char c1;\r
+       unsigned char c2;\r
+\r
+       int i;\r
+       int j;\r
+\r
+       for( i = 0; i < FLASH_SIZE; i += 0x10 ){\r
+\r
+               pcode_line  = code_line;\r
+               pflag_line  = flag_line;\r
+               pascii_line = ascii_line;\r
+\r
+               for( j = 0; j < 0x8; j += 2 ){\r
+\r
+                       c1 = code_space[ i + j ];\r
+                       c2 = code_space[ i + j + 1 ];\r
+\r
+                       sprintf( pcode_line, "%02X%02X ", c1, c2 );\r
+\r
+                       pcode_line += 5;\r
+\r
+                       sprintf(\r
+                               pflag_line,\r
+                               "%1.1d%1.1d",\r
+                               code_byte_written[ i + j ],\r
+                               code_byte_written[ i + j + 1 ] );\r
+\r
+                       pflag_line += 2;\r
+\r
+                       sprintf(\r
+                               pascii_line,\r
+                               "%c%c",\r
+                               c1 >= (unsigned char)' ' && c1 <= (unsigned char)'~' ? c1 : '.',\r
+                               c2 >= (unsigned char)' ' && c2 <= (unsigned char)'~' ? c2 : '.' );\r
+\r
+                       pascii_line += 2;\r
+               }\r
+\r
+               *pflag_line++  = ' ';\r
+               *pascii_line++ = ' ';\r
+\r
+               while( j < 0x10 ){\r
+\r
+                       c1 = code_space[ i + j ];\r
+                       c2 = code_space[ i + j + 1 ];\r
+\r
+                       sprintf( pcode_line, " %02X%02X", c1, c2 );\r
+\r
+                       pcode_line += 5;\r
+\r
+                       sprintf(\r
+                               pflag_line,\r
+                               "%1.1d%1.1d",\r
+                               code_byte_written[ i + j ],\r
+                               code_byte_written[ i + j + 1 ] );\r
+\r
+                       pflag_line += 2;\r
+\r
+                       sprintf(\r
+                               pascii_line,\r
+                               "%c%c",\r
+                               c1 >= (unsigned char)' ' && c1 <= (unsigned char)'~' ? c1 : '.',\r
+                               c2 >= (unsigned char)' ' && c2 <= (unsigned char)'~' ? c2 : '.' );\r
+\r
+                       pascii_line += 2;\r
+                       j += 2;\r
+               }\r
+\r
+               printf( "%04X: %s  %s  %s\n", i, code_line, flag_line, ascii_line );\r
+       }\r
+}\r
diff --git a/src/mkutil/revava-0.3/Flash.h b/src/mkutil/revava-0.3/Flash.h
new file mode 100644 (file)
index 0000000..11a1bc8
--- /dev/null
@@ -0,0 +1,55 @@
+/*\r
+  Program: revava - Atmel Dis-Assembler\r
+  File: Flash.h, Copyright (C) 2001 Daniel J. Winker\r
+\r
+  This program is free software; you can redistribute it and/or\r
+  modify it under the terms of the GNU General Public License\r
+  as published by the Free Software Foundation; either version 2\r
+  of the License, or (at your option) any later version.\r
+\r
+  This program is distributed in the hope that it will be useful,\r
+  but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+  GNU General Public License for more details.\r
+\r
+  You should have received a copy of the GNU General Public License\r
+  along with this program; if not, write to the Free Software\r
+  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
+*/\r
+\r
+#ifndef __EEPROM\r
+#define __EEPROM\r
+\r
+// Code Size is 8K Flash\r
+#define FLASH_SIZE ( 0x2000 )\r
+\r
+/* Flash Class */\r
+class TFlash{\r
+\r
+       public:\r
+\r
+               TFlash();\r
+               ~TFlash(){}\r
+\r
+               void FlipEndian( void );\r
+\r
+               void flashset(\r
+                       unsigned short       addr,\r
+                       unsigned char        nbytes,\r
+                       const unsigned char* data);\r
+\r
+               unsigned short get_flash_word(\r
+                       unsigned short addr,\r
+                       int*           high_byte_written,\r
+                       int*           low_byte_written );\r
+\r
+               void Dump( void );\r
+               void DebugDump( void );\r
+\r
+       private:\r
+\r
+               unsigned char code_space[ FLASH_SIZE ];\r
+               int code_byte_written[ FLASH_SIZE ];\r
+};\r
+\r
+#endif\r
diff --git a/src/mkutil/revava-0.3/Flash.o b/src/mkutil/revava-0.3/Flash.o
new file mode 100644 (file)
index 0000000..c3a3015
Binary files /dev/null and b/src/mkutil/revava-0.3/Flash.o differ
diff --git a/src/mkutil/revava-0.3/IntelHex.C b/src/mkutil/revava-0.3/IntelHex.C
new file mode 100644 (file)
index 0000000..ff88885
--- /dev/null
@@ -0,0 +1,105 @@
+/*\r
+  Program: revava - Atmel Dis-Assembler\r
+  File: IntelHex.C, Copyright (C) 2001 Daniel J. Winker\r
+\r
+  This program is free software; you can redistribute it and/or\r
+  modify it under the terms of the GNU General Public License\r
+  as published by the Free Software Foundation; either version 2\r
+  of the License, or (at your option) any later version.\r
+\r
+  This program is distributed in the hope that it will be useful,\r
+  but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+  GNU General Public License for more details.\r
+\r
+  You should have received a copy of the GNU General Public License\r
+  along with this program; if not, write to the Free Software\r
+  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
+*/\r
+\r
+// Format:\r
+//     :CCAAAARR...ZZ\r
+//\r
+// where:\r
+//     CC   is the number of data bytes\r
+//     AAAA is the address field\r
+//     RR   is the record type:\r
+//             00 data record\r
+//             01 end record\r
+//             02 paragraph record\r
+//             03 transfer address record\r
+//     ...  is the Data field\r
+//     ZZ   is the checksum for data record\r
+//\r
+// All fields in an Intel hex record are in hexadecimal with two hex digits\r
+// representing a byte. The CC field is the actual number of bytes in the data\r
+// field (the address, record type, and checksum bytes are not included in the\r
+// count). The checksum is the two's complement of the sum of the bytes from\r
+// the number of data bytes field through the last byte of the data field.\r
+\r
+#include <stdio.h>\r
+#include <string.h> /* Nick */\r
+\r
+#include "Error.h"\r
+#include "IntelHex.h"\r
+\r
+static unsigned char Ascii2Hex(const char* ps){\r
+       unsigned char retval;\r
+\r
+       retval   = *ps < 'A' ? *ps - '0' : *ps - 'A' + 0xA;\r
+       retval <<= 4;\r
+       ps++;\r
+       retval  |= *ps < 'A' ? *ps - '0' : *ps - 'A' + 0xA;\r
+\r
+       return( retval );\r
+}\r
+\r
+void TIntelHexRecord::StringToRecord(const char* ps){\r
+       const char* pc;\r
+       unsigned char uc;\r
+       unsigned char cs = 0;\r
+       unsigned char n;\r
+\r
+       pc = ps;\r
+\r
+       if( *pc++ != ':' ){\r
+               char msg[ 80 ]; // FIXME - Magic Number\r
+               sprintf( msg,\r
+                       "StringToRecord: Invalid Record (doesn't begin with ':'):\n"\r
+                       "\"%s\"", ps );\r
+               throw TGenericError( msg );\r
+       }\r
+\r
+       nbytes = Ascii2Hex( pc );\r
+       cs    -= nbytes;\r
+       pc    += 2;\r
+\r
+       uc     = Ascii2Hex( pc );\r
+       cs    -= uc;\r
+       addr   = uc << 8;\r
+       pc    += 2;\r
+\r
+       uc     = Ascii2Hex( pc );\r
+       cs    -= uc;\r
+       addr  |= uc;\r
+       pc    += 2;\r
+\r
+       type   = Ascii2Hex( pc );\r
+       cs    -= type;\r
+       pc    += 2;\r
+\r
+       for( n = 0; n < nbytes; n++ ){\r
+               uc        = Ascii2Hex( pc );\r
+               cs       -= uc;\r
+               data[ n ] = uc;\r
+               pc       += 2;\r
+       }\r
+\r
+       if( Ascii2Hex( pc ) != cs ){\r
+               char msg[ 80 ]; // FIXME - Magic Number\r
+               sprintf( msg,\r
+                       "Invalid Record (bad checksum)\n"\r
+                       "%s", ps );\r
+               throw TGenericError( msg );\r
+       }\r
+}\r
diff --git a/src/mkutil/revava-0.3/IntelHex.h b/src/mkutil/revava-0.3/IntelHex.h
new file mode 100644 (file)
index 0000000..e56f843
--- /dev/null
@@ -0,0 +1,42 @@
+/*\r
+  Program: revava - Atmel Dis-Assembler\r
+  File: IntelHex.h, Copyright (C) 2001 Daniel J. Winker\r
+\r
+  This program is free software; you can redistribute it and/or\r
+  modify it under the terms of the GNU General Public License\r
+  as published by the Free Software Foundation; either version 2\r
+  of the License, or (at your option) any later version.\r
+\r
+  This program is distributed in the hope that it will be useful,\r
+  but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+  GNU General Public License for more details.\r
+\r
+  You should have received a copy of the GNU General Public License\r
+  along with this program; if not, write to the Free Software\r
+  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
+*/\r
+\r
+#ifndef __INTELHEX\r
+#define __INTELHEX\r
+\r
+/* Intel Hex Record Class */\r
+class TIntelHexRecord{\r
+       public:\r
+               TIntelHexRecord(){}\r
+               ~TIntelHexRecord(){}\r
+\r
+               void StringToRecord(const char* ps);\r
+               inline       unsigned char  get_nbytes(){ return nbytes; }\r
+               inline       unsigned short get_addr()  { return addr;   }\r
+               inline       unsigned char  get_type()  { return type;   }\r
+               inline const unsigned char* get_data()  { return data;   }\r
+\r
+       private:\r
+               unsigned char  nbytes;\r
+               unsigned short addr;\r
+               unsigned char  type;\r
+               unsigned char  data[ 256 ];     // FIXME - Magic Number\r
+};\r
+\r
+#endif\r
diff --git a/src/mkutil/revava-0.3/IntelHex.o b/src/mkutil/revava-0.3/IntelHex.o
new file mode 100644 (file)
index 0000000..dc629ec
Binary files /dev/null and b/src/mkutil/revava-0.3/IntelHex.o differ
diff --git a/src/mkutil/revava-0.3/Main.C b/src/mkutil/revava-0.3/Main.C
new file mode 100644 (file)
index 0000000..ba5af52
--- /dev/null
@@ -0,0 +1,149 @@
+/*\r
+  Program: revava - Atmel Dis-Assembler\r
+  File: Main.C\r
+  Parts of this are Copyright (C) 1997-1999 Uros Platise\r
+  The rest of it is Copyright (C) 2001 Daniel J. Winker\r
+\r
+  This program is free software; you can redistribute it and/or\r
+  modify it under the terms of the GNU General Public License\r
+  as published by the Free Software Foundation; either version 2\r
+  of the License, or (at your option) any later version.\r
+\r
+  This program is distributed in the hope that it will be useful,\r
+  but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+  GNU General Public License for more details.\r
+\r
+  You should have received a copy of the GNU General Public License\r
+  along with this program; if not, write to the Free Software\r
+  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
+*/\r
+\r
+#include <stdio.h>\r
+#include <string.h> /* Nick */\r
+#include <stdlib.h> /* Nick */\r
+\r
+#include "Error.h"\r
+#include "Flash.h"\r
+#include "Object.h"\r
+#include "Source.h"\r
+\r
+const char* version = "Atmel Dis-Assembler 0.3\n";\r
+\r
+const char* help =\r
+"Syntax: revava [switches] file\n"\r
+"Switches:\n"\r
+"  -d         Dump Flash and exit.\n"\r
+"  -D         Debug Dump Flash and exit (maybe should be Dubious Dump).\n"\r
+"  -e         Use little endian (Intel byte order).\n"\r
+"  -o file    Set output file name (to redirect the output to stdout: -o stdout)\n"\r
+"  -v         Verbose (enable info - currently does nothing).\n"\r
+"  --help     Print this help.\n"\r
+"  --version  Output version information.\n";\r
+\r
+#define FALSE 0\r
+#define TRUE  (!FALSE)\r
+\r
+int arg_d = FALSE;\r
+int arg_D = FALSE;\r
+int arg_e = FALSE;\r
+int arg_v = FALSE;\r
+\r
+int main( int argc, char* argv[] ){\r
+\r
+       TFlash*     pFlash;\r
+       TObjectIn*  pObjectIn;\r
+       TSourceOut* pSourceOut;\r
+\r
+       char* infile  = NULL;\r
+       char* OutFile = "out.s";\r
+       int  ai;\r
+\r
+       try{\r
+               for ( ai = 1; ai < argc; ai++ ){\r
+                       if ( argv[ ai ][ 0 ] == '-' ){\r
+                               if ( argv[ ai ][ 2 ] == '\0' ){\r
+                                       switch( argv[ ai ][ 1 ] ){\r
+\r
+                                               case 'd':\r
+                                                       arg_d = TRUE;\r
+                                                       break ;\r
+\r
+                                               case 'D':\r
+                                                       arg_D = TRUE;\r
+                                                       break ;\r
+\r
+                                               case 'e':\r
+                                                       arg_e = TRUE;\r
+                                                       break ;\r
+\r
+                                               case 'o':\r
+                                                       if ( ++ai >= argc )\r
+                                                               throw TGenericError( "-o: File name is missing." );\r
+\r
+                                                       OutFile = argv[ ai ];\r
+\r
+                                                       break ;\r
+\r
+                                               case 'v':\r
+                                                       arg_v = TRUE;\r
+                                                       break ;\r
+\r
+                                               default:\r
+                                                       throw TGenericError("Invalid switch:", argv[ai]);\r
+                                       }\r
+                               }\r
+                               else if ( argv[ ai ][ 1 ] == '-' ){\r
+                                       if ( strcmp( &argv[ ai ][ 2 ], "help" ) == 0 ){\r
+                                               printf( "%s\n\n%s\n", version, help );\r
+                                               exit( 1 );\r
+                                       }\r
+                                       else if ( strcmp( &argv[ ai ][ 2 ], "version" ) == 0 ){\r
+                                               printf( "%s\n", version );\r
+                                               exit( 1 );\r
+                                       }\r
+                                       else{\r
+                                               throw TGenericError( "Invalid switch:", argv[ ai ] );\r
+                                       }\r
+                               }\r
+                       }\r
+                       else{\r
+                               infile = argv[ ai ];\r
+                       }\r
+               }\r
+\r
+               if ( !infile ){\r
+                       printf( "%s\n\n%s\n", version, help );\r
+                       exit( 1 );\r
+               }\r
+\r
+               // Set up the Memory\r
+               pFlash = new TFlash();\r
+\r
+               // Read the code into the fake flash\r
+               pObjectIn = new TObjectIn( infile, pFlash );\r
+\r
+               // Fix Big Endian/Little Endian if that's a problem.\r
+               if( arg_e )\r
+                       pFlash->FlipEndian();\r
+\r
+               if( arg_d ) {\r
+                       pFlash->Dump();\r
+               } else if ( arg_D ) {\r
+                       pFlash->DebugDump();\r
+               }\r
+               else {\r
+                       //pObjectIn->~TObjectIn();\r
+                       pSourceOut = new TSourceOut( OutFile, pFlash );\r
+               }\r
+\r
+       }\r
+       catch ( TGenericError E ){\r
+               E.report();\r
+       }\r
+       catch ( TFileError E ){\r
+               E.report();\r
+       }\r
+\r
+       return 0 ;\r
+}\r
diff --git a/src/mkutil/revava-0.3/Main.o b/src/mkutil/revava-0.3/Main.o
new file mode 100644 (file)
index 0000000..9d293ec
Binary files /dev/null and b/src/mkutil/revava-0.3/Main.o differ
diff --git a/src/mkutil/revava-0.3/Makefile b/src/mkutil/revava-0.3/Makefile
new file mode 100644 (file)
index 0000000..4dbcfd9
--- /dev/null
@@ -0,0 +1,67 @@
+# Program: revava - Atmel Dis-Assembler\r
+# File: Makefile\r
+# Parts of this are Copyright (C) 1997-1999 Uros Platise\r
+# The rest of it is Copyright (C) 2001 Daniel J. Winker\r
+#\r
+# This program is free software; you can redistribute it and/or\r
+# modify it under the terms of the GNU General Public License\r
+# as published by the Free Software Foundation; either version 2\r
+# of the License, or (at your option) any later version.\r
+#\r
+# This program is distributed in the hope that it will be useful,\r
+# but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+# GNU General Public License for more details.\r
+#\r
+# You should have received a copy of the GNU General Public License\r
+# along with this program; if not, write to the Free Software\r
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
+\r
+\r
+# The following lines declare compile options. \r
+#\r
+#   Note: -O option cannot be specifed for GNU C++ version 2.7.2.1\r
+#         due to the internal bug. That is why is not specifed by default.\r
+\r
+       SRC     = Avr.C Flash.C IntelHex.C Main.C Object.C Source.C\r
+       OBJ     = Avr.o Flash.o IntelHex.o Main.o Object.o Source.o\r
+       CC      = g++\r
+       LIBS    =\r
+\r
+# Old testing flags ...\r
+#      CPPFLAGS= -DAVA_LIB="\"$(AVA_LIB)\"" -Wall \\r
+#                -fhandle-exceptions -fenum-int-equiv -fnonnull-objects \\r
+#                -fforce-addr -fthread-jumps -felide-constructors\r
+\r
+# Add -O option for version 2.8 or more ...\r
+\r
+# GNU C++ compiler\r
+#      CPPFLAGS= -Wall -fhandle-exceptions -fenum-int-equiv\r
+\r
+# egcs C++ compiler with debug\r
+#      CPPFLAGS= -g -O3 -Wall\r
+\r
+# egcs C++ compiler without debug\r
+       CPPFLAGS= -O3 -Wall\r
+\r
+# Do the stuff as specified above.\r
+all:           revava make_test_source\r
+\r
+revava:        $(OBJ)\r
+       $(CC) -o $@ $(CPPFLAGS) $(OBJ) $(LIBS)\r
+\r
+make_test_source: Avr.o make_test_source.o\r
+       $(CC) -o $@ $(CPPFLAGS) Avr.o make_test_source.o\r
+\r
+Avr.o:         Avr.C Avr.h Error.h\r
+Flash.o:       Flash.C Error.h Flash.h\r
+IntelHex.o:    IntelHex.C IntelHex.h Error.h\r
+Main.o:                Main.C Error.h Flash.h Object.h\r
+Object.o:      Object.C Error.h Flash.h IntelHex.h Object.h Source.h\r
+Source.o:      Source.C Avr.h Error.h Flash.h Source.h\r
+\r
+make_test_source.o: make_test_source.C Avr.h\r
+\r
+clean:\r
+       rm -f *~ *.o revava make_test_source\r
+\r
diff --git a/src/mkutil/revava-0.3/Object.C b/src/mkutil/revava-0.3/Object.C
new file mode 100644 (file)
index 0000000..37e1517
--- /dev/null
@@ -0,0 +1,66 @@
+/*\r
+  Program: revava - Atmel Dis-Assembler\r
+  File: Object.C, Copyright (C) 2001 Daniel J. Winker\r
+\r
+  This program is free software; you can redistribute it and/or\r
+  modify it under the terms of the GNU General Public License\r
+  as published by the Free Software Foundation; either version 2\r
+  of the License, or (at your option) any later version.\r
+\r
+  This program is distributed in the hope that it will be useful,\r
+  but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+  GNU General Public License for more details.\r
+\r
+  You should have received a copy of the GNU General Public License\r
+  along with this program; if not, write to the Free Software\r
+  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
+*/\r
+\r
+#include <stdio.h>\r
+#include <strings.h>\r
+\r
+#include "Error.h"\r
+#include "Flash.h"\r
+#include "IntelHex.h"\r
+#include "Object.h"\r
+#include "Source.h"\r
+\r
+TObjectIn::TObjectIn(const char* infile, TFlash* pFlash){\r
+       TIntelHexRecord HexRec;\r
+       FILE*           pf;\r
+       char            s[256]; // FIXME - Magic Number\r
+       char*           pc;\r
+       int             line = 0;\r
+\r
+       pf = fopen(infile, "r");\r
+\r
+       if( NULL == pf )\r
+               throw TFileError("Cannot open file:", infile);\r
+       \r
+       try{\r
+               while( fgets( s, 256, pf ))\r
+               {\r
+                       // Replace the newline with '\0'\r
+                       if( NULL != ( pc = rindex( s, '\n' )))\r
+                               *pc = '\0' ;\r
+\r
+                       line++;\r
+                       HexRec.StringToRecord( s );\r
+\r
+                       if( 0 == HexRec.get_type())\r
+                               pFlash->flashset(\r
+                                       HexRec.get_addr(),\r
+                                       HexRec.get_nbytes(),\r
+                                       HexRec.get_data());\r
+               }\r
+       }\r
+       catch ( TGenericError E ){\r
+               char msg[ 80 ]; // FIXME - Magic Number\r
+               sprintf( msg, "Error: File: %s, Line: %d\n", infile, line );\r
+               E.prepend_message( msg );\r
+               throw E ;\r
+       }\r
+\r
+       fclose(pf);\r
+}\r
diff --git a/src/mkutil/revava-0.3/Object.h b/src/mkutil/revava-0.3/Object.h
new file mode 100644 (file)
index 0000000..eb1662e
--- /dev/null
@@ -0,0 +1,31 @@
+/*\r
+  Program: revava - Atmel Dis-Assembler\r
+  File: Object.h, Copyright (C) 2001 Daniel J. Winker\r
+\r
+  This program is free software; you can redistribute it and/or\r
+  modify it under the terms of the GNU General Public License\r
+  as published by the Free Software Foundation; either version 2\r
+  of the License, or (at your option) any later version.\r
+\r
+  This program is distributed in the hope that it will be useful,\r
+  but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+  GNU General Public License for more details.\r
+\r
+  You should have received a copy of the GNU General Public License\r
+  along with this program; if not, write to the Free Software\r
+  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
+*/\r
+\r
+#ifndef __Object\r
+#define __Object\r
+\r
+#include "Flash.h"\r
+\r
+class TObjectIn{\r
+       public:  \r
+               TObjectIn( const char* infile, TFlash* pFlash );\r
+               ~TObjectIn(){}\r
+};\r
+\r
+#endif\r
diff --git a/src/mkutil/revava-0.3/Object.o b/src/mkutil/revava-0.3/Object.o
new file mode 100644 (file)
index 0000000..5d0aab1
Binary files /dev/null and b/src/mkutil/revava-0.3/Object.o differ
diff --git a/src/mkutil/revava-0.3/README b/src/mkutil/revava-0.3/README
new file mode 100644 (file)
index 0000000..5d80752
--- /dev/null
@@ -0,0 +1,211 @@
+README for revava-0.3, Copyright (C) 2001, Daniel J. Winker\r
+\r
+Short description:\r
+Disassembler for Atmel AVR microcontroller firmware.\r
+\r
+Full description:\r
+revava is a single pass disassembler that reads in a file containing a\r
+program intended for an Atmel AVR microcontroller and outputs assembly\r
+code that can be input to an avr assembler.  The output of revava\r
+contains assembler mnemonics where possible and dc.W declarations where\r
+no mnemonic matches the data.  The comment field for each assembly\r
+instruction contains the address from the object code and the\r
+destination address for branches, calls, jumps, etc.  In the case where\r
+there are multiple assembly instructions that assemble to the same\r
+opcode, all choices are presented in a group with all but the first\r
+choice commented out.  make_labels.pl is a Perl script that's been\r
+included.  It takes the output of revava and puts "jump to" and function\r
+labels in the code.\r
+\r
+This is an early release of revava.  Right now only Intel hex files are\r
+supported for input.  It would not be hard to add support for other\r
+formats.  See the file TODO for more ideas.\r
+\r
+I took a lot of the code (probably about half) from AVA Version 0.3b\r
+which was written by Uros Platise and is available from\r
+http://medo.fov.uni-mb.si/mapp.  AVA is an Atmel AVR assembler.\r
+\r
+Compiling:\r
+\r
+The code is pretty vannilla C++.  It should build with just about any\r
+C++ compiler.  I tried it with gcc egcs-2.91.66 on linux and gcc 2.95.1\r
+on Solaris 7.  The only problem I noticed is that the Linux version\r
+wanted\r
+\r
+       #include <string.h>\r
+\r
+and the Solaris version wanted\r
+\r
+       #include <strings.h>\r
+\r
+I left it at <string.h>, so you might have to adjust that to get it to\r
+compile on your system.\r
+\r
+After downloading the latest tarball (x.y is the version number)\r
+\r
+       tar -xvzf revava-x.y.tar.gz\r
+       cd revava-x.y\r
+\r
+Here you might want to edit the Makefile for your own preferences, then:\r
+\r
+       make\r
+\r
+This should make two executables: "revava" and "make_test_source".  revava\r
+is the disassembler.  make_test_source just spits out some AVR assembly code\r
+that uses every instruction with different combinations of arguments.\r
+\r
+After that you might want to\r
+\r
+       strip revava\r
+\r
+I thought not using -g as a compiler flag made the executable as small\r
+as possible, but "strip revava" makes it even smaller.\r
+\r
+Testing:\r
+\r
+If you want to test it and you have AVA (which can be obtained at\r
+http://medc.fov.uni-mb.si/mapp) you can execute the following:\r
+\r
+       # This makes some crazy assembly code.  Don't try to run it!\r
+       ./make_test_source > test_source.s\r
+\r
+       # The following two lines create an Intel hex file named test.flash\r
+       ava test_source.s\r
+       ava --intel -o test test_source.o\r
+\r
+       # This creates another assembly file that should be equivalent\r
+       # to test_source.s\r
+       revava test.flash\r
+\r
+       # Try to assemble revava's output\r
+       ava out.s\r
+       ava --intel out.o\r
+\r
+       # See if we ended up back where we started\r
+       diff test.flash a.out.flash\r
+\r
+There should be no difference.\r
+\r
+Installing:\r
+\r
+There is no "make install" target in the makefile.  (See TODO file).\r
+So, just copy or move the executable "revava" to /usr/local/bin or\r
+wherever you want to keep it.  This README file is the extent of the\r
+documentation (See TODO file), so keep it around when you use revava.\r
+\r
+Using:\r
+\r
+Just typing "revava" and hitting enter returns something like this:\r
+\r
+       Atmel Dis-Assembler 0.1\r
+\r
+       Syntax: revava [switches] file\r
+       Switches:\r
+         -d         Dump Flash and exit.\r
+         -D         Debug Dump Flash (maybe should be Dubious Dump).\r
+         -e         Use little endian (Intel byte order).\r
+         -o file    Output file name (to redirect to stdout -o stdout).\r
+         --help     Print this help.\r
+         --version  Output version information.\r
+\r
+"file" is of course the object file that we want to disassemble.  I'll\r
+go through the switches one at a time.\r
+\r
+-d     Dump Flash and exit.\r
+\r
+This does the (probably) familiar hex dump that looks something like\r
+this:\r
+\r
+       04E0: 5000 570F 5F0F 5080  578F 5F8F 50F0 57FF  P.W._.P. W._.P.W.\r
+       04F0: 5FFF 9402 94F2 95F2  2000 20FF 23FF 95A8  _.......  . .#...\r
+       1000: FFFF 940E 940C ----  ---- ---- ---- ----  ......           \r
+\r
+The leftmost column is the address in hex.  Then we have the hex data\r
+and finally an ASCII representation of the data if it seems appropriate.\r
+The '-' characters in the hex data area mean that that data did not show\r
+up in the input object file.  (There was data at addresses 1000 to 1005,\r
+but nothing from 1006 to 100F).  Similarily, there are no addresses\r
+shown from 0500 to 09FF because they didn't show up in the input file.\r
+\r
+This option in combination with the -e flag is actually very useful for\r
+finding text strings embedded in the object file.\r
+\r
+-D     Debug Dump Flash and exit.\r
+\r
+This is mostly for debugging revava itself.  The output is pretty\r
+similar to what you get with the -d flag, except the entire flash space\r
+is dumped - whether it was present in the input file or not - and there\r
+is an extra field that is the flags that keep track of what parts of\r
+flash showed up in the input.  One problem with this output is that it\r
+is more than 80 columns wide.\r
+\r
+-e     Use little endian (Intel byte order)\r
+\r
+This flips the bytes in each word right after reading in the input file.\r
+This is useful because typically the way that works for disassembling is\r
+oppisite of the way that makes strings show up right with the -d flag.\r
+Try it once without -e and once with -e to see which one disassembles\r
+right.  Then try the -d flag once without -e and once with -e to see\r
+which one displays any strings correctly.\r
+\r
+-o file        Output file name\r
+\r
+Should be pretty straightforward.  I suppose redirecting to stdout with\r
+\r
+       revava -o stdout input.hex\r
+\r
+is a little strange.  Oh well.\r
+\r
+--help     Print this help.\r
+--version  Output version information.\r
+\r
+These two should also be pretty straightforward.\r
+\r
+make_labels.pl:\r
+\r
+Run this on the output of revava to add function labels and simple\r
+"jump to" labels.  This makes the output source a little easier to read.\r
+For instance, it will change this:\r
+\r
+               clr     r16             ; 04E0\r
+               ;eor    r16, r16        ; 04E0\r
+\r
+               ldi     r16, 0x6        ; 04E2\r
+               sts     0x0074, r16     ; 04E4\r
+               rjmp    910             ; 04F8, Dest: 0888\r
+               rcall   1528            ; 04FA, Dest: 0AF4\r
+\r
+into this:\r
+\r
+       L042:\r
+               clr     r16             ; 04E0\r
+               ;eor    r16, r16        ; 04E0\r
+\r
+               ldi     r16, 0x6        ; 04EA\r
+               sts     0x0074, r16     ; 04EC\r
+               rjmp    L115            ; 04F0, Dest: 0888\r
+\r
+       Func005:\r
+               rcall   Func008         ; 04F2, Dest: 0AF4\r
+\r
+make_labels.pl reads in a file and outputs to stdout, so typically you\r
+would do something like this:\r
+\r
+       revava -o prog.s program.hex\r
+       make_labels.pl prog.s > program.s\r
+\r
+If make_labels.pl can't find the "jump to" or function address it just\r
+adds "##### Dest BOGUS #####" to the end of the source line.  This means\r
+that the destination address is either in the middle of a double word\r
+instruction or the destination address was never included in the\r
+original object file.  A section of the code with lots of\r
+"##### Dest BOGUS #####" comments is probably really a data section.\r
+\r
+Note, make_labels.pl is much less tested than revava.  You should use an\r
+assembler to make sure you can recreate the object code from your brand\r
+new source.\r
+\r
+Contact:\r
+\r
+The website for revava is currently http://www.visi.com/~dwinker/revava.\r
+I can be contacted at dwinker@tiny.net.\r
diff --git a/src/mkutil/revava-0.3/Source.C b/src/mkutil/revava-0.3/Source.C
new file mode 100644 (file)
index 0000000..e8876d9
--- /dev/null
@@ -0,0 +1,735 @@
+/*\r
+  Program: revava - Atmel Dis-Assembler\r
+  File: Source.C, Copyright (C) 2001 Daniel J. Winker\r
+\r
+  This program is free software; you can redistribute it and/or\r
+  modify it under the terms of the GNU General Public License\r
+  as published by the Free Software Foundation; either version 2\r
+  of the License, or (at your option) any later version.\r
+\r
+  This program is distributed in the hope that it will be useful,\r
+  but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+  GNU General Public License for more details.\r
+\r
+  You should have received a copy of the GNU General Public License\r
+  along with this program; if not, write to the Free Software\r
+  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
+\r
+  CHANGES:\r
+  14-Mar-2001, Dan Winker\r
+  Added op_code_addr.  See Bug_0001 in CHANGES.\r
+*/\r
+\r
+#include <stdio.h>\r
+#include <string.h>\r
+\r
+#include "Avr.h"\r
+#include "Error.h"\r
+#include "Flash.h"\r
+#include "Source.h"\r
+\r
+#define FALSE 0\r
+#define TRUE  (!FALSE)\r
+\r
+//#define DEBUG\r
+\r
+TSourceOut::TSourceOut( const char* OutFile, TFlash* pFlash ){\r
+       TAvr               Avr;\r
+       TAvr::TInstruction Instruction;\r
+       int                Index;\r
+       int                line_count;\r
+       FILE*              pOutFile;\r
+       TSourceString*     pSourceString_temp;\r
+       TSourceString*     pSourceString_head;\r
+       TSourceString*     pSourceString_tail;\r
+       int                last_line_was_blank = FALSE;\r
+       int                look_for_new_segment = TRUE;\r
+       int                code_seg_num = 0;\r
+       unsigned short     code_word;\r
+       unsigned short     temp_short;\r
+       unsigned long      temp_long;\r
+       int                addr;\r
+       int                op_code_addr;\r
+       int                dest = 0;\r
+       int                have_dest;\r
+       int                high_byte_written;\r
+       int                low_byte_written;\r
+       char               temp_string[ 80 ]; // FIXME - Magic Number\r
+       char               temp_string2[ 80 ]; // FIXME - Magic Number\r
+       char*              pLastTab;\r
+       char*              tabs;\r
+\r
+       prolog_head = NULL;\r
+       prolog_tail = NULL;\r
+       body_head   = NULL;\r
+       body_tail   = NULL;\r
+\r
+       if( 0 == strcmp( "stdout", OutFile ) ){\r
+               pOutFile = stdout;\r
+       } else {\r
+               pOutFile = fopen( OutFile, "w" );\r
+       }\r
+\r
+       if( NULL == pOutFile )\r
+               throw TFileError( "Cannot open file for writing:", OutFile );\r
+\r
+       // FIXME - This probably doesn't belong burried deep withing a function.\r
+       // This probably should be much more configurable.\r
+       push_prolog( "#arch AT90S8515" );\r
+       push_prolog( "#include \"avr.inc\"" );\r
+\r
+       for( addr = 0; addr < FLASH_SIZE; addr += 2 ){\r
+\r
+               // Sometimes addr will get bumped because of a double word\r
+               // instruction, but we still want to report the address of the\r
+               // first word of the instruction.  op_code_addr is what is\r
+               // reported.\r
+               op_code_addr = addr;\r
+\r
+               code_word = pFlash->get_flash_word(\r
+                       addr,\r
+                       &high_byte_written,\r
+                       &low_byte_written );\r
+\r
+               #ifdef DEBUG_1\r
+                       printf( "DEBUG - SourceOut: ##############################\n" );\r
+                       printf( "DEBUG - SourceOut: addr              = %04X\n", addr );\r
+                       printf( "DEBUG - SourceOut: code_word         = %04X\n", code_word );\r
+                       printf( "DEBUG - SourceOut: high_byte_written = %04X\n", high_byte_written );\r
+                       printf( "DEBUG - SourceOut: low_byte_written  = %04X\n", low_byte_written );\r
+               #endif\r
+\r
+               if( high_byte_written != low_byte_written ){\r
+                       sprintf(\r
+                               temp_string,\r
+                               "TSourceOut: Word Address: %04X: high_byte_written != low_byte_written.",\r
+                               addr );\r
+                       throw TGenericError( temp_string ); \r
+               }\r
+\r
+\r
+               if( high_byte_written ){\r
+\r
+                       if( look_for_new_segment ){\r
+                               #ifdef DEBUG\r
+                                       printf( "DEBUG - SourceOut: Need Org Statement For: %04X\n", addr );\r
+                               #endif\r
+\r
+                               sprintf( temp_string, "\tseg abs=0x%X flash.code%d", addr, code_seg_num );\r
+                               push_body( "" );\r
+                               push_body( temp_string );\r
+                               push_body( "" );\r
+                               last_line_was_blank = TRUE;\r
+\r
+                               code_seg_num++;\r
+                               look_for_new_segment = FALSE;\r
+                       }\r
+\r
+                       // First Time Through\r
+                       pSourceString_head = NULL;\r
+                       pSourceString_tail = NULL;\r
+                       Index = 0;\r
+                       while( 0 != ( Index = Avr.Word2Instruction(\r
+                               &Instruction,\r
+                               code_word,\r
+                               Index ))){\r
+\r
+                               #ifdef DEBUG\r
+                                       printf( "DEBUG - SourceOut: Index                   = %d\n", Index);\r
+                                       printf( "DEBUG - SourceOut: Addr:OpCode             = %04X:%04X\n", addr, code_word );\r
+                                       printf( "DEBUG - SourceOut: Instruction.name        = %s\n",   Instruction.name );\r
+                                       printf( "DEBUG - SourceOut: Instruction.arg0_format = %c\n",   Instruction.arg0_format );\r
+                                       printf( "DEBUG - SourceOut: Instruction.arg1_format = %c\n",   Instruction.arg1_format );\r
+                                       printf( "DEBUG - SourceOut: Instruction.arg0_type   = %d\n",   Instruction.arg0_format );\r
+                                       printf( "DEBUG - SourceOut: Instruction.arg1_type   = %d\n",   Instruction.arg1_format );\r
+                                       printf( "DEBUG - SourceOut: Instruction.arg0        = %04X\n", Instruction.arg0 );\r
+                                       printf( "DEBUG - SourceOut: Instruction.arg1        = %04X\n", Instruction.arg1 );\r
+                               #endif\r
+\r
+                               have_dest = FALSE;\r
+\r
+                               if( TAvr::ARG_longCall == Instruction.arg0_type ){\r
+\r
+                                       // These arg types are special because they also use the\r
+                                       // next word as part of the opcode.\r
+\r
+                                       // A really paranoid programmer would do a bounds check\r
+                                       // on addr here.\r
+                                       addr += 2;\r
+                                       temp_short = pFlash->get_flash_word(\r
+                                               addr,\r
+                                               &high_byte_written,\r
+                                               &low_byte_written );\r
+\r
+                                       if( !high_byte_written || !low_byte_written ){\r
+                                               sprintf(\r
+                                                       temp_string,\r
+                                                       "TSourceOut: Word Address: %04X: Needed Entire Word Written",\r
+                                                       addr );\r
+                                               throw TGenericError( temp_string ); \r
+                                       }\r
+\r
+                                       temp_long =\r
+                                               ( (unsigned long)Instruction.arg0 << 16 ) |\r
+                                               ( (unsigned long)temp_short );\r
+\r
+                                       sprintf(\r
+                                               temp_string,\r
+                                               "\t%s\t0x%04lX",\r
+                                               Instruction.name,\r
+                                               temp_long );\r
+\r
+                               } else if(\r
+                                       TAvr::ARG_neg64_63   == Instruction.arg0_type ||\r
+                                       TAvr::ARG_neg2KB_2KB == Instruction.arg0_type ) {\r
+\r
+                                       // We insist that arg types of ARG_neg64_63 and\r
+                                       // ARG_neg2KB_2KB have an arg format of 'k'.\r
+                                       if( 'k' != Instruction.arg0_format ){\r
+\r
+                                               sprintf(\r
+                                                       temp_string,\r
+                                                       "TSourceOut:\n"\r
+                                                       "\t%s instruciton has arg0_type = ARG_neg64_63 or ARG_neg2KB_2KB\n"\r
+                                                       "\twith 'k' != ( arg0_format = '%c' )",\r
+                                                       Instruction.name,\r
+                                                       Instruction.arg0_format );\r
+                               \r
+                                               throw TGenericError( temp_string ); \r
+                                       }\r
+\r
+                                       // We also insist that arg0 types of ARG_neg64_63 and\r
+                                       // ARG_neg2KB_2KB do not have an arg1.\r
+                                       if( TAvr::ARG_none != Instruction.arg1_type ){\r
+\r
+                                               sprintf(\r
+                                                       temp_string,\r
+                                                       "TSourceOut:\n"\r
+                                                       "\t%s instruciton has arg0_type = ARG_neg64_63 or ARG_neg2KB_2KB\n"\r
+                                                       "\twith ARG_none != arg1_type",\r
+                                                       Instruction.name );\r
+                               \r
+                                               throw TGenericError( temp_string ); \r
+                                       }\r
+\r
+                                       sprintf(\r
+                                               temp_string,\r
+                                               "\t%s\t%d",\r
+                                               Instruction.name,\r
+                                               (short)Instruction.arg0 );\r
+\r
+                                       have_dest = TRUE;\r
+#if 0 /* Nick */\r
+                                       dest = addr; /* + 1 + (short)Instruction.arg0; */\r
+#else\r
+                                       dest = addr + 2 + (short)Instruction.arg0;\r
+#endif\r
+\r
+                               } else {\r
+\r
+                                       switch( Instruction.arg0_format ){\r
+\r
+                                               case '\0':\r
+\r
+                                                       // No args to this instruction\r
+                                                       sprintf(\r
+                                                               temp_string,\r
+                                                               "\t%s",\r
+                                                               Instruction.name );\r
+\r
+                                                       break;\r
+\r
+                                               case 'd':\r
+                                               case 'r':\r
+\r
+                                                       sprintf(\r
+                                                               temp_string,\r
+                                                               "\t%s\tr%d",\r
+                                                               Instruction.name,\r
+                                                               Instruction.arg0 );\r
+\r
+                                                       break;\r
+\r
+                                               case 'k':\r
+                                               case 's':\r
+\r
+                                                       sprintf(\r
+                                                               temp_string,\r
+                                                               "\t%s\t%d",\r
+                                                               Instruction.name,\r
+                                                               (short)Instruction.arg0 );\r
+\r
+                                                       break;\r
+\r
+                                               case 'P':\r
+                                               case 'p':\r
+\r
+                                                       sprintf(\r
+                                                               temp_string,\r
+                                                               "\t%s\t0x%X",\r
+                                                               Instruction.name,\r
+                                                               Instruction.arg0 );\r
+\r
+                                                       break;\r
+\r
+                                               case 'X':\r
+                                               case 'Y':\r
+                                               case 'Z':\r
+\r
+                                                       if( 0 == strcmp( "std", Instruction.name )){\r
+                                                               sprintf(\r
+                                                                       temp_string,\r
+                                                                       "\t%s\t%c+%d",\r
+                                                                       Instruction.name,\r
+                                                                       Instruction.arg0_format,\r
+                                                                       Instruction.arg0 );\r
+\r
+                                                       } else {\r
+\r
+                                                               // It's a little convoluted how we get the\r
+                                                               // information back from TAvr::AdjustArg about\r
+                                                               // whether to us "X", "X+", or "-X".  In this\r
+                                                               // arg_format is 'X'.  We differentiate by\r
+                                                               // setting the value of arg (which is an\r
+                                                               // (unsigned short)) to one of ' ', '+' or '-'.\r
+                                                               switch( (char)Instruction.arg0 ){\r
+\r
+                                                                       case ' ':\r
+\r
+                                                                               sprintf(\r
+                                                                                       temp_string,\r
+                                                                                       "\t%s\t%c",\r
+                                                                                       Instruction.name,\r
+                                                                                       Instruction.arg0_format );\r
+\r
+                                                                               break;\r
+\r
+                                                                       case '+':\r
+\r
+                                                                               sprintf(\r
+                                                                                       temp_string,\r
+                                                                                       "\t%s\t%c+",\r
+                                                                                       Instruction.name,\r
+                                                                                       Instruction.arg0_format );\r
+\r
+                                                                               break;\r
+\r
+                                                                       case '-':\r
+\r
+                                                                               sprintf(\r
+                                                                                       temp_string,\r
+                                                                                       "\t%s\t-%c",\r
+                                                                                       Instruction.name,\r
+                                                                                       Instruction.arg0_format );\r
+\r
+                                                                               break;\r
+\r
+                                                                       default:\r
+\r
+                                                                               sprintf(\r
+                                                                                       temp_string,\r
+                                                                                       "TSourceOut:\n"\r
+                                                                                       "\t%s instruction has special arg0_format: '%c'\n"\r
+                                                                                       "\twith unknown arg0 of: 0x%X",\r
+                                                                                       Instruction.name,\r
+                                                                                       Instruction.arg0_format,\r
+                                                                                       Instruction.arg0 );\r
+                               \r
+                                                                               throw TGenericError( temp_string ); \r
+\r
+                                                                               break;\r
+\r
+                                                               }\r
+                                                       }\r
+\r
+                                                       break;\r
+\r
+                                               default:\r
+\r
+                                                       sprintf(\r
+                                                               temp_string,\r
+                                                               "TSourceOut:\n"\r
+                                                               "\t%s instruction has unknown arg0_format: '%c'\n"\r
+                                                               "\targ0 is 0x%X",\r
+                                                               Instruction.name,\r
+                                                               Instruction.arg0_format,\r
+                                                               Instruction.arg0 );\r
+\r
+                                                       throw TGenericError( temp_string ); \r
+\r
+                                                       break;\r
+\r
+                                       } // end "switch( Instruction.arg0_format )"\r
+\r
+                               } // end else part of "if( Arg_longCall == Instruction.arg0_type )"\r
+\r
+                               if( TAvr::ARG_longCall == Instruction.arg1_type ){\r
+\r
+                                       // These arg types are special because they also use the\r
+                                       // next word as part of the opcode.\r
+\r
+                                       // A really paranoid programmer would do a bounds check\r
+                                       // on addr here.\r
+                                       addr += 2;\r
+                                       temp_short = pFlash->get_flash_word(\r
+                                               addr,\r
+                                               &high_byte_written,\r
+                                               &low_byte_written );\r
+\r
+\r
+                                       if( !high_byte_written || !low_byte_written ){\r
+                                               sprintf(\r
+                                                       temp_string,\r
+                                                       "TSourceOut: Word Address: %04X: Needed Entire Word Written",\r
+                                                       addr );\r
+                                               throw TGenericError( temp_string ); \r
+                                       }\r
+\r
+                                       temp_long =\r
+                                               ( (unsigned long)Instruction.arg1 << 16 ) |\r
+                                               ( (unsigned long)temp_short );\r
+\r
+                                       strcpy( temp_string2, temp_string );\r
+\r
+                                       sprintf(\r
+                                               temp_string,\r
+                                               "%s, 0x%04lX",\r
+                                               temp_string2,\r
+                                               temp_long );\r
+\r
+                               } else if( TAvr::ARG_neg64_63 == Instruction.arg1_type ) {\r
+\r
+                                       // We insist that an ARG_neg64_63 arg type have\r
+                                       // an arg format of 'k'.\r
+                                       if( 'k' != Instruction.arg1_format ){\r
+\r
+                                               sprintf(\r
+                                                       temp_string,\r
+                                                       "TSourceOut:\n"\r
+                                                       "\t%s instruciton has arg1_type = ARG_neg64_63\n"\r
+                                                       "\twith 'k' != ( arg1_format = '%c' )",\r
+                                                       Instruction.name,\r
+                                                       Instruction.arg1_format );\r
+                               \r
+                                               throw TGenericError( temp_string ); \r
+                                       }\r
+\r
+                                       strcpy( temp_string2, temp_string );\r
+\r
+                                       sprintf(\r
+                                               temp_string,\r
+                                               "%s, %d",\r
+                                               temp_string2,\r
+                                               (short)Instruction.arg1 );\r
+\r
+                                       have_dest = TRUE;\r
+                                       dest = addr + 2 + (short)Instruction.arg1;\r
+\r
+                               } else {\r
+\r
+                                       switch( Instruction.arg1_format ){\r
+\r
+                                               case '\0':\r
+                                                       // No arg1 to this instruction.  No more to do.\r
+                                                       break;\r
+\r
+                                               case 'b':\r
+                                               case 'k':\r
+\r
+                                                       strcpy( temp_string2, temp_string );\r
+\r
+                                                       sprintf(\r
+                                                               temp_string,\r
+                                                               "%s, %d",\r
+                                                               temp_string2,\r
+                                                               (short)Instruction.arg1 );\r
+\r
+                                                       break;\r
+\r
+                                               case 'd':\r
+                                               case 'r':\r
+\r
+                                                       strcpy( temp_string2, temp_string );\r
+\r
+                                                       sprintf(\r
+                                                               temp_string,\r
+                                                               "%s, r%d",\r
+                                                               temp_string2,\r
+                                                               Instruction.arg1 );\r
+\r
+                                                       break;\r
+\r
+                                               case 'K':\r
+                                               case 'P':\r
+\r
+                                                       strcpy( temp_string2, temp_string );\r
+\r
+                                                       sprintf(\r
+                                                               temp_string,\r
+                                                               "%s, 0x%X",\r
+                                                               temp_string2,\r
+                                                               Instruction.arg1 );\r
+\r
+                                                       break;\r
+\r
+                                               case 'X':\r
+                                               case 'Y':\r
+                                               case 'Z':\r
+\r
+                                                       strcpy( temp_string2, temp_string );\r
+\r
+                                                       if( 0 == strcmp( "ldd", Instruction.name )){\r
+                                                               sprintf(\r
+                                                                       temp_string,\r
+                                                                       "%s, %c+%d",\r
+                                                                       temp_string2,\r
+                                                                       Instruction.arg1_format,\r
+                                                                       Instruction.arg1 );\r
+\r
+                                                       } else {\r
+\r
+                                                               // It's a little convoluted how we get the\r
+                                                               // information back from TAvr::AdjustArg about\r
+                                                               // whether to us "X", "X+", or "-X".  In this\r
+                                                               // arg_format is 'X'.  We differentiate by setting\r
+                                                               // the value of arg (which is an (unsigned short))\r
+                                                               // to one of ' ', '+', or '-'.\r
+                                                               switch( (char)Instruction.arg1 ){\r
+\r
+                                                                       case ' ':\r
+\r
+                                                                               sprintf(\r
+                                                                                       temp_string,\r
+                                                                                       "%s, %c",\r
+                                                                                       temp_string2,\r
+                                                                                       Instruction.arg1_format );\r
+\r
+                                                                               break;\r
+\r
+                                                                       case '+':\r
+\r
+                                                                               sprintf(\r
+                                                                                       temp_string,\r
+                                                                                       "%s, %c+",\r
+                                                                                       temp_string2,\r
+                                                                                       Instruction.arg1_format );\r
+\r
+                                                                               break;\r
+\r
+                                                                       case '-':\r
+\r
+                                                                               sprintf(\r
+                                                                                       temp_string,\r
+                                                                                       "%s, -%c",\r
+                                                                                       temp_string2,\r
+                                                                                       Instruction.arg1_format );\r
+\r
+                                                                               break;\r
+\r
+                                                                       default:\r
+\r
+                                                                               sprintf(\r
+                                                                                       temp_string,\r
+                                                                                       "TSourceOut:\n"\r
+                                                                                       "\t%s instruction has special arg1_format: '%c'\n"\r
+                                                                                       "\twith unknown arg1 of: 0x%X",\r
+                                                                                       Instruction.name,\r
+                                                                                       Instruction.arg1_format,\r
+                                                                                       Instruction.arg1 );\r
+                               \r
+                                                                               throw TGenericError( temp_string ); \r
+\r
+                                                                               break;\r
+                                                               }\r
+                                                       }\r
+\r
+                                                       break;\r
+\r
+                                               default:\r
+\r
+                                                       sprintf(\r
+                                                               temp_string,\r
+                                                               "TSourceOut:\n"\r
+                                                               "\t%s instruction has unknown arg1_format: '%c'\n"\r
+                                                               "\targ1 is 0x%X",\r
+                                                               Instruction.name,\r
+                                                               Instruction.arg1_format,\r
+                                                               Instruction.arg1 );\r
+\r
+                                                       throw TGenericError( temp_string ); \r
+\r
+                                                       break;\r
+                                       } // end "switch( Instruction.arg1_format )"\r
+\r
+                               } // end else part of "if( Arg_longCall == Instruction.arg1_type )"\r
+\r
+                               // We'll make it line up pretty assuming 8 space tabs.  I'm\r
+                               // taking a chance here and making the code as a whole a little\r
+                               // longer to try to decouple this process from the rest of this\r
+                               // function.\r
+                               pLastTab = rindex( temp_string, '\t' );\r
+\r
+                               if( index( temp_string, '\t' ) == pLastTab ){\r
+\r
+                                       // There is only one tab.  Therefore this is a simple\r
+                                       // instruction with no arguments.  Since none of these are\r
+                                       // 8 or more characters long, we know we haven't advanced\r
+                                       // the hypothetical cursor to the args column yet.\r
+                                       // Therefore we know that we need 3 tabs.\r
+                                       tabs = "\t\t\t";\r
+\r
+                               } else if( 8 > strlen ( pLastTab + 1 ) ){\r
+\r
+                                       // This is a short set of arguments.  We need 2 tabs to get\r
+                                       // into the comments column.\r
+                                       tabs = "\t\t";\r
+\r
+                               } else {\r
+\r
+                                       // This is a long set of arguments.  We need 1 tab to get\r
+                                       // into the comments column.\r
+                                       tabs = "\t";\r
+                               }\r
+\r
+                               // Add the address and possibly the destination.\r
+                               if( have_dest ){\r
+\r
+                                       sprintf(\r
+                                               temp_string2,\r
+                                               "%s%s; %04X, Dest: %04X",\r
+                                               temp_string,\r
+                                               tabs,\r
+                                               op_code_addr,\r
+                                               dest );\r
+\r
+                               } else {\r
+\r
+                                       sprintf(\r
+                                               temp_string2,\r
+                                               "%s%s; %04X",\r
+                                               temp_string,\r
+                                               tabs,\r
+                                               op_code_addr );\r
+                               }\r
+\r
+                               pSourceString_tail =\r
+                                       new TSourceString( temp_string2, pSourceString_tail );\r
+\r
+                               if ( NULL == pSourceString_head ){\r
+                                       pSourceString_head = pSourceString_tail;\r
+                               }\r
+\r
+                       } // end while( 0 != ( Index = Avr.Word2Instruction\r
+\r
+                       line_count = 0;\r
+                       if( pSourceString_head ){\r
+\r
+                               // We were able to match the opcode to an instruction.\r
+\r
+                               if( pSourceString_head->next && !last_line_was_blank ){\r
+                                       // There is more than one equavalent source strings that\r
+                                       // can make this opcode.  Put in a blank line to seperate\r
+                                       // these equivalent source strings from the other source.\r
+                                       push_body( "" );\r
+                               }\r
+\r
+                               while( pSourceString_head ){\r
+\r
+                                       if ( 0 == line_count ){\r
+                                               strcpy( temp_string, pSourceString_head->string );\r
+                                       } else {\r
+                                               sprintf(\r
+                                                       temp_string,\r
+                                                       "\t;%s",\r
+                                                       pSourceString_head->string + 1 );\r
+                                       }\r
+\r
+                                       push_body( temp_string );\r
+                                       pSourceString_temp = pSourceString_head->next;\r
+                                       delete pSourceString_head;\r
+                                       pSourceString_head = pSourceString_temp;\r
+\r
+                                       line_count++;\r
+                               }\r
+\r
+                               if ( 1 < line_count ){\r
+\r
+                                       // There was more than one line in this block.\r
+                                       // Put out a blank line.\r
+                                       last_line_was_blank = TRUE;\r
+                                       push_body( "" );\r
+\r
+                               } else {\r
+\r
+                                       last_line_was_blank = FALSE;\r
+                               }\r
+\r
+                       } else {\r
+\r
+                               // No instruction matched this opcode.  Print it as data.\r
+\r
+                               sprintf(\r
+                                       temp_string,\r
+                                       "\tdc.W\t0x%04X\t\t; %04X",\r
+                                       code_word,\r
+                                       op_code_addr );\r
+\r
+                               push_body( temp_string );\r
+                               last_line_was_blank = FALSE;\r
+                       }\r
+\r
+               } else {\r
+\r
+                       look_for_new_segment = TRUE;\r
+\r
+               }\r
+       }\r
+\r
+       while( prolog_head ){\r
+               fputs( prolog_head->string, pOutFile );\r
+               fputc( '\n', pOutFile );\r
+               pSourceString_temp = prolog_head->next;\r
+               delete prolog_head;\r
+               prolog_head = pSourceString_temp;\r
+       }\r
+\r
+       while( body_head ){\r
+               fputs( body_head->string, pOutFile );\r
+               fputc( '\n', pOutFile );\r
+               pSourceString_temp = body_head->next;\r
+               delete body_head;\r
+               body_head = pSourceString_temp;\r
+       }\r
+}\r
+\r
+void TSourceOut::push_prolog( const char* s){\r
+\r
+       prolog_tail = new TSourceString( s, prolog_tail );\r
+\r
+       if( NULL == prolog_head ){\r
+               prolog_head = prolog_tail;\r
+       }\r
+}\r
+\r
+void TSourceOut::push_body( const char* s){\r
+\r
+       body_tail = new TSourceString( s, body_tail );\r
+\r
+       if( NULL == body_head ){\r
+               body_head = body_tail;\r
+       }\r
+}\r
+\r
+TSourceOut::TSourceString::TSourceString(\r
+       const char* s,\r
+       TSourceString* previous ){\r
+\r
+       strncpy( string, s, 79 );       // FIXME - magic number\r
+       string[ 79 ] = '\0';\r
+\r
+       if( NULL != previous )\r
+               previous->next = this;\r
+\r
+       next = NULL;\r
+}\r
diff --git a/src/mkutil/revava-0.3/Source.C% b/src/mkutil/revava-0.3/Source.C%
new file mode 100644 (file)
index 0000000..c3de637
--- /dev/null
@@ -0,0 +1,735 @@
+/*\r
+  Program: revava - Atmel Dis-Assembler\r
+  File: Source.C, Copyright (C) 2001 Daniel J. Winker\r
+\r
+  This program is free software; you can redistribute it and/or\r
+  modify it under the terms of the GNU General Public License\r
+  as published by the Free Software Foundation; either version 2\r
+  of the License, or (at your option) any later version.\r
+\r
+  This program is distributed in the hope that it will be useful,\r
+  but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+  GNU General Public License for more details.\r
+\r
+  You should have received a copy of the GNU General Public License\r
+  along with this program; if not, write to the Free Software\r
+  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
+\r
+  CHANGES:\r
+  14-Mar-2001, Dan Winker\r
+  Added op_code_addr.  See Bug_0001 in CHANGES.\r
+*/\r
+\r
+#include <stdio.h>\r
+#include <string.h>\r
+\r
+#include "Avr.h"\r
+#include "Error.h"\r
+#include "Flash.h"\r
+#include "Source.h"\r
+\r
+#define FALSE 0\r
+#define TRUE  (!FALSE)\r
+\r
+//#define DEBUG\r
+\r
+TSourceOut::TSourceOut( const char* OutFile, TFlash* pFlash ){\r
+       TAvr               Avr;\r
+       TAvr::TInstruction Instruction;\r
+       int                Index;\r
+       int                line_count;\r
+       FILE*              pOutFile;\r
+       TSourceString*     pSourceString_temp;\r
+       TSourceString*     pSourceString_head;\r
+       TSourceString*     pSourceString_tail;\r
+       int                last_line_was_blank = FALSE;\r
+       int                look_for_new_segment = TRUE;\r
+       int                code_seg_num = 0;\r
+       unsigned short     code_word;\r
+       unsigned short     temp_short;\r
+       unsigned long      temp_long;\r
+       int                addr;\r
+       int                op_code_addr;\r
+       int                dest = 0;\r
+       int                have_dest;\r
+       int                high_byte_written;\r
+       int                low_byte_written;\r
+       char               temp_string[ 80 ]; // FIXME - Magic Number\r
+       char               temp_string2[ 80 ]; // FIXME - Magic Number\r
+       char*              pLastTab;\r
+       char*              tabs;\r
+\r
+       prolog_head = NULL;\r
+       prolog_tail = NULL;\r
+       body_head   = NULL;\r
+       body_tail   = NULL;\r
+\r
+       if( 0 == strcmp( "stdout", OutFile ) ){\r
+               pOutFile = stdout;\r
+       } else {\r
+               pOutFile = fopen( OutFile, "w" );\r
+       }\r
+\r
+       if( NULL == pOutFile )\r
+               throw TFileError( "Cannot open file for writing:", OutFile );\r
+\r
+       // FIXME - This probably doesn't belong burried deep withing a function.\r
+       // This probably should be much more configurable.\r
+       push_prolog( "#arch AT90S8515" );\r
+       push_prolog( "#include \"avr.inc\"" );\r
+\r
+       for( addr = 0; addr < FLASH_SIZE; addr += 2 ){\r
+\r
+               // Sometimes addr will get bumped because of a double word\r
+               // instruction, but we still want to report the address of the\r
+               // first word of the instruction.  op_code_addr is what is\r
+               // reported.\r
+               op_code_addr = addr;\r
+\r
+               code_word = pFlash->get_flash_word(\r
+                       addr,\r
+                       &high_byte_written,\r
+                       &low_byte_written );\r
+\r
+               #ifdef DEBUG_1\r
+                       printf( "DEBUG - SourceOut: ##############################\n" );\r
+                       printf( "DEBUG - SourceOut: addr              = %04X\n", addr );\r
+                       printf( "DEBUG - SourceOut: code_word         = %04X\n", code_word );\r
+                       printf( "DEBUG - SourceOut: high_byte_written = %04X\n", high_byte_written );\r
+                       printf( "DEBUG - SourceOut: low_byte_written  = %04X\n", low_byte_written );\r
+               #endif\r
+\r
+               if( high_byte_written != low_byte_written ){\r
+                       sprintf(\r
+                               temp_string,\r
+                               "TSourceOut: Word Address: %04X: high_byte_written != low_byte_written.",\r
+                               addr );\r
+                       throw TGenericError( temp_string ); \r
+               }\r
+\r
+\r
+               if( high_byte_written ){\r
+\r
+                       if( look_for_new_segment ){\r
+                               #ifdef DEBUG\r
+                                       printf( "DEBUG - SourceOut: Need Org Statement For: %04X\n", addr );\r
+                               #endif\r
+\r
+                               sprintf( temp_string, "\tseg abs=0x%X flash.code%d", addr, code_seg_num );\r
+                               push_body( "" );\r
+                               push_body( temp_string );\r
+                               push_body( "" );\r
+                               last_line_was_blank = TRUE;\r
+\r
+                               code_seg_num++;\r
+                               look_for_new_segment = FALSE;\r
+                       }\r
+\r
+                       // First Time Through\r
+                       pSourceString_head = NULL;\r
+                       pSourceString_tail = NULL;\r
+                       Index = 0;\r
+                       while( 0 != ( Index = Avr.Word2Instruction(\r
+                               &Instruction,\r
+                               code_word,\r
+                               Index ))){\r
+\r
+                               #ifdef DEBUG\r
+                                       printf( "DEBUG - SourceOut: Index                   = %d\n", Index);\r
+                                       printf( "DEBUG - SourceOut: Addr:OpCode             = %04X:%04X\n", addr, code_word );\r
+                                       printf( "DEBUG - SourceOut: Instruction.name        = %s\n",   Instruction.name );\r
+                                       printf( "DEBUG - SourceOut: Instruction.arg0_format = %c\n",   Instruction.arg0_format );\r
+                                       printf( "DEBUG - SourceOut: Instruction.arg1_format = %c\n",   Instruction.arg1_format );\r
+                                       printf( "DEBUG - SourceOut: Instruction.arg0_type   = %d\n",   Instruction.arg0_format );\r
+                                       printf( "DEBUG - SourceOut: Instruction.arg1_type   = %d\n",   Instruction.arg1_format );\r
+                                       printf( "DEBUG - SourceOut: Instruction.arg0        = %04X\n", Instruction.arg0 );\r
+                                       printf( "DEBUG - SourceOut: Instruction.arg1        = %04X\n", Instruction.arg1 );\r
+                               #endif\r
+\r
+                               have_dest = FALSE;\r
+\r
+                               if( TAvr::ARG_longCall == Instruction.arg0_type ){\r
+\r
+                                       // These arg types are special because they also use the\r
+                                       // next word as part of the opcode.\r
+\r
+                                       // A really paranoid programmer would do a bounds check\r
+                                       // on addr here.\r
+                                       addr += 2;\r
+                                       temp_short = pFlash->get_flash_word(\r
+                                               addr,\r
+                                               &high_byte_written,\r
+                                               &low_byte_written );\r
+\r
+                                       if( !high_byte_written || !low_byte_written ){\r
+                                               sprintf(\r
+                                                       temp_string,\r
+                                                       "TSourceOut: Word Address: %04X: Needed Entire Word Written",\r
+                                                       addr );\r
+                                               throw TGenericError( temp_string ); \r
+                                       }\r
+\r
+                                       temp_long =\r
+                                               ( (unsigned long)Instruction.arg0 << 16 ) |\r
+                                               ( (unsigned long)temp_short );\r
+\r
+                                       sprintf(\r
+                                               temp_string,\r
+                                               "\t%s\t0x%04lX",\r
+                                               Instruction.name,\r
+                                               temp_long );\r
+\r
+                               } else if(\r
+                                       TAvr::ARG_neg64_63   == Instruction.arg0_type ||\r
+                                       TAvr::ARG_neg2KB_2KB == Instruction.arg0_type ) {\r
+\r
+                                       // We insist that arg types of ARG_neg64_63 and\r
+                                       // ARG_neg2KB_2KB have an arg format of 'k'.\r
+                                       if( 'k' != Instruction.arg0_format ){\r
+\r
+                                               sprintf(\r
+                                                       temp_string,\r
+                                                       "TSourceOut:\n"\r
+                                                       "\t%s instruciton has arg0_type = ARG_neg64_63 or ARG_neg2KB_2KB\n"\r
+                                                       "\twith 'k' != ( arg0_format = '%c' )",\r
+                                                       Instruction.name,\r
+                                                       Instruction.arg0_format );\r
+                               \r
+                                               throw TGenericError( temp_string ); \r
+                                       }\r
+\r
+                                       // We also insist that arg0 types of ARG_neg64_63 and\r
+                                       // ARG_neg2KB_2KB do not have an arg1.\r
+                                       if( TAvr::ARG_none != Instruction.arg1_type ){\r
+\r
+                                               sprintf(\r
+                                                       temp_string,\r
+                                                       "TSourceOut:\n"\r
+                                                       "\t%s instruciton has arg0_type = ARG_neg64_63 or ARG_neg2KB_2KB\n"\r
+                                                       "\twith ARG_none != arg1_type",\r
+                                                       Instruction.name );\r
+                               \r
+                                               throw TGenericError( temp_string ); \r
+                                       }\r
+\r
+                                       sprintf(\r
+                                               temp_string,\r
+                                               "\t%s\t%d",\r
+                                               Instruction.name,\r
+                                               (short)Instruction.arg0 );\r
+\r
+                                       have_dest = TRUE;\r
+#if 1 /* Nick */\r
+                                       dest = addr; /* + 1 + (short)Instruction.arg0; */\r
+#else\r
+                                       dest = addr + 2 + (short)Instruction.arg0;\r
+#endif\r
+\r
+                               } else {\r
+\r
+                                       switch( Instruction.arg0_format ){\r
+\r
+                                               case '\0':\r
+\r
+                                                       // No args to this instruction\r
+                                                       sprintf(\r
+                                                               temp_string,\r
+                                                               "\t%s",\r
+                                                               Instruction.name );\r
+\r
+                                                       break;\r
+\r
+                                               case 'd':\r
+                                               case 'r':\r
+\r
+                                                       sprintf(\r
+                                                               temp_string,\r
+                                                               "\t%s\tr%d",\r
+                                                               Instruction.name,\r
+                                                               Instruction.arg0 );\r
+\r
+                                                       break;\r
+\r
+                                               case 'k':\r
+                                               case 's':\r
+\r
+                                                       sprintf(\r
+                                                               temp_string,\r
+                                                               "\t%s\t%d",\r
+                                                               Instruction.name,\r
+                                                               (short)Instruction.arg0 );\r
+\r
+                                                       break;\r
+\r
+                                               case 'P':\r
+                                               case 'p':\r
+\r
+                                                       sprintf(\r
+                                                               temp_string,\r
+                                                               "\t%s\t0x%X",\r
+                                                               Instruction.name,\r
+                                                               Instruction.arg0 );\r
+\r
+                                                       break;\r
+\r
+                                               case 'X':\r
+                                               case 'Y':\r
+                                               case 'Z':\r
+\r
+                                                       if( 0 == strcmp( "std", Instruction.name )){\r
+                                                               sprintf(\r
+                                                                       temp_string,\r
+                                                                       "\t%s\t%c+%d",\r
+                                                                       Instruction.name,\r
+                                                                       Instruction.arg0_format,\r
+                                                                       Instruction.arg0 );\r
+\r
+                                                       } else {\r
+\r
+                                                               // It's a little convoluted how we get the\r
+                                                               // information back from TAvr::AdjustArg about\r
+                                                               // whether to us "X", "X+", or "-X".  In this\r
+                                                               // arg_format is 'X'.  We differentiate by\r
+                                                               // setting the value of arg (which is an\r
+                                                               // (unsigned short)) to one of ' ', '+' or '-'.\r
+                                                               switch( (char)Instruction.arg0 ){\r
+\r
+                                                                       case ' ':\r
+\r
+                                                                               sprintf(\r
+                                                                                       temp_string,\r
+                                                                                       "\t%s\t%c",\r
+                                                                                       Instruction.name,\r
+                                                                                       Instruction.arg0_format );\r
+\r
+                                                                               break;\r
+\r
+                                                                       case '+':\r
+\r
+                                                                               sprintf(\r
+                                                                                       temp_string,\r
+                                                                                       "\t%s\t%c+",\r
+                                                                                       Instruction.name,\r
+                                                                                       Instruction.arg0_format );\r
+\r
+                                                                               break;\r
+\r
+                                                                       case '-':\r
+\r
+                                                                               sprintf(\r
+                                                                                       temp_string,\r
+                                                                                       "\t%s\t-%c",\r
+                                                                                       Instruction.name,\r
+                                                                                       Instruction.arg0_format );\r
+\r
+                                                                               break;\r
+\r
+                                                                       default:\r
+\r
+                                                                               sprintf(\r
+                                                                                       temp_string,\r
+                                                                                       "TSourceOut:\n"\r
+                                                                                       "\t%s instruction has special arg0_format: '%c'\n"\r
+                                                                                       "\twith unknown arg0 of: 0x%X",\r
+                                                                                       Instruction.name,\r
+                                                                                       Instruction.arg0_format,\r
+                                                                                       Instruction.arg0 );\r
+                               \r
+                                                                               throw TGenericError( temp_string ); \r
+\r
+                                                                               break;\r
+\r
+                                                               }\r
+                                                       }\r
+\r
+                                                       break;\r
+\r
+                                               default:\r
+\r
+                                                       sprintf(\r
+                                                               temp_string,\r
+                                                               "TSourceOut:\n"\r
+                                                               "\t%s instruction has unknown arg0_format: '%c'\n"\r
+                                                               "\targ0 is 0x%X",\r
+                                                               Instruction.name,\r
+                                                               Instruction.arg0_format,\r
+                                                               Instruction.arg0 );\r
+\r
+                                                       throw TGenericError( temp_string ); \r
+\r
+                                                       break;\r
+\r
+                                       } // end "switch( Instruction.arg0_format )"\r
+\r
+                               } // end else part of "if( Arg_longCall == Instruction.arg0_type )"\r
+\r
+                               if( TAvr::ARG_longCall == Instruction.arg1_type ){\r
+\r
+                                       // These arg types are special because they also use the\r
+                                       // next word as part of the opcode.\r
+\r
+                                       // A really paranoid programmer would do a bounds check\r
+                                       // on addr here.\r
+                                       addr += 2;\r
+                                       temp_short = pFlash->get_flash_word(\r
+                                               addr,\r
+                                               &high_byte_written,\r
+                                               &low_byte_written );\r
+\r
+\r
+                                       if( !high_byte_written || !low_byte_written ){\r
+                                               sprintf(\r
+                                                       temp_string,\r
+                                                       "TSourceOut: Word Address: %04X: Needed Entire Word Written",\r
+                                                       addr );\r
+                                               throw TGenericError( temp_string ); \r
+                                       }\r
+\r
+                                       temp_long =\r
+                                               ( (unsigned long)Instruction.arg1 << 16 ) |\r
+                                               ( (unsigned long)temp_short );\r
+\r
+                                       strcpy( temp_string2, temp_string );\r
+\r
+                                       sprintf(\r
+                                               temp_string,\r
+                                               "%s, 0x%04lX",\r
+                                               temp_string2,\r
+                                               temp_long );\r
+\r
+                               } else if( TAvr::ARG_neg64_63 == Instruction.arg1_type ) {\r
+\r
+                                       // We insist that an ARG_neg64_63 arg type have\r
+                                       // an arg format of 'k'.\r
+                                       if( 'k' != Instruction.arg1_format ){\r
+\r
+                                               sprintf(\r
+                                                       temp_string,\r
+                                                       "TSourceOut:\n"\r
+                                                       "\t%s instruciton has arg1_type = ARG_neg64_63\n"\r
+                                                       "\twith 'k' != ( arg1_format = '%c' )",\r
+                                                       Instruction.name,\r
+                                                       Instruction.arg1_format );\r
+                               \r
+                                               throw TGenericError( temp_string ); \r
+                                       }\r
+\r
+                                       strcpy( temp_string2, temp_string );\r
+\r
+                                       sprintf(\r
+                                               temp_string,\r
+                                               "%s, %d",\r
+                                               temp_string2,\r
+                                               (short)Instruction.arg1 );\r
+\r
+                                       have_dest = TRUE;\r
+                                       dest = addr + 2 + (short)Instruction.arg1;\r
+\r
+                               } else {\r
+\r
+                                       switch( Instruction.arg1_format ){\r
+\r
+                                               case '\0':\r
+                                                       // No arg1 to this instruction.  No more to do.\r
+                                                       break;\r
+\r
+                                               case 'b':\r
+                                               case 'k':\r
+\r
+                                                       strcpy( temp_string2, temp_string );\r
+\r
+                                                       sprintf(\r
+                                                               temp_string,\r
+                                                               "%s, %d",\r
+                                                               temp_string2,\r
+                                                               (short)Instruction.arg1 );\r
+\r
+                                                       break;\r
+\r
+                                               case 'd':\r
+                                               case 'r':\r
+\r
+                                                       strcpy( temp_string2, temp_string );\r
+\r
+                                                       sprintf(\r
+                                                               temp_string,\r
+                                                               "%s, r%d",\r
+                                                               temp_string2,\r
+                                                               Instruction.arg1 );\r
+\r
+                                                       break;\r
+\r
+                                               case 'K':\r
+                                               case 'P':\r
+\r
+                                                       strcpy( temp_string2, temp_string );\r
+\r
+                                                       sprintf(\r
+                                                               temp_string,\r
+                                                               "%s, 0x%X",\r
+                                                               temp_string2,\r
+                                                               Instruction.arg1 );\r
+\r
+                                                       break;\r
+\r
+                                               case 'X':\r
+                                               case 'Y':\r
+                                               case 'Z':\r
+\r
+                                                       strcpy( temp_string2, temp_string );\r
+\r
+                                                       if( 0 == strcmp( "ldd", Instruction.name )){\r
+                                                               sprintf(\r
+                                                                       temp_string,\r
+                                                                       "%s, %c+%d",\r
+                                                                       temp_string2,\r
+                                                                       Instruction.arg1_format,\r
+                                                                       Instruction.arg1 );\r
+\r
+                                                       } else {\r
+\r
+                                                               // It's a little convoluted how we get the\r
+                                                               // information back from TAvr::AdjustArg about\r
+                                                               // whether to us "X", "X+", or "-X".  In this\r
+                                                               // arg_format is 'X'.  We differentiate by setting\r
+                                                               // the value of arg (which is an (unsigned short))\r
+                                                               // to one of ' ', '+', or '-'.\r
+                                                               switch( (char)Instruction.arg1 ){\r
+\r
+                                                                       case ' ':\r
+\r
+                                                                               sprintf(\r
+                                                                                       temp_string,\r
+                                                                                       "%s, %c",\r
+                                                                                       temp_string2,\r
+                                                                                       Instruction.arg1_format );\r
+\r
+                                                                               break;\r
+\r
+                                                                       case '+':\r
+\r
+                                                                               sprintf(\r
+                                                                                       temp_string,\r
+                                                                                       "%s, %c+",\r
+                                                                                       temp_string2,\r
+                                                                                       Instruction.arg1_format );\r
+\r
+                                                                               break;\r
+\r
+                                                                       case '-':\r
+\r
+                                                                               sprintf(\r
+                                                                                       temp_string,\r
+                                                                                       "%s, -%c",\r
+                                                                                       temp_string2,\r
+                                                                                       Instruction.arg1_format );\r
+\r
+                                                                               break;\r
+\r
+                                                                       default:\r
+\r
+                                                                               sprintf(\r
+                                                                                       temp_string,\r
+                                                                                       "TSourceOut:\n"\r
+                                                                                       "\t%s instruction has special arg1_format: '%c'\n"\r
+                                                                                       "\twith unknown arg1 of: 0x%X",\r
+                                                                                       Instruction.name,\r
+                                                                                       Instruction.arg1_format,\r
+                                                                                       Instruction.arg1 );\r
+                               \r
+                                                                               throw TGenericError( temp_string ); \r
+\r
+                                                                               break;\r
+                                                               }\r
+                                                       }\r
+\r
+                                                       break;\r
+\r
+                                               default:\r
+\r
+                                                       sprintf(\r
+                                                               temp_string,\r
+                                                               "TSourceOut:\n"\r
+                                                               "\t%s instruction has unknown arg1_format: '%c'\n"\r
+                                                               "\targ1 is 0x%X",\r
+                                                               Instruction.name,\r
+                                                               Instruction.arg1_format,\r
+                                                               Instruction.arg1 );\r
+\r
+                                                       throw TGenericError( temp_string ); \r
+\r
+                                                       break;\r
+                                       } // end "switch( Instruction.arg1_format )"\r
+\r
+                               } // end else part of "if( Arg_longCall == Instruction.arg1_type )"\r
+\r
+                               // We'll make it line up pretty assuming 8 space tabs.  I'm\r
+                               // taking a chance here and making the code as a whole a little\r
+                               // longer to try to decouple this process from the rest of this\r
+                               // function.\r
+                               pLastTab = rindex( temp_string, '\t' );\r
+\r
+                               if( index( temp_string, '\t' ) == pLastTab ){\r
+\r
+                                       // There is only one tab.  Therefore this is a simple\r
+                                       // instruction with no arguments.  Since none of these are\r
+                                       // 8 or more characters long, we know we haven't advanced\r
+                                       // the hypothetical cursor to the args column yet.\r
+                                       // Therefore we know that we need 3 tabs.\r
+                                       tabs = "\t\t\t";\r
+\r
+                               } else if( 8 > strlen ( pLastTab + 1 ) ){\r
+\r
+                                       // This is a short set of arguments.  We need 2 tabs to get\r
+                                       // into the comments column.\r
+                                       tabs = "\t\t";\r
+\r
+                               } else {\r
+\r
+                                       // This is a long set of arguments.  We need 1 tab to get\r
+                                       // into the comments column.\r
+                                       tabs = "\t";\r
+                               }\r
+\r
+                               // Add the address and possibly the destination.\r
+                               if( have_dest ){\r
+\r
+                                       sprintf(\r
+                                               temp_string2,\r
+                                               "%s%s; %04X, Dest: %04X",\r
+                                               temp_string,\r
+                                               tabs,\r
+                                               op_code_addr,\r
+                                               dest );\r
+\r
+                               } else {\r
+\r
+                                       sprintf(\r
+                                               temp_string2,\r
+                                               "%s%s; %04X",\r
+                                               temp_string,\r
+                                               tabs,\r
+                                               op_code_addr );\r
+                               }\r
+\r
+                               pSourceString_tail =\r
+                                       new TSourceString( temp_string2, pSourceString_tail );\r
+\r
+                               if ( NULL == pSourceString_head ){\r
+                                       pSourceString_head = pSourceString_tail;\r
+                               }\r
+\r
+                       } // end while( 0 != ( Index = Avr.Word2Instruction\r
+\r
+                       line_count = 0;\r
+                       if( pSourceString_head ){\r
+\r
+                               // We were able to match the opcode to an instruction.\r
+\r
+                               if( pSourceString_head->next && !last_line_was_blank ){\r
+                                       // There is more than one equavalent source strings that\r
+                                       // can make this opcode.  Put in a blank line to seperate\r
+                                       // these equivalent source strings from the other source.\r
+                                       push_body( "" );\r
+                               }\r
+\r
+                               while( pSourceString_head ){\r
+\r
+                                       if ( 0 == line_count ){\r
+                                               strcpy( temp_string, pSourceString_head->string );\r
+                                       } else {\r
+                                               sprintf(\r
+                                                       temp_string,\r
+                                                       "\t;%s",\r
+                                                       pSourceString_head->string + 1 );\r
+                                       }\r
+\r
+                                       push_body( temp_string );\r
+                                       pSourceString_temp = pSourceString_head->next;\r
+                                       delete pSourceString_head;\r
+                                       pSourceString_head = pSourceString_temp;\r
+\r
+                                       line_count++;\r
+                               }\r
+\r
+                               if ( 1 < line_count ){\r
+\r
+                                       // There was more than one line in this block.\r
+                                       // Put out a blank line.\r
+                                       last_line_was_blank = TRUE;\r
+                                       push_body( "" );\r
+\r
+                               } else {\r
+\r
+                                       last_line_was_blank = FALSE;\r
+                               }\r
+\r
+                       } else {\r
+\r
+                               // No instruction matched this opcode.  Print it as data.\r
+\r
+                               sprintf(\r
+                                       temp_string,\r
+                                       "\tdc.W\t0x%04X\t\t; %04X",\r
+                                       code_word,\r
+                                       op_code_addr );\r
+\r
+                               push_body( temp_string );\r
+                               last_line_was_blank = FALSE;\r
+                       }\r
+\r
+               } else {\r
+\r
+                       look_for_new_segment = TRUE;\r
+\r
+               }\r
+       }\r
+\r
+       while( prolog_head ){\r
+               fputs( prolog_head->string, pOutFile );\r
+               fputc( '\n', pOutFile );\r
+               pSourceString_temp = prolog_head->next;\r
+               delete prolog_head;\r
+               prolog_head = pSourceString_temp;\r
+       }\r
+\r
+       while( body_head ){\r
+               fputs( body_head->string, pOutFile );\r
+               fputc( '\n', pOutFile );\r
+               pSourceString_temp = body_head->next;\r
+               delete body_head;\r
+               body_head = pSourceString_temp;\r
+       }\r
+}\r
+\r
+void TSourceOut::push_prolog( const char* s){\r
+\r
+       prolog_tail = new TSourceString( s, prolog_tail );\r
+\r
+       if( NULL == prolog_head ){\r
+               prolog_head = prolog_tail;\r
+       }\r
+}\r
+\r
+void TSourceOut::push_body( const char* s){\r
+\r
+       body_tail = new TSourceString( s, body_tail );\r
+\r
+       if( NULL == body_head ){\r
+               body_head = body_tail;\r
+       }\r
+}\r
+\r
+TSourceOut::TSourceString::TSourceString(\r
+       const char* s,\r
+       TSourceString* previous ){\r
+\r
+       strncpy( string, s, 79 );       // FIXME - magic number\r
+       string[ 79 ] = '\0';\r
+\r
+       if( NULL != previous )\r
+               previous->next = this;\r
+\r
+       next = NULL;\r
+}\r
diff --git a/src/mkutil/revava-0.3/Source.h b/src/mkutil/revava-0.3/Source.h
new file mode 100644 (file)
index 0000000..9c182ab
--- /dev/null
@@ -0,0 +1,54 @@
+/*\r
+  Program: revava - Atmel Dis-Assembler\r
+  File: Source.h, Copyright (C) 2001 Daniel J. Winker\r
+\r
+  This program is free software; you can redistribute it and/or\r
+  modify it under the terms of the GNU General Public License\r
+  as published by the Free Software Foundation; either version 2\r
+  of the License, or (at your option) any later version.\r
+\r
+  This program is distributed in the hope that it will be useful,\r
+  but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+  GNU General Public License for more details.\r
+\r
+  You should have received a copy of the GNU General Public License\r
+  along with this program; if not, write to the Free Software\r
+  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
+*/\r
+\r
+#ifndef __SOURCE\r
+#define __SOURCE\r
+\r
+#include "Flash.h"\r
+\r
+class TSourceOut{\r
+\r
+       public:\r
+\r
+               TSourceOut( const char* OutFile, TFlash* pFlash );\r
+               ~TSourceOut ();\r
+\r
+               void push_prolog( const char* s );\r
+               void push_body  ( const char* s );\r
+               // void push_epilog( const char* s );\r
+\r
+       private:\r
+\r
+               class TSourceString{\r
+                       public:\r
+                               TSourceString( const char* s, TSourceString* previous );\r
+                               ~TSourceString(){}\r
+                               TSourceString* next;\r
+                               char string[ 80 ];      // FIXME - magic number\r
+               };\r
+\r
+               TSourceString* prolog_head;\r
+               TSourceString* prolog_tail;\r
+               TSourceString* body_head;\r
+               TSourceString* body_tail;\r
+               // TSourceString* epilog_head;\r
+               // TSourceString* epilog_tail;\r
+};\r
+\r
+#endif\r
diff --git a/src/mkutil/revava-0.3/Source.o b/src/mkutil/revava-0.3/Source.o
new file mode 100644 (file)
index 0000000..63e335c
Binary files /dev/null and b/src/mkutil/revava-0.3/Source.o differ
diff --git a/src/mkutil/revava-0.3/TODO b/src/mkutil/revava-0.3/TODO
new file mode 100644 (file)
index 0000000..7f5287c
--- /dev/null
@@ -0,0 +1,24 @@
+Many "FIXME"s in the source code.  Mostly for using hard coded numbers\r
+to set the size of strings.  This would be easy to fix.\r
+\r
+Right now revava only handles Intel Hex as an object file format (input\r
+to this program).  At the very least it should also handle Motorola\r
+S-Record files and uAsm files.  This would probably be pretty easy to\r
+do.\r
+\r
+Some kind of symbol handling would be nice.  Intel Hex files can't carry\r
+symbols, but I think Motorola S-Record files sometimes do.  Also it\r
+would be nice if revava could suck in a text symbol file and use it.\r
+\r
+revava should be able to tell where all the jumps go and put in labels\r
+at the code place to jump to and then use that label for all branches,\r
+jumps, calls, etc that reference that address.  make_labels.pl is a\r
+kludgy way to do just this.  It would be a lot nicer if this\r
+functionality were built into revava itself.  That would be a lot of\r
+work.\r
+\r
+A man page and "make install" target in the Makefile would be nice.\r
+\r
+Right now there's no way to take input from stdin.  I don't know if\r
+anyone ever would want to do this, but I suppose the option would be\r
+nice.\r
diff --git a/src/mkutil/revava-0.3/make_labels.pl b/src/mkutil/revava-0.3/make_labels.pl
new file mode 100644 (file)
index 0000000..1014a58
--- /dev/null
@@ -0,0 +1,228 @@
+#!/bin/perl -w\r
+##############################################################################\r
+# Program: revava - Atmel Dis-Assembler\r
+# File: make_labels.pl\r
+# Copyright (C) 2001 Daniel J. Winker\r
+#\r
+# This program is free software; you can redistribute it and/or\r
+# modify it under the terms of the GNU General Public License\r
+# as published by the Free Software Foundation; either version 2\r
+# of the License, or (at your option) any later version.\r
+#\r
+# This program is distributed in the hope that it will be useful,\r
+# but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+# GNU General Public License for more details.\r
+#\r
+# You should have received a copy of the GNU General Public License\r
+# along with this program; if not, write to the Free Software\r
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
+##############################################################################\r
+\r
+use strict ;\r
+\r
+die "usage: $0 infile > outfile\n" if ( 0 != $#ARGV );\r
+open( INFILE, $ARGV[ 0 ] ) or die "$0: Can't open $ARGV[ 0 ]. $!\n";\r
+\r
+my %AddrList;\r
+my %Addr2Func;\r
+my $FuncNum = 0;\r
+my %Addr2Label;\r
+my $LabelNum = 0;\r
+\r
+# Read the file into a buffer because we're going to make several\r
+# passes through it.  This will be more efficient.\r
+my @Buf = <INFILE>;\r
+\r
+# First spin through collecting addresses and looking for "Dest"s.  We\r
+# will put in function labels or simple labels anywere there is a\r
+# "Dest".  This first pass just gets a list of addresses.\r
+LOOP0: foreach( @Buf ){\r
+\r
+       next LOOP0 unless m/; (\w+)/o;\r
+       ++$AddrList{ $1 };\r
+\r
+       if( m/, Dest: (\w+)$/o ){\r
+               my $Address = $1;\r
+\r
+               # Create a cross reference if one does not exist.\r
+               if( m/rcall/o ){\r
+\r
+                       # We will call these things that are rcalled "functions".\r
+\r
+                       $Addr2Func{  $Address } = "";\r
+\r
+               } else {\r
+\r
+                       $Addr2Label{ $Address } = "";\r
+               }\r
+       }\r
+}\r
+\r
+# Now sort the addresses and assign labels in increasing order.\r
+foreach my $Address ( sort keys %Addr2Func ){\r
+       $Addr2Func{  $Address } = sprintf( "Func%03d",  $FuncNum++ );\r
+}\r
+\r
+foreach my $Address ( sort keys %Addr2Label ){\r
+       $Addr2Label{ $Address } = sprintf( "L%03d", $LabelNum++ );\r
+}\r
+\r
+# I suppose we wouldn't really have to revisit every single line in the\r
+# source file here, if we would have kept track of the Buf Indexes that\r
+# need updating.  Oh well.  This is pass 2.\r
+LOOP1: foreach( @Buf ){\r
+\r
+       if( m/^(\s;*\w+\s+)-*[\d]+(\s+; \w+, Dest: (\w+))$/o ||\r
+           m/^(\s;*\w+\s+\d+, )-*[\d]+(\s+; \w+, Dest: (\w+))$/o ){\r
+               my $LineBeg = $1;\r
+               my $LineEnd = $2;\r
+               my $Address = $3;\r
+\r
+               # Check for the existance of a Labelable target\r
+               if( !exists( $AddrList{ $Address } )){\r
+\r
+                       # No Labelable target.  Mark this line.\r
+                       chomp;\r
+                       $_ = $_." ##### Dest BOGUS #####\n";\r
+\r
+                       # Delete this key so we don't look for the place to put the\r
+                       # label later.\r
+\r
+                       if( $LineBeg =~ m/rcall/o ){\r
+                               delete $Addr2Func{  $Address };\r
+                       } else {\r
+                               delete $Addr2Label{ $Address };\r
+                       }\r
+\r
+                       next LOOP1;\r
+\r
+               }\r
+\r
+               # Change the source line to include our new label\r
+               if( $LineBeg =~ m/rcall/o ){\r
+\r
+                       $_ = "$LineBeg$Addr2Func{ $Address }$LineEnd\n";\r
+\r
+               } else {\r
+\r
+                       $_ = "$LineBeg$Addr2Label{ $Address }$LineEnd\n";\r
+               }\r
+       }\r
+}\r
+\r
+# Now go through and put in the labels.  First get a list of function\r
+# addresses and label addresses in order.\r
+my @FuncAddrList = sort keys %Addr2Func;\r
+my $FuncAddress = shift @FuncAddrList;\r
+my @LabelAddrList = sort keys %Addr2Label;\r
+my $LabelAddress = shift @LabelAddrList;\r
+#print "FuncAddrList=@FuncAddrList\nLabelAddrList=@LabelAddrList\n";\r
+\r
+# I guess this is pass 3.  Actually, it might be easier to read if this\r
+# pass were split into two seperate passes - one for Func's and one for\r
+# Label's.\r
+LOOP2: for( my $Index = 0; $Index < $#Buf; $Index++ ){\r
+\r
+       next LOOP2 unless $Buf[ $Index ] =~ m/; (\w+)/o;\r
+       my $ThisAddr = $1;\r
+\r
+       $FuncAddress  = shift @FuncAddrList  if( $FuncAddress  and $ThisAddr gt $FuncAddress );\r
+       $LabelAddress = shift @LabelAddrList if( $LabelAddress and $ThisAddr gt $LabelAddress );\r
+\r
+       next LOOP2 if( $FuncAddress  and $ThisAddr lt $FuncAddress  ) and\r
+                    ( $LabelAddress and $ThisAddr lt $LabelAddress );\r
+\r
+       #printf "ThisAddr=%s FuncAddress=%s LabelAddress=%s\n",\r
+       #       defined $ThisAddr     ? $ThisAddr     : "undef",\r
+       #       defined $FuncAddress  ? $FuncAddress  : "undef",\r
+       #       defined $LabelAddress ? $LabelAddress : "undef";\r
+\r
+       if( $FuncAddress and $ThisAddr eq $FuncAddress ){\r
+\r
+               #print "Before\n";\r
+               #print "Index - 2 =".( $Index - 2 )." $Buf[ $Index - 2 ]";\r
+               #print "Index - 1 =".( $Index - 1 )." $Buf[ $Index - 1 ]";\r
+               #print "Index     =".( $Index + 0 )." $Buf[ $Index + 0 ]";\r
+               #print "Index + 1 =".( $Index + 1 )." $Buf[ $Index + 1 ]";\r
+               #print "Index + 2 =".( $Index + 2 )." $Buf[ $Index + 2 ]";\r
+               #print "Index + 3 =".( $Index + 3 )." $Buf[ $Index + 3 ]";\r
+\r
+               # The outer if is just because I'm paranoid.  It would only be false\r
+               # on the first line of the input file which should never even have\r
+               # an address.\r
+               if( $Index ){\r
+\r
+                       # If there is a blank line above this, just put in the function\r
+                       # label.  Otherwise, add a blank line and the function label.\r
+                       if( $Buf[ $Index - 1 ] eq "\n" ){\r
+                               splice( @Buf, $Index, 0, "$Addr2Func{ $FuncAddress }:\n" );\r
+                               $Index += 1;\r
+                       } else {\r
+                               splice( @Buf, $Index, 0, "\n", "$Addr2Func{ $FuncAddress }:\n" );\r
+                               $Index += 2;\r
+                       }\r
+\r
+               } else {\r
+                       splice( @Buf, $Index, 0, "$Addr2Func{ $FuncAddress }:\n" );\r
+                       $Index += 1;\r
+               }\r
+\r
+               #print "After\n";\r
+               #print "Index - 4 =".( $Index - 4 )." $Buf[ $Index - 4 ]";\r
+               #print "Index - 3 =".( $Index - 3 )." $Buf[ $Index - 3 ]";\r
+               #print "Index - 2 =".( $Index - 2 )." $Buf[ $Index - 2 ]";\r
+               #print "Index - 1 =".( $Index - 1 )." $Buf[ $Index - 1 ]";\r
+               #print "Index     =".( $Index + 0 )." $Buf[ $Index + 0 ]";\r
+               #print "Index + 1 =".( $Index + 1 )." $Buf[ $Index + 1 ]";\r
+\r
+               $FuncAddress = shift @FuncAddrList;\r
+       }\r
+\r
+       if( $LabelAddress and $ThisAddr eq $LabelAddress ){\r
+\r
+               #print "Before\n";\r
+               #print "Index - 2 =".( $Index - 2 )." $Buf[ $Index - 2 ]";\r
+               #print "Index - 1 =".( $Index - 1 )." $Buf[ $Index - 1 ]";\r
+               #print "Index     =".( $Index + 0 )." $Buf[ $Index + 0 ]";\r
+               #print "Index + 1 =".( $Index + 1 )." $Buf[ $Index + 1 ]";\r
+               #print "Index + 2 =".( $Index + 2 )." $Buf[ $Index + 2 ]";\r
+               #print "Index + 3 =".( $Index + 3 )." $Buf[ $Index + 3 ]";\r
+\r
+               # The outer if is just because I'm paranoid.  It would only be true\r
+               # on the first line of the input file which should never even have\r
+               # an address.\r
+               if( $Index ){\r
+\r
+                       # If there is a blank line above this, just put in the function\r
+                       # label.  Otherwise, add a blank line and the function label.\r
+                       if( $Buf[ $Index - 1 ] eq "\n" ){\r
+                               splice( @Buf, $Index, 0, "$Addr2Label{ $LabelAddress }:\n" );\r
+                               $Index += 1;\r
+                       } else {\r
+                               splice( @Buf, $Index, 0, "\n", "$Addr2Label{ $LabelAddress }:\n" );\r
+                               $Index += 2;\r
+                       }\r
+\r
+               } else {\r
+                       splice( @Buf, $Index, 0, "$Addr2Label{ $LabelAddress }:\n" );\r
+                       $Index += 1;\r
+               }\r
+\r
+               #print "After\n";\r
+               #print "Index - 4 =".( $Index - 4 )." $Buf[ $Index - 4 ]";\r
+               #print "Index - 3 =".( $Index - 3 )." $Buf[ $Index - 3 ]";\r
+               #print "Index - 2 =".( $Index - 2 )." $Buf[ $Index - 2 ]";\r
+               #print "Index - 1 =".( $Index - 1 )." $Buf[ $Index - 1 ]";\r
+               #print "Index     =".( $Index + 0 )." $Buf[ $Index + 0 ]";\r
+               #print "Index + 1 =".( $Index + 1 )." $Buf[ $Index + 1 ]";\r
+\r
+               $LabelAddress = shift @LabelAddrList;\r
+       }\r
+}\r
+\r
+# Pass 4 is the shortest code, but probably the longest time.\r
+# Isn't that funny?\r
+foreach( @Buf ){\r
+       print;\r
+}\r
diff --git a/src/mkutil/revava-0.3/make_test_source.C b/src/mkutil/revava-0.3/make_test_source.C
new file mode 100644 (file)
index 0000000..4f73bd1
--- /dev/null
@@ -0,0 +1,478 @@
+/*\r
+  Program: make_test_source - Creates test source for revava.\r
+  File: make_test_source.C, Copyright (C) 2001 Daniel J. Winker\r
+\r
+  This program is free software; you can redistribute it and/or\r
+  modify it under the terms of the GNU General Public License\r
+  as published by the Free Software Foundation; either version 2\r
+  of the License, or (at your option) any later version.\r
+\r
+  This program is distributed in the hope that it will be useful,\r
+  but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+  GNU General Public License for more details.\r
+\r
+  You should have received a copy of the GNU General Public License\r
+  along with this program; if not, write to the Free Software\r
+  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
+*/\r
+\r
+#include <stdio.h>\r
+#include <string.h> /* Nick */\r
+#include <stdlib.h> /* Nick */\r
+\r
+#include "Avr.h"\r
+\r
+class TMyAvr : public TAvr{\r
+\r
+       public:\r
+\r
+               void make_test_source( void );\r
+\r
+       private:\r
+\r
+               struct arg_tries {\r
+                       char*             arg;\r
+                       struct arg_tries* prev;\r
+                       struct arg_tries* next;\r
+               };\r
+\r
+               void test_instruction( TInstSet* pInstSet );\r
+               struct arg_tries* get_tries( eArgTypes pArgType );\r
+};\r
+\r
+TMyAvr MyAvr;\r
+\r
+int main( void ){\r
+\r
+       MyAvr.make_test_source();\r
+       return 0;\r
+}\r
+\r
+void TMyAvr::make_test_source( void ){\r
+\r
+       TAvr::TInstSet* pInstSet;\r
+\r
+       puts( "#arch AT90S8515" );\r
+       puts( "#include \"avr.inc\"" );\r
+       puts( "" );\r
+       puts( "\tseg abs=0x0 flash.code0" );\r
+       puts( "" );\r
+\r
+       for( pInstSet = TAvr::InstSet; '\0' != pInstSet->opcode[ 0 ]; pInstSet++ ){\r
+               MyAvr.test_instruction( pInstSet );\r
+       }\r
+\r
+       // The last two are "call" and "jmp" which are not defined in this model.\r
+       puts( "" );\r
+       puts( "\tseg abs=0x1000 flash.code1" );\r
+       puts( "" );\r
+       puts( "\tdc.W\t0xFFFF" );\r
+       puts( "\tdc.W\t0x940E" );\r
+       puts( "\tdc.W\t0x940C" );\r
+}\r
+\r
+void TMyAvr::test_instruction( TAvr::TInstSet* pInstSet ){\r
+\r
+       struct arg_tries* pt0;\r
+       struct arg_tries* pt1;\r
+       struct arg_tries* pt_temp;\r
+       char              format_string[ 40 ];\r
+\r
+       if( ARG_none == pInstSet->arg0_type ){\r
+\r
+               // There can be no arg1\r
+               printf( "\t%s\n", pInstSet->name );\r
+\r
+       } else if( ARG_none == pInstSet->arg1_type || ARG_copyArg == pInstSet->arg1_type ) {\r
+\r
+               // There is an arg0, but no arg1\r
+               pt0 = get_tries( pInstSet->arg0_type );\r
+\r
+               switch( pInstSet->arg[ 0 ] ){\r
+\r
+                       case 'd':\r
+                               strcpy( format_string, "\t%s\tr%s\n" );\r
+                               break;\r
+\r
+                       case 'k':\r
+                       case 's':\r
+                               strcpy( format_string, "\t%s\t%s\n" );\r
+                               break;\r
+\r
+                       default:\r
+                               fprintf( stderr, "Bad Error 10: arg0 of %s is type '%c'\n", pInstSet->name, pInstSet->arg[ 0 ] );\r
+                               exit( 1 );\r
+                               break;\r
+               }\r
+\r
+               while( pt0 ){\r
+\r
+                       printf(\r
+                               format_string,\r
+                               pInstSet->name,\r
+                               pt0->arg );\r
+\r
+                       pt_temp = pt0;\r
+                       pt0 = pt0->next;\r
+                       delete pt_temp;\r
+               }\r
+\r
+       } else {\r
+\r
+               // This is both an arg0 and an arg1\r
+               pt0 = get_tries( pInstSet->arg0_type );\r
+\r
+               switch( pInstSet->arg[ 0 ] ){\r
+\r
+                       case 'd':\r
+                       case 'r':\r
+                               strcpy( format_string, "\t%s\tr%s" );\r
+                               break;\r
+\r
+                       case 'K':\r
+                       case 'P':\r
+                       case 'p':\r
+                       case 's':\r
+                               strcpy( format_string, "\t%s\t%s" );\r
+                               break;\r
+\r
+                       case 'X':\r
+                       case 'Y':\r
+                       case 'Z':\r
+\r
+                               if( 0 == strcmp( "std", pInstSet->name )){\r
+                                       sprintf(\r
+                                               format_string,\r
+                                               "\t%%s\t%c+%%s",\r
+                                               pInstSet->arg[ 0 ] );\r
+                               }\r
+                               else {\r
+                                       strcpy( format_string, "\t%s\t%s" );\r
+                               }\r
+\r
+                               break;\r
+\r
+                       default:\r
+                               fprintf( stderr, "Bad Error 11: arg0 of %s is type '%c'\n", pInstSet->name, pInstSet->arg[ 0 ] );\r
+                               exit( 1 );\r
+                               break;\r
+               }\r
+\r
+               switch( pInstSet->arg[ 1 ] ){\r
+\r
+                       case 'd':\r
+                       case 'r':\r
+                               sprintf( format_string, "%s, r%%s\n", format_string );\r
+                               break;\r
+\r
+                       case 'K':\r
+                       case 'P':\r
+                       case 'b':\r
+                       case 'k':\r
+                               sprintf( format_string, "%s, %%s\n", format_string );\r
+                               break;\r
+\r
+                       case 'X':\r
+                       case 'Y':\r
+                       case 'Z':\r
+\r
+                               if( 0 == strcmp( "ldd", pInstSet->name )){\r
+                                       sprintf(\r
+                                               format_string,\r
+                                               "%s, %c+%%s\n",\r
+                                               format_string,\r
+                                               pInstSet->arg[ 1 ] );\r
+                               }\r
+                               else {\r
+                                       sprintf(\r
+                                               format_string,\r
+                                               "%s, %%s\n",\r
+                                               format_string );\r
+                               }\r
+\r
+                               break;\r
+\r
+                       default:\r
+                               fprintf( stderr, "Bad Error 12: arg1 of %s is type '%c'\n", pInstSet->name, pInstSet->arg[ 1 ] );\r
+                               exit( 1 );\r
+                               break;\r
+               }\r
+\r
+               while( pt0 ){\r
+\r
+                       pt1 = MyAvr.get_tries( pInstSet->arg1_type );\r
+\r
+                       while( pt1 ){\r
+\r
+                               printf(\r
+                                       format_string,\r
+                                       pInstSet->name,\r
+                                       pt0->arg,\r
+                                       pt1->arg );\r
+\r
+                               pt_temp = pt1;\r
+                               pt1 = pt1->next;\r
+                               delete pt_temp;\r
+                       }\r
+\r
+                       pt_temp = pt0;\r
+                       pt0 = pt0->next;\r
+                       delete pt_temp;\r
+               }\r
+       }\r
+}\r
+\r
+struct TMyAvr::arg_tries* TMyAvr::get_tries( TAvr::eArgTypes ArgType ){\r
+\r
+       arg_tries* pt      = NULL;\r
+       arg_tries* pt_temp = NULL;\r
+\r
+       switch( ArgType ){\r
+\r
+               case ARG_none:\r
+               case ARG_copyArg:\r
+\r
+                       pt = NULL;\r
+\r
+                       break;\r
+\r
+               case ARG_0_31:\r
+\r
+                       pt = new arg_tries;\r
+                       pt_temp = pt;\r
+                       pt_temp->arg = "0";\r
+\r
+                       pt_temp->next = new arg_tries;\r
+                       pt_temp = pt_temp->next;\r
+                       pt_temp->arg = "15";\r
+\r
+                       pt_temp->next = new arg_tries;\r
+                       pt_temp = pt_temp->next;\r
+                       pt_temp->arg = "31";\r
+\r
+                       pt_temp->next = NULL;\r
+\r
+                       break;\r
+\r
+               case ARG_0_7:\r
+\r
+                       pt = new arg_tries;\r
+                       pt_temp = pt;\r
+                       pt_temp->arg = "0";\r
+\r
+                       pt_temp->next = new arg_tries;\r
+                       pt_temp = pt_temp->next;\r
+                       pt_temp->arg = "4";\r
+\r
+                       pt_temp->next = new arg_tries;\r
+                       pt_temp = pt_temp->next;\r
+                       pt_temp->arg = "7";\r
+\r
+                       pt_temp->next = NULL;\r
+\r
+                       break;\r
+\r
+               case ARG_0_63:\r
+\r
+                       pt = new arg_tries;\r
+                       pt_temp = pt;\r
+                       pt_temp->arg = "0x0";\r
+\r
+                       pt_temp->next = new arg_tries;\r
+                       pt_temp = pt_temp->next;\r
+                       pt_temp->arg = "0x20";\r
+\r
+                       pt_temp->next = new arg_tries;\r
+                       pt_temp = pt_temp->next;\r
+                       pt_temp->arg = "0x3F";\r
+\r
+                       pt_temp->next = NULL;\r
+\r
+                       break;\r
+\r
+               case ARG_16_31:\r
+\r
+                       pt = new arg_tries;\r
+                       pt_temp = pt;\r
+                       pt_temp->arg = "16";\r
+\r
+                       pt_temp->next = new arg_tries;\r
+                       pt_temp = pt_temp->next;\r
+                       pt_temp->arg = "24";\r
+\r
+                       pt_temp->next = new arg_tries;\r
+                       pt_temp = pt_temp->next;\r
+                       pt_temp->arg = "31";\r
+\r
+                       pt_temp->next = NULL;\r
+\r
+                       break;\r
+\r
+               case ARG_0_255:\r
+               case ARG_cm0_cm255:\r
+\r
+                       pt = new arg_tries;\r
+                       pt_temp = pt;\r
+                       pt_temp->arg = "0x0";\r
+\r
+                       pt_temp->next = new arg_tries;\r
+                       pt_temp = pt_temp->next;\r
+                       pt_temp->arg = "0x7F";\r
+\r
+                       pt_temp->next = new arg_tries;\r
+                       pt_temp = pt_temp->next;\r
+                       pt_temp->arg = "0xFF";\r
+\r
+                       pt_temp->next = NULL;\r
+\r
+                       break;\r
+\r
+               case ARG_neg64_63:\r
+\r
+                       pt = new arg_tries;\r
+                       pt_temp = pt;\r
+                       pt_temp->arg = "-64";\r
+\r
+                       pt_temp->next = new arg_tries;\r
+                       pt_temp = pt_temp->next;\r
+                       pt_temp->arg = "0";\r
+\r
+                       pt_temp->next = new arg_tries;\r
+                       pt_temp = pt_temp->next;\r
+                       pt_temp->arg = "62";\r
+\r
+                       pt_temp->next = NULL;\r
+\r
+                       break;\r
+\r
+               case ARG_neg2KB_2KB:\r
+\r
+                       pt = new arg_tries;\r
+                       pt_temp = pt;\r
+                       pt_temp->arg = "-2048";\r
+\r
+                       pt_temp->next = new arg_tries;\r
+                       pt_temp = pt_temp->next;\r
+                       pt_temp->arg = "0";\r
+\r
+                       pt_temp->next = new arg_tries;\r
+                       pt_temp = pt_temp->next;\r
+                       pt_temp->arg = "2048";\r
+\r
+                       pt_temp->next = NULL;\r
+\r
+                       break;\r
+\r
+               case ARG_24_26_28_30:\r
+\r
+                       pt = new arg_tries;\r
+                       pt_temp = pt;\r
+                       pt_temp->arg = "24";\r
+\r
+                       pt_temp->next = new arg_tries;\r
+                       pt_temp = pt_temp->next;\r
+                       pt_temp->arg = "30";\r
+\r
+                       pt_temp->next = NULL;\r
+\r
+                       break;\r
+\r
+               case ARG_longCall:\r
+\r
+                       pt = new arg_tries;\r
+                       pt_temp = pt;\r
+                       pt_temp->arg = "0x0000";\r
+\r
+                       pt_temp->next = new arg_tries;\r
+                       pt_temp = pt_temp->next;\r
+                       pt_temp->arg = "0x8000";\r
+\r
+                       pt_temp->next = new arg_tries;\r
+                       pt_temp = pt_temp->next;\r
+                       pt_temp->arg = "0xFFFF";\r
+\r
+                       pt_temp->next = NULL;\r
+\r
+                       break;\r
+\r
+               case ARG_specialX:\r
+\r
+                       pt = new arg_tries;\r
+                       pt->arg = "X";\r
+                       pt->next = NULL;\r
+\r
+                       break;\r
+\r
+               case ARG_specialIncX:\r
+\r
+                       pt = new arg_tries;\r
+                       pt->arg = "X+";\r
+                       pt->next = NULL;\r
+\r
+                       break;\r
+\r
+               case ARG_specialDecX:\r
+\r
+                       pt = new arg_tries;\r
+                       pt->arg = "-X";\r
+                       pt->next = NULL;\r
+\r
+                       break;\r
+\r
+               case ARG_specialY:\r
+\r
+                       pt = new arg_tries;\r
+                       pt->arg = "Y";\r
+                       pt->next = NULL;\r
+\r
+                       break;\r
+\r
+               case ARG_specialIncY:\r
+\r
+                       pt = new arg_tries;\r
+                       pt->arg = "Y+";\r
+                       pt->next = NULL;\r
+\r
+                       break;\r
+\r
+               case ARG_specialDecY:\r
+\r
+                       pt = new arg_tries;\r
+                       pt->arg = "-Y";\r
+                       pt->next = NULL;\r
+\r
+                       break;\r
+\r
+               case ARG_specialZ:\r
+\r
+                       pt = new arg_tries;\r
+                       pt->arg = "Z";\r
+                       pt->next = NULL;\r
+\r
+                       break;\r
+\r
+               case ARG_specialIncZ:\r
+\r
+                       pt = new arg_tries;\r
+                       pt->arg = "Z+";\r
+                       pt->next = NULL;\r
+\r
+                       break;\r
+\r
+               case ARG_specialDecZ:\r
+\r
+                       pt = new arg_tries;\r
+                       pt->arg = "-Z";\r
+                       pt->next = NULL;\r
+\r
+                       break;\r
+\r
+               default:\r
+                       fputs( "Bad Error 2\n", stderr );\r
+                       exit( 1 );\r
+                       break;\r
+       }\r
+\r
+       return( pt );\r
+}\r
diff --git a/src/mkutil/revava-0.3/make_test_source.exe b/src/mkutil/revava-0.3/make_test_source.exe
new file mode 100644 (file)
index 0000000..45ab90a
Binary files /dev/null and b/src/mkutil/revava-0.3/make_test_source.exe differ
diff --git a/src/mkutil/revava-0.3/make_test_source.o b/src/mkutil/revava-0.3/make_test_source.o
new file mode 100644 (file)
index 0000000..e468e96
Binary files /dev/null and b/src/mkutil/revava-0.3/make_test_source.o differ
diff --git a/src/mkutil/revava-0.3/n.bat b/src/mkutil/revava-0.3/n.bat
new file mode 100644 (file)
index 0000000..db589e0
--- /dev/null
@@ -0,0 +1,2 @@
+make CPPFLAGS="-DDEBUG"
+copy revava.exe ..\..\bin
diff --git a/src/mkutil/revava-0.3/n.bat% b/src/mkutil/revava-0.3/n.bat%
new file mode 100644 (file)
index 0000000..1c09ecd
--- /dev/null
@@ -0,0 +1,2 @@
+make
+copy revava.exe ..\..\bin
diff --git a/src/mkutil/revava-0.3/revava.exe b/src/mkutil/revava-0.3/revava.exe
new file mode 100644 (file)
index 0000000..0dce651
Binary files /dev/null and b/src/mkutil/revava-0.3/revava.exe differ
diff --git a/src/nicktemp/avr_make b/src/nicktemp/avr_make
new file mode 100644 (file)
index 0000000..261036e
--- /dev/null
@@ -0,0 +1,68 @@
+# GCC-AVR standard makefile\r
+# Based on AVRfreaks.net January 2000 sample makefile\r
+# For compilation under Microsoft Windows environment\r
+\r
+# Variables definitions\r
+       CC      = avr-gcc\r
+       AS      = avr-gcc -x assembler-with-cpp \r
+       RM      = rm -f\r
+       RN      = mv\r
+       BIN     = avr-objcopy\r
+       SIZE    = avr-size\r
+       INCDIR  = .\r
+       LIBDIR  = avr/lib\r
+       SHELL   = sh.exe\r
+\r
+# Output format (srec or ihex, avrobj is always created)\r
+       FORMAT = ihex           \r
+\r
+# Project specific object files\r
+       OBJ     = $(ASRC:.s=.o) $(SRC:.c=.o) \r
+       CPFLAGS += -mmcu=$(MCU)\r
+       ASFLAGS += -mmcu=$(MCU)\r
+       LDFLAGS += -mmcu=$(MCU)\r
+  \r
+# Define make process\r
+\r
+#all:  $(TRG).obj $(TRG).elf $(TRG).rom $(TRG).eep $(TRG).ok \r
+all:   $(TRG).s $(TRG).elf $(TRG).hex $(TRG).eep $(TRG).ok\r
+%.o : %.c \r
+       $(CC) -c $(CPFLAGS) -I$(INCDIR) $< -o $@\r
+%.s : %.c\r
+       $(CC) -S $(CPFLAGS) -I$(INCDIR) $< -o $@\r
+%.o : %.s\r
+       $(AS) -c $(ASFLAGS) -I$(INCDIR) $< -o $@\r
+%.elf: $(OBJ)\r
+       $(CC) $(OBJ) $(LIB) $(LDFLAGS) -o $@\r
+%.obj: %.elf\r
+       $(BIN) -O avrobj -R .eeprom $< $@\r
+%.rom: %.elf\r
+       $(BIN) -O $(FORMAT) -R .eeprom $< $@\r
+#%.eep: %.elf\r
+#      $(BIN) -j .eeprom --set-section-flags=.eeprom="alloc,load" section-lma .eeprom=0 -O $(FORMAT) $< $@\r
+%.eep: %.elf\r
+       $(BIN) -j .eeprom --set-section-flags .eeprom="alloc,load" --change-section-lma .eeprom=0 -O $(FORMAT) $< $@\r
+%.hex: %.elf\r
+       $(BIN) -O ihex $< $@\r
+\r
+# No error message if successfully compiled\r
+%ok:\r
+       @echo "Errors: none" \r
+\r
+# Clean up directory\r
+clean:\r
+       $(RM) $(OBJ)\r
+       $(RM) $(SRC:.c=.s)\r
+       $(RM) $(SRC:.c=.lst)\r
+       $(RM) $(TRG).map\r
+       $(RM) $(TRG).elf\r
+\r
+       $(RM) $(TRG).obj\r
+       $(RM) $(TRG).a90\r
+       $(RM) $(TRG).hex        \r
+       $(RM) *.bak\r
+       $(RM) *.log\r
+       \r
+size:\r
+       $(SIZE) $(TRG).elf\r
+       \r
diff --git a/src/nicktemp/hello.c b/src/nicktemp/hello.c
new file mode 100644 (file)
index 0000000..57fa35c
--- /dev/null
@@ -0,0 +1,49 @@
+/* hello.c by Nick for Hytech AVR */
+
+#include <stdio.h>
+#include <avr/io.h>
+#include "hello.h"
+
+int my_putc(char c)
+       {
+       while (bit_is_set(UCSRA, UDRE) == 0)
+               ;
+       UDR = c;
+       return 0;
+       }
+
+int my_getc(void)
+       {
+       if (bit_is_set(UCSRA, RXC) == 0)
+               return -1;
+       return UDR;
+       }
+
+int main(void)
+       {
+       /* initialise the AVR's built-in UART for 9600 bps */
+       UCSRA = _BV(TXC);
+       UCSRB = _BV(TXEN) | _BV(RXEN);
+       UBRR = 71;
+       /* UBRRH = 0; */ /* = (11059200 / (9600 * 16)) - 1 */
+
+#if 0
+       /* send a demo message to ISPD via the AVR's UART */
+       my_putc('h');
+       my_putc('e');
+       my_putc('l');
+       my_putc('l');
+       my_putc('o');
+#else
+       /* setup the standard input, output and error streams */
+       fdevopen(my_putc, my_getc, 0);
+
+       /* send a demo message to ISPD via the AVR's UART */
+       printf("hello, world\r\n");
+#endif
+
+       /* enter an infinite loop as we can never exit */
+       while (1)
+               ;
+       }
+
diff --git a/src/nicktemp/hello.eep b/src/nicktemp/hello.eep
new file mode 100644 (file)
index 0000000..1996e8f
--- /dev/null
@@ -0,0 +1 @@
+:00000001FF\r
diff --git a/src/nicktemp/hello.elf b/src/nicktemp/hello.elf
new file mode 100644 (file)
index 0000000..ea5327a
Binary files /dev/null and b/src/nicktemp/hello.elf differ
diff --git a/src/nicktemp/hello.h b/src/nicktemp/hello.h
new file mode 100644 (file)
index 0000000..9491323
--- /dev/null
@@ -0,0 +1,6 @@
+/* hello.h by Nick for Hytech AVR */
+
+int my_putc(char c);
+int my_getc(void);
+int main(void);
+
diff --git a/src/nicktemp/hello.hex b/src/nicktemp/hello.hex
new file mode 100644 (file)
index 0000000..9ae63a4
--- /dev/null
@@ -0,0 +1,170 @@
+:100000000DC027C026C025C024C023C022C021C0E7\r
+:1000100020C01FC01EC01DC01CC01BC011241FBE9D\r
+:10002000CFEDD0E0DEBFCDBF10E0A0E6B0E0EAE665\r
+:10003000FAE003C0C89531960D92A637B107D1F703\r
+:1000400010E0A6E7B0E001C01D92A038B107E1F7CB\r
+:1000500044C0D6CFCF93DF93CDB7DEB721970FB68D\r
+:10006000F894DEBF0FBECDBF898380912B00992706\r
+:10007000807290700097C9F3898180932C0080E092\r
+:1000800090E021960FB6F894DEBF0FBECDBFDF9192\r
+:10009000CF910895CF93DF93CDB7DEB722970FB6F8\r
+:1000A000F894DEBF0FBECDBF80912B0088232CF0CB\r
+:1000B0008FEF9FEF89839A8305C080912C00992749\r
+:1000C00089839A8389819A8122960FB6F894DEBF3C\r
+:1000D0000FBECDBFDF91CF910895CFEDD0E0DEBF51\r
+:1000E000CDBF80E480932B0088E180932A0087E4D1\r
+:1000F0008093290040E050E06AE470E08AE290E0FA\r
+:1001000008D080E690E09F938F934AD00F900F9095\r
+:10011000FFCF0F931F93CF93DF93082F192FD72F64\r
+:10012000C62F009711F4672BB1F16BE070E081E00E\r
+:1001300090E0D8D2F92FE82F009769F1209771F05D\r
+:10014000C187D28781E0828380917A0090917B0081\r
+:10015000892B21F4F0937B00E0937A0001151105BF\r
+:10016000C1F00783108782E0828380917C009091A8\r
+:100170007D00892B71F4F0937D00E0937C008091E9\r
+:100180007E0090917F00892B21F4F0937F00E09313\r
+:100190007E008E2F9F2FDF91CF911F910F91089599\r
+:1001A000A0E0B0E0E5EDF0E038C4E5E0F0E0EC0F11\r
+:1001B000FD1F819191914E2F5F2F682F792F809194\r
+:1001C0007C0090917D0002D0E2E043C4A2E1B0E067\r
+:1001D000EBEEF0E012C4AA24BB24CC24DD24682E6C\r
+:1001E000792E6D877E874F87588B44245524F92FAD\r
+:1001F000E82F45825682828181FD56C28FEF9FEFA4\r
+:100200006EC240FE3FC2822D80538A3020F5F0E35B\r
+:100210002F1641F42A89222329F4332019F480E08F\r
+:1002200091E093C0EA898E2F9927282F392F220F2A\r
+:10023000331F220F331F220F331F280F391F280FA0\r
+:10024000822F820D80538A8B43FC2EC288230CF4AC\r
+:100250002BC2382E29C243FE05C0FA89FF2311F4B0\r
+:1002600021E02A8B822D992787FD9095883691056C\r
+:1002700054F5853691050CF06BC08835910509F46D\r
+:10028000DDC089359105B4F48B32910509F442C083\r
+:100290008C32910544F48032910509F43FC0839774\r
+:1002A00009F442C0E5C18D329105D9F18E9709F468\r
+:1002B00040C0DEC18336910509F454C084369105EF\r
+:1002C00009F47DC0D5C18037910509F4AFC08137ED\r
+:1002D000910584F48C369105B1F18D3691052CF49D\r
+:1002E0008936910509F46BC0C3C18F36910509F4B5\r
+:1002F0009AC0BEC18537910509F4A2C08637910521\r
+:1003000024F483379105C1F1B3C18837910509F40D\r
+:1003100095C0AEC180E190E0482A592AE0E2F0E0C1\r
+:1003200005C080E890E011C0E0E4F0E04E2A5F2ACA\r
+:10033000BBC188E090E0482A592AEFEFFEEF4E2239\r
+:100340005F221A8AB1C184E090E0482A592AACC1E0\r
+:100350000F2EFFE3AF2EF02D3A940F2EF3E62F2E43\r
+:10036000F02D28C1EF85F8898E2F9F2F02968F8759\r
+:10037000988BA0803A941EC1EF85F8898E2F9F2F0D\r
+:1003800002968F87988BA080B180198AFB2DEA2D69\r
+:100390008081882351F099899F5F998BFB2DEA2DED\r
+:1003A000E90FF11D80818823B1F743FE05C08A89DA\r
+:1003B0009989891708F4898BE9893E1AFBC042FEA6\r
+:1003C0000CC0EF85F8898E2F9F2F04968F87988B0E\r
+:1003D00020813181428153810FC0EF85F8898E2FB2\r
+:1003E0009F2F02968F87988B80819181282F392F9C\r
+:1003F000442737FD4095542FA22EB32EC42ED52E60\r
+:10040000552364F4E2E0F0E04E2A5F2AD094C094D1\r
+:10041000B094A094A11CB11CC11CD11C8FEB9FEF08\r
+:100420004822592230C098E0998B0AC0E0E4F0E0FD\r
+:100430004E2A5F2A0F2EF8E72F2EF02DF0E1F98BD0\r
+:1004400042FE0CC0EF85F8898E2F9F2F04968F8770\r
+:10045000988B20813181428153810DC0EF85F889CD\r
+:100460008E2F9F2F02968F87988B80819181282FC6\r
+:10047000392F44275527A22EB32EC42ED52EEFECAC\r
+:10048000FFEF4E225F228C2E9D2E0894811C911C22\r
+:10049000F989EF2EFF24002711279D2D8C2D7B2D10\r
+:1004A0006A2D512F402F3F2D2E2D80D2B92FA82FEE\r
+:1004B000972F862FF92DE82D80838A301CF0820D2E\r
+:1004C000815204C0F92DE82D8081805DF92DE82D41\r
+:1004D00081938E2E9F2E9D2D8C2D7B2D6A2D512F3D\r
+:1004E000402F3F2D2E2D62D2A22EB32EC42ED52EFC\r
+:1004F000211531054105510581F650FE17C0A32C89\r
+:1005000046FE0BC0832D992787FD9095F989F03120\r
+:1005100011F4825001C08150A82E45FCAA941A14EF\r
+:100520002CF4AA8A88E090E0482A592A43FE1CC08D\r
+:100530009A89993010F0E8E0EA8B8C2F9D2F019674\r
+:10054000A82CA81A8A89F82FF150FA8BA81660F403\r
+:1005500090E3F92DE82D91938E2E9F2E8A89F82F06\r
+:10056000F150FA8BA816A8F341FE02C08DE207C035\r
+:1005700044FE02C08BE203C045FE06C080E2F92DB6\r
+:10058000E82D81938E2E9F2E46FE0EC0F989F03104\r
+:1005900029F4F92DE82D21928E2E9F2E80E3F92D3E\r
+:1005A000E82D81938E2E9F2E8C2F9D2F0196F82D56\r
+:1005B000F81B3F1A842D807869F4832D3A9418161D\r
+:1005C0004CF4772D662D80E290E0A4D0832D3A94F0\r
+:1005D0001816BCF323E6221641F48A2D992787FDCD\r
+:1005E0009095772D662D96D032C083E72816B9F402\r
+:1005F00099899150998B9F3F51F1FB2DEA2D808174\r
+:10060000992787FD90950894A11CB11C772D662D24\r
+:1006100081D0E989E150E98BEF3F79F718C08C2F41\r
+:100620009D2F01968816990691F00C2F1D2F0F5FB4\r
+:100630001F4FF92DE82D82918E2E9F2E992787FD31\r
+:100640009095772D662D66D08016910691F7842DB2\r
+:100650008078A9F0832D3A9418168CF4772D662DA6\r
+:1006600080E290E057D0832D3A941816BCF307C06F\r
+:10067000822D992787FD9095772D662D4BD04424A8\r
+:10068000552412C0F5E22F1641F444245524439416\r
+:100690001A8A3A882AE0298B07C0822D992787FD7C\r
+:1006A0009095772D662D36D0F72DE62D828183FF2C\r
+:1006B0000AC0ED85FE858E2F9F2F01968D879E8720\r
+:1006C000C895202C05C0ED85FE852190ED87FE871D\r
+:1006D000222009F096CDF72DE62D85819681E2E165\r
+:1006E0006296A7C10F931F93CF93DF934DD1082F2D\r
+:1006F000192F3DD0D92FC82F009739F0512F402FF7\r
+:1007000060E070E039D18C2F9D2FDF91CF911F9148\r
+:100710000F9108950F931F93CF93DF93082F192FF5\r
+:10072000D72FC62F8A8182FF0DC02D813E818B81FC\r
+:100730009C812817390764F4E881F9810193E883E3\r
+:10074000F98306C0EF81F885802F0995892B41F444\r
+:100750008D819E8101968D839E83912F802F02C073\r
+:100760008FEF9FEFDF91CF911F910F910895482F49\r
+:10077000592F029710F442E050E020E030E0E09181\r
+:100780007800F09179006E2F7F2FB32FA22F309732\r
+:10079000B9F0808191818417950759F1481759075D\r
+:1007A00040F42115310519F08217930710F4282F12\r
+:1007B000392FAE2FBF2F0280F381E02D309749F7FC\r
+:1007C00021153105E9F1932F822F841B950B049796\r
+:1007D00010F4532F422FF72FE62FA0E0B0E0672B45\r
+:1007E00079F1808191818217930719F54217530798\r
+:1007F00089F4228133818E2F9F2F0296109729F042\r
+:1008000012962D933C93139708953093790020937B\r
+:1008100078000895241B350BAE2FBF2FA20FB31FF6\r
+:100820004D935D9322503040208331838A2F9B2F3C\r
+:100830000895AE2FBF2F0280F381E02D309789F607\r
+:100840008091760090917700892B41F4809171001E\r
+:10085000909172009093770080937600A09173003E\r
+:10086000B0917400109741F4ADB7BEB780916F009E\r
+:1008700090917000A81BB90BE0917600F091770081\r
+:100880008E2F9F2F840F951F02968A179B0748F47F\r
+:100890009093770080937600419351938E2F9F2FF2\r
+:1008A000089580E090E00895CF93DF93009709F4D6\r
+:1008B00060C0B92FA82F129712961D921C92139701\r
+:1008C0008091780090917900009751F1F92FE82FED\r
+:1008D00040E050E0EA17FB0740F1DB2FCA2F1296E9\r
+:1008E000ED93FC9313972D913C911197C20FD31F59\r
+:1008F0008C2F9D2F02968E179F0779F48A819B81FA\r
+:10090000280F391F2E5F3F4F2D933C931197828103\r
+:10091000938112968D939C9313974115510561F421\r
+:10092000B0937900A093780024C04E2F5F2F0280EF\r
+:10093000F381E02D309771F6D52FC42FAA83BB83A6\r
+:10094000952F842F029628813981820F931F8A1751\r
+:100950009B0779F48D919C911197280F391F2E5F79\r
+:100960003F4F2883398312968D919C9113978A83E8\r
+:100970009B83DF91CF910895A82FB92F01C06D936C\r
+:1009800041505040E0F708955527002480FF02C0F1\r
+:10099000060E571F660F771F6115710521F096959A\r
+:1009A0008795009799F7952F802D0895A1E21A2E2B\r
+:1009B000AA1BBB1BEA2FFB2F0DC0AA1FBB1FEE1FDC\r
+:1009C000FF1FA217B307E407F50720F0A21BB30B24\r
+:1009D000E40BF50B661F771F881F991F1A9469F7A0\r
+:1009E0006095709580959095262F372F482F592F19\r
+:1009F0006A2F7B2F8E2F9F2F08952F923F924F9219\r
+:100A00005F926F927F928F929F92AF92BF92CF929E\r
+:100A1000DF92EF92FF920F931F93CF93DF93CDB7A7\r
+:100A2000DEB7CA1BDB0B0FB6F894DEBF0FBECDBF1F\r
+:100A300009942A88398848885F846E847D848C84F0\r
+:100A40009B84AA84B984C884DF80EE80FD800C81F9\r
+:100A50001B81AA81B981CE0FD11D0FB6F894DEBFDC\r
+:0A0A60000FBECDBFCA2FDB2F089593\r
+:100A6A0068656C6C6F2C20776F726C640D0A0020BD\r
+:060A7A00008000000000F6\r
+:00000001FF\r
diff --git a/src/nicktemp/hello.lst b/src/nicktemp/hello.lst
new file mode 100644 (file)
index 0000000..083f3ed
--- /dev/null
@@ -0,0 +1,328 @@
+GAS LISTING C:\cygwin\tmp/cc8iaaaa.s                   page 1\r
+\r
+\r
+   1                           .file   "hello.c"\r
+   2                           .arch at90s4433\r
+   3                   __SREG__ = 0x3f\r
+   4                   __SP_H__ = 0x3e\r
+   5                   __SP_L__ = 0x3d\r
+   6                   __tmp_reg__ = 0\r
+   7                   __zero_reg__ = 1\r
+   8                           .global __do_copy_data\r
+   9                           .global __do_clear_bss\r
+  10                           .stabs  "c:\\uzi\\src\\nicktemp/",100,0,0,.Ltext0\r
+  11                           .stabs  "hello.c",100,0,0,.Ltext0\r
+  12                           .text\r
+  13                   .Ltext0:\r
+  14                           .stabs  "gcc2_compiled.",60,0,0,0\r
+  15                           .stabs  "int:t(0,1)=r(0,1);-32768;32767;",128,0,0,0\r
+  16                           .stabs  "char:t(0,2)=r(0,2);0;127;",128,0,0,0\r
+  17                           .stabs  "long int:t(0,3)=@s32;r(0,3);0020000000000;0017777777777;",128,0,0,0\r
+  18                           .stabs  "unsigned int:t(0,4)=r(0,4);0000000000000;0000000177777;",128,0,0,0\r
+  19                           .stabs  "long unsigned int:t(0,5)=@s32;r(0,5);0000000000000;0037777777777;",128,0,0,0\r
+  20                           .stabs  "long long int:t(0,6)=@s64;r(0,6);01000000000000000000000;0777777777777777777777;",128,0,0,\r
+  21                           .stabs  "long long unsigned int:t(0,7)=@s64;r(0,7);0000000000000;01777777777777777777777;",128,0,0,\r
+  22                           .stabs  "short int:t(0,8)=r(0,8);-32768;32767;",128,0,0,0\r
+  23                           .stabs  "short unsigned int:t(0,9)=r(0,9);0000000000000;0000000177777;",128,0,0,0\r
+  24                           .stabs  "signed char:t(0,10)=@s8;r(0,10);-128;127;",128,0,0,0\r
+  25                           .stabs  "unsigned char:t(0,11)=@s8;r(0,11);0;255;",128,0,0,0\r
+  26                           .stabs  "float:t(0,12)=r(0,1);4;0;",128,0,0,0\r
+  27                           .stabs  "double:t(0,13)=r(0,1);4;0;",128,0,0,0\r
+  28                           .stabs  "long double:t(0,14)=r(0,1);4;0;",128,0,0,0\r
+  29                           .stabs  "complex int:t(0,15)=s4real:(0,1),0,16;imag:(0,1),16,16;;",128,0,0,0\r
+  30                           .stabs  "complex float:t(0,16)=r(0,16);8;0;",128,0,0,0\r
+  31                           .stabs  "complex double:t(0,17)=r(0,17);8;0;",128,0,0,0\r
+  32                           .stabs  "complex long double:t(0,18)=r(0,18);8;0;",128,0,0,0\r
+  33                           .stabs  "__builtin_va_list:t(0,19)=*(0,20)=(0,20)",128,0,0,0\r
+  34                           .stabs  "_Bool:t(0,21)=@s8;-16;",128,0,0,0\r
+  35                           .stabs  "hello.c",130,0,0,0\r
+  36                           .stabs  "c:/WinAVR/avr/include/stdio.h",130,0,0,0\r
+  37                           .stabs  "c:/WinAVR/avr/include/inttypes.h",130,0,0,0\r
+  38                           .stabs  "int8_t:t(3,1)=(0,10)",128,0,46,0\r
+  39                           .stabs  "uint8_t:t(3,2)=(0,11)",128,0,47,0\r
+  40                           .stabs  "int16_t:t(3,3)=(0,1)",128,0,49,0\r
+  41                           .stabs  "uint16_t:t(3,4)=(0,4)",128,0,50,0\r
+  42                           .stabs  "int32_t:t(3,5)=(0,3)",128,0,52,0\r
+  43                           .stabs  "uint32_t:t(3,6)=(0,5)",128,0,53,0\r
+  44                           .stabs  "int64_t:t(3,7)=(0,6)",128,0,55,0\r
+  45                           .stabs  "uint64_t:t(3,8)=(0,7)",128,0,56,0\r
+  46                           .stabs  "intptr_t:t(3,9)=(3,3)",128,0,58,0\r
+  47                           .stabs  "uintptr_t:t(3,10)=(3,4)",128,0,59,0\r
+  48                           .stabn  162,0,0,0\r
+  49                           .stabs  "c:/WinAVR/lib/gcc-lib/avr/3.3/include/stdarg.h",130,0,0,0\r
+  50                           .stabs  "__gnuc_va_list:t(4,1)=(0,19)",128,0,43,0\r
+  51                           .stabs  "va_list:t(4,2)=(4,1)",128,0,105,0\r
+  52                           .stabn  162,0,0,0\r
+  53                           .stabs  "c:/WinAVR/lib/gcc-lib/avr/3.3/include/stddef.h",130,0,0,0\r
+  54                           .stabs  "size_t:t(5,1)=(0,4)",128,0,213,0\r
+  55                           .stabn  162,0,0,0\r
+  56                           .stabn  162,0,0,0\r
+  57                           .stabs  "c:/WinAVR/avr/include/avr/io.h",130,0,0,0\r
+\fGAS LISTING C:\cygwin\tmp/cc8iaaaa.s                  page 2\r
+\r
+\r
+  58                           .stabs  "c:/WinAVR/avr/include/avr/io4433.h",130,0,0,0\r
+  59                           .stabs  "c:/WinAVR/avr/include/avr/sfr_defs.h",130,0,0,0\r
+  60                           .stabn  162,0,0,0\r
+  61                           .stabn  162,0,0,0\r
+  62                           .stabn  162,0,0,0\r
+  63                           .stabs  "hello.h",130,0,0,0\r
+  64                           .stabn  162,0,0,0\r
+  65                           .stabs  "my_putc:F(0,1)",36,0,8,my_putc\r
+  66                           .stabs  "c:p(0,2)",160,0,7,1\r
+  67                   .global my_putc\r
+  68                           .type   my_putc, @function\r
+  69                   my_putc:\r
+   1:hello.c       **** /* hello.c by Nick for Hytech AVR */\r
+   2:hello.c       **** \r
+   3:hello.c       **** #include <stdio.h>\r
+   4:hello.c       **** #include <avr/io.h>\r
+   5:hello.c       **** #include "hello.h"\r
+   6:hello.c       **** \r
+   7:hello.c       **** int my_putc(char c)\r
+   8:hello.c       ****        {\r
+  70                           .stabn 68,0,8,.LM1-my_putc\r
+  71                   .LM1:\r
+  72                   /* prologue: frame size=1 */\r
+  73 0000 CF93                 push r28\r
+  74 0002 DF93                 push r29\r
+  75 0004 CDB7                 in r28,__SP_L__\r
+  76 0006 DEB7                 in r29,__SP_H__\r
+  77 0008 2197                 sbiw r28,1\r
+  78 000a 0FB6                 in __tmp_reg__,__SREG__\r
+  79 000c F894                 cli\r
+  80 000e DEBF                 out __SP_H__,r29\r
+  81 0010 0FBE                 out __SREG__,__tmp_reg__\r
+  82 0012 CDBF                 out __SP_L__,r28\r
+  83                   /* prologue end (size=10) */\r
+  84 0014 8983                 std Y+1,r24\r
+   9:hello.c       **** nclude "hello.h"\r
+  85                           .stabn 68,0,9,.LM2-my_putc\r
+  86                   .LM2:\r
+  87                   .L2:\r
+  88 0016 8091 2B00            lds r24,43\r
+  89 001a 9927                 clr r25\r
+  90 001c 8072                 andi r24,lo8(32)\r
+  91 001e 9070                 andi r25,hi8(32)\r
+  92 0020 0097                 sbiw r24,0\r
+  93 0022 C9F3                 breq .L2\r
+  10:hello.c       **** o.h>\r
+  11:hello.c       **** #include <avr/io.h>\r
+  94                           .stabn 68,0,11,.LM3-my_putc\r
+  95                   .LM3:\r
+  96 0024 8981                 ldd r24,Y+1\r
+  97 0026 8093 2C00            sts 44,r24\r
+  12:hello.c       **** R */\r
+  98                           .stabn 68,0,12,.LM4-my_putc\r
+  99                   .LM4:\r
+ 100 002a 80E0                 ldi r24,lo8(0)\r
+ 101 002c 90E0                 ldi r25,hi8(0)\r
+  13:hello.c       **** /* hello.c by Nick for Hytech AVR */\r
+\fGAS LISTING C:\cygwin\tmp/cc8iaaaa.s                  page 3\r
+\r
+\r
+ 102                           .stabn 68,0,13,.LM5-my_putc\r
+ 103                   .LM5:\r
+ 104                   /* epilogue: frame size=1 */\r
+ 105 002e 2196                 adiw r28,1\r
+ 106 0030 0FB6                 in __tmp_reg__,__SREG__\r
+ 107 0032 F894                 cli\r
+ 108 0034 DEBF                 out __SP_H__,r29\r
+ 109 0036 0FBE                 out __SREG__,__tmp_reg__\r
+ 110 0038 CDBF                 out __SP_L__,r28\r
+ 111 003a DF91                 pop r29\r
+ 112 003c CF91                 pop r28\r
+ 113 003e 0895                 ret\r
+ 114                   /* epilogue end (size=9) */\r
+ 115                   /* function my_putc size 32 (13) */\r
+ 116                           .size   my_putc, .-my_putc\r
+ 117                   .Lscope0:\r
+ 118                           .stabs  "",36,0,0,.Lscope0-my_putc\r
+ 119                           .stabs  "my_getc:F(0,1)",36,0,16,my_getc\r
+ 120                   .global my_getc\r
+ 121                           .type   my_getc, @function\r
+ 122                   my_getc:\r
+  14:hello.c       **** /* hello.c by Nick for Hytech AVR */\r
+  15:hello.c       **** \r
+  16:hello.c       **** #include <stdio.h>\r
+ 123                           .stabn 68,0,16,.LM6-my_getc\r
+ 124                   .LM6:\r
+ 125                   /* prologue: frame size=2 */\r
+ 126 0040 CF93                 push r28\r
+ 127 0042 DF93                 push r29\r
+ 128 0044 CDB7                 in r28,__SP_L__\r
+ 129 0046 DEB7                 in r29,__SP_H__\r
+ 130 0048 2297                 sbiw r28,2\r
+ 131 004a 0FB6                 in __tmp_reg__,__SREG__\r
+ 132 004c F894                 cli\r
+ 133 004e DEBF                 out __SP_H__,r29\r
+ 134 0050 0FBE                 out __SREG__,__tmp_reg__\r
+ 135 0052 CDBF                 out __SP_L__,r28\r
+ 136                   /* prologue end (size=10) */\r
+  17:hello.c       **** by Nick for Hytech AVR */\r
+ 137                           .stabn 68,0,17,.LM7-my_getc\r
+ 138                   .LM7:\r
+ 139 0054 8091 2B00            lds r24,43\r
+ 140 0058 8823                 tst r24\r
+ 141 005a 2CF0                 brlt .L6\r
+  18:hello.c       **** /* hello.c by Nick for Hytech AVR */\r
+ 142                           .stabn 68,0,18,.LM8-my_getc\r
+ 143                   .LM8:\r
+ 144 005c 8FEF                 ldi r24,lo8(-1)\r
+ 145 005e 9FEF                 ldi r25,hi8(-1)\r
+ 146 0060 8983                 std Y+1,r24\r
+ 147 0062 9A83                 std Y+2,r25\r
+ 148 0064 05C0                 rjmp .L5\r
+ 149                   .L6:\r
+  19:hello.c       **** /* hello.c by Nick for Hytech AVR */\r
+ 150                           .stabn 68,0,19,.LM9-my_getc\r
+ 151                   .LM9:\r
+ 152 0066 8091 2C00            lds r24,44\r
+\fGAS LISTING C:\cygwin\tmp/cc8iaaaa.s                  page 4\r
+\r
+\r
+ 153 006a 9927                 clr r25\r
+ 154 006c 8983                 std Y+1,r24\r
+ 155 006e 9A83                 std Y+2,r25\r
+  20:hello.c       **** /* hello.c by Nick for Hytech AVR */\r
+ 156                           .stabn 68,0,20,.LM10-my_getc\r
+ 157                   .LM10:\r
+ 158                   .L5:\r
+ 159 0070 8981                 ldd r24,Y+1\r
+ 160 0072 9A81                 ldd r25,Y+2\r
+ 161                   /* epilogue: frame size=2 */\r
+ 162 0074 2296                 adiw r28,2\r
+ 163 0076 0FB6                 in __tmp_reg__,__SREG__\r
+ 164 0078 F894                 cli\r
+ 165 007a DEBF                 out __SP_H__,r29\r
+ 166 007c 0FBE                 out __SREG__,__tmp_reg__\r
+ 167 007e CDBF                 out __SP_L__,r28\r
+ 168 0080 DF91                 pop r29\r
+ 169 0082 CF91                 pop r28\r
+ 170 0084 0895                 ret\r
+ 171                   /* epilogue end (size=9) */\r
+ 172                   /* function my_getc size 35 (16) */\r
+ 173                           .size   my_getc, .-my_getc\r
+ 174                   .Lscope1:\r
+ 175                           .stabs  "",36,0,0,.Lscope1-my_getc\r
+ 176                           .data\r
+ 177                   .LC0:\r
+ 178 0000 6865 6C6C            .string "hello, world\r\n"\r
+ 178      6F2C 2077 \r
+ 178      6F72 6C64 \r
+ 178      0D0A 00\r
+ 179                           .text\r
+ 180                           .stabs  "main:F(0,1)",36,0,23,main\r
+ 181                   .global main\r
+ 182                           .type   main, @function\r
+ 183                   main:\r
+  21:hello.c       **** /* hello.c by Nick for Hytech AVR */\r
+  22:hello.c       **** \r
+  23:hello.c       **** #include <stdio.h>\r
+ 184                           .stabn 68,0,23,.LM11-main\r
+ 185                   .LM11:\r
+ 186                   /* prologue: frame size=0 */\r
+ 187 0086 C0E0                 ldi r28,lo8(__stack - 0)\r
+ 188 0088 D0E0                 ldi r29,hi8(__stack - 0)\r
+ 189 008a DEBF                 out __SP_H__,r29\r
+ 190 008c CDBF                 out __SP_L__,r28\r
+ 191                   /* prologue end (size=4) */\r
+  24:hello.c       **** by Nick for Hytech AVR */\r
+  25:hello.c       **** \r
+ 192                           .stabn 68,0,25,.LM12-main\r
+ 193                   .LM12:\r
+ 194 008e 80E4                 ldi r24,lo8(64)\r
+ 195 0090 8093 2B00            sts 43,r24\r
+  26:hello.c       **** /* hello.c by Nick for Hytech AVR */\r
+ 196                           .stabn 68,0,26,.LM13-main\r
+ 197                   .LM13:\r
+ 198 0094 88E1                 ldi r24,lo8(24)\r
+ 199 0096 8093 2A00            sts 42,r24\r
+\fGAS LISTING C:\cygwin\tmp/cc8iaaaa.s                  page 5\r
+\r
+\r
+  27:hello.c       **** /* hello.c by Nick for Hytech AVR */\r
+ 200                           .stabn 68,0,27,.LM14-main\r
+ 201                   .LM14:\r
+ 202 009a 87E4                 ldi r24,lo8(71)\r
+ 203 009c 8093 2900            sts 41,r24\r
+  28:hello.c       **** /* hello.c by Nick for Hytech AVR */\r
+  29:hello.c       **** \r
+  30:hello.c       **** #include <stdio.h>\r
+  31:hello.c       **** #include <avr/io.h>\r
+  32:hello.c       **** #include "hello.h"\r
+  33:hello.c       **** \r
+  34:hello.c       **** int my_putc(char c)\r
+  35:hello.c       ****        {\r
+  36:hello.c       ****        while (bit_is_set(UCSRA, UDRE) == 0)\r
+  37:hello.c       ****                ;\r
+  38:hello.c       ****        UDR = c;\r
+  39:hello.c       ****        return 0;\r
+ 204                           .stabn 68,0,39,.LM15-main\r
+ 205                   .LM15:\r
+ 206 00a0 40E0                 ldi r20,lo8(0)\r
+ 207 00a2 50E0                 ldi r21,hi8(0)\r
+ 208 00a4 60E0                 ldi r22,lo8(pm(my_getc))\r
+ 209 00a6 70E0                 ldi r23,hi8(pm(my_getc))\r
+ 210 00a8 80E0                 ldi r24,lo8(pm(my_putc))\r
+ 211 00aa 90E0                 ldi r25,hi8(pm(my_putc))\r
+ 212 00ac 00D0                 rcall fdevopen\r
+  40:hello.c       **** UDRE) == 0)\r
+  41:hello.c       ****                ;\r
+  42:hello.c       ****        UDR = c;\r
+ 213                           .stabn 68,0,42,.LM16-main\r
+ 214                   .LM16:\r
+ 215 00ae 80E0                 ldi r24,lo8(.LC0)\r
+ 216 00b0 90E0                 ldi r25,hi8(.LC0)\r
+ 217 00b2 9F93                 push r25\r
+ 218 00b4 8F93                 push r24\r
+ 219 00b6 00D0                 rcall printf\r
+ 220 00b8 0F90                 pop __tmp_reg__\r
+ 221 00ba 0F90                 pop __tmp_reg__\r
+  43:hello.c       **** _set(UCSRA, UDRE) == 0)\r
+  44:hello.c       ****                ;\r
+  45:hello.c       ****        UDR = c;\r
+  46:hello.c       ****        return 0;\r
+ 222                           .stabn 68,0,46,.LM17-main\r
+ 223                   .LM17:\r
+ 224                   .L8:\r
+ 225 00bc FFCF                 rjmp .L8\r
+  47:hello.c       **** UDRE) == 0)\r
+  48:hello.c       ****                ;\r
+ 226                           .stabn 68,0,48,.LM18-main\r
+ 227                   .LM18:\r
+ 228                   /* epilogue: frame size=0 */\r
+ 229                   /* epilogue: noreturn */\r
+ 230                   /* epilogue end (size=0) */\r
+ 231                   /* function main size 28 (24) */\r
+ 232                           .size   main, .-main\r
+ 233                   .Lscope2:\r
+ 234                           .stabs  "",36,0,0,.Lscope2-main\r
+\fGAS LISTING C:\cygwin\tmp/cc8iaaaa.s                  page 6\r
+\r
+\r
+ 235                           .text\r
+ 236                           .stabs "",100,0,0,Letext\r
+ 237                   Letext:\r
+ 238                   /* File "hello.c": code   95 = 0x005f (  53), prologues  24, epilogues  18 */\r
+\fGAS LISTING C:\cygwin\tmp/cc8iaaaa.s                  page 7\r
+\r
+\r
+DEFINED SYMBOLS\r
+                            *ABS*:00000000 hello.c\r
+                            *ABS*:0000003f __SREG__\r
+                            *ABS*:0000003e __SP_H__\r
+                            *ABS*:0000003d __SP_L__\r
+                            *ABS*:00000000 __tmp_reg__\r
+                            *ABS*:00000001 __zero_reg__\r
+C:\cygwin\tmp/cc8iaaaa.s:69     .text:00000000 my_putc\r
+C:\cygwin\tmp/cc8iaaaa.s:122    .text:00000040 my_getc\r
+C:\cygwin\tmp/cc8iaaaa.s:183    .text:00000086 main\r
+C:\cygwin\tmp/cc8iaaaa.s:237    .text:000000be Letext\r
+\r
+UNDEFINED SYMBOLS\r
+__do_copy_data\r
+__do_clear_bss\r
+__stack\r
+fdevopen\r
+printf\r
diff --git a/src/nicktemp/hello.map b/src/nicktemp/hello.map
new file mode 100644 (file)
index 0000000..3a569e8
--- /dev/null
@@ -0,0 +1,426 @@
+Archive member included because of file (symbol)\r
+\r
+c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\libgcc.a(_copy_data.o)\r
+                              hello.o (__do_copy_data)\r
+c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\libgcc.a(_clear_bss.o)\r
+                              hello.o (__do_clear_bss)\r
+c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(fdevopen.o)\r
+                              hello.o (fdevopen)\r
+c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(printf.o)\r
+                              hello.o (printf)\r
+c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(vfprintf_std.o)\r
+                              c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(printf.o) (vfprintf)\r
+c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(calloc.o)\r
+                              c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(fdevopen.o) (calloc)\r
+c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(fputc.o)\r
+                              c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(vfprintf_std.o) (fputc)\r
+c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(malloc.o)\r
+                              c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(calloc.o) (malloc)\r
+c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(memset.o)\r
+                              c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(calloc.o) (memset)\r
+c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\libgcc.a(_mulhi3.o)\r
+                              c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(calloc.o) (__mulhi3)\r
+c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\libgcc.a(_udivmodsi4.o)\r
+                              c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(vfprintf_std.o) (__udivmodsi4)\r
+c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\libgcc.a(_prologue.o)\r
+                              c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(printf.o) (__prologue_saves__)\r
+c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\libgcc.a(_epilogue.o)\r
+                              c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(printf.o) (__epilogue_restores__)\r
+\r
+Allocating common symbols\r
+Common symbol       size              file\r
+\r
+__iob               0x6               c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(fdevopen.o)\r
+\r
+Memory Configuration\r
+\r
+Name             Origin             Length             Attributes\r
+text             0x00000000         0x00002000         xr\r
+data             0x00800060         0x0000ffa0         rw !x\r
+eeprom           0x00810000         0x00010000         rw !x\r
+*default*        0x00000000         0xffffffff\r
+\r
+Linker script and memory map\r
+\r
+LOAD c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o\r
+LOAD hello.o\r
+LOAD c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\libgcc.a\r
+LOAD c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a\r
+LOAD c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\libgcc.a\r
+\r
+.hash\r
+ *(.hash)\r
+\r
+.dynsym\r
+ *(.dynsym)\r
+\r
+.dynstr\r
+ *(.dynstr)\r
+\r
+.gnu.version\r
+ *(.gnu.version)\r
+\r
+.gnu.version_d\r
+ *(.gnu.version_d)\r
+\r
+.gnu.version_r\r
+ *(.gnu.version_r)\r
+\r
+.rel.init\r
+ *(.rel.init)\r
+\r
+.rela.init\r
+ *(.rela.init)\r
+\r
+.rel.text\r
+ *(.rel.text)\r
+ *(.rel.text.*)\r
+ *(.rel.gnu.linkonce.t*)\r
+\r
+.rela.text\r
+ *(.rela.text)\r
+ *(.rela.text.*)\r
+ *(.rela.gnu.linkonce.t*)\r
+\r
+.rel.fini\r
+ *(.rel.fini)\r
+\r
+.rela.fini\r
+ *(.rela.fini)\r
+\r
+.rel.rodata\r
+ *(.rel.rodata)\r
+ *(.rel.rodata.*)\r
+ *(.rel.gnu.linkonce.r*)\r
+\r
+.rela.rodata\r
+ *(.rela.rodata)\r
+ *(.rela.rodata.*)\r
+ *(.rela.gnu.linkonce.r*)\r
+\r
+.rel.data\r
+ *(.rel.data)\r
+ *(.rel.data.*)\r
+ *(.rel.gnu.linkonce.d*)\r
+\r
+.rela.data\r
+ *(.rela.data)\r
+ *(.rela.data.*)\r
+ *(.rela.gnu.linkonce.d*)\r
+\r
+.rel.ctors\r
+ *(.rel.ctors)\r
+\r
+.rela.ctors\r
+ *(.rela.ctors)\r
+\r
+.rel.dtors\r
+ *(.rel.dtors)\r
+\r
+.rela.dtors\r
+ *(.rela.dtors)\r
+\r
+.rel.got\r
+ *(.rel.got)\r
+\r
+.rela.got\r
+ *(.rela.got)\r
+\r
+.rel.bss\r
+ *(.rel.bss)\r
+\r
+.rela.bss\r
+ *(.rela.bss)\r
+\r
+.rel.plt\r
+ *(.rel.plt)\r
+\r
+.rela.plt\r
+ *(.rela.plt)\r
+\r
+.text           0x00000000      0xa6a\r
+ *(.vectors)\r
+ .vectors       0x00000000       0x1c c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o\r
+                0x00000000                __vectors\r
+                0x00000000                __vector_default\r
+                0x0000001c                __ctors_start = .\r
+ *(.ctors)\r
+                0x0000001c                __ctors_end = .\r
+                0x0000001c                __dtors_start = .\r
+ *(.dtors)\r
+                0x0000001c                __dtors_end = .\r
+ *(.progmem.gcc*)\r
+ *(.progmem*)\r
+                0x0000001c                . = ALIGN (0x2)\r
+ *(.init0)\r
+ *(.init1)\r
+ *(.init2)\r
+ .init2         0x0000001c        0xc c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o\r
+ *(.init3)\r
+ *(.init4)\r
+ .init4         0x00000028       0x18 c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\libgcc.a(_copy_data.o)\r
+                0x00000028                __do_copy_data\r
+ .init4         0x00000040       0x10 c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\libgcc.a(_clear_bss.o)\r
+                0x00000040                __do_clear_bss\r
+ *(.init5)\r
+ *(.init6)\r
+ *(.init7)\r
+ *(.init8)\r
+ *(.init9)\r
+ .init9         0x00000050        0x2 c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o\r
+ *(.text)\r
+ .text          0x00000052        0x2 c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o\r
+                0x00000052                __vector_1\r
+                0x00000052                __vector_12\r
+                0x00000052                __bad_interrupt\r
+                0x00000052                __vector_6\r
+                0x00000052                __vector_3\r
+                0x00000052                __vector_11\r
+                0x00000052                __vector_13\r
+                0x00000052                __vector_7\r
+                0x00000052                __vector_5\r
+                0x00000052                __vector_4\r
+                0x00000052                __vector_9\r
+                0x00000052                __vector_2\r
+                0x00000052                __vector_8\r
+                0x00000052                __vector_10\r
+ .text          0x00000054       0xbe hello.o\r
+                0x000000da                main\r
+                0x00000094                my_getc\r
+                0x00000054                my_putc\r
+ .text          0x00000112       0x8e c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(fdevopen.o)\r
+                0x00000112                fdevopen\r
+ .text          0x000001a0       0x2c c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(printf.o)\r
+                0x000001a0                printf\r
+ .text          0x000001cc      0x518 c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(vfprintf_std.o)\r
+                0x000001cc                vfprintf\r
+ .text          0x000006e4       0x30 c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(calloc.o)\r
+                0x000006e4                calloc\r
+ .text          0x00000714       0x5a c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(fputc.o)\r
+                0x00000714                fputc\r
+ .text          0x0000076e      0x20a c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(malloc.o)\r
+                0x0000076e                malloc\r
+                0x000008a8                free\r
+ .text          0x00000978       0x10 c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(memset.o)\r
+                0x00000978                memset\r
+                0x00000988                . = ALIGN (0x2)\r
+ *(.text.*)\r
+ .text.libgcc   0x00000988       0x24 c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\libgcc.a(_mulhi3.o)\r
+                0x00000988                __mulhi3\r
+ .text.libgcc   0x000009ac       0x4e c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\libgcc.a(_udivmodsi4.o)\r
+                0x000009ac                __udivmodsi4\r
+ .text.libgcc   0x000009fa       0x38 c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\libgcc.a(_prologue.o)\r
+                0x000009fa                __prologue_saves__\r
+ .text.libgcc   0x00000a32       0x38 c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\libgcc.a(_epilogue.o)\r
+                0x00000a32                __epilogue_restores__\r
+                0x00000a6a                . = ALIGN (0x2)\r
+ *(.fini9)\r
+ *(.fini8)\r
+ *(.fini7)\r
+ *(.fini6)\r
+ *(.fini5)\r
+ *(.fini4)\r
+ *(.fini3)\r
+ *(.fini2)\r
+ *(.fini1)\r
+ *(.fini0)\r
+                0x00000a6a                _etext = .\r
+\r
+.data           0x00800060       0x16 load address 0x00000a6a\r
+                0x00800060                PROVIDE (__data_start, .)\r
+ *(.data)\r
+ .data          0x00800060        0xf hello.o\r
+ .data          0x0080006f        0x6 c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(malloc.o)\r
+                0x00800071                __malloc_heap_start\r
+                0x00800073                __malloc_heap_end\r
+                0x0080006f                __malloc_margin\r
+ *(.gnu.linkonce.d*)\r
+                0x00800076                . = ALIGN (0x2)\r
+ *fill*         0x00800075        0x1 00\r
+                0x00800076                _edata = .\r
+                0x00800076                PROVIDE (__data_end, .)\r
+\r
+.bss            0x00800076        0xa\r
+                0x00800076                PROVIDE (__bss_start, .)\r
+ *(.bss)\r
+ .bss           0x00800076        0x4 c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(malloc.o)\r
+ *(COMMON)\r
+ COMMON         0x0080007a        0x6 c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(fdevopen.o)\r
+                                  0x0 (size before relaxing)\r
+                0x0080007a                __iob\r
+                0x00800080                PROVIDE (__bss_end, .)\r
+                0x00000a6a                __data_load_start = LOADADDR (.data)\r
+                0x00000a80                __data_load_end = (__data_load_start + SIZEOF (.data))\r
+\r
+.noinit         0x00800080        0x0\r
+                0x00800080                PROVIDE (__noinit_start, .)\r
+ *(.noinit*)\r
+                0x00800080                PROVIDE (__noinit_end, .)\r
+                0x00800080                _end = .\r
+                0x00800080                PROVIDE (__heap_start, .)\r
+\r
+.eeprom         0x00810000        0x0 load address 0x00000a80\r
+ *(.eeprom*)\r
+                0x00810000                __eeprom_end = .\r
+\r
+.stab           0x00000000     0x1db8\r
+ *(.stab)\r
+ .stab          0x00000000      0x2a0 c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o\r
+ .stab          0x000002a0      0x3b4 hello.o\r
+                                0x3c0 (size before relaxing)\r
+ .stab          0x00000654      0x3e4 c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(fdevopen.o)\r
+                                0x3f0 (size before relaxing)\r
+ .stab          0x00000a38      0x1d4 c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(printf.o)\r
+                                0x2ac (size before relaxing)\r
+ .stab          0x00000c0c      0x7b0 c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(vfprintf_std.o)\r
+                                0x8a0 (size before relaxing)\r
+ .stab          0x000013bc      0x21c c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(calloc.o)\r
+                                0x264 (size before relaxing)\r
+ .stab          0x000015d8      0x204 c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(fputc.o)\r
+                                0x2f4 (size before relaxing)\r
+ .stab          0x000017dc      0x570 c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(malloc.o)\r
+                                0x5d0 (size before relaxing)\r
+ .stab          0x00001d4c       0x6c c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(memset.o)\r
+                                 0x78 (size before relaxing)\r
+\r
+.stabstr        0x00000000     0x100b\r
+ *(.stabstr)\r
+ .stabstr       0x00000000     0x100b c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o\r
+                                  0x0 (size before relaxing)\r
+\r
+.stab.excl\r
+ *(.stab.excl)\r
+\r
+.stab.exclstr\r
+ *(.stab.exclstr)\r
+\r
+.stab.index\r
+ *(.stab.index)\r
+\r
+.stab.indexstr\r
+ *(.stab.indexstr)\r
+\r
+.comment\r
+ *(.comment)\r
+\r
+.debug\r
+ *(.debug)\r
+\r
+.line\r
+ *(.line)\r
+\r
+.debug_srcinfo\r
+ *(.debug_srcinfo)\r
+\r
+.debug_sfnames\r
+ *(.debug_sfnames)\r
+\r
+.debug_aranges\r
+ *(.debug_aranges)\r
+\r
+.debug_pubnames\r
+ *(.debug_pubnames)\r
+\r
+.debug_info\r
+ *(.debug_info)\r
+ *(.gnu.linkonce.wi.*)\r
+\r
+.debug_abbrev\r
+ *(.debug_abbrev)\r
+\r
+.debug_line\r
+ *(.debug_line)\r
+\r
+.debug_frame\r
+ *(.debug_frame)\r
+\r
+.debug_str\r
+ *(.debug_str)\r
+\r
+.debug_loc\r
+ *(.debug_loc)\r
+\r
+.debug_macinfo\r
+ *(.debug_macinfo)\r
+OUTPUT(hello.elf elf32-avr)\r
+\r
+Cross Reference Table\r
+\r
+Symbol                                            File\r
+__bad_interrupt                                   c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o\r
+__bss_end                                         c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\libgcc.a(_clear_bss.o)\r
+__bss_start                                       c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\libgcc.a(_clear_bss.o)\r
+__data_end                                        c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\libgcc.a(_copy_data.o)\r
+__data_load_start                                 c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\libgcc.a(_copy_data.o)\r
+__data_start                                      c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\libgcc.a(_copy_data.o)\r
+__do_clear_bss                                    c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\libgcc.a(_clear_bss.o)\r
+                                                  c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(malloc.o)\r
+                                                  c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(fputc.o)\r
+                                                  c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(calloc.o)\r
+                                                  c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(vfprintf_std.o)\r
+                                                  c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(printf.o)\r
+                                                  c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(fdevopen.o)\r
+                                                  hello.o\r
+__do_copy_data                                    c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\libgcc.a(_copy_data.o)\r
+                                                  c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(malloc.o)\r
+                                                  c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(fputc.o)\r
+                                                  c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(calloc.o)\r
+                                                  c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(vfprintf_std.o)\r
+                                                  c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(printf.o)\r
+                                                  c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(fdevopen.o)\r
+                                                  hello.o\r
+__epilogue_restores__                             c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\libgcc.a(_epilogue.o)\r
+                                                  c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(vfprintf_std.o)\r
+                                                  c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(printf.o)\r
+__heap_end                                        c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o\r
+                                                  c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(malloc.o)\r
+__heap_start                                      c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(malloc.o)\r
+__init                                            c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o\r
+__iob                                             c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(printf.o)\r
+                                                  c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(fdevopen.o)\r
+__malloc_heap_end                                 c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(malloc.o)\r
+__malloc_heap_start                               c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(malloc.o)\r
+__malloc_margin                                   c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(malloc.o)\r
+__mulhi3                                          c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\libgcc.a(_mulhi3.o)\r
+                                                  c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(calloc.o)\r
+__prologue_saves__                                c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\libgcc.a(_prologue.o)\r
+                                                  c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(vfprintf_std.o)\r
+                                                  c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(printf.o)\r
+__stack                                           c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o\r
+                                                  hello.o\r
+__udivmodsi4                                      c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\libgcc.a(_udivmodsi4.o)\r
+                                                  c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(vfprintf_std.o)\r
+__vector_1                                        c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o\r
+__vector_10                                       c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o\r
+__vector_11                                       c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o\r
+__vector_12                                       c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o\r
+__vector_13                                       c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o\r
+__vector_2                                        c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o\r
+__vector_3                                        c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o\r
+__vector_4                                        c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o\r
+__vector_5                                        c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o\r
+__vector_6                                        c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o\r
+__vector_7                                        c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o\r
+__vector_8                                        c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o\r
+__vector_9                                        c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o\r
+__vector_default                                  c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o\r
+__vectors                                         c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o\r
+calloc                                            c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(calloc.o)\r
+                                                  c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(fdevopen.o)\r
+fdevopen                                          c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(fdevopen.o)\r
+                                                  hello.o\r
+fputc                                             c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(fputc.o)\r
+                                                  c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(vfprintf_std.o)\r
+free                                              c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(malloc.o)\r
+main                                              hello.o\r
+                                                  c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\crts4433.o\r
+malloc                                            c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(malloc.o)\r
+                                                  c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(calloc.o)\r
+memset                                            c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(memset.o)\r
+                                                  c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(calloc.o)\r
+my_getc                                           hello.o\r
+my_putc                                           hello.o\r
+printf                                            c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(printf.o)\r
+                                                  hello.o\r
+vfprintf                                          c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(vfprintf_std.o)\r
+                                                  c:\WinAVR\bin\..\lib\gcc-lib\avr\3.3\..\..\..\..\avr\lib\libc.a(printf.o)\r
diff --git a/src/nicktemp/hello.o b/src/nicktemp/hello.o
new file mode 100644 (file)
index 0000000..1e70203
Binary files /dev/null and b/src/nicktemp/hello.o differ
diff --git a/src/nicktemp/hello.s b/src/nicktemp/hello.s
new file mode 100644 (file)
index 0000000..b87285f
--- /dev/null
@@ -0,0 +1,238 @@
+       .file   "hello.c"\r
+       .arch at90s4433\r
+__SREG__ = 0x3f\r
+__SP_H__ = 0x3e\r
+__SP_L__ = 0x3d\r
+__tmp_reg__ = 0\r
+__zero_reg__ = 1\r
+       .global __do_copy_data\r
+       .global __do_clear_bss\r
+       .stabs  "c:\\uzi\\src\\nicktemp/",100,0,0,.Ltext0\r
+       .stabs  "hello.c",100,0,0,.Ltext0\r
+       .text\r
+.Ltext0:\r
+       .stabs  "gcc2_compiled.",60,0,0,0\r
+       .stabs  "int:t(0,1)=r(0,1);-32768;32767;",128,0,0,0\r
+       .stabs  "char:t(0,2)=r(0,2);0;127;",128,0,0,0\r
+       .stabs  "long int:t(0,3)=@s32;r(0,3);0020000000000;0017777777777;",128,0,0,0\r
+       .stabs  "unsigned int:t(0,4)=r(0,4);0000000000000;0000000177777;",128,0,0,0\r
+       .stabs  "long unsigned int:t(0,5)=@s32;r(0,5);0000000000000;0037777777777;",128,0,0,0\r
+       .stabs  "long long int:t(0,6)=@s64;r(0,6);01000000000000000000000;0777777777777777777777;",128,0,0,0\r
+       .stabs  "long long unsigned int:t(0,7)=@s64;r(0,7);0000000000000;01777777777777777777777;",128,0,0,0\r
+       .stabs  "short int:t(0,8)=r(0,8);-32768;32767;",128,0,0,0\r
+       .stabs  "short unsigned int:t(0,9)=r(0,9);0000000000000;0000000177777;",128,0,0,0\r
+       .stabs  "signed char:t(0,10)=@s8;r(0,10);-128;127;",128,0,0,0\r
+       .stabs  "unsigned char:t(0,11)=@s8;r(0,11);0;255;",128,0,0,0\r
+       .stabs  "float:t(0,12)=r(0,1);4;0;",128,0,0,0\r
+       .stabs  "double:t(0,13)=r(0,1);4;0;",128,0,0,0\r
+       .stabs  "long double:t(0,14)=r(0,1);4;0;",128,0,0,0\r
+       .stabs  "complex int:t(0,15)=s4real:(0,1),0,16;imag:(0,1),16,16;;",128,0,0,0\r
+       .stabs  "complex float:t(0,16)=r(0,16);8;0;",128,0,0,0\r
+       .stabs  "complex double:t(0,17)=r(0,17);8;0;",128,0,0,0\r
+       .stabs  "complex long double:t(0,18)=r(0,18);8;0;",128,0,0,0\r
+       .stabs  "__builtin_va_list:t(0,19)=*(0,20)=(0,20)",128,0,0,0\r
+       .stabs  "_Bool:t(0,21)=@s8;-16;",128,0,0,0\r
+       .stabs  "hello.c",130,0,0,0\r
+       .stabs  "c:/WinAVR/avr/include/stdio.h",130,0,0,0\r
+       .stabs  "c:/WinAVR/avr/include/inttypes.h",130,0,0,0\r
+       .stabs  "int8_t:t(3,1)=(0,10)",128,0,46,0\r
+       .stabs  "uint8_t:t(3,2)=(0,11)",128,0,47,0\r
+       .stabs  "int16_t:t(3,3)=(0,1)",128,0,49,0\r
+       .stabs  "uint16_t:t(3,4)=(0,4)",128,0,50,0\r
+       .stabs  "int32_t:t(3,5)=(0,3)",128,0,52,0\r
+       .stabs  "uint32_t:t(3,6)=(0,5)",128,0,53,0\r
+       .stabs  "int64_t:t(3,7)=(0,6)",128,0,55,0\r
+       .stabs  "uint64_t:t(3,8)=(0,7)",128,0,56,0\r
+       .stabs  "intptr_t:t(3,9)=(3,3)",128,0,58,0\r
+       .stabs  "uintptr_t:t(3,10)=(3,4)",128,0,59,0\r
+       .stabn  162,0,0,0\r
+       .stabs  "c:/WinAVR/lib/gcc-lib/avr/3.3/include/stdarg.h",130,0,0,0\r
+       .stabs  "__gnuc_va_list:t(4,1)=(0,19)",128,0,43,0\r
+       .stabs  "va_list:t(4,2)=(4,1)",128,0,105,0\r
+       .stabn  162,0,0,0\r
+       .stabs  "c:/WinAVR/lib/gcc-lib/avr/3.3/include/stddef.h",130,0,0,0\r
+       .stabs  "size_t:t(5,1)=(0,4)",128,0,213,0\r
+       .stabn  162,0,0,0\r
+       .stabn  162,0,0,0\r
+       .stabs  "c:/WinAVR/avr/include/avr/io.h",130,0,0,0\r
+       .stabs  "c:/WinAVR/avr/include/avr/io4433.h",130,0,0,0\r
+       .stabs  "c:/WinAVR/avr/include/avr/sfr_defs.h",130,0,0,0\r
+       .stabn  162,0,0,0\r
+       .stabn  162,0,0,0\r
+       .stabn  162,0,0,0\r
+       .stabs  "hello.h",130,0,0,0\r
+       .stabn  162,0,0,0\r
+       .stabs  "my_putc:F(0,1)",36,0,8,my_putc\r
+       .stabs  "c:p(0,2)",160,0,7,1\r
+.global        my_putc\r
+       .type   my_putc, @function\r
+my_putc:\r
+       .stabn 68,0,8,.LM1-my_putc\r
+.LM1:\r
+/* prologue: frame size=1 */\r
+       push r28\r
+       push r29\r
+       in r28,__SP_L__\r
+       in r29,__SP_H__\r
+       sbiw r28,1\r
+       in __tmp_reg__,__SREG__\r
+       cli\r
+       out __SP_H__,r29\r
+       out __SREG__,__tmp_reg__\r
+       out __SP_L__,r28\r
+/* prologue end (size=10) */\r
+       std Y+1,r24\r
+       .stabn 68,0,9,.LM2-my_putc\r
+.LM2:\r
+.L2:\r
+       lds r24,43\r
+       clr r25\r
+       andi r24,lo8(32)\r
+       andi r25,hi8(32)\r
+       sbiw r24,0\r
+       breq .L2\r
+       .stabn 68,0,11,.LM3-my_putc\r
+.LM3:\r
+       ldd r24,Y+1\r
+       sts 44,r24\r
+       .stabn 68,0,12,.LM4-my_putc\r
+.LM4:\r
+       ldi r24,lo8(0)\r
+       ldi r25,hi8(0)\r
+       .stabn 68,0,13,.LM5-my_putc\r
+.LM5:\r
+/* epilogue: frame size=1 */\r
+       adiw r28,1\r
+       in __tmp_reg__,__SREG__\r
+       cli\r
+       out __SP_H__,r29\r
+       out __SREG__,__tmp_reg__\r
+       out __SP_L__,r28\r
+       pop r29\r
+       pop r28\r
+       ret\r
+/* epilogue end (size=9) */\r
+/* function my_putc size 32 (13) */\r
+       .size   my_putc, .-my_putc\r
+.Lscope0:\r
+       .stabs  "",36,0,0,.Lscope0-my_putc\r
+       .stabs  "my_getc:F(0,1)",36,0,16,my_getc\r
+.global        my_getc\r
+       .type   my_getc, @function\r
+my_getc:\r
+       .stabn 68,0,16,.LM6-my_getc\r
+.LM6:\r
+/* prologue: frame size=2 */\r
+       push r28\r
+       push r29\r
+       in r28,__SP_L__\r
+       in r29,__SP_H__\r
+       sbiw r28,2\r
+       in __tmp_reg__,__SREG__\r
+       cli\r
+       out __SP_H__,r29\r
+       out __SREG__,__tmp_reg__\r
+       out __SP_L__,r28\r
+/* prologue end (size=10) */\r
+       .stabn 68,0,17,.LM7-my_getc\r
+.LM7:\r
+       lds r24,43\r
+       tst r24\r
+       brlt .L6\r
+       .stabn 68,0,18,.LM8-my_getc\r
+.LM8:\r
+       ldi r24,lo8(-1)\r
+       ldi r25,hi8(-1)\r
+       std Y+1,r24\r
+       std Y+2,r25\r
+       rjmp .L5\r
+.L6:\r
+       .stabn 68,0,19,.LM9-my_getc\r
+.LM9:\r
+       lds r24,44\r
+       clr r25\r
+       std Y+1,r24\r
+       std Y+2,r25\r
+       .stabn 68,0,20,.LM10-my_getc\r
+.LM10:\r
+.L5:\r
+       ldd r24,Y+1\r
+       ldd r25,Y+2\r
+/* epilogue: frame size=2 */\r
+       adiw r28,2\r
+       in __tmp_reg__,__SREG__\r
+       cli\r
+       out __SP_H__,r29\r
+       out __SREG__,__tmp_reg__\r
+       out __SP_L__,r28\r
+       pop r29\r
+       pop r28\r
+       ret\r
+/* epilogue end (size=9) */\r
+/* function my_getc size 35 (16) */\r
+       .size   my_getc, .-my_getc\r
+.Lscope1:\r
+       .stabs  "",36,0,0,.Lscope1-my_getc\r
+       .data\r
+.LC0:\r
+       .string "hello, world\r\n"\r
+       .text\r
+       .stabs  "main:F(0,1)",36,0,23,main\r
+.global        main\r
+       .type   main, @function\r
+main:\r
+       .stabn 68,0,23,.LM11-main\r
+.LM11:\r
+/* prologue: frame size=0 */\r
+       ldi r28,lo8(__stack - 0)\r
+       ldi r29,hi8(__stack - 0)\r
+       out __SP_H__,r29\r
+       out __SP_L__,r28\r
+/* prologue end (size=4) */\r
+       .stabn 68,0,25,.LM12-main\r
+.LM12:\r
+       ldi r24,lo8(64)\r
+       sts 43,r24\r
+       .stabn 68,0,26,.LM13-main\r
+.LM13:\r
+       ldi r24,lo8(24)\r
+       sts 42,r24\r
+       .stabn 68,0,27,.LM14-main\r
+.LM14:\r
+       ldi r24,lo8(71)\r
+       sts 41,r24\r
+       .stabn 68,0,39,.LM15-main\r
+.LM15:\r
+       ldi r20,lo8(0)\r
+       ldi r21,hi8(0)\r
+       ldi r22,lo8(pm(my_getc))\r
+       ldi r23,hi8(pm(my_getc))\r
+       ldi r24,lo8(pm(my_putc))\r
+       ldi r25,hi8(pm(my_putc))\r
+       rcall fdevopen\r
+       .stabn 68,0,42,.LM16-main\r
+.LM16:\r
+       ldi r24,lo8(.LC0)\r
+       ldi r25,hi8(.LC0)\r
+       push r25\r
+       push r24\r
+       rcall printf\r
+       pop __tmp_reg__\r
+       pop __tmp_reg__\r
+       .stabn 68,0,46,.LM17-main\r
+.LM17:\r
+.L8:\r
+       rjmp .L8\r
+       .stabn 68,0,48,.LM18-main\r
+.LM18:\r
+/* epilogue: frame size=0 */\r
+/* epilogue: noreturn */\r
+/* epilogue end (size=0) */\r
+/* function main size 28 (24) */\r
+       .size   main, .-main\r
+.Lscope2:\r
+       .stabs  "",36,0,0,.Lscope2-main\r
+       .text\r
+       .stabs "",100,0,0,Letext\r
+Letext:\r
+/* File "hello.c": code   95 = 0x005f (  53), prologues  24, epilogues  18 */\r
diff --git a/src/nicktemp/hello.tar.gz b/src/nicktemp/hello.tar.gz
new file mode 100644 (file)
index 0000000..4a9cb3b
Binary files /dev/null and b/src/nicktemp/hello.tar.gz differ
diff --git a/src/nicktemp/makefile b/src/nicktemp/makefile
new file mode 100644 (file)
index 0000000..eda5bc8
--- /dev/null
@@ -0,0 +1,39 @@
+# Simple Makefile\r
+# Volker Oth (c) 1999\r
+\r
+\r
+########### change this lines according to your project ##################\r
+\r
+#put the name of the target mcu here (at90s8515, at90s8535, attiny22, atmega603 etc.)\r
+    MCU = at90s4433\r
+\r
+#put the name of the target file here (without extension)\r
+       TRG     = hello\r
+\r
+#put your C sourcefiles here \r
+#      SRC     = uart.c $(TRG).c\r
+       SRC     = $(TRG).c\r
+\r
+#put additional assembler source file here\r
+       ASRC    =\r
+\r
+#additional libraries and object files to link\r
+       LIB = \r
+\r
+#additional includes to compile\r
+       INC     = \r
+\r
+#compiler flags\r
+#      CPFLAGS = -g -O2 -Wall -Wstrict-prototypes -Wa,-ahlms=$(<:.c=.lst)\r
+       CPFLAGS = -g -Wall -Wstrict-prototypes -Wa,-ahlms=$(<:.c=.lst)\r
+\r
+#linker flags\r
+       LDFLAGS = -Wl,-Map=$(TRG).map,--cref\r
+\r
+########### you should not need to change the following line #############\r
+include avr_make\r
+                 \r
+###### dependecies, add any dependencies you need here ###################\r
+\r
+#uart.o     : uart.c uart.h\r
+$(TRG).o    : $(TRG).c\r
diff --git a/src/testsystem/aap.diff b/src/testsystem/aap.diff
new file mode 100644 (file)
index 0000000..d1c8d2c
--- /dev/null
@@ -0,0 +1,2 @@
+aap1:  d2ff d2ff d2ff 92ff d2ff daff d2ff d2ff
+aap2:  d2ff d2ff daff d2ff daff daff daff 92ff
diff --git a/src/testsystem/aap.interleave b/src/testsystem/aap.interleave
new file mode 100644 (file)
index 0000000..4fa3476
Binary files /dev/null and b/src/testsystem/aap.interleave differ
diff --git a/src/testsystem/cdout b/src/testsystem/cdout
new file mode 100644 (file)
index 0000000..522a88a
--- /dev/null
@@ -0,0 +1 @@
+\e'\e\e\e'S\e'\14\e'\14\e'\e\e\e'R\e'\14\e'\14\r
diff --git a/src/testsystem/cdout2 b/src/testsystem/cdout2
new file mode 100644 (file)
index 0000000..76f296b
Binary files /dev/null and b/src/testsystem/cdout2 differ
diff --git a/src/testsystem/doit b/src/testsystem/doit
new file mode 100644 (file)
index 0000000..b3ae569
--- /dev/null
@@ -0,0 +1,12 @@
+tter -p /dev/ttyS1 prout
+tter -p /dev/ttyS1 prout
+tter -p /dev/ttyS1 prout
+tter -p /dev/ttyS1 prout
+tter -p /dev/ttyS1 prout
+tter -p /dev/ttyS1 prout
+tter -p /dev/ttyS1 prout
+tter -p /dev/ttyS1 prout
+tter -p /dev/ttyS1 prout
+tter -p /dev/ttyS1 prout
+tter -p /dev/ttyS1 prout
+tter -p /dev/ttyS1 prout
index 4bc77d9..9e3271f 100644 (file)
@@ -1,2 +1,2 @@
 #!/bin/sh
-gcc -g -DPOSIX_TERMIOS testter.c -o testter
+gcc -g -DPOSIX_TERMIOS tter.c -o tter
diff --git a/src/testsystem/n.sh.org b/src/testsystem/n.sh.org
new file mode 100644 (file)
index 0000000..4bc77d9
--- /dev/null
@@ -0,0 +1,2 @@
+#!/bin/sh
+gcc -g -DPOSIX_TERMIOS testter.c -o testter
diff --git a/src/testsystem/prout b/src/testsystem/prout
new file mode 100644 (file)
index 0000000..a0564bd
--- /dev/null
@@ -0,0 +1 @@
+\e)H\e)e\e)l\e)l\e)o\e) \e)P\e)r\e)i\e)n\e)t\e)e\e)r\e)!\e)\r\r
diff --git a/src/testsystem/prout2 b/src/testsystem/prout2
new file mode 100644 (file)
index 0000000..713645b
--- /dev/null
@@ -0,0 +1 @@
+\e)H\e)e\e)l\e)l\e)o\e) \e)P\e)r\e)i\e)n\e)t\e)e\e)r\e)!\e)\r\e)H\e)e\e)l\e)l\e)o\e) \e)P\e)r\e)i\e)n\e)t\e)e\e)r\e)!\e)\r\e)H\e)e\e)l\e)l\e)o\e) \e)P\e)r\e)i\e)n\e)t\e)e\e)r\e)!\e)\r\e)H\e)e\e)l\e)l\e)o\e) \e)P\e)r\e)i\e)n\e)t\e)e\e)r\e)!\e)\r\e)H\e)e\e)l\e)l\e)o\e) \e)P\e)r\e)i\e)n\e)t\e)e\e)r\e)!\e)\r\e)H\e)e\e)l\e)l\e)o\e) \e)P\e)r\e)i\e)n\e)t\e)e\e)r\e)!\e)\r\e)H\e)e\e)l\e)l\e)o\e) \e)P\e)r\e)i\e)n\e)t\e)e\e)r\e)!\e)\r\e)H\e)e\e)l\e)l\e)o\e) \e)P\e)r\e)i\e)n\e)t\e)e\e)r\e)!\e)\r\r
diff --git a/src/testsystem/rtc b/src/testsystem/rtc
new file mode 100644 (file)
index 0000000..a0ae62c
Binary files /dev/null and b/src/testsystem/rtc differ
diff --git a/src/testsystem/rtc1 b/src/testsystem/rtc1
new file mode 100644 (file)
index 0000000..9a5aef8
Binary files /dev/null and b/src/testsystem/rtc1 differ
diff --git a/src/testsystem/rtcon b/src/testsystem/rtcon
new file mode 100644 (file)
index 0000000..80de698
--- /dev/null
@@ -0,0 +1 @@
+\eR\r
diff --git a/src/testsystem/rtcrec b/src/testsystem/rtcrec
new file mode 100644 (file)
index 0000000..fab0193
--- /dev/null
@@ -0,0 +1 @@
+\er\r
diff --git a/src/testsystem/scan b/src/testsystem/scan
new file mode 100644 (file)
index 0000000..537919c
Binary files /dev/null and b/src/testsystem/scan differ
diff --git a/src/testsystem/testter.c.new1 b/src/testsystem/testter.c.new1
new file mode 100644 (file)
index 0000000..3f0cdb1
--- /dev/null
@@ -0,0 +1,325 @@
+/* ter.c for uzi180 by Nick */\r
+\r
+#include <stdio.h>\r
+#include <fcntl.h>\r
+#ifdef POSIX_TERMIOS\r
+#include <termios.h>\r
+#else\r
+#include <sgtty.h>\r
+#endif\r
+#include <unistd.h>\r
+\r
+#include <sys/time.h>\r
+#include <sys/select.h>\r
+\r
+/* ------------------------------------------------------------------------- */\r
+/* definitions */\r
+\r
+#define BUFFER 0x80\r
+\r
+/* ------------------------------------------------------------------------- */\r
+/* prototypes */\r
+\r
+void process_esc(char *buf, int *count);\r
+void exit_error(char *mess1, char *mess2);\r
+void exit_restore(void);\r
+void entry_setup(void);\r
+int main(int argc, char **argv);\r
+\r
+/* ------------------------------------------------------------------------- */\r
+/* global variables */\r
+\r
+int fd_in, fd_out, fd_ter, fd_file;\r
+char *pname;\r
+char usage[80];\r
+#ifdef POSIX_TERMIOS\r
+struct termios state_in, state_ter;\r
+#else\r
+int raw_in, raw_ter;\r
+#endif\r
+\r
+/* ------------------------------------------------------------------------- */\r
+\r
+void exit_error(char *mess1, char *mess2)\r
+{\r
+        char header[20];\r
+       exit_restore();\r
+        sprintf(header, "%s: ", pname);\r
+       write(fileno(stderr), header, strlen(header));\r
+       write(fileno(stderr), mess1, strlen(mess1));\r
+       perror(mess2);\r
+       exit(1);\r
+}\r
+\r
+void exit_restore(void)\r
+       {\r
+#ifdef POSIX_TERMIOS\r
+       struct termios state;\r
+#else\r
+       struct sgttyb state;\r
+#endif\r
+\r
+       if (fd_in >= 0 && isatty(fd_in))\r
+               {\r
+#ifdef POSIX_TERMIOS\r
+               tcsetattr(fd_in, TCSADRAIN, &state_in);\r
+#else\r
+               gtty(fd_in, &state);\r
+               state.sg_flags = raw_in;\r
+               stty(fd_in, &state);\r
+#endif\r
+               }\r
+\r
+       if (fd_ter >= 0 && isatty(fd_ter))\r
+               {\r
+#ifdef POSIX_TERMIOS\r
+               tcsetattr(fd_ter, TCSADRAIN, &state_ter);\r
+#else\r
+               gtty(fd_ter, &state);\r
+               state.sg_flags = raw_ter;\r
+               stty(fd_ter, &state);\r
+#endif\r
+               close(fd_ter);\r
+               close(fd_file);\r
+               }\r
+       }\r
+\r
+void entry_setup(void)\r
+       {\r
+#ifdef POSIX_TERMIOS\r
+       struct termios state;\r
+#else\r
+       struct sgttyb state;\r
+#endif\r
+\r
+       fd_in = fileno(stdin);\r
+       fd_out = fileno(stdout);\r
+\r
+       if (isatty(fd_in))\r
+               {\r
+#ifdef POSIX_TERMIOS\r
+               tcgetattr(fd_in, &state);\r
+               memcpy(&state_in, &state, sizeof(struct termios));\r
+               state.c_iflag &= (IGNBRK | IGNCR | INLCR | ICRNL | IUCLC |\r
+                               IXANY | IXON | IXOFF | INPCK | ISTRIP);\r
+               state.c_iflag |= (BRKINT | IGNPAR);\r
+               state.c_oflag &= ~OPOST;\r
+#ifdef CYGWIN\r
+               state.c_lflag &= ~(ECHONL | NOFLSH |\r
+#else\r
+               state.c_lflag &= ~(XCASE | ECHONL | NOFLSH |\r
+#endif\r
+                                ICANON | ISIG | ECHO);\r
+               state.c_cflag |= CREAD;\r
+               state.c_cc[VTIME] = 5;\r
+               state.c_cc[VMIN] = 1;\r
+               tcsetattr(fd_in, TCSADRAIN, &state);\r
+               tcsetattr(fd_in, TCSADRAIN, &state);\r
+\r
+#else\r
+               gtty(fd_in, &state);\r
+               raw_in = state.sg_flags;\r
+               state.sg_flags = RAW | UNBUFF;\r
+               stty(fd_in, &state);\r
+#endif\r
+               }\r
+\r
+       if (isatty(fd_ter))\r
+               {\r
+#ifdef POSIX_TERMIOS\r
+               tcgetattr(fd_ter, &state);\r
+               memcpy(&state_ter, &state, sizeof(struct termios));\r
+\r
+#if 0\r
+               state.c_iflag &= (IGNBRK | IGNCR | INLCR | ICRNL | IUCLC |\r
+                               IXANY | IXON | IXOFF | INPCK | ISTRIP);\r
+               state.c_iflag |= (BRKINT | IGNPAR);\r
+               state.c_oflag &= ~OPOST;\r
+               state.c_lflag &= ~(XCASE | ECHONL | NOFLSH |\r
+                                ICANON | ISIG | ECHO);\r
+               state.c_cflag |= CREAD;\r
+               state.c_cc[VTIME] = 5;\r
+               state.c_cc[VMIN] = 1;\r
+\r
+#endif\r
+#ifndef CYGWIN\r
+               cfmakeraw(&state);\r
+               //tcsetattr(fd_ter, TCSADRAIN, &state);\r
+               tcsetattr(fd_ter, TCSANOW, &state);\r
+#endif\r
+#else\r
+               gtty(fd_ter, &state);\r
+               raw_ter = state.sg_flags;\r
+               state.sg_flags = RAW | UNBUFF;\r
+               stty(fd_ter, &state);\r
+#endif\r
+               }\r
+       }\r
+\r
+void process_esc(char *buf, int *count)\r
+       {\r
+       switch (buf[0])\r
+               {\r
+       case 'x':\r
+       case 'X':\r
+               exit_restore();\r
+               fprintf(stderr, "\n%s: exiting\n", pname);\r
+               exit(0);\r
+\r
+       case 0x1b:\r
+               return; /* with count = 1, so as to write it */\r
+\r
+       default:\r
+               *count = 0;\r
+               return;\r
+               }\r
+       }\r
+\r
+int main(int argc, char **argv)\r
+{\r
+       int escflag, count;\r
+       char buf[BUFFER];\r
+\r
+        pname = argv[0];\r
+\r
+       sprintf(usage, "usage: %s -r|-p devicename filename", pname);\r
+\r
+       if (argc < 4)\r
+       {\r
+               printf("%s\n", usage);\r
+               exit(1);\r
+       }\r
+\r
+       fd_in = -1;\r
+       fd_out = -1;\r
+\r
+       fd_ter = open(argv[2], O_RDWR);\r
+       if (fd_ter < 0)\r
+       {\r
+               exit_error("can't open ", argv[1]);\r
+       }\r
+\r
+       entry_setup();\r
+\r
+       escflag = 0;\r
+\r
+       if (!strcmp("-p", argv[1]))\r
+       {\r
+               /*\r
+                * PLAYBACK\r
+                */\r
+               fd_file = open(argv[3], O_RDONLY);\r
+\r
+               if (fd_file < 0)\r
+               {\r
+                       exit_error("can't open ", argv[3]);\r
+               }\r
+\r
+               count = read(fd_file, buf, BUFFER);\r
+               if (count < 0)\r
+               {\r
+                       exit_error("can't read ", argv[3]);\r
+               }\r
+\r
+               if (count)\r
+               {\r
+                       int i;\r
+\r
+                       for (i = 0; i < count; i++)\r
+                       {\r
+                               struct timeval t;\r
+\r
+                               t.tv_sec = 0;\r
+                               t.tv_usec = 100000; /* 100ms */\r
+\r
+                               if (write(fd_ter, &buf[i], 1) != 1)\r
+                               {\r
+                                       exit_error("can't write ", argv[2]);\r
+                               }\r
+\r
+                                /*\r
+                                 * A little delay to give the character just\r
+                                 * written time to be transmitted\r
+                                 */\r
+                               (void)select(0, NULL, NULL, NULL, &t);\r
+                       }\r
+               }\r
+\r
+       }\r
+        else if (!strcmp("-r", argv[1]))\r
+       {\r
+               /*\r
+                * RECORD\r
+                */\r
+               fprintf(stderr, "%s: ready\n", pname);\r
+               fflush(stderr);\r
+\r
+               fd_file = open(argv[3], O_WRONLY|O_CREAT);\r
+\r
+               if (fd_file < 0)\r
+               {\r
+                       exit_error("can't open ", argv[3]);\r
+               }\r
+\r
+               while (1)\r
+               {\r
+                       fd_set readfds;\r
+                       int fdmax, fdrdy;\r
+\r
+                       FD_ZERO(&readfds);\r
+                       FD_SET(fd_in, &readfds);\r
+                       FD_SET(fd_ter, &readfds);\r
+\r
+                       fdmax = fd_in > fd_ter ? fd_in : fd_ter;\r
+                       fdrdy = select(fdmax+1, &readfds, NULL, NULL, NULL);\r
+\r
+                       if (fdrdy < 0)\r
+                       {\r
+                               exit_error("can't select on read ", "select");\r
+                       }\r
+\r
+                       if (FD_ISSET(fd_in, &readfds))\r
+                       {\r
+                               exit_restore();\r
+                               fprintf(stderr, "%s: exiting\n", pname);\r
+                               exit(0);\r
+                       }\r
+\r
+                       if (FD_ISSET(fd_ter, &readfds))\r
+                       {\r
+                               count = read(fd_ter, buf, BUFFER);\r
+                               if (count < 0)\r
+                               {\r
+                                       exit_error("can't read ", argv[1]);\r
+                               }\r
+\r
+                               if (count)\r
+                               {\r
+                                       if (write(fd_out, buf, count) != count)\r
+                                       {\r
+                                               exit_error("can't write ", "stdout");\r
+                                       }\r
+\r
+                                       if (write(fd_file, buf, count) != count)\r
+                                       {\r
+                                               exit_error("can't write ", argv[3]);\r
+                                       }\r
+                               }\r
+                       }\r
+               }\r
+        }\r
+        else\r
+       {\r
+               exit_restore();\r
+               printf("%s\n", usage);\r
+               exit(1);\r
+       }\r
+\r
+       exit_restore();\r
+       fprintf(stderr, "%s: ready\n", pname);\r
+       close(fd_ter);\r
+       close(fd_file);\r
+       exit(0);\r
+}\r
+\r
+/* ------------------------------------------------------------------------- */\r
diff --git a/src/testsystem/testter.exe b/src/testsystem/testter.exe
new file mode 100644 (file)
index 0000000..b12a5f1
Binary files /dev/null and b/src/testsystem/testter.exe differ
diff --git a/src/testsystem/tsout b/src/testsystem/tsout
new file mode 100644 (file)
index 0000000..335960c
--- /dev/null
@@ -0,0 +1 @@
+\e&\e\e\e&S\e&2\e&2\e&\e\e\e&R\e&2\e&2\r
diff --git a/src/testsystem/tter.c b/src/testsystem/tter.c
new file mode 100644 (file)
index 0000000..df25bba
--- /dev/null
@@ -0,0 +1,498 @@
+/*\r
+ * tter.c for uzi180 by Nick & Rob\r
+ *\r
+ * Allows recording and playback of binary data received from/to a serial port\r
+ */\r
+#include <stdio.h>\r
+#include <fcntl.h>\r
+#include <stdlib.h>\r
+\r
+#ifdef POSIX_TERMIOS\r
+#include <termios.h>\r
+#else\r
+#include <sgtty.h>\r
+#endif\r
+\r
+#include <unistd.h>\r
+\r
+#include <sys/time.h>\r
+#include <sys/select.h>\r
+\r
+/* ------------------------------------------------------------------------- */\r
+/* definitions */\r
+\r
+#define DEF_BAUDRATE   38400\r
+#define DEF_DELAY      100  /* ms */\r
+\r
+#define USAGE  "usage: %s <-r>|<-p [-d <delay ms>]> [-s <baudrate>] <devicename> <filename>"\r
+#define BUFSIZE 0x80\r
+#define P_FLAG 1\r
+#define        R_FLAG  2\r
+#define        S_FLAG  4\r
+#define        D_FLAG  8\r
+\r
+typedef struct\r
+{\r
+       int flags;      /* command line options flags */\r
+       int speed;      /* terminal baudrate */\r
+       int delay;      /* delay between characters during playback */\r
+       char *tname;    /* terminal device name */\r
+       char *pname;    /* this program's name */\r
+       char *fname;    /* filename for recording/playback */\r
+} cmdlineT;\r
+\r
+\r
+/* ------------------------------------------------------------------------- */\r
+/* prototypes */\r
+\r
+void process_esc(char *buf, int *count);\r
+void exit_error(char *mess1, char *mess2);\r
+void exit_restore(void);\r
+void entry_setup(void);\r
+int get_baudrate(int speed);\r
+int parse_cmd_line(int argc, char **argv);\r
+int main(int argc, char **argv);\r
+\r
+/* ------------------------------------------------------------------------- */\r
+/* global variables */\r
+\r
+int fd_in, fd_out, fd_ter;\r
+FILE *file;\r
+cmdlineT cmdline;\r
+char buf[BUFSIZE];\r
+char usage[80];\r
+\r
+\r
+#ifdef POSIX_TERMIOS\r
+struct termios state_in, state_ter;\r
+#else\r
+int raw_in, raw_ter;\r
+#endif\r
+\r
+/* ------------------------------------------------------------------------- */\r
+\r
+void exit_error(char *mess1, char *mess2)\r
+{\r
+        char header[20];\r
+       exit_restore();\r
+        sprintf(header, "%s: ", cmdline.pname);\r
+       write(fileno(stderr), header, strlen(header));\r
+       write(fileno(stderr), mess1, strlen(mess1));\r
+       perror(mess2);\r
+       exit(1);\r
+}\r
+\r
+void exit_restore(void)\r
+{\r
+#ifdef POSIX_TERMIOS\r
+       struct termios state;\r
+#else\r
+       struct sgttyb state;\r
+#endif\r
+\r
+       if (fd_in >= 0 && isatty(fd_in))\r
+       {\r
+#ifdef POSIX_TERMIOS\r
+               tcsetattr(fd_in, TCSADRAIN, &state_in);\r
+#else\r
+               gtty(fd_in, &state);\r
+               state.sg_flags = raw_in;\r
+               stty(fd_in, &state);\r
+#endif\r
+       }\r
+\r
+       if (fd_ter >= 0 && isatty(fd_ter))\r
+       {\r
+#ifdef POSIX_TERMIOS\r
+               tcsetattr(fd_ter, TCSADRAIN, &state_ter);\r
+#else\r
+               gtty(fd_ter, &state);\r
+               state.sg_flags = raw_ter;\r
+               stty(fd_ter, &state);\r
+#endif\r
+       }\r
+\r
+       close(fd_ter);\r
+       fclose(file);\r
+}\r
+\r
+void entry_setup(void)\r
+{\r
+#ifdef POSIX_TERMIOS\r
+       struct termios state;\r
+#else\r
+       struct sgttyb state;\r
+#endif\r
+\r
+       fd_in = fileno(stdin);\r
+       fd_out = fileno(stdout);\r
+\r
+       if (isatty(fd_in))\r
+       {\r
+#ifdef POSIX_TERMIOS\r
+               tcgetattr(fd_in, &state);\r
+               memcpy(&state_in, &state, sizeof(struct termios));\r
+\r
+               state.c_iflag &= (IGNBRK | IGNCR | INLCR | ICRNL | IUCLC |\r
+                               IXANY | IXON | IXOFF | INPCK | ISTRIP);\r
+               state.c_iflag |= (BRKINT | IGNPAR);\r
+               state.c_oflag &= ~OPOST;\r
+\r
+#ifdef XCASE   /* Actually non-POSIX */\r
+               state.c_lflag &= ~(XCASE | ECHONL | NOFLSH |\r
+                                ICANON | ISIG | ECHO);\r
+#else\r
+               state.c_lflag &= ~(ECHONL | NOFLSH |\r
+                                ICANON | ISIG | ECHO);\r
+#endif\r
+\r
+               state.c_cflag |= CREAD;\r
+               state.c_cc[VTIME] = 5;\r
+               state.c_cc[VMIN] = 1;\r
+\r
+               tcsetattr(fd_in, TCSADRAIN, &state);\r
+#else\r
+               gtty(fd_in, &state);\r
+               raw_in = state.sg_flags;\r
+               state.sg_flags = RAW | UNBUFF;\r
+               stty(fd_in, &state);\r
+#endif\r
+       }\r
+\r
+       if (isatty(fd_ter))\r
+       {\r
+#ifdef POSIX_TERMIOS\r
+               /* Flush any unread & unwritten data */\r
+               tcflush(fd_ter, TCIOFLUSH);\r
+\r
+               tcgetattr(fd_ter, &state);\r
+               memcpy(&state_ter, &state, sizeof(struct termios));\r
+\r
+#if 0\r
+               cfmakeraw(&state); /* Not always supported (e.g. Cygwin) */\r
+#else\r
+               /* Alternative for cfmakeraw() */\r
+               state.c_iflag &= ~(IGNBRK|BRKINT|PARMRK|ISTRIP|INLCR|IGNCR|ICRNL|IXON);\r
+               state.c_oflag &= ~OPOST;\r
+               state.c_lflag &= ~(ECHO|ECHONL|ICANON|ISIG|IEXTEN);\r
+               state.c_cflag &= ~(CSIZE|PARENB);\r
+               state.c_cflag |= CS8;\r
+#endif\r
+\r
+               if (!(cmdline.flags & S_FLAG))\r
+               {\r
+                       /* Set default baudrate */\r
+                       cmdline.speed = DEF_BAUDRATE;\r
+                       fprintf(stderr, "%s: baudrate = %d\n", cmdline.pname, cmdline.speed);\r
+               }\r
+\r
+               state.c_ispeed = translate_speed(cmdline.speed);\r
+               state.c_ospeed = translate_speed(cmdline.speed);\r
+\r
+               tcsetattr(fd_ter, TCSANOW, &state);\r
+\r
+#else\r
+               gtty(fd_ter, &state);\r
+               raw_ter = state.sg_flags;\r
+               state.sg_flags = RAW | UNBUFF;\r
+               stty(fd_ter, &state);\r
+#endif\r
+\r
+       }\r
+}\r
+\r
+void process_esc(char *buf, int *count)\r
+{\r
+       switch(buf[0])\r
+       {\r
+       case 'x':\r
+       case 'X':\r
+               exit_restore();\r
+               fprintf(stderr, "\n%s: exiting\n", cmdline.pname);\r
+               exit(0);\r
+\r
+       case 0x1b:\r
+               return; /* with count = 1, so as to write it */\r
+\r
+       default:\r
+               *count = 0;\r
+               return;\r
+       }\r
+}\r
+\r
+int translate_speed(long speed)\r
+{\r
+       int val;\r
+\r
+       switch(speed)\r
+       {\r
+       case 1200:\r
+               val = B1200;\r
+               break;\r
+       case 1800:\r
+               val = B1800;\r
+               break;\r
+       case 2400:\r
+               val = B2400;\r
+               break;\r
+       case 4800:\r
+               val = B4800;\r
+               break;\r
+       case 9600:\r
+               val = B9600;\r
+               break;\r
+       case 19200:\r
+               val = B19200;\r
+               break;\r
+       case 38400:\r
+               val = B38400;\r
+               break;\r
+       case 57600:\r
+               val = B57600;\r
+               break;\r
+       case 115200:\r
+               val = B115200;\r
+               break;\r
+       case 128000:\r
+               val = B128000;\r
+               break;\r
+       default:\r
+               val = translate_speed(DEF_BAUDRATE);\r
+               break;\r
+       }\r
+\r
+       return(val);\r
+}\r
+\r
+int parse_cmd_line(int argc, char **argv)\r
+{\r
+       int c, errflg = 0;\r
+       extern char *optarg;\r
+       extern int optind;\r
+\r
+       cmdline.flags = 0;\r
+       cmdline.speed = 0;\r
+       cmdline.delay = 0;\r
+       cmdline.tname = NULL;\r
+       cmdline.fname = NULL;\r
+\r
+       while ((c = getopt(argc, argv, "rps:d:")) != EOF)\r
+       {\r
+               switch(c)\r
+               {\r
+               /* 'r' and 'p' opts are mutually exclusive */\r
+               case 'r':\r
+                       if (cmdline.flags & P_FLAG)\r
+                               errflg++;\r
+                       else\r
+                               cmdline.flags |= R_FLAG;\r
+                       break;\r
+               case 'p':\r
+                       if (cmdline.flags & R_FLAG)\r
+                               errflg++;\r
+                       else\r
+                               cmdline.flags |= P_FLAG;\r
+                       break;\r
+               case 's':\r
+                       cmdline.speed = atoi(optarg);\r
+                       cmdline.flags |= S_FLAG;\r
+                       break;\r
+               case 'd':\r
+                       if (cmdline.flags & P_FLAG)\r
+                       {\r
+                               cmdline.delay = atoi(optarg);\r
+                               cmdline.flags |= D_FLAG;\r
+                       }\r
+                       else\r
+                               errflg++;\r
+                       break;\r
+               default:\r
+                       errflg++;\r
+               }\r
+\r
+               if (errflg) return(-1);\r
+       }\r
+\r
+       if (argc - optind != 2) return(-1);\r
+\r
+       cmdline.tname = argv[optind];\r
+       cmdline.fname = argv[++optind];\r
+\r
+       return 0;\r
+}\r
+\r
+int main(int argc, char **argv)\r
+{\r
+       int escflag, count;\r
+       char *mode;\r
+\r
+       cmdline.pname = argv[0];\r
+       sprintf(usage, USAGE, cmdline.pname);\r
+\r
+       if (parse_cmd_line(argc, argv) < 0)\r
+       {\r
+               (void)fprintf(stderr, "%s\n", usage);\r
+               exit(1);\r
+       }\r
+\r
+       fd_in = -1;\r
+       fd_out = -1;\r
+\r
+       fd_ter = open(cmdline.tname, O_RDWR);\r
+\r
+       if (fd_ter < 0)\r
+       {\r
+               exit_error("can't open ", cmdline.tname);\r
+       }\r
+\r
+       entry_setup();\r
+\r
+       escflag = 0;\r
+\r
+       if (cmdline.flags & P_FLAG)\r
+       {\r
+               /*\r
+                * PLAYBACK\r
+                */\r
+               mode = "rb";\r
+               file = fopen(cmdline.fname, mode);\r
+\r
+               if (file == NULL)\r
+               {\r
+                       exit_error("can't open ", cmdline.fname);\r
+               }\r
+\r
+               count = fread(buf, 1, BUFSIZE, file);\r
+\r
+               while (count)\r
+               {\r
+                       int i;\r
+\r
+                       if (ferror(file) != 0)\r
+                       {\r
+                               exit_error("can't read ", cmdline.fname);\r
+                       }\r
+\r
+                       if (feof(file))\r
+                       {\r
+                               if (buf[count-1] == 0x0a)\r
+                                       if (buf[count-2] == 0x0d)\r
+                                               /* DOS: skip 0x0d 0x0a */\r
+                                               count -= 2;\r
+                                       else\r
+                                               /* UNIX: skip 0x0a */\r
+                                               count -= 1;\r
+                       }\r
+\r
+                       for (i = 0; i < count; i++)\r
+                       {\r
+                               struct timeval t;\r
+\r
+                               t.tv_sec = 0;\r
+\r
+                               if (cmdline.flags & D_FLAG)\r
+                                       t.tv_usec = cmdline.delay*1000; \r
+                               else\r
+                                       t.tv_usec = DEF_DELAY*1000;\r
+\r
+                               if (write(fd_ter, &buf[i], 1) != 1)\r
+                               {\r
+                                       exit_error("can't write ", cmdline.tname);\r
+                               }\r
+\r
+#ifdef POSIX_TERMIOS\r
+                               /* Wait for output to complete */\r
+                               tcdrain(fd_ter);\r
+#endif\r
+\r
+                               /* User selected or default delay */\r
+                               (void)select(0, NULL, NULL, NULL, &t);\r
+                       }\r
+\r
+                       count = fread(buf, 1, BUFSIZE, file);\r
+               }\r
+\r
+               fprintf(stderr, "%s: ready\n", cmdline.pname);\r
+       }\r
+       else if (cmdline.flags & R_FLAG)\r
+       {\r
+               /*\r
+                * RECORDING\r
+                */\r
+               fprintf(stderr, "%s: recording; hit any key to stop\n", cmdline.pname);\r
+               fflush(stderr);\r
+\r
+               /*\r
+                * RPB: The umask() doesn't appear to work correctly under\r
+                * Cygwin hence the weird "wb+" mode to specify a file which\r
+                * permits reading & writing. Should also work under Linux and\r
+                * other UNIX versions.\r
+                */\r
+               //umask(0133); /* == 644 file permission */\r
+               mode = "wb+";\r
+               file = fopen(cmdline.fname, mode);\r
+\r
+               if (file == NULL)\r
+               {\r
+                       exit_error("can't open ", cmdline.fname);\r
+               }\r
+\r
+               while (1)\r
+               {\r
+                       fd_set readfds;\r
+                       int fdmax, fdrdy;\r
+\r
+                       FD_ZERO(&readfds);\r
+                       FD_SET(fd_in, &readfds);\r
+                       FD_SET(fd_ter, &readfds);\r
+\r
+                       fdmax = fd_in > fd_ter ? fd_in : fd_ter;\r
+                       fdrdy = select(fdmax+1, &readfds, NULL, NULL, NULL);\r
+\r
+                       if (fdrdy < 0)\r
+                       {\r
+                               exit_error("can't select on read ", "select");\r
+                       }\r
+\r
+                       if (FD_ISSET(fd_in, &readfds))\r
+                       {\r
+                               fprintf(stderr, "\n%s: stopped\n", cmdline.pname);\r
+                               break;\r
+                       }\r
+\r
+                       if (FD_ISSET(fd_ter, &readfds))\r
+                       {\r
+                               count = read(fd_ter, buf, BUFSIZE);\r
+                               if (count < 0)\r
+                               {\r
+                                       exit_error("can't read ", cmdline.tname);\r
+                               }\r
+\r
+                               if (count)\r
+                               {\r
+                                       if (write(fd_out, buf, count) != count)\r
+                                       {\r
+                                               exit_error("can't write ", "stdout");\r
+                                       }\r
+\r
+                                       if ((fwrite(buf, 1, count, file) != count) ||\r
+                                           (ferror(file) != 0))\r
+                                       {\r
+                                               exit_error("can't write ", cmdline.fname);\r
+                                       }\r
+                               }\r
+                       }\r
+               }\r
+        }\r
+        else\r
+       {\r
+               exit_restore();\r
+               fprintf(stderr, "%s\n", usage);\r
+               exit(1);\r
+       }\r
+\r
+       exit_restore();\r
+       exit(0);\r
+}\r
+\r
+/* ------------------------------------------------------------------------- */\r
diff --git a/src/testsystem/tter.c.save b/src/testsystem/tter.c.save
new file mode 100644 (file)
index 0000000..684dd4a
--- /dev/null
@@ -0,0 +1,485 @@
+/*\r
+ * tter.c for uzi180 by Nick & Rob\r
+ *\r
+ * Allows recording and playback of binary data received from/to a serial port\r
+ */\r
+#include <stdio.h>\r
+#include <fcntl.h>\r
+#include <stdlib.h>\r
+\r
+#ifdef POSIX_TERMIOS\r
+#include <termios.h>\r
+#else\r
+#include <sgtty.h>\r
+#endif\r
+\r
+#include <unistd.h>\r
+\r
+#include <sys/time.h>\r
+#include <sys/select.h>\r
+\r
+/* ------------------------------------------------------------------------- */\r
+/* definitions */\r
+\r
+#define DEF_BAUDRATE   38400\r
+#define DEF_DELAY      100  /* ms */\r
+\r
+#define USAGE  "usage: %s <-r>|<-p [-d <delay ms>]> [-s <baudrate>] <devicename> <filename>"\r
+#define BUFSIZE 0x80\r
+#define P_FLAG 1\r
+#define        R_FLAG  2\r
+#define        S_FLAG  4\r
+#define        D_FLAG  8\r
+\r
+typedef struct\r
+{\r
+       int flags;      /* command line options flags */\r
+       int speed;      /* terminal baudrate */\r
+       int delay;      /* delay between characters during playback */\r
+       char *tname;    /* terminal device name */\r
+       char *pname;    /* this program's name */\r
+       char *fname;    /* filename for recording/playback */\r
+} cmdlineT;\r
+\r
+\r
+/* ------------------------------------------------------------------------- */\r
+/* prototypes */\r
+\r
+void process_esc(char *buf, int *count);\r
+void exit_error(char *mess1, char *mess2);\r
+void exit_restore(void);\r
+void entry_setup(void);\r
+int get_baudrate(int speed);\r
+int parse_cmd_line(int argc, char **argv);\r
+int main(int argc, char **argv);\r
+\r
+/* ------------------------------------------------------------------------- */\r
+/* global variables */\r
+\r
+int fd_in, fd_out, fd_ter;\r
+FILE *file;\r
+cmdlineT cmdline;\r
+char buf[BUFSIZE];\r
+char usage[80];\r
+\r
+\r
+#ifdef POSIX_TERMIOS\r
+struct termios state_in, state_ter;\r
+#else\r
+int raw_in, raw_ter;\r
+#endif\r
+\r
+/* ------------------------------------------------------------------------- */\r
+\r
+void exit_error(char *mess1, char *mess2)\r
+{\r
+        char header[20];\r
+       exit_restore();\r
+        sprintf(header, "%s: ", cmdline.pname);\r
+       write(fileno(stderr), header, strlen(header));\r
+       write(fileno(stderr), mess1, strlen(mess1));\r
+       perror(mess2);\r
+       exit(1);\r
+}\r
+\r
+void exit_restore(void)\r
+{\r
+#ifdef POSIX_TERMIOS\r
+       struct termios state;\r
+#else\r
+       struct sgttyb state;\r
+#endif\r
+\r
+       if (fd_in >= 0 && isatty(fd_in))\r
+       {\r
+#ifdef POSIX_TERMIOS\r
+               tcsetattr(fd_in, TCSADRAIN, &state_in);\r
+#else\r
+               gtty(fd_in, &state);\r
+               state.sg_flags = raw_in;\r
+               stty(fd_in, &state);\r
+#endif\r
+       }\r
+\r
+       if (fd_ter >= 0 && isatty(fd_ter))\r
+       {\r
+#ifdef POSIX_TERMIOS\r
+               tcsetattr(fd_ter, TCSADRAIN, &state_ter);\r
+#else\r
+               gtty(fd_ter, &state);\r
+               state.sg_flags = raw_ter;\r
+               stty(fd_ter, &state);\r
+#endif\r
+       }\r
+\r
+       close(fd_ter);\r
+       fclose(file);\r
+}\r
+\r
+void entry_setup(void)\r
+{\r
+#ifdef POSIX_TERMIOS\r
+       struct termios state;\r
+#else\r
+       struct sgttyb state;\r
+#endif\r
+\r
+       fd_in = fileno(stdin);\r
+       fd_out = fileno(stdout);\r
+\r
+       if (isatty(fd_in))\r
+       {\r
+#ifdef POSIX_TERMIOS\r
+               tcgetattr(fd_in, &state);\r
+               memcpy(&state_in, &state, sizeof(struct termios));\r
+\r
+               state.c_iflag &= (IGNBRK | IGNCR | INLCR | ICRNL | IUCLC |\r
+                               IXANY | IXON | IXOFF | INPCK | ISTRIP);\r
+               state.c_iflag |= (BRKINT | IGNPAR);\r
+               state.c_oflag &= ~OPOST;\r
+\r
+#ifdef XCASE   /* Actually non-POSIX */\r
+               state.c_lflag &= ~(XCASE | ECHONL | NOFLSH |\r
+                                ICANON | ISIG | ECHO);\r
+#else\r
+               state.c_lflag &= ~(ECHONL | NOFLSH |\r
+                                ICANON | ISIG | ECHO);\r
+#endif\r
+\r
+               state.c_cflag |= CREAD;\r
+               state.c_cc[VTIME] = 5;\r
+               state.c_cc[VMIN] = 1;\r
+\r
+               tcsetattr(fd_in, TCSADRAIN, &state);\r
+#else\r
+               gtty(fd_in, &state);\r
+               raw_in = state.sg_flags;\r
+               state.sg_flags = RAW | UNBUFF;\r
+               stty(fd_in, &state);\r
+#endif\r
+       }\r
+\r
+       if (isatty(fd_ter))\r
+       {\r
+#ifdef POSIX_TERMIOS\r
+               /* Flush any unread & unwritten data */\r
+               tcflush(fd_ter, TCIOFLUSH);\r
+\r
+               tcgetattr(fd_ter, &state);\r
+               memcpy(&state_ter, &state, sizeof(struct termios));\r
+\r
+#if 0\r
+               cfmakeraw(&state); /* Not always supported (e.g. Cygwin) */\r
+#else\r
+               /* Alternative for cfmakeraw() */\r
+               state.c_iflag &= ~(IGNBRK|BRKINT|PARMRK|ISTRIP|INLCR|IGNCR|ICRNL|IXON);\r
+               state.c_oflag &= ~OPOST;\r
+               state.c_lflag &= ~(ECHO|ECHONL|ICANON|ISIG|IEXTEN);\r
+               state.c_cflag &= ~(CSIZE|PARENB);\r
+               state.c_cflag |= CS8;\r
+#endif\r
+\r
+               if (!(cmdline.flags & S_FLAG))\r
+               {\r
+                       /* Set default baudrate */\r
+                       cmdline.speed = DEF_BAUDRATE;\r
+                       fprintf(stderr, "%s: baudrate = %d\n", cmdline.pname, cmdline.speed);\r
+               }\r
+\r
+               state.c_ispeed = translate_speed(cmdline.speed);\r
+               state.c_ospeed = translate_speed(cmdline.speed);\r
+\r
+               tcsetattr(fd_ter, TCSANOW, &state);\r
+\r
+#else\r
+               gtty(fd_ter, &state);\r
+               raw_ter = state.sg_flags;\r
+               state.sg_flags = RAW | UNBUFF;\r
+               stty(fd_ter, &state);\r
+#endif\r
+\r
+       }\r
+}\r
+\r
+void process_esc(char *buf, int *count)\r
+{\r
+       switch(buf[0])\r
+       {\r
+       case 'x':\r
+       case 'X':\r
+               exit_restore();\r
+               fprintf(stderr, "\n%s: exiting\n", cmdline.pname);\r
+               exit(0);\r
+\r
+       case 0x1b:\r
+               return; /* with count = 1, so as to write it */\r
+\r
+       default:\r
+               *count = 0;\r
+               return;\r
+       }\r
+}\r
+\r
+int translate_speed(long speed)\r
+{\r
+       int val;\r
+\r
+       switch(speed)\r
+       {\r
+       case 1200:\r
+               val = B1200;\r
+               break;\r
+       case 1800:\r
+               val = B1800;\r
+               break;\r
+       case 2400:\r
+               val = B2400;\r
+               break;\r
+       case 4800:\r
+               val = B4800;\r
+               break;\r
+       case 9600:\r
+               val = B9600;\r
+               break;\r
+       case 19200:\r
+               val = B19200;\r
+               break;\r
+       case 38400:\r
+               val = B38400;\r
+               break;\r
+       case 57600:\r
+               val = B57600;\r
+               break;\r
+       case 115200:\r
+               val = B115200;\r
+               break;\r
+       case 128000:\r
+               val = B128000;\r
+               break;\r
+       default:\r
+               val = translate_speed(DEF_BAUDRATE);\r
+               break;\r
+       }\r
+\r
+       return(val);\r
+}\r
+\r
+int parse_cmd_line(int argc, char **argv)\r
+{\r
+       int c, errflg = 0;\r
+       extern char *optarg;\r
+       extern int optind;\r
+\r
+       cmdline.flags = 0;\r
+       cmdline.speed = 0;\r
+       cmdline.delay = 0;\r
+       cmdline.tname = NULL;\r
+       cmdline.fname = NULL;\r
+\r
+       while ((c = getopt(argc, argv, "rps:d:")) != EOF)\r
+       {\r
+               switch(c)\r
+               {\r
+               /* 'r' and 'p' opts are mutually exclusive */\r
+               case 'r':\r
+                       if (cmdline.flags & P_FLAG)\r
+                               errflg++;\r
+                       else\r
+                               cmdline.flags |= R_FLAG;\r
+                       break;\r
+               case 'p':\r
+                       if (cmdline.flags & R_FLAG)\r
+                               errflg++;\r
+                       else\r
+                               cmdline.flags |= P_FLAG;\r
+                       break;\r
+               case 's':\r
+                       cmdline.speed = atoi(optarg);\r
+                       cmdline.flags |= S_FLAG;\r
+                       break;\r
+               case 'd':\r
+                       if (cmdline.flags & P_FLAG)\r
+                       {\r
+                               cmdline.delay = atoi(optarg);\r
+                               cmdline.flags |= D_FLAG;\r
+                       }\r
+                       else\r
+                               errflg++;\r
+                       break;\r
+               default:\r
+                       errflg++;\r
+               }\r
+\r
+               if (errflg) return(-1);\r
+       }\r
+\r
+       if (argc - optind != 2) return(-1);\r
+\r
+       cmdline.tname = argv[optind];\r
+       cmdline.fname = argv[++optind];\r
+\r
+       return 0;\r
+}\r
+\r
+int main(int argc, char **argv)\r
+{\r
+       int escflag, count;\r
+       char *mode;\r
+\r
+       cmdline.pname = argv[0];\r
+       sprintf(usage, USAGE, cmdline.pname);\r
+\r
+       if (parse_cmd_line(argc, argv) < 0)\r
+       {\r
+               (void)fprintf(stderr, "%s\n", usage);\r
+               exit(1);\r
+       }\r
+\r
+       fd_in = -1;\r
+       fd_out = -1;\r
+\r
+       fd_ter = open(cmdline.tname, O_RDWR);\r
+\r
+       if (fd_ter < 0)\r
+       {\r
+               exit_error("can't open ", cmdline.tname);\r
+       }\r
+\r
+       entry_setup();\r
+\r
+       escflag = 0;\r
+\r
+       if (cmdline.flags & P_FLAG)\r
+       {\r
+               /*\r
+                * PLAYBACK\r
+                */\r
+               mode = "rb";\r
+               file = fopen(cmdline.fname, mode);\r
+\r
+               if (file == NULL)\r
+               {\r
+                       exit_error("can't open ", cmdline.fname);\r
+               }\r
+\r
+               count = fread(buf, 1, BUFSIZE, file);\r
+\r
+               if (ferror(file) != 0)\r
+               {\r
+                       exit_error("can't read ", cmdline.fname);\r
+               }\r
+\r
+               if (count)\r
+               {\r
+                       int i;\r
+\r
+                       for (i = 0; i < count; i++)\r
+                       {\r
+                               struct timeval t;\r
+\r
+                               t.tv_sec = 0;\r
+\r
+                               if (cmdline.flags & D_FLAG)\r
+                                       t.tv_usec = cmdline.delay*1000; \r
+                               else\r
+                                       t.tv_usec = DEF_DELAY*1000;\r
+\r
+                               if (write(fd_ter, &buf[i], 1) != 1)\r
+                               {\r
+                                       exit_error("can't write ", cmdline.tname);\r
+                               }\r
+\r
+#ifdef POSIX_TERMIOS\r
+                               /* Wait for output to complete */\r
+                               tcdrain(fd_ter);\r
+#endif\r
+\r
+                                /* User selected or default delay */\r
+                               (void)select(0, NULL, NULL, NULL, &t);\r
+                       }\r
+\r
+                       fprintf(stderr, "%s: ready\n", cmdline.pname);\r
+               }\r
+       }\r
+       else if (cmdline.flags & R_FLAG)\r
+       {\r
+               /*\r
+                * RECORDING\r
+                */\r
+               fprintf(stderr, "%s: recording; hit any key to stop\n", cmdline.pname);\r
+               fflush(stderr);\r
+\r
+               /*\r
+                * RPB: The umask() doesn't appear to work correctly under\r
+                * Cygwin hence the weird "wb+" mode to specify a file which\r
+                * permits reading & writing. Should also work under Linux and\r
+                * other UNIX versions.\r
+                */\r
+               //umask(0133); /* == 644 file permission */\r
+               mode = "wb+";\r
+               file = fopen(cmdline.fname, mode);\r
+\r
+               if (file == NULL)\r
+               {\r
+                       exit_error("can't open ", cmdline.fname);\r
+               }\r
+\r
+               while (1)\r
+               {\r
+                       fd_set readfds;\r
+                       int fdmax, fdrdy;\r
+\r
+                       FD_ZERO(&readfds);\r
+                       FD_SET(fd_in, &readfds);\r
+                       FD_SET(fd_ter, &readfds);\r
+\r
+                       fdmax = fd_in > fd_ter ? fd_in : fd_ter;\r
+                       fdrdy = select(fdmax+1, &readfds, NULL, NULL, NULL);\r
+\r
+                       if (fdrdy < 0)\r
+                       {\r
+                               exit_error("can't select on read ", "select");\r
+                       }\r
+\r
+                       if (FD_ISSET(fd_in, &readfds))\r
+                       {\r
+                               fprintf(stderr, "\n%s: stopped\n", cmdline.pname);\r
+                               break;\r
+                       }\r
+\r
+                       if (FD_ISSET(fd_ter, &readfds))\r
+                       {\r
+                               count = read(fd_ter, buf, BUFSIZE);\r
+                               if (count < 0)\r
+                               {\r
+                                       exit_error("can't read ", cmdline.tname);\r
+                               }\r
+\r
+                               if (count)\r
+                               {\r
+                                       if (write(fd_out, buf, count) != count)\r
+                                       {\r
+                                               exit_error("can't write ", "stdout");\r
+                                       }\r
+\r
+                                       if ((fwrite(buf, 1, count, file) != count) ||\r
+                                           (ferror(file) != 0))\r
+                                       {\r
+                                               exit_error("can't write ", cmdline.fname);\r
+                                       }\r
+                               }\r
+                       }\r
+               }\r
+        }\r
+        else\r
+       {\r
+               exit_restore();\r
+               fprintf(stderr, "%s\n", usage);\r
+               exit(1);\r
+       }\r
+\r
+       exit_restore();\r
+       exit(0);\r
+}\r
+\r
+/* ------------------------------------------------------------------------- */\r
diff --git a/src/testsystem/tter.exe b/src/testsystem/tter.exe
new file mode 100644 (file)
index 0000000..fa114ac
Binary files /dev/null and b/src/testsystem/tter.exe differ
diff --git a/uzi.bat b/uzi.bat
index 5a0a0f9..c9c0010 100644 (file)
--- a/uzi.bat
+++ b/uzi.bat
@@ -1,2 +1,2 @@
 pkzipc -add=update -path=relative -recurse -excl=junk -excl=dev-* -excl=build -excl=build-b -excl=build-l -excl=*.pdb -excl=*.ilk uzi *\r
-xcopy uzi.zip \\redhat\nick\r
+REM xcopy uzi.zip \\redhat\nick\r
index 484710f..f30ee30 100644 (file)
@@ -1,2 +1,2 @@
 pkzipc -add=update -path=relative -recurse -excl=junk -excl=dev-* -excl=build -excl=build-b -excl=build-l -excl=*.pdb -excl=*.ilk uzipatch *\r
-xcopy uzipatch.zip \\redhat\nick\r
+REM xcopy uzipatch.zip \\redhat\nick\r