-
Notifications
You must be signed in to change notification settings - Fork 94
Expand file tree
/
Copy pathaltii4
More file actions
131 lines (131 loc) · 2.51 KB
/
altii4
File metadata and controls
131 lines (131 loc) · 2.51 KB
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
.PAGE 'ALTII4 11/04/80'
;
;
.SKIP 3
; MICROTUS IRQ HANDLER
;
REPET
;
REPEX
LDA ROLVEC+1 ;CALL IRQ ROUTINE AS A SUBROUTINE
PHA
LDA ROLVEC
PHA ;A RETURN ADR
LDA #0 ;A FAKE STATUS (BREAK FLAG CLEAR)
PHA ;A FAKE STATUS
PHA ;A FAKE A REG
PHA ;A FAKE X REG
PHA ;A FAKE Y REG
JMP (KEYS) ;DO IRQ KEYSCAN
.SKIP 3
; READ BYTE MODIFY AND BACKUP
; A=# OF BYTES TO MOD
;
BYTMOD STA TMPC ;TEMP CTR
PHA
BY100 JSR RDOC ;SKIP DELIMITER
JSR BYTE ;READ 1 BYTE AND MOD
BNE BY100 ;IF NOT DONE
PLA
BY200 EOR #$FF ;MAKE NEG FOR BACKUP
JMP TMPA10 ;ADJUST TMP0
.SKIP 3
; DISPLAY MEMORY AND ASCII
;
INTGRT
LDA #$40 ;FLAG ASCII DUMP
.BYT $2C
DSPLYM
LDA #0
STA TMPC ;INDICATE HEX DUMP
JSR RANGE ;FIND START ADR AND END ADR
INT100 LDX WRAP ;WRAP OVER $FFFF
BNE INTEND ;YES
JSR DCMP ;DONE ?
BCC INTEND ;YES
BIT TMPC ;IS IT AN INTEROGATE?
BVC DOMEM ;BRANCH IF NOT
JSR INTONE ;ELSE DISPLAY ASCII
JMP SCHECK
DOMEM
JSR HEXDMP ;DISPLAY 5 BYTES IN HEX
SCHECK
JSR STOP1 ;STOP KEY ?
BNE INT100 ;NO
INTEND JMP DISSTR ;CURSOR UP, START
.SKIP 3
; INTERROGATE ONE LINE
;
INTONE
JSR CRLF
INTO10 LDX #'. ;PRINT ".' "
LDA #''
JSR WRTWO
JSR SPACE
JSR WROA ;PRINT ADDRESS
LDA #$12 ;DISPLAY IT IN RVS
JSR WRT
LDY #ISIZE ;PRINT ISIZE # ASCII BYTES
LDX #0 ;FOR INDIRECT
INTO20 JSR FROMR0 ;GET BYTE
AND #$7F ;CONVERT TO ASCII ONLY
CMP #$20 ;A CONTROL CHAR ?
BCS INTO30 ;NO
LDA #'. ;PRINT A PERIOD INSTEAD
INTO30 JSR WRT ;PRINT IT
CMP #$22 ;WAS IT A DOUBLE QUOTE ?
BNE INTO40 ;BRANCH IF NOT
INTO35 LDA #$14 ;DELETE IT
JSR WRT
LDA #$22 ;AND PRINT IT AGAIN
JSR WRT
INTO40 JSR INCTMP ;NEXT CHAR
DEY
BNE INTO20
LDA #$92 ;TURN OFF RVS
JSR WRT ;DO IT AND RETURN
LDA TMP0 ;BACKUP UP FOR HEX DUMP
SEC
SBC #ISIZE
STA TMP0
BCS INTO50
DEC TMP0+1
INTO50 LDA #ISIZE ;DUMP ISIZE BYTES
JMP DM
.SKIP 3
;
; DISPLAY ONE LINE - MSIZE # BYTES - IN HEX
;
HEXDMP JSR CRLF ;START ON NEXT LINE
HEXDM2 LDX #'. ;ENTRY WITHOUT GOING TO NEXT LINE
LDA #':
JSR WRTWO ;PRINT ".:"
JSR WROA ;PRINT THE ADDRESS OF THE LINE
LDA #MSIZE ;DISPLAY MSIZE # BYTES
JMP DM ;GENERATE DISPLAY AND RETURN
.SKI 3
; ALTER MEMORY
;
ALTMEM JSR SKTMP0 ;SKIP SPACES READ ADR
LDA #MSIZE
JSR BYTMOD ;MOD MSIZE # BYTES
JSR CURUP ;CURSOR UP
JSR HEXDMP ;DISPLAY ONE LINE
LDA #': ;A ":"
STA KEYD
LDA #0 ;A NULL IN KEYBUFFER
JMP AS701
.SKIP 3
; INPUT RANGE START ADR AND MAYBE END ADR
;
RANGE JSR SKTMP0 ;READ SA MOVE TO TMP2
STA TMP2
STX TMP2+1
JSR RDT ;GET NEXT CHAR
CMP #$0D ;A RETURN ?
BEQ RNG300 ;YES - LEAVE END ADR SAME AS START
JSR RDTMP2 ;GET END ADR
RNG300
JMP CRLF
.SKIP 5
.END