-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathincCatalogueCommand.asm
124 lines (104 loc) · 4.18 KB
/
incCatalogueCommand.asm
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
;*******************************************************************************
;* Catalogue Routine *
;* Syntax : Catalogue or c shifted A *
;*******************************************************************************
CATALOG
lda #8 ; Logial File Number
ldx DEVICE_NUMBER ; Device Number
ldy #0 ; Secondary Address
jsr krljmp_SETLFS$ ; Set Active File Parameters
lda #2 ; Set Number of Characters
ldx #<catnm ; LoByte Address Of String
ldy #>catnm ; HiByte Address Of String
jsr krljmp_SETNAM$ ; Set Parameter for filename
jsr krljmp_OPEN$ ; Perform Open File Command
bcc @NOOpenError
pha
jsr CAT_CloseFileNumber ; Close File Number
pla
tax
jmp ErrorHandler ; Error Detected, Jump to Handler
@NOOpenError
ldx #8 ; Set Logical File Number
jsr krljmp_CHKIN$ ; Set Input Device
bcc @NoInputError
pha
jsr CAT_CloseFileNumber ; Close File Number
pla
tax
jmp ErrorHandler ; Error Detected, Jump to Handler
@NoInputError
jsr krljmp_CHRIN$ ; Get Character (LoByte Start Address)
lda $90
bne CAT_Error
jsr krljmp_CHRIN$ ; Get Character (HiByte Start Address)
CAT_GetNextBasicLine
jsr krljmp_CHRIN$ ; Get Character (LoByte Linked Line)
jsr krljmp_CHRIN$ ; Get Character (HiByte Linked Line)
;cmp #0 ; Is Character 'Zero'? (End Of Basic Program)
beq Cat_End ; If Yes, Jump to the END
jsr krljmp_CHRIN$ ; Get LoByte Line Number
sta $02a7 ; Store LoByte
jsr krljmp_CHRIN$ ; Get HiByte Line Number
ldx $02a7 ; Load X LoByte
jsr bas_DecimalPrint$ ; Print Decimal Number X=Lo, Acc=Hi
lda #CHR_Space ; Space
jsr krljmp_CHROUT$ ; Print Space
CAT_GETBasicLine
jsr krljmp_CHRIN$ ; Get Character
;cmp #0 ; Is Character 'Zero'? (End Of Basic Line)
beq CAT_EndOfBasicLine ; Yes, Jump to Get Next Basic Line
jsr krljmp_CHROUT$ ; Print Character
jmp CAT_GETBasicLine; Get Next Character
CAT_EndOfBasicLine
lda #CHR_Return ; Load Carraige Return
jsr krljmp_CHROUT$ ; Print Carraige Return
;jsr keytest ; Test for Keyboard Activity
jsr krljmp_STOP$ ; Check the RUN/STOP KEYTEST
beq CAT_Break
jmp CAT_GetNextBasicLine ; Go Process Next Basic Line
CAT_END
;lda #CHR_Return ; Load Carraige Return
;jsr krljmp_CHROUT$ ; Print Carraige Return
jsr CAT_CloseFileNumber ; Close File Number
jmp READY ; Goto READY Process
CAT_Error
jsr CAT_CloseFileNumber ; Close File Number
ldx #err_DeviceNotReady$ ; Drive not ready Error Number
jmp ErrorHandler
CAT_Break
jsr CAT_CloseFileNumber ; Close File Number
ldx #err_Break$ ; Break Error Number
jmp ErrorHandler
CAT_CloseFileNumber
jsr krljmp_CLRCHN$ ; Clear Channel
lda #8 ; Load Logial File Number
jsr krljmp_CLOSE$ ; Close Logical File Number
rts
CATNM
text "$0"
;*******************************************************************************
;* KeyTEST Routine *
;*******************************************************************************
KEYTEST
lda $c5 ; Matrix Value of Last Key Pressed
cmp #64 ; No Key Pressed?
beq KT_END ; Yes, Goto End Of Key Test
jsr KT_LOOPER ; No, Key has been Pressed, So Pause
KT_RETRY
lda $c5 ; Matrix Value of Last Key Pressed
cmp #64 ; No Key Presses?
beq KT_RETRY ; Yes, Try Again
jsr KT_LOOPER ; No, Key has been Pressed, So Pause
KT_END
rts ; End Of Key Press Test
KT_LOOPER
ldx #10 ; Loop For 10 Y Cycles
KT_OUTERLOOP
ldy #255 ; Loop 255 times
KT_INNERLOOP
dey ; Decrease Inner Loop Index
bne KT_INNERLOOP ; Hit Zero?, No, Loop Round
dex ; Yes, Decrease Outer Loop Index
bne KT_OUTERLOOP ; Hit Zero?, No, Loop Round
rts ; Yes, Exit