Skip to content

Instantly share code, notes, and snippets.

@houmei
Created April 8, 2020 08:29
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
Star You must be signed in to star a gist
Embed
What would you like to do?
universal monitor unimon: porting to 6502+MC6850 on SBC6800 / https://electrelic.com/electrelic/node/1317
;;; -*- asm -*-
;;;
;;; Universal Monitor 6502 config file (sample)
;;;
;;;
;;; Memory
;;;
ROM_B: EQU $E000 ; original $F800
ENTRY: EQU $FF80 ; Entry point
WORK_B: EQU $0000 ; Must fit in ZERO page
STACK: EQU $01FF
BUFLEN: EQU 16 ; Buffer length ( 16 or above )
;;;
;;; Options
;;;
USE_IDENT = 1 ; CPU Identification
USE_REGCMD = 1 ; Register related commands
;;;
;;;
;;; Motorola MC6850
;;;
USE_DEV_6850 = 1
IF USE_DEV_6850
ACIADR: EQU $8019 ; Data Register
ACIACR: EQU $8018 ; Control Register
ACCR_I: EQU $03 ; Command: reset
ACCR_V: EQU $15 ; Command: 8bit, 1-stopbit, No-parity, IRQ disable
ENDIF
;;; MOS Technology MCS6551
;;;
USE_DEV_6551 = 0
IF USE_DEV_6551
;;
ACIADR: EQU $8000 ; Data Register
ACIASR: EQU $8001 ; Status Register
ACIACM: EQU $8002 ; Command Register
ACIACR: EQU $8003 ; Control Register
ACCR_V: EQU $1E ; Control: 8bit, 9600bps
ACCM_V: EQU $0B ; Command: No-parity
ENDIF
;;;
;;; EMILY Board (Shared Memory)
;;;
USE_DEV_EMILY = 0
IF USE_DEV_EMILY
;;
SMBASE: EQU $FFE0
ENDIF
;;;
;;; M6850 Console Driver
;;;
INIT:
LDA #ACCR_I
STA ACIACR
LDA #ACCR_V
STA ACIACR
RTS
CONIN:
LDA ACIACR
AND #$01
BEQ CONIN
LDA ACIADR
RTS
CONST:
LDA ACIACR
AND #$01
RTS
CONOUT:
PHA
CO0:
LDA ACIACR
LSR
LSR
BCC CO0
PLA
STA ACIADR
RTS
IF USE_DEV_6850
INCLUDE "dev/dev_6850.asm"
ENDIF
:10E00000A2FF9A20D8E5A9008510851185178518EB
:10E0100085158516851BA9538519A900851C851DA5
:10E02000851E852085218522BA861FA9D48527A92A
:10E03000E4852820D1E38018F818A9056905C90AE4
:10E04000D8F02DA9368527A9E58528A9004C7AE0C6
:10E050000FA9108FA90DA93D8527A9E58528A9013C
:10E060004C7AE0A9458527A9E58528A9034C7AE0E3
:10E07000A94E8527A9E58528A910851B20D1E3A9EC
:10E08000EF8527A9E4852820D1E32001E4A2002020
:10E090004AE42055E4C900F0E6C944D0034CC3E08B
:10E0A000C947D0034CF5E1C953D0034C22E2C95211
:10E0B000D0034CAAE2A90C8527A9E5852820D1E345
:10E0C0004C7FE0E8204AE42060E4A52BD017204AEA
:10E0D000E4B500D0E0A5101869808512A51169008B
:10E0E00085134C1CE1A5298510A52A8511204AE439
:10E0F000B500C92CF007C900D0BB4CD5E0E8204AD8
:10E10000E42060E4204AE4A52BF0AAB500D0A6A53F
:10E11000293869008512A52A69008513A51029F000
:10E120008529A511852AA9008514205BE1A5291858
:10E1300069108529A52A6900852A20EEE5D011A558
:10E1400014C90290E5A5128510A51385114C7FE036
:10E15000A5298510A52A85114C7FE0A52A20DFE39B
:10E16000A52920DFE3A9148527A9E5852820D1E387
:10E17000A200A00020A5E1E010D0F9A9178527A9E9
:10E18000E5852820D1E3A200B500C920900AC97F07
:10E19000B00620F4E54C9DE1A92E20F4E5E8E0105E
:10E1A000D0E64CF7E3A92020F4E5A514D01B98385D
:10E1B000E510290FF00FA920950020F4E5A92020F3
:10E1C000F4E5E8C860A9018514A514C901D0E7B138
:10E1D00029950020DFE3E8C8981865298527A52A36
:10E1E00069008528A527C512D00AA528C513D00423
:10E1F000A902851460E8204AE42060E4B500F00339
:10E200004CB5E0A52BF008A5298520A52A8521A6D7
:10E210001F9AA52148A52048A52248A51CA61DA4F3
:10E220001E40E8204AE42060E4204AE4B500F00300
:10E230004CB5E0A52BF008A5298517A52A8518A5BA
:10E240001820DFE3A51720DFE3A9178527A9E585B7
:10E250002820D1E3A000B11720DFE3A92020F4E5B6
:10E260002001E4A200204AE4B500D010A5171869E7
:10E27000018517A518690085184C3FE2C92DD010FB
:10E28000A51738E9018517A518E90085184C3FE264
:10E29000C92ED0034C7FE02060E4A52BD0034CB501
:10E2A000E0A529A00091174C6CE2E8204AE4205533
:10E2B000E4C900D0062069E34C7FE0A07A8429A05D
:10E2C000E5842AA000D129F013C848B129F00968D3
:10E2D000C8C8C8C8C84CC5E2684CB5E0C8B129C9AF
:10E2E00080D019C8B129852BC8B129852AA52B85CD
:10E2F00029A000E8B5002055E44CC5E2C900F0664D
:10E30000C8B129AAC8C8B1298527C8B129852884D8
:10E310002B20D1E3A93D20F4E5A42B88888888B17F
:10E32000298523C901D008B50020DFE34C39E3B5C6
:10E330000120DFE3B50020DFE3A92020F4E58626F5
:10E340002001E4A2002060E4A52BF017A626A52357
:10E35000C901D007A52995004C63E3A5299500A51F
:10E360002A95014C7FE04CB5E0A95D8527A9E5859C
:10E370002820D1E3A51C20DFE3A9608527A9E58536
:10E380002820D1E3A51D20DFE3A9648527A9E58521
:10E390002820D1E3A51E20DFE3A9688527A9E5850C
:10E3A0002820D1E3A51F20DFE3A96F8527A9E585F4
:10E3B0002820D1E3A52120DFE3A52020DFE3A974F5
:10E3C0008527A9E5852820D1E3A52220DFE34CF7A6
:10E3D000E3A000B127F00720F4E5C84CD3E3604880
:10E3E0004A4A4A4A20E8E368290F186930C93A9036
:10E3F000031869074CF4E5A90D20F4E5A90A4CF4CB
:10E40000E5A20020E3E5C90DF038C90AF034C908D7
:10E41000F019C97FF015C92090E9C980B0E5E00F77
:10E42000B0E19500E820F4E54C03E4E000F0D4CA44
:10E43000A90820F4E5A92020F4E5A90820F4E54C7A
:10E4400003E420F7E3A900950060B500C920D004DB
:10E45000E84C4AE460C9619006C97BB00269E0609B
:10E46000A9008529852A852BB5002055E4C930905F
:10E470002DC93A900BC9419025C947B02138E90709
:10E4800038E9300629262A0629262A0629262A06B8
:10E4900029262A1865298529E62BE84C68E4604876
:10E4A00008682910F02CD868851C8A851D98851E5F
:10E4B0006885226838E902852068E9008521BA86E6
:10E4C0001FA9578527A9E5852820D1E32069E34CBA
:10E4D0007FE068400D0A556E6976657273616C2045
:10E4E0004D6F6E69746F7220363530320D0A005DE3
:10E4F00020004572726F7220696865780D0A0045C8
:10E5000072726F7220737265630D0A004572726FCA
:10E51000720D0A00203A00203A20003A30303030A4
:10E520003030303146460D0A005339303330303008
:10E530003046430D0A00363530320D0A0036354379
:10E5400030320D0A005236354330320D0A00525037
:10E55000324130330D0A0042524B0D0A00413D005A
:10E5600020583D0020593D002053503D30310020BF
:10E5700050433D00205053523D0041011C00C8E56E
:10E5800058011D00CAE559011E00CCE553809EE5E7
:10E5900000005080AAE500000000000000005001CB
:10E5A0001F00CEE500000000000043022000D1E57E
:10E5B0005380BCE500000000000000005201220072
:10E5C000D4E50000000000004100580059005350FD
:10E5D0000050430050535200A9038D1880A9158D97
:10E5E000188060AD18802901F0F9AD198060AD1870
:10E5F0008029016048AD18804A4A90F9688D1980D9
:01E6000060B9
:03FF80004C00E052
:03FF88004C7FE0CB
:03FF90004CF4E549
:03FF98004CD1E366
:03FFA0004CE3E54A
:03FFA8004CEEE537
:06FFFA00000000E09FE49E
:00000001FF
AS V1.42 Beta [Bld 158] - Source File unimon_6502.asm - Page 1 - 04/08/20 16:57:26
1/ 0 : ;;;
2/ 0 : ;;; Universal Monitor 6502
3/ 0 : ;;; Copyright (C) 2019 Haruo Asano
4/ 0 : ;;;
5/ 0 :
6/ 0 : CPU 6502
7/ 0 :
8/ 0 : =6502 TARGET: EQU "6502"
9/ 0 :
10/ 0 : INCLUDE "config.inc"
(1) 1/ 0 : ;;; -*- asm -*-
(1) 2/ 0 : ;;;
(1) 3/ 0 : ;;; Universal Monitor 6502 config file (sample)
(1) 4/ 0 : ;;;
(1) 5/ 0 :
(1) 6/ 0 : ;;;
(1) 7/ 0 : ;;; Memory
(1) 8/ 0 : ;;;
(1) 9/ 0 :
(1) 10/ 0 : =$E000 ROM_B: EQU $E000 ; original $F800
(1) 11/ 0 : =$FF80 ENTRY: EQU $FF80 ; Entry point
(1) 12/ 0 :
(1) 13/ 0 : =$0 WORK_B: EQU $0000 ; Must fit in ZERO page
(1) 14/ 0 : =$1FF STACK: EQU $01FF
(1) 15/ 0 :
(1) 16/ 0 : =$10 BUFLEN: EQU 16 ; Buffer length ( 16 or above )
(1) 17/ 0 :
(1) 18/ 0 : ;;;
(1) 19/ 0 : ;;; Options
(1) 20/ 0 : ;;;
(1) 21/ 0 :
(1) 22/ 0 : =$1 USE_IDENT = 1 ; CPU Identification
(1) 23/ 0 : =$1 USE_REGCMD = 1 ; Register related commands
(1) 24/ 0 :
(1) 25/ 0 : ;;;
(1) 26/ 0 : ;;;
(1) 27/ 0 : ;;; Motorola MC6850
(1) 28/ 0 : ;;;
(1) 29/ 0 :
(1) 30/ 0 : =$1 USE_DEV_6850 = 1
(1) 31/ 0 : =>TRUE IF USE_DEV_6850
(1) 32/ 0 : =$8019 ACIADR: EQU $8019 ; Data Register
(1) 33/ 0 : =$8018 ACIACR: EQU $8018 ; Control Register
(1) 34/ 0 : =$3 ACCR_I: EQU $03 ; Command: reset
(1) 35/ 0 : =$15 ACCR_V: EQU $15 ; Command: 8bit, 1-stopbit, No-parity, IRQ disable
(1) 36/ 0 : [31] ENDIF
(1) 37/ 0 :
(1) 38/ 0 : ;;; MOS Technology MCS6551
(1) 39/ 0 : ;;;
(1) 40/ 0 :
(1) 41/ 0 : =$0 USE_DEV_6551 = 0
(1) 42/ 0 : =>FALSE IF USE_DEV_6551
(1) 43/ 0 : ;;
(1) 44/ 0 : ACIADR: EQU $8000 ; Data Register
(1) 45/ 0 : ACIASR: EQU $8001 ; Status Register
(1) 46/ 0 : ACIACM: EQU $8002 ; Command Register
(1) 47/ 0 : ACIACR: EQU $8003 ; Control Register
(1) 48/ 0 : ACCR_V: EQU $1E ; Control: 8bit, 9600bps
(1) 49/ 0 : ACCM_V: EQU $0B ; Command: No-parity
(1) 50/ 0 : [42] ENDIF
AS V1.42 Beta [Bld 158] - Source File unimon_6502.asm(config.inc) - Page 2 - 04/08/20 16:57:26
(1) 51/ 0 :
(1) 52/ 0 : ;;;
(1) 53/ 0 : ;;; EMILY Board (Shared Memory)
(1) 54/ 0 : ;;;
(1) 55/ 0 :
(1) 56/ 0 : =$0 USE_DEV_EMILY = 0
(1) 57/ 0 : =>FALSE IF USE_DEV_EMILY
(1) 58/ 0 : ;;
(1) 59/ 0 : SMBASE: EQU $FFE0
(1) 60/ 0 : [57] ENDIF
(1) 61/ 0 :
11/ 0 :
12/ 0 : INCLUDE "../common.inc"
(1) 1/ 0 : ;;; -*- asm -*-
(1) 2/ 0 : ;;;
(1) 3/ 0 : ;;; Common header file
(1) 4/ 0 : ;;;
(1) 5/ 0 :
(1) 6/ 0 : RELAXED ON
(1) 7/ 0 :
(1) 8/ 0 : ;;; Constants
(1) 9/ 0 : =$D CR: EQU 0x0D
(1) 10/ 0 : =$A LF: EQU 0x0A
(1) 11/ 0 : =$8 BS: EQU 0x08
(1) 12/ 0 : =$7F DEL: EQU 0x7F
(1) 13/ 0 :
(1) 14/ 0 : ;;; Functions
(1) 15/ 0 : low function x,(x & 255)
(1) 16/ 0 : high function x,(x >> 8)
(1) 17/ 0 :
(1) 18/ 0 : RELAXED OFF
(1) 19/ 0 :
13/ 0 :
14/ 0 : ;;;
15/ 0 : ;;; ROM area
16/ 0 : ;;;
17/ 0 :
18/ E000 : ORG ROM_B
19/ E000 :
20/ E000 : CSTART:
21/ E000 : A2 FF LDX #low(STACK)
22/ E002 : 9A TXS
23/ E003 : 20 D8 E5 JSR INIT
24/ E006 :
25/ E006 : A9 00 LDA #$00
26/ E008 : 85 10 STA DSADDR
27/ E00A : 85 11 STA DSADDR+1
28/ E00C : 85 17 STA SADDR
29/ E00E : 85 18 STA SADDR+1
30/ E010 : 85 15 STA GADDR
31/ E012 : 85 16 STA GADDR+1
32/ E014 : 85 1B STA PSPEC
33/ E016 : A9 53 LDA #'S'
34/ E018 : 85 19 STA HEXMOD
35/ E01A :
36/ E01A : =>TRUE IF USE_REGCMD
37/ E01A : A9 00 LDA #$00
38/ E01C : 85 1C STA REGA
39/ E01E : 85 1D STA REGX
40/ E020 : 85 1E STA REGY
AS V1.42 Beta [Bld 158] - Source File unimon_6502.asm - Page 3 - 04/08/20 16:57:26
41/ E022 : 85 20 STA REGPC
42/ E024 : 85 21 STA REGPC+1
43/ E026 : 85 22 STA REGPSR
44/ E028 : BA TSX
45/ E029 : 86 1F STX REGSP
46/ E02B : [36] ENDIF
47/ E02B :
48/ E02B : ;; Opening message
49/ E02B : A9 D4 LDA #low(OPNMSG)
50/ E02D : 85 27 STA PT0
51/ E02F : A9 E4 LDA #high(OPNMSG)
52/ E031 : 85 28 STA PT0+1
53/ E033 : 20 D1 E3 JSR STROUT
54/ E036 :
55/ E036 : ;; CPU identification
56/ E036 : =>TRUE IF USE_IDENT
57/ E036 : 80 18 FCB $80,ID65C-*-2 ; BRA ID65C on 65C02, NOP #xx on 6502
58/ E038 :
59/ E038 : F8 SED
60/ E039 : 18 CLC
61/ E03A : A9 05 LDA #5
62/ E03C : 69 05 ADC #5
63/ E03E : C9 0A CMP #10
64/ E040 : D8 CLD
65/ E041 : F0 2D BEQ ID2A03
66/ E043 : ;; 6502
67/ E043 : A9 36 LDA #low(IM65)
68/ E045 : 85 27 STA PT0
69/ E047 : A9 E5 LDA #high(IM65)
70/ E049 : 85 28 STA PT0+1
71/ E04B : A9 00 LDA #$00
72/ E04D : 4C 7A E0 JMP IDE
73/ E050 : ;; 65C02
74/ E050 : ID65C:
75/ E050 : 0F A9 10 FCB $0F,$A9,IDR65C-*-3 ; BBR0 $A9,IDR65C on R65C02, NOP / LDA,#xx on 65C02
76/ E053 : 8F A9 0D FCB $8F,$A9,IDR65C-*-3 ; BBS0 $A9,IDR65C on R65C02, NOP / LDA,#xx on 65C02
77/ E056 :
78/ E056 : A9 3D LDA #low(IM65C)
79/ E058 : 85 27 STA PT0
80/ E05A : A9 E5 LDA #high(IM65C)
81/ E05C : 85 28 STA PT0+1
82/ E05E : A9 01 LDA #$01
83/ E060 : 4C 7A E0 JMP IDE
84/ E063 : ;; R65C02
85/ E063 : IDR65C:
86/ E063 : A9 45 LDA #low(IMR65C)
87/ E065 : 85 27 STA PT0
88/ E067 : A9 E5 LDA #high(IMR65C)
89/ E069 : 85 28 STA PT0+1
90/ E06B : A9 03 LDA #$03
91/ E06D : 4C 7A E0 JMP IDE
92/ E070 : ;; RP2A03
93/ E070 : ID2A03:
94/ E070 : A9 4E LDA #low(IM2A03)
95/ E072 : 85 27 STA PT0
96/ E074 : A9 E5 LDA #high(IM2A03)
97/ E076 : 85 28 STA PT0+1
98/ E078 : A9 10 LDA #$10
99/ E07A : IDE:
100/ E07A : 85 1B STA PSPEC
AS V1.42 Beta [Bld 158] - Source File unimon_6502.asm - Page 4 - 04/08/20 16:57:26
101/ E07C : 20 D1 E3 JSR STROUT
102/ E07F : [56] ENDIF
103/ E07F :
104/ E07F : WSTART:
105/ E07F : A9 EF LDA #low(PROMPT)
106/ E081 : 85 27 STA PT0
107/ E083 : A9 E4 LDA #high(PROMPT)
108/ E085 : 85 28 STA PT0+1
109/ E087 : 20 D1 E3 JSR STROUT
110/ E08A : 20 01 E4 JSR GETLIN
111/ E08D : A2 00 LDX #0
112/ E08F : 20 4A E4 JSR SKIPSP
113/ E092 : 20 55 E4 JSR UPPER
114/ E095 : C9 00 CMP #0
115/ E097 : F0 E6 BEQ WSTART
116/ E099 :
117/ E099 : C9 44 CMP #'D'
118/ E09B : D0 03 BNE M00
119/ E09D : 4C C3 E0 JMP DUMP
120/ E0A0 : M00:
121/ E0A0 : C9 47 CMP #'G'
122/ E0A2 : D0 03 BNE M01
123/ E0A4 : 4C F5 E1 JMP GO
124/ E0A7 : M01:
125/ E0A7 : C9 53 CMP #'S'
126/ E0A9 : D0 03 BNE M02
127/ E0AB : 4C 22 E2 JMP SETM
128/ E0AE : M02:
129/ E0AE :
130/ E0AE : =>TRUE IF USE_REGCMD
131/ E0AE : C9 52 CMP #'R'
132/ E0B0 : D0 03 BNE M05
133/ E0B2 : 4C AA E2 JMP REG
134/ E0B5 : [130] ENDIF
135/ E0B5 : M05:
136/ E0B5 : ERR:
137/ E0B5 : A9 0C LDA #low(ERRMSG)
138/ E0B7 : 85 27 STA PT0
139/ E0B9 : A9 E5 LDA #high(ERRMSG)
140/ E0BB : 85 28 STA PT0+1
141/ E0BD : 20 D1 E3 JSR STROUT
142/ E0C0 : 4C 7F E0 JMP WSTART
143/ E0C3 :
144/ E0C3 : ;;;
145/ E0C3 : ;;; Dump memory
146/ E0C3 : ;;;
147/ E0C3 : DUMP:
148/ E0C3 : E8 INX
149/ E0C4 : 20 4A E4 JSR SKIPSP
150/ E0C7 : 20 60 E4 JSR RDHEX
151/ E0CA : A5 2B LDA CNT
152/ E0CC : D0 17 BNE DP0
153/ E0CE :
154/ E0CE : ;; No arg.
155/ E0CE : 20 4A E4 JSR SKIPSP
156/ E0D1 : B5 00 LDA INBUF,X
157/ E0D3 : D0 E0 BNE ERR
158/ E0D5 : DP00:
159/ E0D5 : A5 10 LDA DSADDR
160/ E0D7 : 18 CLC
AS V1.42 Beta [Bld 158] - Source File unimon_6502.asm - Page 5 - 04/08/20 16:57:26
161/ E0D8 : 69 80 ADC #128
162/ E0DA : 85 12 STA DEADDR
163/ E0DC : A5 11 LDA DSADDR+1
164/ E0DE : 69 00 ADC #0
165/ E0E0 : 85 13 STA DEADDR+1
166/ E0E2 : 4C 1C E1 JMP DPM
167/ E0E5 :
168/ E0E5 : ;; 1st arg. found
169/ E0E5 : DP0:
170/ E0E5 : A5 29 LDA PT1
171/ E0E7 : 85 10 STA DSADDR
172/ E0E9 : A5 2A LDA PT1+1
173/ E0EB : 85 11 STA DSADDR+1
174/ E0ED : 20 4A E4 JSR SKIPSP
175/ E0F0 : B5 00 LDA INBUF,X
176/ E0F2 : C9 2C CMP #','
177/ E0F4 : F0 07 BEQ DP1
178/ E0F6 : C9 00 CMP #0
179/ E0F8 : D0 BB BNE ERR
180/ E0FA : ;; No 2nd arg.
181/ E0FA : 4C D5 E0 JMP DP00
182/ E0FD : DP1:
183/ E0FD : E8 INX
184/ E0FE : 20 4A E4 JSR SKIPSP
185/ E101 : 20 60 E4 JSR RDHEX
186/ E104 : 20 4A E4 JSR SKIPSP
187/ E107 : A5 2B LDA CNT
188/ E109 : F0 AA BEQ ERR
189/ E10B : B5 00 LDA INBUF,X
190/ E10D : D0 A6 BNE ERR
191/ E10F : A5 29 LDA PT1
192/ E111 : 38 SEC
193/ E112 : 69 00 ADC #0
194/ E114 : 85 12 STA DEADDR
195/ E116 : A5 2A LDA PT1+1
196/ E118 : 69 00 ADC #0
197/ E11A : 85 13 STA DEADDR+1
198/ E11C :
199/ E11C : ;; DUMP main
200/ E11C : DPM:
201/ E11C : A5 10 LDA DSADDR
202/ E11E : 29 F0 AND #$F0
203/ E120 : 85 29 STA PT1
204/ E122 : A5 11 LDA DSADDR+1
205/ E124 : 85 2A STA PT1+1
206/ E126 : A9 00 LDA #0
207/ E128 : 85 14 STA DSTATE
208/ E12A : DPM0:
209/ E12A : 20 5B E1 JSR DPL
210/ E12D : A5 29 LDA PT1
211/ E12F : 18 CLC
212/ E130 : 69 10 ADC #16
213/ E132 : 85 29 STA PT1
214/ E134 : A5 2A LDA PT1+1
215/ E136 : 69 00 ADC #0
216/ E138 : 85 2A STA PT1+1
217/ E13A : 20 EE E5 JSR CONST
218/ E13D : D0 11 BNE DPM1
219/ E13F : A5 14 LDA DSTATE
220/ E141 : C9 02 CMP #2
AS V1.42 Beta [Bld 158] - Source File unimon_6502.asm - Page 6 - 04/08/20 16:57:26
221/ E143 : 90 E5 BCC DPM0
222/ E145 : A5 12 LDA DEADDR
223/ E147 : 85 10 STA DSADDR
224/ E149 : A5 13 LDA DEADDR+1
225/ E14B : 85 11 STA DSADDR+1
226/ E14D : 4C 7F E0 JMP WSTART
227/ E150 : DPM1:
228/ E150 : A5 29 LDA PT1
229/ E152 : 85 10 STA DSADDR
230/ E154 : A5 2A LDA PT1+1
231/ E156 : 85 11 STA DSADDR+1
232/ E158 : 4C 7F E0 JMP WSTART
233/ E15B :
234/ E15B : ;; Dump line
235/ E15B : DPL:
236/ E15B : A5 2A LDA PT1+1
237/ E15D : 20 DF E3 JSR HEXOUT2
238/ E160 : A5 29 LDA PT1
239/ E162 : 20 DF E3 JSR HEXOUT2
240/ E165 : A9 14 LDA #low(DSEP0)
241/ E167 : 85 27 STA PT0
242/ E169 : A9 E5 LDA #high(DSEP0)
243/ E16B : 85 28 STA PT0+1
244/ E16D : 20 D1 E3 JSR STROUT
245/ E170 : A2 00 LDX #0
246/ E172 : A0 00 LDY #0
247/ E174 : DPL0:
248/ E174 : 20 A5 E1 JSR DPB
249/ E177 : E0 10 CPX #16
250/ E179 : D0 F9 BNE DPL0
251/ E17B :
252/ E17B : A9 17 LDA #low(DSEP1)
253/ E17D : 85 27 STA PT0
254/ E17F : A9 E5 LDA #high(DSEP1)
255/ E181 : 85 28 STA PT0+1
256/ E183 : 20 D1 E3 JSR STROUT
257/ E186 :
258/ E186 : ;; Print ASCII area
259/ E186 : A2 00 LDX #0
260/ E188 : DPL1:
261/ E188 : B5 00 LDA INBUF,X
262/ E18A : C9 20 CMP #' '
263/ E18C : 90 0A BCC DPL2
264/ E18E : C9 7F CMP #$7F
265/ E190 : B0 06 BCS DPL2
266/ E192 : 20 F4 E5 JSR CONOUT
267/ E195 : 4C 9D E1 JMP DPL3
268/ E198 : DPL2:
269/ E198 : A9 2E LDA #'.'
270/ E19A : 20 F4 E5 JSR CONOUT
271/ E19D : DPL3:
272/ E19D : E8 INX
273/ E19E : E0 10 CPX #16
274/ E1A0 : D0 E6 BNE DPL1
275/ E1A2 : 4C F7 E3 JMP CRLF
276/ E1A5 :
277/ E1A5 : ;; Dump byte
278/ E1A5 : DPB:
279/ E1A5 : A9 20 LDA #' '
280/ E1A7 : 20 F4 E5 JSR CONOUT
AS V1.42 Beta [Bld 158] - Source File unimon_6502.asm - Page 7 - 04/08/20 16:57:26
281/ E1AA : A5 14 LDA DSTATE
282/ E1AC : D0 1B BNE DPB2
283/ E1AE : ;; Dump state 0
284/ E1AE : 98 TYA
285/ E1AF : 38 SEC
286/ E1B0 : E5 10 SBC DSADDR
287/ E1B2 : 29 0F AND #$0F
288/ E1B4 : F0 0F BEQ DPB1
289/ E1B6 : ;; Still 0 or 2
290/ E1B6 : DPB0:
291/ E1B6 : A9 20 LDA #' '
292/ E1B8 : 95 00 STA INBUF,X
293/ E1BA : 20 F4 E5 JSR CONOUT
294/ E1BD : A9 20 LDA #' '
295/ E1BF : 20 F4 E5 JSR CONOUT
296/ E1C2 : E8 INX
297/ E1C3 : C8 INY
298/ E1C4 : 60 RTS
299/ E1C5 : ;; Found start address
300/ E1C5 : DPB1:
301/ E1C5 : A9 01 LDA #1
302/ E1C7 : 85 14 STA DSTATE
303/ E1C9 : DPB2:
304/ E1C9 : A5 14 LDA DSTATE
305/ E1CB : C9 01 CMP #1
306/ E1CD : D0 E7 BNE DPB0
307/ E1CF : ;; Dump state 1
308/ E1CF : B1 29 LDA (PT1),Y
309/ E1D1 : 95 00 STA INBUF,X
310/ E1D3 : 20 DF E3 JSR HEXOUT2
311/ E1D6 : E8 INX
312/ E1D7 : C8 INY
313/ E1D8 : 98 TYA
314/ E1D9 : 18 CLC
315/ E1DA : 65 29 ADC PT1
316/ E1DC : 85 27 STA PT0
317/ E1DE : A5 2A LDA PT1+1
318/ E1E0 : 69 00 ADC #0
319/ E1E2 : 85 28 STA PT0+1
320/ E1E4 : A5 27 LDA PT0
321/ E1E6 : C5 12 CMP DEADDR
322/ E1E8 : D0 0A BNE DPBE
323/ E1EA : A5 28 LDA PT0+1
324/ E1EC : C5 13 CMP DEADDR+1
325/ E1EE : D0 04 BNE DPBE
326/ E1F0 : ;; Found end address
327/ E1F0 : A9 02 LDA #2
328/ E1F2 : 85 14 STA DSTATE
329/ E1F4 : DPBE:
330/ E1F4 : 60 RTS
331/ E1F5 :
332/ E1F5 : ;;;
333/ E1F5 : ;;; Go address
334/ E1F5 : ;;;
335/ E1F5 : GO:
336/ E1F5 : E8 INX
337/ E1F6 : 20 4A E4 JSR SKIPSP
338/ E1F9 : 20 60 E4 JSR RDHEX
339/ E1FC : B5 00 LDA INBUF,X
340/ E1FE : F0 03 BEQ G00
AS V1.42 Beta [Bld 158] - Source File unimon_6502.asm - Page 8 - 04/08/20 16:57:26
341/ E200 : 4C B5 E0 JMP ERR
342/ E203 : G00:
343/ E203 : A5 2B LDA CNT
344/ E205 : F0 08 BEQ G0
345/ E207 : =>TRUE IF USE_REGCMD
346/ E207 : A5 29 LDA PT1
347/ E209 : 85 20 STA REGPC
348/ E20B : A5 2A LDA PT1+1
349/ E20D : 85 21 STA REGPC+1
350/ E20F : G0:
351/ E20F : A6 1F LDX REGSP
352/ E211 : 9A TXS ; SP
353/ E212 : A5 21 LDA REGPC+1
354/ E214 : 48 PHA ; PC(H)
355/ E215 : A5 20 LDA REGPC
356/ E217 : 48 PHA ; PC(L)
357/ E218 : A5 22 LDA REGPSR
358/ E21A : 48 PHA ; PSR
359/ E21B : A5 1C LDA REGA
360/ E21D : A6 1D LDX REGX
361/ E21F : A4 1E LDY REGY
362/ E221 : 40 RTI
363/ E222 : =>FALSE ELSE ; !USE_REGCMD
364/ E222 : LDA PT1
365/ E222 : STA GADDR
366/ E222 : LDA PT1+1
367/ E222 : STA GADDR+1
368/ E222 : G0:
369/ E222 : JMP (GADDR)
370/ E222 : [345] ENDIF ; USE_REGCMD
371/ E222 :
372/ E222 : ;;;
373/ E222 : ;;; Set memory
374/ E222 : ;;;
375/ E222 : SETM:
376/ E222 : E8 INX
377/ E223 : 20 4A E4 JSR SKIPSP
378/ E226 : 20 60 E4 JSR RDHEX
379/ E229 : 20 4A E4 JSR SKIPSP
380/ E22C : B5 00 LDA INBUF,X
381/ E22E : F0 03 BEQ SM0
382/ E230 : 4C B5 E0 JMP ERR
383/ E233 : SM0:
384/ E233 : A5 2B LDA CNT
385/ E235 : F0 08 BEQ SM1
386/ E237 : A5 29 LDA PT1
387/ E239 : 85 17 STA SADDR
388/ E23B : A5 2A LDA PT1+1
389/ E23D : 85 18 STA SADDR+1
390/ E23F : SM1:
391/ E23F : A5 18 LDA SADDR+1
392/ E241 : 20 DF E3 JSR HEXOUT2
393/ E244 : A5 17 LDA SADDR
394/ E246 : 20 DF E3 JSR HEXOUT2
395/ E249 : A9 17 LDA #low(DSEP1)
396/ E24B : 85 27 STA PT0
397/ E24D : A9 E5 LDA #high(DSEP1)
398/ E24F : 85 28 STA PT0+1
399/ E251 : 20 D1 E3 JSR STROUT
400/ E254 : A0 00 LDY #0
AS V1.42 Beta [Bld 158] - Source File unimon_6502.asm - Page 9 - 04/08/20 16:57:26
401/ E256 : B1 17 LDA (SADDR),Y
402/ E258 : 20 DF E3 JSR HEXOUT2
403/ E25B : A9 20 LDA #' '
404/ E25D : 20 F4 E5 JSR CONOUT
405/ E260 : 20 01 E4 JSR GETLIN
406/ E263 : A2 00 LDX #0
407/ E265 : 20 4A E4 JSR SKIPSP
408/ E268 : B5 00 LDA INBUF,X
409/ E26A : D0 10 BNE SM2
410/ E26C : SM10:
411/ E26C : ;; Empty (Increment address)
412/ E26C : A5 17 LDA SADDR
413/ E26E : 18 CLC
414/ E26F : 69 01 ADC #1
415/ E271 : 85 17 STA SADDR
416/ E273 : A5 18 LDA SADDR+1
417/ E275 : 69 00 ADC #0
418/ E277 : 85 18 STA SADDR+1
419/ E279 : 4C 3F E2 JMP SM1
420/ E27C : SM2:
421/ E27C : C9 2D CMP #'-'
422/ E27E : D0 10 BNE SM3
423/ E280 : ;; '-' (Decrement address)
424/ E280 : A5 17 LDA SADDR
425/ E282 : 38 SEC
426/ E283 : E9 01 SBC #1
427/ E285 : 85 17 STA SADDR
428/ E287 : A5 18 LDA SADDR+1
429/ E289 : E9 00 SBC #0
430/ E28B : 85 18 STA SADDR+1
431/ E28D : 4C 3F E2 JMP SM1
432/ E290 : SM3:
433/ E290 : C9 2E CMP #'.'
434/ E292 : D0 03 BNE SM4
435/ E294 : ;; '.' (Quit)
436/ E294 : 4C 7F E0 JMP WSTART
437/ E297 : SM4:
438/ E297 : 20 60 E4 JSR RDHEX
439/ E29A : A5 2B LDA CNT
440/ E29C : D0 03 BNE SM40
441/ E29E : 4C B5 E0 JMP ERR
442/ E2A1 : SM40:
443/ E2A1 : A5 29 LDA PT1
444/ E2A3 : A0 00 LDY #0
445/ E2A5 : 91 17 STA (SADDR),Y
446/ E2A7 : 4C 6C E2 JMP SM10
447/ E2AA :
448/ E2AA : ;;;
449/ E2AA : ;;; Register
450/ E2AA : ;;;
451/ E2AA : =>TRUE IF USE_REGCMD
452/ E2AA : REG:
453/ E2AA : E8 INX
454/ E2AB : 20 4A E4 JSR SKIPSP
455/ E2AE : 20 55 E4 JSR UPPER
456/ E2B1 : C9 00 CMP #0
457/ E2B3 : D0 06 BNE RG0
458/ E2B5 : 20 69 E3 JSR RDUMP
459/ E2B8 : 4C 7F E0 JMP WSTART
460/ E2BB : RG0:
AS V1.42 Beta [Bld 158] - Source File unimon_6502.asm - Page 10 - 04/08/20 16:57:26
461/ E2BB : A0 7A LDY #low(RNTAB)
462/ E2BD : 84 29 STY PT1
463/ E2BF : A0 E5 LDY #high(RNTAB)
464/ E2C1 : 84 2A STY PT1+1
465/ E2C3 : A0 00 LDY #0
466/ E2C5 : RG1:
467/ E2C5 : D1 29 CMP (PT1),Y
468/ E2C7 : F0 13 BEQ RG2
469/ E2C9 : C8 INY
470/ E2CA : 48 PHA
471/ E2CB : B1 29 LDA (PT1),Y
472/ E2CD : F0 09 BEQ RGE
473/ E2CF : 68 PLA
474/ E2D0 : C8 INY
475/ E2D1 : C8 INY
476/ E2D2 : C8 INY
477/ E2D3 : C8 INY
478/ E2D4 : C8 INY
479/ E2D5 : 4C C5 E2 JMP RG1
480/ E2D8 : RGE:
481/ E2D8 : 68 PLA
482/ E2D9 : 4C B5 E0 JMP ERR
483/ E2DC : RG2:
484/ E2DC : C8 INY
485/ E2DD : B1 29 LDA (PT1),Y
486/ E2DF : C9 80 CMP #$80
487/ E2E1 : D0 19 BNE RG3
488/ E2E3 : ;; Next table
489/ E2E3 : C8 INY
490/ E2E4 : B1 29 LDA (PT1),Y
491/ E2E6 : 85 2B STA CNT ; Temporary
492/ E2E8 : C8 INY
493/ E2E9 : B1 29 LDA (PT1),Y
494/ E2EB : 85 2A STA PT1+1
495/ E2ED : A5 2B LDA CNT
496/ E2EF : 85 29 STA PT1
497/ E2F1 : A0 00 LDY #0
498/ E2F3 : E8 INX
499/ E2F4 : B5 00 LDA INBUF,X
500/ E2F6 : 20 55 E4 JSR UPPER
501/ E2F9 : 4C C5 E2 JMP RG1
502/ E2FC : RG3:
503/ E2FC : C9 00 CMP #0
504/ E2FE : F0 66 BEQ RGE0
505/ E300 :
506/ E300 : C8 INY ; +2
507/ E301 : B1 29 LDA (PT1),Y
508/ E303 : AA TAX
509/ E304 : C8 INY
510/ E305 :
511/ E305 : C8 INY ; +4
512/ E306 : B1 29 LDA (PT1),Y
513/ E308 : 85 27 STA PT0
514/ E30A : C8 INY
515/ E30B : B1 29 LDA (PT1),Y
516/ E30D : 85 28 STA PT0+1
517/ E30F : 84 2B STY CNT ; Save Y (STROUT destroys Y)
518/ E311 : 20 D1 E3 JSR STROUT
519/ E314 : A9 3D LDA #'='
520/ E316 : 20 F4 E5 JSR CONOUT
AS V1.42 Beta [Bld 158] - Source File unimon_6502.asm - Page 11 - 04/08/20 16:57:26
521/ E319 : A4 2B LDY CNT ; Restore Y
522/ E31B : 88 DEY
523/ E31C : 88 DEY
524/ E31D : 88 DEY
525/ E31E : 88 DEY
526/ E31F : B1 29 LDA (PT1),Y
527/ E321 : 85 23 STA REGSIZ
528/ E323 : C9 01 CMP #1
529/ E325 : D0 08 BNE RG4
530/ E327 : ;; 8 bit register
531/ E327 : B5 00 LDA 0,X
532/ E329 : 20 DF E3 JSR HEXOUT2
533/ E32C : 4C 39 E3 JMP RG5
534/ E32F : RG4:
535/ E32F : ;; 16 bit register
536/ E32F : B5 01 LDA 1,X
537/ E331 : 20 DF E3 JSR HEXOUT2
538/ E334 : B5 00 LDA 0,X
539/ E336 : 20 DF E3 JSR HEXOUT2
540/ E339 : RG5:
541/ E339 : A9 20 LDA #' '
542/ E33B : 20 F4 E5 JSR CONOUT
543/ E33E : 86 26 STX CKSUM ; Save X (GETLIN destroys X)
544/ E340 : 20 01 E4 JSR GETLIN
545/ E343 : A2 00 LDX #0
546/ E345 : 20 60 E4 JSR RDHEX
547/ E348 : A5 2B LDA CNT
548/ E34A : F0 17 BEQ RGR
549/ E34C : A6 26 LDX CKSUM ; Restore X
550/ E34E : A5 23 LDA REGSIZ
551/ E350 : C9 01 CMP #1
552/ E352 : D0 07 BNE RG6
553/ E354 : ;; 8 bit register
554/ E354 : A5 29 LDA PT1
555/ E356 : 95 00 STA ,X
556/ E358 : 4C 63 E3 JMP RG7
557/ E35B : RG6:
558/ E35B : ;; 16 bit address
559/ E35B : A5 29 LDA PT1
560/ E35D : 95 00 STA ,X ; (L)
561/ E35F : A5 2A LDA PT1+1
562/ E361 : 95 01 STA 1,X ; (H)
563/ E363 : RG7:
564/ E363 : RGR:
565/ E363 : 4C 7F E0 JMP WSTART
566/ E366 :
567/ E366 : RGE0:
568/ E366 : 4C B5 E0 JMP ERR
569/ E369 :
570/ E369 : RDUMP:
571/ E369 : A9 5D LDA #low(RDSA) ; A
572/ E36B : 85 27 STA PT0
573/ E36D : A9 E5 LDA #high(RDSA)
574/ E36F : 85 28 STA PT0+1
575/ E371 : 20 D1 E3 JSR STROUT
576/ E374 : A5 1C LDA REGA
577/ E376 : 20 DF E3 JSR HEXOUT2
578/ E379 :
579/ E379 : A9 60 LDA #low(RDSX) ; X
580/ E37B : 85 27 STA PT0
AS V1.42 Beta [Bld 158] - Source File unimon_6502.asm - Page 12 - 04/08/20 16:57:26
581/ E37D : A9 E5 LDA #high(RDSX)
582/ E37F : 85 28 STA PT0+1
583/ E381 : 20 D1 E3 JSR STROUT
584/ E384 : A5 1D LDA REGX
585/ E386 : 20 DF E3 JSR HEXOUT2
586/ E389 :
587/ E389 : A9 64 LDA #low(RDSY) ; Y
588/ E38B : 85 27 STA PT0
589/ E38D : A9 E5 LDA #high(RDSY)
590/ E38F : 85 28 STA PT0+1
591/ E391 : 20 D1 E3 JSR STROUT
592/ E394 : A5 1E LDA REGY
593/ E396 : 20 DF E3 JSR HEXOUT2
594/ E399 :
595/ E399 : A9 68 LDA #low(RDSSP) ; SP
596/ E39B : 85 27 STA PT0
597/ E39D : A9 E5 LDA #high(RDSSP)
598/ E39F : 85 28 STA PT0+1
599/ E3A1 : 20 D1 E3 JSR STROUT
600/ E3A4 : A5 1F LDA REGSP
601/ E3A6 : 20 DF E3 JSR HEXOUT2
602/ E3A9 :
603/ E3A9 : A9 6F LDA #low(RDSPC) ; PC
604/ E3AB : 85 27 STA PT0
605/ E3AD : A9 E5 LDA #high(RDSPC)
606/ E3AF : 85 28 STA PT0+1
607/ E3B1 : 20 D1 E3 JSR STROUT
608/ E3B4 : A5 21 LDA REGPC+1 ; PC(H)
609/ E3B6 : 20 DF E3 JSR HEXOUT2
610/ E3B9 : A5 20 LDA REGPC ; PC(L)
611/ E3BB : 20 DF E3 JSR HEXOUT2
612/ E3BE :
613/ E3BE : A9 74 LDA #low(RDSPSR) ; PSR
614/ E3C0 : 85 27 STA PT0
615/ E3C2 : A9 E5 LDA #high(RDSPSR)
616/ E3C4 : 85 28 STA PT0+1
617/ E3C6 : 20 D1 E3 JSR STROUT
618/ E3C9 : A5 22 LDA REGPSR
619/ E3CB : 20 DF E3 JSR HEXOUT2
620/ E3CE :
621/ E3CE : 4C F7 E3 JMP CRLF
622/ E3D1 : [451] ENDIF
623/ E3D1 :
624/ E3D1 : ;;;
625/ E3D1 : ;;; Other support routines
626/ E3D1 : ;;;
627/ E3D1 :
628/ E3D1 : STROUT:
629/ E3D1 : A0 00 LDY #0
630/ E3D3 : STRO0:
631/ E3D3 : B1 27 LDA (PT0),Y
632/ E3D5 : F0 07 BEQ STROE
633/ E3D7 : 20 F4 E5 JSR CONOUT
634/ E3DA : C8 INY
635/ E3DB : 4C D3 E3 JMP STRO0
636/ E3DE : STROE:
637/ E3DE : 60 RTS
638/ E3DF :
639/ E3DF : HEXOUT2:
640/ E3DF : 48 PHA
AS V1.42 Beta [Bld 158] - Source File unimon_6502.asm - Page 13 - 04/08/20 16:57:26
641/ E3E0 : 4A LSR A
642/ E3E1 : 4A LSR A
643/ E3E2 : 4A LSR A
644/ E3E3 : 4A LSR A
645/ E3E4 : 20 E8 E3 JSR HEXOUT1
646/ E3E7 : 68 PLA
647/ E3E8 : HEXOUT1:
648/ E3E8 : 29 0F AND #$0F
649/ E3EA : 18 CLC
650/ E3EB : 69 30 ADC #'0'
651/ E3ED : C9 3A CMP #'9'+1
652/ E3EF : 90 03 BCC HEXOUTE
653/ E3F1 : 18 CLC
654/ E3F2 : 69 07 ADC #'A'-'9'-1
655/ E3F4 : HEXOUTE:
656/ E3F4 : 4C F4 E5 JMP CONOUT
657/ E3F7 :
658/ E3F7 : CRLF:
659/ E3F7 : A9 0D LDA #CR
660/ E3F9 : 20 F4 E5 JSR CONOUT
661/ E3FC : A9 0A LDA #LF
662/ E3FE : 4C F4 E5 JMP CONOUT
663/ E401 :
664/ E401 : GETLIN:
665/ E401 : A2 00 LDX #0
666/ E403 : GL0:
667/ E403 : 20 E3 E5 JSR CONIN
668/ E406 : C9 0D CMP #CR
669/ E408 : F0 38 BEQ GLE
670/ E40A : C9 0A CMP #LF
671/ E40C : F0 34 BEQ GLE
672/ E40E : C9 08 CMP #BS
673/ E410 : F0 19 BEQ GLB
674/ E412 : C9 7F CMP #DEL
675/ E414 : F0 15 BEQ GLB
676/ E416 : C9 20 CMP #' '
677/ E418 : 90 E9 BCC GL0
678/ E41A : C9 80 CMP #$80
679/ E41C : B0 E5 BCS GL0
680/ E41E : E0 0F CPX #BUFLEN-1
681/ E420 : B0 E1 BCS GL0 ; Too long
682/ E422 : 95 00 STA INBUF,X
683/ E424 : E8 INX
684/ E425 : 20 F4 E5 JSR CONOUT
685/ E428 : 4C 03 E4 JMP GL0
686/ E42B : GLB:
687/ E42B : E0 00 CPX #0
688/ E42D : F0 D4 BEQ GL0
689/ E42F : CA DEX
690/ E430 : A9 08 LDA #BS
691/ E432 : 20 F4 E5 JSR CONOUT
692/ E435 : A9 20 LDA #' '
693/ E437 : 20 F4 E5 JSR CONOUT
694/ E43A : A9 08 LDA #BS
695/ E43C : 20 F4 E5 JSR CONOUT
696/ E43F : 4C 03 E4 JMP GL0
697/ E442 : GLE:
698/ E442 : 20 F7 E3 JSR CRLF
699/ E445 : A9 00 LDA #0
700/ E447 : 95 00 STA INBUF,X
AS V1.42 Beta [Bld 158] - Source File unimon_6502.asm - Page 14 - 04/08/20 16:57:26
701/ E449 : 60 RTS
702/ E44A :
703/ E44A : SKIPSP:
704/ E44A : B5 00 LDA INBUF,X
705/ E44C : C9 20 CMP #' '
706/ E44E : D0 04 BNE SSE
707/ E450 : E8 INX
708/ E451 : 4C 4A E4 JMP SKIPSP
709/ E454 : SSE:
710/ E454 : 60 RTS
711/ E455 :
712/ E455 : UPPER:
713/ E455 : C9 61 CMP #'a'
714/ E457 : 90 06 BCC UPE
715/ E459 : C9 7B CMP #'z'+1
716/ E45B : B0 02 BCS UPE
717/ E45D : 69 E0 ADC #'A'-'a'
718/ E45F : UPE:
719/ E45F : 60 RTS
720/ E460 :
721/ E460 : RDHEX:
722/ E460 : A9 00 LDA #0
723/ E462 : 85 29 STA PT1
724/ E464 : 85 2A STA PT1+1
725/ E466 : 85 2B STA CNT
726/ E468 : RH0:
727/ E468 : B5 00 LDA INBUF,X
728/ E46A : 20 55 E4 JSR UPPER
729/ E46D : C9 30 CMP #'0'
730/ E46F : 90 2D BCC RHE
731/ E471 : C9 3A CMP #'9'+1
732/ E473 : 90 0B BCC RH1
733/ E475 : C9 41 CMP #'A'
734/ E477 : 90 25 BCC RHE
735/ E479 : C9 47 CMP #'F'+1
736/ E47B : B0 21 BCS RHE
737/ E47D : 38 SEC
738/ E47E : E9 07 SBC #'A'-'9'-1
739/ E480 : RH1:
740/ E480 : 38 SEC
741/ E481 : E9 30 SBC #'0'
742/ E483 : 06 29 ASL PT1
743/ E485 : 26 2A ROL PT1+1
744/ E487 : 06 29 ASL PT1
745/ E489 : 26 2A ROL PT1+1
746/ E48B : 06 29 ASL PT1
747/ E48D : 26 2A ROL PT1+1
748/ E48F : 06 29 ASL PT1
749/ E491 : 26 2A ROL PT1+1
750/ E493 : 18 CLC
751/ E494 : 65 29 ADC PT1
752/ E496 : 85 29 STA PT1
753/ E498 : E6 2B INC CNT
754/ E49A : E8 INX
755/ E49B : 4C 68 E4 JMP RH0
756/ E49E : RHE:
757/ E49E : 60 RTS
758/ E49F :
759/ E49F : ;;;
760/ E49F : ;;; Interrupt handler
AS V1.42 Beta [Bld 158] - Source File unimon_6502.asm - Page 15 - 04/08/20 16:57:26
761/ E49F : ;;;
762/ E49F : ;; Interrupt / Break
763/ E49F : IRQBRK:
764/ E49F : =>TRUE IF USE_REGCMD
765/ E49F : 48 PHA
766/ E4A0 : 08 PHP
767/ E4A1 : 68 PLA ; A <= PSR
768/ E4A2 : 29 10 AND #$10 ; Check B flag
769/ E4A4 : F0 2C BEQ IBIR
770/ E4A6 : D8 CLD
771/ E4A7 :
772/ E4A7 : 68 PLA ; A
773/ E4A8 : 85 1C STA REGA
774/ E4AA : 8A TXA ; X
775/ E4AB : 85 1D STA REGX
776/ E4AD : 98 TYA ; Y
777/ E4AE : 85 1E STA REGY
778/ E4B0 : 68 PLA ; PSR (Pushed by BRK)
779/ E4B1 : 85 22 STA REGPSR
780/ E4B3 : 68 PLA ; PC(L) (Pushed by BRK)
781/ E4B4 : 38 SEC
782/ E4B5 : E9 02 SBC #2 ; Adjust PC to point BRK instruction
783/ E4B7 : 85 20 STA REGPC
784/ E4B9 : 68 PLA ; PC(H) (Pushed by BRK)
785/ E4BA : E9 00 SBC #0
786/ E4BC : 85 21 STA REGPC+1
787/ E4BE : BA TSX ; SP
788/ E4BF : 86 1F STX REGSP
789/ E4C1 :
790/ E4C1 : A9 57 LDA #low(BRKMSG)
791/ E4C3 : 85 27 STA PT0
792/ E4C5 : A9 E5 LDA #high(BRKMSG)
793/ E4C7 : 85 28 STA PT0+1
794/ E4C9 : 20 D1 E3 JSR STROUT
795/ E4CC : 20 69 E3 JSR RDUMP
796/ E4CF : 4C 7F E0 JMP WSTART
797/ E4D2 :
798/ E4D2 : IBIR:
799/ E4D2 : 68 PLA
800/ E4D3 : 40 RTI
801/ E4D4 : =>FALSE ELSE ; USE_REGCMD
802/ E4D4 : ;; Dummy
803/ E4D4 : RTI
804/ E4D4 : [764] ENDIF ; USE_REGCMD
805/ E4D4 :
806/ E4D4 : OPNMSG:
807/ E4D4 : 0D 0A 55 6E 69 76 FCB CR,LF,"Universal Monitor 6502",CR,LF,$00
65 72 73 61 6C 20
4D 6F 6E 69 74 6F
72 20 36 35 30 32
0D 0A 00
808/ E4EF : PROMPT:
809/ E4EF : 5D 20 00 FCB "] ",$00
810/ E4F2 : IHEMSG:
811/ E4F2 : 45 72 72 6F 72 20 FCB "Error ihex",CR,LF,$00
69 68 65 78 0D 0A
00
812/ E4FF :
813/ E4FF : SHEMSG:
814/ E4FF : 45 72 72 6F 72 20 FCB "Error srec",CR,LF,$00
AS V1.42 Beta [Bld 158] - Source File unimon_6502.asm - Page 16 - 04/08/20 16:57:26
73 72 65 63 0D 0A
00
815/ E50C :
816/ E50C : ERRMSG:
817/ E50C : 45 72 72 6F 72 0D FCB "Error",CR,LF,$00
0A 00
818/ E514 :
819/ E514 : DSEP0:
820/ E514 : 20 3A 00 FCB " :",$00
821/ E517 : DSEP1:
822/ E517 : 20 3A 20 00 FCB " : ",$00
823/ E51B : IHEXER:
824/ E51B : 3A 30 30 30 30 30 FCB ":00000001FF",CR,LF,$00
30 30 31 46 46 0D
0A 00
825/ E529 : SRECER:
826/ E529 : 53 39 30 33 30 30 FCB "S9030000FC",CR,LF,$00
30 30 46 43 0D 0A
00
827/ E536 :
828/ E536 : =>TRUE IF USE_IDENT
829/ E536 : 36 35 30 32 0D 0A IM65: FCB "6502",CR,LF,$00
00
830/ E53D : 36 35 43 30 32 0D IM65C: FCB "65C02",CR,LF,$00
0A 00
831/ E545 : 52 36 35 43 30 32 IMR65C: FCB "R65C02",CR,LF,$00
0D 0A 00
832/ E54E : 52 50 32 41 30 33 IM2A03: FCB "RP2A03",CR,LF,$00
0D 0A 00
833/ E557 : [828] ENDIF ; USE_IDENT
834/ E557 :
835/ E557 : =>TRUE IF USE_REGCMD
836/ E557 :
837/ E557 : 42 52 4B 0D 0A 00 BRKMSG: FCB "BRK",CR,LF,$00
838/ E55D :
839/ E55D : 41 3D 00 RDSA: FCB "A=",$00
840/ E560 : 20 58 3D 00 RDSX: FCB " X=",$00
841/ E564 : 20 59 3D 00 RDSY: FCB " Y=",$00
842/ E568 : 20 53 50 3D 30 31 RDSSP: FCB " SP=01",$00
00
843/ E56F : 20 50 43 3D 00 RDSPC: FCB " PC=",$00
844/ E574 : 20 50 53 52 3D 00 RDSPSR: FCB " PSR=",$00
845/ E57A :
846/ E57A : RNTAB:
847/ E57A : 41 01 FCB 'A',1
848/ E57C : 1C 00 C8 E5 FDB REGA,RNA
849/ E580 : 58 01 FCB 'X',1
850/ E582 : 1D 00 CA E5 FDB REGX,RNX
851/ E586 : 59 01 FCB 'Y',1
852/ E588 : 1E 00 CC E5 FDB REGY,RNY
853/ E58C : 53 80 FCB 'S',$80
854/ E58E : 9E E5 00 00 FDB RNTABS,0
855/ E592 : 50 80 FCB 'P',$80
856/ E594 : AA E5 00 00 FDB RNTABP,0
857/ E598 :
858/ E598 : 00 00 FCB $00,0 ; End mark
859/ E59A : 00 00 00 00 FDB 0,0
860/ E59E :
861/ E59E : RNTABS:
862/ E59E : 50 01 FCB 'P',1
AS V1.42 Beta [Bld 158] - Source File unimon_6502.asm - Page 17 - 04/08/20 16:57:26
863/ E5A0 : 1F 00 CE E5 FDB REGSP,RNSP
864/ E5A4 :
865/ E5A4 : 00 00 FCB $00,0 ; End mark
866/ E5A6 : 00 00 00 00 FDB 0,0
867/ E5AA :
868/ E5AA : RNTABP:
869/ E5AA : 43 02 FCB 'C',2
870/ E5AC : 20 00 D1 E5 FDB REGPC,RNPC
871/ E5B0 : 53 80 FCB 'S',$80
872/ E5B2 : BC E5 00 00 FDB RNTABPS,0
873/ E5B6 :
874/ E5B6 : 00 00 FCB $00,0 ; End mark
875/ E5B8 : 00 00 00 00 FDB 0,0
876/ E5BC :
877/ E5BC : RNTABPS:
878/ E5BC : 52 01 FCB 'R',1
879/ E5BE : 22 00 D4 E5 FDB REGPSR,RNPSR
880/ E5C2 :
881/ E5C2 : 00 00 FCB $00,0 ; End mark
882/ E5C4 : 00 00 00 00 FDB 0,0
883/ E5C8 :
884/ E5C8 : 41 00 RNA: FCB "A",$00
885/ E5CA : 58 00 RNX: FCB "X",$00
886/ E5CC : 59 00 RNY: FCB "Y",$00
887/ E5CE : 53 50 00 RNSP: FCB "SP",$00
888/ E5D1 : 50 43 00 RNPC: FCB "PC",$00
889/ E5D4 : 50 53 52 00 RNPSR: FCB "PSR",$00
890/ E5D8 :
891/ E5D8 : [835] ENDIF
892/ E5D8 :
893/ E5D8 : =>TRUE IF USE_DEV_6850
894/ E5D8 : INCLUDE "dev/dev_6850.asm"
(1) 1/ E5D8 : ;;;
(1) 2/ E5D8 : ;;; M6850 Console Driver
(1) 3/ E5D8 : ;;;
(1) 4/ E5D8 :
(1) 5/ E5D8 : INIT:
(1) 6/ E5D8 : A9 03 LDA #ACCR_I
(1) 7/ E5DA : 8D 18 80 STA ACIACR
(1) 8/ E5DD : A9 15 LDA #ACCR_V
(1) 9/ E5DF : 8D 18 80 STA ACIACR
(1) 10/ E5E2 : 60 RTS
(1) 11/ E5E3 :
(1) 12/ E5E3 : CONIN:
(1) 13/ E5E3 : AD 18 80 LDA ACIACR
(1) 14/ E5E6 : 29 01 AND #$01
(1) 15/ E5E8 : F0 F9 BEQ CONIN
(1) 16/ E5EA : AD 19 80 LDA ACIADR
(1) 17/ E5ED : 60 RTS
(1) 18/ E5EE :
(1) 19/ E5EE : CONST:
(1) 20/ E5EE : AD 18 80 LDA ACIACR
(1) 21/ E5F1 : 29 01 AND #$01
(1) 22/ E5F3 : 60 RTS
(1) 23/ E5F4 :
(1) 24/ E5F4 : CONOUT:
(1) 25/ E5F4 : 48 PHA
(1) 26/ E5F5 : CO0:
(1) 27/ E5F5 : AD 18 80 LDA ACIACR
(1) 28/ E5F8 : 4A LSR
AS V1.42 Beta [Bld 158] - Source File unimon_6502.asm(dev_6850.asm) - Page 18 - 04/08/20 16:57:26
(1) 29/ E5F9 : 4A LSR
(1) 30/ E5FA : 90 F9 BCC CO0
(1) 31/ E5FC : 68 PLA
(1) 32/ E5FD : 8D 19 80 STA ACIADR
(1) 33/ E600 : 60 RTS
(1) 34/ E601 :
895/ E601 : [893] ENDIF
896/ E601 :
897/ E601 : =>FALSE IF USE_DEV_6551
898/ E601 : INCLUDE "dev/dev_6551.asm"
899/ E601 : [897] ENDIF
900/ E601 :
901/ E601 : =>FALSE IF USE_DEV_EMILY
902/ E601 : INCLUDE "dev/dev_emily.asm"
903/ E601 : [901] ENDIF
904/ E601 :
905/ E601 : ;;
906/ E601 : ;; Entry point
907/ E601 : ;;
908/ E601 :
909/ FF80 : ORG ENTRY+0 ; Cold start
910/ FF80 : E_CSTART:
911/ FF80 : 4C 00 E0 JMP CSTART
912/ FF83 :
913/ FF88 : ORG ENTRY+8 ; Warm start
914/ FF88 : E_WSTART:
915/ FF88 : 4C 7F E0 JMP WSTART
916/ FF8B :
917/ FF90 : ORG ENTRY+16 ; Console output
918/ FF90 : E_CONOUT:
919/ FF90 : 4C F4 E5 JMP CONOUT
920/ FF93 :
921/ FF98 : ORG ENTRY+24 ; (Console) String output
922/ FF98 : E_STROUT:
923/ FF98 : 4C D1 E3 JMP STROUT
924/ FF9B :
925/ FFA0 : ORG ENTRY+32 ; Console input
926/ FFA0 : E_CONIN:
927/ FFA0 : 4C E3 E5 JMP CONIN
928/ FFA3 :
929/ FFA8 : ORG ENTRY+40 ; Console status
930/ FFA8 : E_CONST:
931/ FFA8 : 4C EE E5 JMP CONST
932/ FFAB :
933/ FFAB : ;;
934/ FFAB : ;; Vector area
935/ FFAB : ;;
936/ FFAB :
937/ FFFA : ORG $FFFA
938/ FFFA :
939/ FFFA : 00 00 FDB $0000 ; NMI
940/ FFFC :
941/ FFFC : 00 E0 FDB CSTART ; RESET
942/ FFFE :
943/ FFFE : 9F E4 FDB IRQBRK ; IRQ/BRK
944/ 10000 :
945/ 10000 : ;;;
946/ 10000 : ;;; RAM area
947/ 10000 : ;;;
948/ 10000 :
AS V1.42 Beta [Bld 158] - Source File unimon_6502.asm - Page 19 - 04/08/20 16:57:26
949/ 10000 : ;;
950/ 10000 : ;; Work Area
951/ 10000 : ;;
952/ 10000 :
953/ 0 : ORG WORK_B
954/ 0 :
955/ 0 : INBUF: RMB BUFLEN ; Line input buffer
956/ 10 : DSADDR: RMB 2 ; Dump start address
957/ 12 : DEADDR: RMB 2 ; Dump end address
958/ 14 : DSTATE: RMB 1 ; Dump state
959/ 15 : GADDR: RMB 2 ; Go address
960/ 17 : SADDR: RMB 2 ; Set address
961/ 19 : HEXMOD: RMB 1 ; HEX file mode
962/ 1A : RECTYP: RMB 1 ; Record type
963/ 1B : PSPEC: RMB 1 ; Processor spec.
964/ 1C :
965/ 1C : =>TRUE IF USE_REGCMD
966/ 1C : REGA: RMB 1 ; Accumulator A
967/ 1D : REGX: RMB 1 ; Index register X
968/ 1E : REGY: RMB 1 ; Index register Y
969/ 1F : REGSP: RMB 1 ; Stack pointer SP
970/ 20 : REGPC: RMB 2 ; Program counter PC
971/ 22 : REGPSR: RMB 1 ; Processor status register PSR
972/ 23 :
973/ 23 : REGSIZ: RMB 1 ; Register size
974/ 24 : [965] ENDIF
975/ 24 :
976/ 24 : DMPPT: RMB 2
977/ 26 : CKSUM: RMB 1 ; Checksum
978/ 27 :
979/ 27 : PT0: RMB 2 ; Generic Pointer 0
980/ 29 : PT1: RMB 2 ; Generic Pointer 1
981/ 2B : CNT: RMB 1 ; Generic Counter
982/ 2C :
983/ 2C : END
AS V1.42 Beta [Bld 158] - Source File unimon_6502.asm - Page 20 - 04/08/20 16:57:26
Symbol Table (* = unused):
--------------------------
ACCR_I : 3 - | ACCR_V : 15 - |
ACIACR : 8018 - | ACIADR : 8019 - |
*ARCHITECTURE : x86_64-unknown-linux - |
*BIGENDIAN : 0 - | *BRANCHEXT : 0 - |
BRKMSG : E557 C | BS : 8 - |
BUFLEN : 10 - | *CASESENSITIVE : 0 - |
CKSUM : 26 C | CNT : 2B C |
CO0 : E5F5 C | CONIN : E5E3 C |
CONOUT : E5F4 C | CONST : E5EE C |
*CONSTPI : 3.141592653589793 - | CR : D - |
CRLF : E3F7 C | CSTART : E000 C |
*DATE : 04/08/20 - | DEADDR : 12 C |
DEL : 7F - | *DMPPT : 24 C |
DP0 : E0E5 C | DP00 : E0D5 C |
DP1 : E0FD C | DPB : E1A5 C |
DPB0 : E1B6 C | DPB1 : E1C5 C |
DPB2 : E1C9 C | DPBE : E1F4 C |
DPL : E15B C | DPL0 : E174 C |
DPL1 : E188 C | DPL2 : E198 C |
DPL3 : E19D C | DPM : E11C C |
DPM0 : E12A C | DPM1 : E150 C |
DSADDR : 10 C | DSEP0 : E514 C |
DSEP1 : E517 C | DSTATE : 14 C |
DUMP : E0C3 C | ENTRY : FF80 - |
ERR : E0B5 C | ERRMSG : E50C C |
*E_CONIN : FFA0 C | *E_CONOUT : FF90 C |
*E_CONST : FFA8 C | *E_CSTART : FF80 C |
*E_STROUT : FF98 C | *E_WSTART : FF88 C |
*FALSE : 0 - | *FULLPMMU : 1 - |
G0 : E20F C | G00 : E203 C |
GADDR : 15 C | GETLIN : E401 C |
GL0 : E403 C | GLB : E42B C |
GLE : E442 C | GO : E1F5 C |
*HAS64 : 1 - | *HASDSP : 0 - |
*HASFPU : 0 - | *HASPMMU : 0 - |
HEXMOD : 19 C | HEXOUT1 : E3E8 C |
HEXOUT2 : E3DF C | HEXOUTE : E3F4 C |
IBIR : E4D2 C | ID2A03 : E070 C |
ID65C : E050 C | IDE : E07A C |
IDR65C : E063 C | *IHEMSG : E4F2 C |
*IHEXER : E51B C | IM2A03 : E54E C |
IM65 : E536 C | IM65C : E53D C |
IMR65C : E545 C | INBUF : 0 C |
*INEXTMODE : 0 - | INIT : E5D8 C |
*INLWORDMODE : 0 - | *INMAXMODE : 0 - |
*INSRCMODE : 0 - | *INSUPMODE : 0 - |
IRQBRK : E49F C | LF : A - |
*LISTON : 1 - | M00 : E0A0 C |
M01 : E0A7 C | M02 : E0AE C |
M05 : E0B5 C | *MACEXP : 7 - |
*MOMCPU : 6502 - | *MOMCPUNAME : 6502 - |
*NESTMAX : 100 - | OPNMSG : E4D4 C |
*PACKING : 0 - | *PADDING : 1 - |
PROMPT : E4EF C | PSPEC : 1B C |
PT0 : 27 C | PT1 : 29 C |
RDHEX : E460 C | RDSA : E55D C |
RDSPC : E56F C | RDSPSR : E574 C |
AS V1.42 Beta [Bld 158] - Source File unimon_6502.asm - Page 21 - 04/08/20 16:57:26
RDSSP : E568 C | RDSX : E560 C |
RDSY : E564 C | RDUMP : E369 C |
*RECTYP : 1A C | REG : E2AA C |
REGA : 1C C | REGPC : 20 C |
REGPSR : 22 C | REGSIZ : 23 C |
REGSP : 1F C | REGX : 1D C |
REGY : 1E C | *RELAXED : 0 - |
RG0 : E2BB C | RG1 : E2C5 C |
RG2 : E2DC C | RG3 : E2FC C |
RG4 : E32F C | RG5 : E339 C |
RG6 : E35B C | RG7 : E363 C |
RGE : E2D8 C | RGE0 : E366 C |
RGR : E363 C | RH0 : E468 C |
RH1 : E480 C | RHE : E49E C |
RNA : E5C8 C | RNPC : E5D1 C |
RNPSR : E5D4 C | RNSP : E5CE C |
RNTAB : E57A C | RNTABP : E5AA C |
RNTABPS : E5BC C | RNTABS : E59E C |
RNX : E5CA C | RNY : E5CC C |
ROM_B : E000 - | SADDR : 17 C |
SETM : E222 C | *SHEMSG : E4FF C |
SKIPSP : E44A C | SM0 : E233 C |
SM1 : E23F C | SM10 : E26C C |
SM2 : E27C C | SM3 : E290 C |
SM4 : E297 C | SM40 : E2A1 C |
*SRECER : E529 C | SSE : E454 C |
STACK : 1FF - | STRO0 : E3D3 C |
STROE : E3DE C | STROUT : E3D1 C |
*TARGET : 6502 - | *TIME : 16:57:26 - |
*TRUE : 1 - | UPE : E45F C |
UPPER : E455 C | USE_DEV_6551 : 0 - |
USE_DEV_6850 : 1 - | USE_DEV_EMILY : 0 - |
USE_IDENT : 1 - | USE_REGCMD : 1 - |
*VERSION : 142F - | WORK_B : 0 - |
WSTART : E07F C |
182 symbols
41 unused symbols
AS V1.42 Beta [Bld 158] - Source File unimon_6502.asm - Page 22 - 04/08/20 16:57:26
Defined Functions:
------------------
HIGH | LOW
AS V1.42 Beta [Bld 158] - Source File unimon_6502.asm - Page 23 - 04/08/20 16:57:26
Code Pages:
----------
STANDARD (0 changed characters)
1 code page
0.08 seconds assembly time
1098 lines source file
3 passes
0 errors
0 warnings
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment