mirror of
https://github.com/cc65/cc65.git
synced 2024-11-06 15:06:07 +00:00
49 lines
1.2 KiB
ArmAsm
49 lines
1.2 KiB
ArmAsm
|
;
|
||
|
; Ullrich von Bassewitz, 31.05.2002
|
||
|
;
|
||
|
; const char* __fastcall__ tgi_map_mode (unsigned char mode);
|
||
|
; /* Map tgi mode codes to driver names */
|
||
|
;
|
||
|
|
||
|
.export _tgi_map_mode
|
||
|
.import _tgi_mode_table
|
||
|
.import return0
|
||
|
.importzp tmp1
|
||
|
|
||
|
;----------------------------------------------------------------------------
|
||
|
; BEWARE: The current implementation of tgi_map_mode does not work with tables
|
||
|
; larger that 255 bytes!
|
||
|
|
||
|
.code
|
||
|
|
||
|
_tgi_map_mode:
|
||
|
sta tmp1 ; Save mode
|
||
|
ldy #$00
|
||
|
|
||
|
@L0: lda _tgi_mode_table,y
|
||
|
beq NotFound ; Branch if mode code zero
|
||
|
cmp tmp1
|
||
|
beq Found
|
||
|
|
||
|
; Skip the name
|
||
|
|
||
|
@L1: iny
|
||
|
lda _tgi_mode_table,y
|
||
|
bne @L1 ; Loop until end marker found
|
||
|
iny ; Skip end marker
|
||
|
bne @L0 ; Branch always
|
||
|
|
||
|
; Mode not found
|
||
|
|
||
|
NotFound:
|
||
|
jmp return0
|
||
|
|
||
|
; Mode found
|
||
|
|
||
|
Found: tya
|
||
|
ldx #>_tgi_mode_table
|
||
|
sec ; Account for the mode byte
|
||
|
adc #<_tgi_mode_table ; Return pointer to file name
|
||
|
rts
|
||
|
|