annotate 3rdparty/subrtns/cpu.asm @ 1097:264588ae1cd4

Fixed cc-1.1 to cc
author boisy
date Wed, 09 Apr 2003 16:06:26 +0000
parents 9d5be3fe8ebb
children 900ceed1880a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
743
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
1 *===========================================================================
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
2 * Basic09 subroutine module to determine the CPU type of the computer
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
3 * Test via:
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
4 *
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
5 * PROGRAM CPU
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
6 * DIM CPUType,Mode:integer
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
7 * RUN CPU(Type,Mode)
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
8 * PRINT "CPU type:";CPUType
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
9 * IF Mode=0 THEN
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
10 * PRINT "6809 Emulation mode"
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
11 * ELSE
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
12 * PRINT "6309 Native mode"
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
13 * ENDIF
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
14 * END
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
15 *
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
16 * returns: CPUType: 6809 or 6309 (decimal integer)
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
17 * Mode: 0=emulation mode, 1=native mode
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
18 *===========================================================================
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
19
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
20 nam CPU
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
21
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
22 ifp1
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
23 use defsfile
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
24 endc
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
25
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
26 rev set 1 first revision
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
27 tylg set Sbrtn+Objct
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
28 atrv set ReEnt+Rev
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
29 edition set 1
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
30
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
31 org 0
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
32 rmb 2 return address
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
33 PCount rmb 2 number of parameters
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
34 Param1 rmb 2 1st param address
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
35 Length1 rmb 2 size
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
36 Param2 rmb 2
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
37 Length2 rmb 2
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
38 Size equ .
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
39
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
40 mod eom,name,tylg,atrv,start,size
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
41
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
42 name fcs /CPU/
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
43 fcb edition
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
44
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
45 Start ldd PCount,s get parameter count
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
46 cmpd #2 2 parameters?
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
47 bne p.error no, error out.
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
48
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
49 ldd Length1,s get size of the first parameter
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
50 cmpd #2 integer variable?
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
51 bne p.error no, error out.
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
52
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
53 ldd Length2,s
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
54 cmpd #2 integer variable?
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
55 bne p.error no, error out.
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
56
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
57 * do a 6309/6809 test
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
58 ldd #$FFFF make sure it's non-zero
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
59 * clrd executes as a pseudo-NOP ($10), and a CLRA
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
60 fdb $104F
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
61 tstb
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
62 bne is.6809
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
63 ldd #6309 it's a 6309
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
64 bra save.1
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
65
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
66 is.6809 ldd #6809 it's a 6809
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
67 save.1 ldx Param1,s where to put the CPU type
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
68 std ,x save the integer CPU type
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
69
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
70 * if it's a 6809, we don't need to do the next part, as we KNOW it's
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
71 * running in 6809 emulation mode!
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
72
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
73 * this is harder.... are we in native mode?
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
74 pshs cc,dp,x,y,u save all registers but D
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
75 * pshsw a NOP on a 6809
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
76 fdb $1038
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
77
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
78 leay native,pc native mode PC
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
79 leax emulate,pc emulation mode PC
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
80 pshs x,y save them
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
81 pshs cc,d,dp,x,y,u and the rest of the registers, too.
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
82 orcc #Entire set the entire bit in CC
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
83 rti
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
84
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
85 emulate leas 2,s emulation mode: kill native mode PC
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
86 clrb we're in emulation mode
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
87 fcb $8C skip 2 bytes
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
88 native ldb #1 in native mode
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
89 puls u restore W from off-stack
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
90 * tfr u,w a PULSW does an 'RTS' on a 6809
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
91 fdb $1F36
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
92 puls cc,dp,x,y,u restore all of our other registers
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
93 clra now d=0: emulation, 1: native
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
94 ldx Param2,s where to put the data
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
95 std ,x save native/emulation mode flag
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
96 clrb no errors
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
97 rts
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
98
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
99 p.error comb set the carry
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
100 ldb #$38 Basic09 parameter error
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
101 rts
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
102
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
103 emod
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
104 eom equ *
9d5be3fe8ebb New subroutine module added
boisy
parents:
diff changeset
105 end