mirror of
https://github.com/cc65/cc65.git
synced 2024-11-18 15:05:14 +00:00
e50b24d46a
git-svn-id: svn://svn.cc65.org/cc65/trunk@1311 b7a2c559-68d2-44c3-8de9-860c34a00d81
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
|
|
|