From b53bd0708b5e0ca295a50a84a17ddefd353da553 Mon Sep 17 00:00:00 2001 From: 4am Date: Thu, 4 May 2017 20:36:48 -0400 Subject: [PATCH] add support for identifying Pronto-DOS bootloader --- src/id/diversidos.a | 5 +++-- src/id/inspect0.a | 7 ++++++- src/id/prontodos.a | 23 +++++++++++++++++++++++ src/passport.a | 1 + src/strings/en.a | 6 +++++- 5 files changed, 38 insertions(+), 4 deletions(-) create mode 100644 src/id/prontodos.a diff --git a/src/id/diversidos.a b/src/id/diversidos.a index 6cfbede..50d9e29 100644 --- a/src/id/diversidos.a +++ b/src/id/diversidos.a @@ -1,16 +1,17 @@ ;------------------------------- -; IDDiversiDOS +; IDDiversi ; identify Diversi-DOS bootloader ; ; in: $0800..$08FF contains T00,S00 ; first page of track buffer also contains T00,S00 +; bootloader was identified as DOS 3.3-shaped (IDDOS33 returned success) ; out: C clear if Diversi-DOS bootloader found ; C set otherwise ; all registers clobbered ; all other flags clobbered ;------------------------------- !zone { -IDDiversiDOS +IDDiversi lda #$00 ldx #$F1 ldy #$0B diff --git a/src/id/inspect0.a b/src/id/inspect0.a index 6945b62..0abe18a 100755 --- a/src/id/inspect0.a +++ b/src/id/inspect0.a @@ -51,12 +51,17 @@ IDBootloader bcs + lda #TRUE sta gIsBoot0 - jsr IDDiversiDOS + jsr IDDiversi bcc .diversi + jsr IDPronto + bcc .pronto lda #s_dosb0 !byte $2c .diversi lda #s_diversidos + !byte $2c +.pronto + lda #s_prontodos jsr PrintByID jmp TraceDOS33 ; diff --git a/src/id/prontodos.a b/src/id/prontodos.a new file mode 100644 index 0000000..eb6eebf --- /dev/null +++ b/src/id/prontodos.a @@ -0,0 +1,23 @@ +;------------------------------- +; IDPronto +; identify Pronto-DOS bootloader +; +; in: $0800..$08FF contains T00,S00 +; first page of track buffer also contains T00,S00 +; bootloader was identified as DOS 3.3-shaped (IDDOS33 returned success) +; out: C clear if Pronto-DOS bootloader found +; C set otherwise +; all registers clobbered +; all other flags clobbered +;------------------------------- +!zone { +IDPronto + lda #$00 + ldx #$5E + ldy #$07 + jsr compare ; if T00,S00,$5E == + !byte $B0,$50 ; BCS +$50 + !byte $AD,$CB,$B5; LDA $B5CB + !byte $85,$42 ; STA $42 + rts +} diff --git a/src/passport.a b/src/passport.a index 9e8340e..ebe197b 100755 --- a/src/passport.a +++ b/src/passport.a @@ -156,6 +156,7 @@ FirstMover !source "id/daviddos.a" !source "id/quickdos.a" !source "id/diversidos.a" + !source "id/prontodos.a" !source "print.a" !source "compare.a" !source "modify.a" diff --git a/src/strings/en.a b/src/strings/en.a index bb5d159..fdca0c7 100755 --- a/src/strings/en.a +++ b/src/strings/en.a @@ -95,7 +95,8 @@ s_jsr8b3 = $4C s_daviddos = $4D s_quickdos = $4E s_diversidos = $4F -STRINGCOUNT = $50 +s_prontodos = $50 +STRINGCOUNT = $51 !zone { StringTable @@ -179,6 +180,7 @@ StringTable !word .daviddos !word .quickdos !word .diversidos + !word .prontodos ; ; Text can contain substitution strings, which ; are replaced by current values at runtime. Each @@ -453,4 +455,6 @@ StringTable !text "T00,S00 Found Quick-DOS bootloader",$8D,00 .diversidos !text "T00,S00 Found Diversi-DOS bootloader",$8D,00 +.prontodos + !text "T00,S00 Found Pronto-DOS bootloader",$8D,00 }