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 + -
显示快捷键?