Skip to content

Commit

Permalink
About This Apple II: Detect Pravetz 8A/8C
Browse files Browse the repository at this point in the history
  • Loading branch information
inexorabletash committed Sep 24, 2024
1 parent face3e9 commit ea7223e
Show file tree
Hide file tree
Showing 10 changed files with 66 additions and 0 deletions.
1 change: 1 addition & 0 deletions desk.acc/res/this.apple.res.da
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
.define res_string_model_trackstar_plus "Trackstar Plus"
.define res_string_model_mega_iie "Mega IIe"
.define res_string_model_tk3000 "Microdigital TK-3000 //e"
.define res_string_model_pravetz "Pravetz 8A/C"
.define res_string_prodos_version_pattern "ProDOS #.#.#"
.define res_const_prodos_version_pattern_offset1 8
.define res_const_prodos_version_pattern_offset2 10
Expand Down
1 change: 1 addition & 0 deletions desk.acc/res/this.apple.res.de
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
.define res_string_model_trackstar_plus "Trackstar Plus"
.define res_string_model_mega_iie "Mega IIe"
.define res_string_model_tk3000 "Microdigital TK-3000 //e"
.define res_string_model_pravetz "Pravetz 8A/C"
.define res_string_prodos_version_pattern "ProDOS #.#.#"
.define res_const_prodos_version_pattern_offset1 8
.define res_const_prodos_version_pattern_offset2 10
Expand Down
1 change: 1 addition & 0 deletions desk.acc/res/this.apple.res.en
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
.define res_string_model_trackstar_plus "Trackstar Plus"
.define res_string_model_mega_iie "Mega IIe"
.define res_string_model_tk3000 "Microdigital TK-3000 //e"
.define res_string_model_pravetz "Pravetz 8A/C"
.define res_string_prodos_version_pattern "ProDOS #.#.#"
.define res_const_prodos_version_pattern_offset1 8
.define res_const_prodos_version_pattern_offset2 10
Expand Down
1 change: 1 addition & 0 deletions desk.acc/res/this.apple.res.es
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
.define res_string_model_trackstar_plus "Trackstar Plus"
.define res_string_model_mega_iie "Mega IIe"
.define res_string_model_tk3000 "Microdigital TK-3000 //e"
.define res_string_model_pravetz "Pravetz 8A/C"
.define res_string_prodos_version_pattern "ProDOS #.#.#"
.define res_const_prodos_version_pattern_offset1 8
.define res_const_prodos_version_pattern_offset2 10
Expand Down
1 change: 1 addition & 0 deletions desk.acc/res/this.apple.res.fr
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
.define res_string_model_trackstar_plus "Trackstar Plus"
.define res_string_model_mega_iie "Mega IIe"
.define res_string_model_tk3000 "Microdigital TK-3000 //e"
.define res_string_model_pravetz "Pravetz 8A/C"
.define res_string_prodos_version_pattern "ProDOS #.#.#"
.define res_const_prodos_version_pattern_offset1 8
.define res_const_prodos_version_pattern_offset2 10
Expand Down
1 change: 1 addition & 0 deletions desk.acc/res/this.apple.res.it
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
.define res_string_model_trackstar_plus "Trackstar Plus"
.define res_string_model_mega_iie "Mega IIe"
.define res_string_model_tk3000 "Microdigital TK-3000 //e"
.define res_string_model_pravetz "Pravetz 8A/C"
.define res_string_prodos_version_pattern "ProDOS #.#.#"
.define res_const_prodos_version_pattern_offset1 8
.define res_const_prodos_version_pattern_offset2 10
Expand Down
1 change: 1 addition & 0 deletions desk.acc/res/this.apple.res.nl
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
.define res_string_model_trackstar_plus "Trackstar Plus"
.define res_string_model_mega_iie "Mega IIe"
.define res_string_model_tk3000 "Microdigital TK-3000 //e"
.define res_string_model_pravetz "Pravetz 8A/C"
.define res_string_prodos_version_pattern "ProDOS #.#.#"
.define res_const_prodos_version_pattern_offset1 8
.define res_const_prodos_version_pattern_offset2 10
Expand Down
1 change: 1 addition & 0 deletions desk.acc/res/this.apple.res.pt
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
.define res_string_model_trackstar_plus "Trackstar Plus"
.define res_string_model_mega_iie "Mega IIe"
.define res_string_model_tk3000 "Microdigital TK-3000 //e"
.define res_string_model_pravetz "Pravetz 8A/C"
.define res_string_prodos_version_pattern "ProDOS #.#.#"
.define res_const_prodos_version_pattern_offset1 8
.define res_const_prodos_version_pattern_offset2 10
Expand Down
1 change: 1 addition & 0 deletions desk.acc/res/this.apple.res.sv
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
.define res_string_model_trackstar_plus "Trackstar Plus"
.define res_string_model_mega_iie "Mega IIe"
.define res_string_model_tk3000 "Microdigital TK-3000 //e"
.define res_string_model_pravetz "Pravetz 8A/C"
.define res_string_prodos_version_pattern "ProDOS #.#.#"
.define res_const_prodos_version_pattern_offset1 8
.define res_const_prodos_version_pattern_offset2 10
Expand Down
57 changes: 57 additions & 0 deletions desk.acc/this.apple.s
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,7 @@ reserved: .res 1
DEFINE_BITMAP tlc, 46, 25
DEFINE_BITMAP trackstar, 56, 25
DEFINE_BITMAP mega_iie, 48, 22
DEFINE_BITMAP pravetz, 51, 24

ii_bits:
PIXELS ".......######################....................."
Expand Down Expand Up @@ -463,6 +464,32 @@ mega_iie_bits:
PIXELS "..##########################################.."
PIXELS "....##..##..##..##..##..##..##..##..##..##...."

pravetz_bits:
PIXELS ".......####################################......."
PIXELS "......##..................................##......"
PIXELS "......##...########################.......##......"
PIXELS "......##..##......................##......##......"
PIXELS "......##..##......#####...##......##......##......"
PIXELS "......##..##....######......###...##..##..##......"
PIXELS "......##..##.....##...##......##..##..##..##......"
PIXELS "......##..##............##....##..##......##......"
PIXELS "......##..##....####......##..##..##..##..##......"
PIXELS "......##..##...##..###......##....##..##..##......"
PIXELS "......##..##..##......######..##..##......##......"
PIXELS "......##..##......................##..##..##......"
PIXELS "......##...########################...##..##......"
PIXELS "......##..................................##......"
PIXELS ".......####################################......."
PIXELS ".........##............................##........."
PIXELS ".......####################################......."
PIXELS ".....###..................................###....."
PIXELS "...###....##..##..##..##..##..##..##..##....###..."
PIXELS ".###....##..##..##..##..##..##..##..##..##....###."
PIXELS "##....##..##..##..##..##..##..##..##..##..##....##"
PIXELS "##..............................................##"
PIXELS "##..............................................##"
PIXELS ".###############################################.."

;;; ============================================================

DEFINE_POINT model_pos, 150, 12
Expand Down Expand Up @@ -605,6 +632,9 @@ str_mega_iie:
str_tk3000:
PASCAL_STRING res_string_model_tk3000

str_pravetz:
PASCAL_STRING res_string_model_pravetz

;;; ============================================================

str_prodos_version:
Expand Down Expand Up @@ -746,6 +776,8 @@ dib_buffer: .tag SPDIB
;;; but can be distinguished by the sequence $CC $D4 $D7 $C9 $CE $8D at $FACF
;;;
;;; The Microdigital TK-3000 //e has the string "TK3000//e" at $FF0A
;;;
;;; The Pravetz 8A and 8C look like an original IIe, with the string "ПРАВЕЦ" at $FB0A

.enum model
ii ; Apple ][
Expand All @@ -769,6 +801,7 @@ dib_buffer: .tag SPDIB
trackstar_plus ; Trackstar Plus
mega_iie ; Mega IIe
tk3000 ; Microdigital TK-3000 //e
pravetz ; Pravetz 8A/C
LAST
.endenum
kNumModels = model::LAST
Expand All @@ -795,6 +828,7 @@ model_str_table:
.addr str_trackstar_plus ; Trackstar Plus
.addr str_mega_iie ; Mega IIe
.addr str_tk3000 ; Microdigital TK-3000 //e
.addr str_pravetz ; Pravetz 8A/C
ASSERT_ADDRESS_TABLE_SIZE model_str_table, kNumModels

model_pix_table:
Expand All @@ -819,6 +853,7 @@ model_pix_table:
.addr aux::trackstar_bitmap ; Trackstar Plus
.addr aux::mega_iie_bitmap ; Mega IIe
.addr aux::iie_bitmap ; Microdigital TK-3000 //e
.addr aux::pravetz_bitmap ; Pravetz 8A/C
ASSERT_ADDRESS_TABLE_SIZE model_pix_table, kNumModels

;;; Based on Technical Note: Miscellaneous #2: Apple II Family Identification Routines 2.1
Expand Down Expand Up @@ -895,6 +930,11 @@ tk3000_sequence:
kTK3000SequenceLength = * - tk3000_sequence
TK3000_ID_ADDR = $FF0A

pravetz_8ac_sequence:
.byte $F0, $F2, $E1, $F7, $E5, $E3 ; "ПРАВЕЦ"
kPravetz8ACSequenceLength = * - pravetz_8ac_sequence
PRAVETZ_8AC_ID_ADDR = $FB0A

.proc IdentifyModel
;; Read from ROM
bit ROMIN2
Expand Down Expand Up @@ -931,6 +971,23 @@ fail: ldy #0

match: tya

cmp #model::iie_original
IF_EQ
;; Is it a Pravetz 8A/C?
ldx #kPravetz8ACSequenceLength-1
: lda PRAVETZ_8AC_ID_ADDR,x
cmp pravetz_8ac_sequence,x
bne :+
dex
bpl :-
lda #model::pravetz
bne found ; always
:
lda #model::iie_original
.assert model::iie_original <> 0, error, "enum mismatch"
bne found ; always
END_IF

;; A has model; but now test for IIgs, TLC, and TK3000;
;; all masquerade as Enhanced IIe.
cmp #model::iie_enhanced
Expand Down

0 comments on commit ea7223e

Please sign in to comment.