File: dosdetect.s

package info (click to toggle)
cc65 2.19-2
  • links: PTS
  • area: main
  • in suites: forky, sid, trixie
  • size: 20,268 kB
  • sloc: ansic: 117,151; asm: 66,339; pascal: 4,248; makefile: 1,009; perl: 607
file content (69 lines) | stat: -rw-r--r-- 1,660 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
;
; Freddy Offenga, Stefan Haubenthal, Christian Groessler, March 2007
;
; detect the DOS version we're running on
;

        .include        "atari.inc"
        .constructor    detect, 26
        .export         __dos_type

; ------------------------------------------------------------------------
; DOS type detection

.segment        "ONCE"

detect: lda     DOS
        cmp     #'S'            ; SpartaDOS
        beq     spdos
        cmp     #'M'            ; MyDOS
        beq     mydos
        cmp     #'X'            ; XDOS
        beq     xdos
        cmp     #'R'            ; RealDOS
        beq     rdos

        lda     #$4C            ; probably default
        ldy     #COMTAB
        cmp     (DOSVEC),y
        bne     done
        ldy     #ZCRNAME
        cmp     (DOSVEC),y
        bne     done

        ldy     #6              ; OS/A+ has a jmp here
        cmp     (DOSVEC),y
        beq     done
        lda     #OSADOS
        bne     set

spdos:  lda     DOS+3           ; 'B' in BW-DOS
        cmp     #'B'
        bne     spdos_real
        lda     DOS+4           ; 'W' in BW-DOS
        cmp     #'W'
        bne     spdos_real

        lda     #BWDOS
        .byte   $2C             ; BIT <abs>

spdos_real:
        lda     #SPARTADOS
        .byte   $2C             ; BIT <abs>

mydos:  lda     #MYDOS
        .byte   $2C             ; BIT <abs>

rdos:   lda     #REALDOS
        .byte   $2C             ; BIT <abs>

xdos:   lda     #XDOS
set:    sta     __dos_type
done:   rts

; ------------------------------------------------------------------------
; Data

        .data

__dos_type:     .byte   ATARIDOS; default to ATARIDOS