From 96d5f64038c726788fc6f355600f02dfa34d8103 Mon Sep 17 00:00:00 2001 From: Zellyn Hunter Date: Tue, 6 Dec 2016 22:18:33 -0500 Subject: [PATCH] Add bare bones do-nothing audit.asm --- .gitignore | 4 ++++ audit/audit.asm | 38 ++++++++++++++++++++++++++++++++++++++ audit/audit.dsk | Bin 0 -> 143360 bytes audit/build | 17 +++++++++++++++++ 4 files changed, 59 insertions(+) create mode 100644 audit/audit.asm create mode 100644 audit/audit.dsk create mode 100755 audit/build diff --git a/.gitignore b/.gitignore index 1acae15..0857e13 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,7 @@ *.o roms/*.bin floatbus/cfg +audit/cfg + +# Temporarily... +roms/* \ No newline at end of file diff --git a/audit/audit.asm b/audit/audit.asm new file mode 100644 index 0000000..ef7a1c8 --- /dev/null +++ b/audit/audit.asm @@ -0,0 +1,38 @@ +;;; Apple II audit routines +;;; Copyright © 2016 Zellyn Hunter + + !convtab + !to "audit.o", plain + * = $6000 + + HOME = $FC58 + COUT = $FDED + +main: + jsr HOME + jsr print + !text "Apple II audit",$8D,0 + jsr print + !text "Detecting machine version...",$8D,0 +end: jmp * + +;;; print prints a null-terminated string from the address after the +;;; JSR that called it, returning to the address following the null. +print: + tsx + lda $101,X + sta getch+1 + lda $102,X + sta getch+2 +- inc getch+1 + bne getch + inc getch+2 +getch lda $FEED ; $FEED gets modified + beq + + jsr COUT + jmp - ++ lda getch+1 + sta $101,X + lda getch+2 + sta $102,x + rts diff --git a/audit/audit.dsk b/audit/audit.dsk new file mode 100644 index 0000000000000000000000000000000000000000..d0676a832d2491fe6f612f1472f0802dfd91e953 GIT binary patch literal 143360 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