sdrv_init_thai.s01

来自「一种彩屏驱动以及画点,填充图片和填充数据的一些程序」· S01 代码 · 共 224 行

S01
224
字号
	NAME	sdrv_init_thai(16)
	RSEG	BBC_IE(0)
	RSEG	UDATA0(0)
	RSEG	BBD_IE(0)
	RSEG	BBS_IE(0)
	EXTERN	AsciiFontLibAddr
	PUBLIC	AsciiFontName
	EXTERN	BufPage
	EXTERN	Drv_Entrance
	EXTERN	FontLibAddr
	PUBLIC	FontLibName
	EXTERN	Hdrv_HardInit
	EXTERN	SD_FClose
	EXTERN	SD_FOpen
	PUBLIC	Sdrv_Exit
	PUBLIC	Sdrv_Init
	PUBLIC	fp
	PUBLIC	test
	EXTERN	?CLZ80L_4_04_L00
	RSEG	BBC_IE
Sdrv_Init:
; 1.	/*
; 2.	********************************************************************************
; 3.	*                       ACTOS
; 4.	*                  UI Init function
; 5.	*
; 6.	*                (c) Copyright 2002-2003, Actions Co,Ld.
; 7.	*                        All Right Reserved
; 8.	*
; 9.	* File   : UI_Init.msa
; 10.	* By     : Gongee
; 11.	* Version: 1> v1.00     first version     10/17/2003 9:47PM
; 12.	********************************************************************************
; 13.	*/
; 14.	
; 15.	#include "display.h"
; 16.	#include "Drv_S6B33B0A.h"
; 17.	
; 18.	//#define DEBUG
; 19.	#ifdef DEBUG
; 20.	#define ERR(x) x
; 21.	#define MSG(x) x
; 22.	#else
; 23.	#define ERR(x)
; 24.	#define MSG(x)
; 25.	#endif
; 26.	
; 27.	char test;
; 28.	
; 29.	#pragma memory=dataseg(BBD_IE)
; 30.	SD_FILE *fp;
; 31.	#pragma memory=default
; 32.	
; 33.	#pragma memory=constseg(BBS_IE)
; 34.	char AsciiFontName[] = "ASCII.BIN";
; 35.	char FontLibName[] = "FONT_TH.$$$";
; 36.	#pragma memory=default
; 37.	
; 38.	#pragma codeseg(BBC_IE)
; 39.	bool    Sdrv_Init(char mode)
; 40.	{
	PUSH	BC
	PUSH	IY
	PUSH	IX
	PUSH	DE
	PUSH	AF
	PUSH	AF
; 41.	        test=0xff;
	LD	A,255
	LD	(test),A
; 42.	        fp = SD_FOpen(AsciiFontName,MODE_READ);
	LD	C,0
	LD	DE,AsciiFontName
	CALL	SD_FOpen
	LD	(fp),HL
; 43.	        if (fp == NULL)
	LD	A,L
	OR	H
	JR	Z,?0012
?0000:
; 44.	        {
; 45.	                ERR(printf("Cannot open Fontlib\n"));
; 46.	                return 0;
; 47.	        }
?0001:
; 48.	        AsciiFontLibAddr = fp->startaddr;
	LD	HL,12
	LD	BC,(fp)
	ADD	HL,BC
	LD	C,(HL)
	INC	HL
	LD	B,(HL)
	INC	HL
	LD	E,(HL)
	INC	HL
	LD	D,(HL)
	LD	(AsciiFontLibAddr),BC
	LD	(AsciiFontLibAddr+2),DE
; 49.	        SD_FClose(fp);
	LD	DE,(fp)
	CALL	SD_FClose
; 50.	
; 51.	        fp = SD_FOpen(FontLibName,MODE_READ);
	LD	C,0
	LD	DE,FontLibName
	CALL	SD_FOpen
	LD	(fp),HL
; 52.	        if (fp == NULL)
	LD	A,L
	OR	H
	JR	NZ,?0003
?0002:
; 53.	        {
; 54.	                ERR(printf("Cannot open Fontlib\n"));
; 55.	                return 0;
?0012:
	XOR	A
; 56.	        }
	JR	?0007
?0003:
; 57.	        FontLibAddr = fp->startaddr;
	LD	HL,12
	LD	BC,(fp)
	ADD	HL,BC
	LD	C,(HL)
	INC	HL
	LD	B,(HL)
	INC	HL
	LD	E,(HL)
	INC	HL
	LD	D,(HL)
	LD	(FontLibAddr),BC
	LD	(FontLibAddr+2),DE
; 58.	        SD_FClose(fp);
	LD	DE,(fp)
	CALL	SD_FClose
; 59.	
; 60.	        BufPage=0x07;           //Buffer默认位于Zram2
	LD	A,7
	LD	(BufPage),A
; 61.	
; 62.	        if(mode==0)
	LD	HL,4
	ADD	HL,SP
	XOR	A
	OR	(HL)
	JR	NZ,?0005
?0004:
; 63.	        //change by ybfu 2005-10-11 10:31
; 64.	        {
; 65.	        //********** 显示中断向量的赋值 ******** 必须
; 66.	        char *i;
; 67.	    int  *j;
; 68.	    Hdrv_HardInit();           
	CALL	Hdrv_HardInit
; 69.	    i = (char *)RSTDisplayAPI;
	LD	IX,32
; 70.	    *i = 0xc3;
	LD	(IX+0),195
; 71.	    i++;
; 72.	    j = (int *)i;
	INC	IX
	PUSH	IX
	POP	BC
; 73.	    *j = (int)Drv_Entrance;
	JR	?0013
; 74.	    }
; 75.	        else
?0005:
; 76.	        { 
; 77.	        char *i;
; 78.	    int  *j;
; 79.	    i = (char *)RSTDisplayAPI;
	LD	IY,32
; 80.	    *i = 0xc3;
	LD	(IY+0),195
; 81.	    i++;
; 82.	    j = (int *)i;
	INC	IY
	PUSH	IY
	POP	BC
; 83.	    *j = (int)Drv_Entrance;
?0013:
	LD	L,C
	LD	H,B
	LD	(HL),LOW(Drv_Entrance)
	INC	HL
	LD	(HL),HIGH(Drv_Entrance)
?0006:
; 84.	        }
; 85.	        
; 86.	        return 1;
	LD	A,1
; 87.	}
?0007:
	POP	HL
	POP	HL
	POP	HL
	POP	IX
	POP	IY
	POP	BC
	RET
Sdrv_Exit:
; 88.	
; 89.	void Sdrv_Exit(void)
; 90.	{
; 91.	    return;
; 92.	}
	RET
	RSEG	UDATA0
test:
	DEFS	1
	RSEG	BBD_IE
fp:
	DEFS	2
	RSEG	BBS_IE
AsciiFontName:
	DEFB	'ASCII.BIN'
	DEFB	0
FontLibName:
	DEFB	'FONT_TH.$$$'
	DEFB	0
	END

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?