1
0
mirror of https://github.com/cc65/cc65.git synced 2024-06-07 07:29:33 +00:00
cc65/libsrc/cbm/cbm_filetype.s
uz 5bc67cdaee Move definitions for CBM file types into its own header file, since these
definitions are needed for file type macros in dirent.h. Unify names for the
include files.


git-svn-id: svn://svn.cc65.org/cc65/trunk@5735 b7a2c559-68d2-44c3-8de9-860c34a00d81
2012-06-24 13:52:06 +00:00

72 lines
1.6 KiB
ArmAsm

;
; Determine the CBM file type. From cbm_dir.c by Josef Soucek. Moved into an
; assembler function by Ullrich von Bassewitz 2012-06-03
;
; unsigned char __fastcall__ _cbm_filetype (unsigned char c);
;
.include "cbm_filetype.inc"
.macpack generic
; --------------------------------------------------------------------------
; Table with types for a list of start characters
.rodata
.proc TypeTable
.byte CBM_T_CBM ; c
.byte CBM_T_DEL ; d
.byte CBM_T_OTHER ; e
.byte CBM_T_OTHER ; f
.byte CBM_T_OTHER ; g
.byte CBM_T_OTHER ; h
.byte CBM_T_OTHER ; i
.byte CBM_T_OTHER ; j
.byte CBM_T_OTHER ; k
.byte CBM_T_LNK ; l
.byte CBM_T_OTHER ; m
.byte CBM_T_OTHER ; n
.byte CBM_T_OTHER ; o
.byte CBM_T_PRG ; p
.byte CBM_T_OTHER ; q
.byte CBM_T_REL ; r
.byte CBM_T_SEQ ; s
.byte CBM_T_OTHER ; t
.byte CBM_T_USR ; u
.byte CBM_T_VRP ; v
.endproc
; --------------------------------------------------------------------------
; Mapper function
.code
.proc __cbm_filetype
ldx #0 ; Clear high byte
; Check that the given char is in table range
sec
sbc #'c'
bcc L1
cmp #.sizeof (TypeTable)
bge L1
; Ok, load the type
tay
lda TypeTable,y
rts
; Out of table range, return CBM_T_OTHER
L1: lda #CBM_T_OTHER
rts
.endproc