mirror of
https://github.com/cc65/cc65.git
synced 2024-09-27 04:54:54 +00:00
5bc67cdaee
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
72 lines
1.6 KiB
ArmAsm
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
|
|
|
|
|
|
|