Rev 151 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed
MODULE mylib(16)RSEG CODE(0)RSEG UDATA0(0)RSEG IDATA0(0)RSEG CDATA0(0)PUBLIC mylib_font8x8PUBLIC putcharPUBLIC scr_initEXTERN ?CLZ80L_4_06_L00EXTERN ?ENT_PARM_DIRECT_L09EXTERN ?ENT_AUTO_DIRECT_L09EXTERN ?LEAVE_DIRECT_L09RSEG CODE; 1. #include <string.h>; 2. #include <intrz80.h>; 3. #include <stdio.h>; 4. char * mylib_font8x8=(void*)0x3c00;; 5. static union {char * w;char b[2];}scrxy;scr_init:CALL ?ENT_PARM_DIRECT_L09; 6. void scr_init(char a){LD A,ELD (22528),A; 7. *((char *)0x5800)=a;SRL ESRL ESRL ELD A,EOUT (254),A; 8. output8(0xfe,a>>3);LD BC,767LD DE,22529LD HL,22528LDIR; 9. memcpy((void *)0x5801, (void *)0x5800, 32*24-1);LD HL,16384LD (scrxy),HL; 10. scrxy.w=(void *)0x4000;XOR ALD (16384),A; 11. *((char *)0x4000)=0;LD BC,6143LD DE,16385LDIR; 12. memcpy((void *)0x4001, (void *)0x4000, (unsigned int)256*192/8-1);JP ?LEAVE_DIRECT_L09; 13. }putchar:CALL ?ENT_AUTO_DIRECT_L09DEFW 65532; 14. int putchar(int ch){LD C,(IX+2)LD B,(IX+3)LD A,13XOR COR BJR Z,?0012LD A,10XOR COR BJR NZ,?0013?0011:; 15. switch(ch){LD A,(scrxy)ADD A,32LD (scrxy),A?0012:; 16. case '\n': scrxy.b[0]+=32;LD A,(scrxy)AND 224LD (scrxy),A; 17. case '\r': scrxy.b[0]&=0xe0;JR ?0010?0013:; 18. break;; 19. default:{LD L,CLD H,BADD HL,HLADD HL,HLADD HL,HLLD BC,(mylib_font8x8)ADD HL,BCEX DE,HL; 20. char* s=mylib_font8x8+(ch<<3);LD (IX-2),8?0015:; 21. unsigned char i=8;LD B,(IX-2)DEC (IX-2)INC BDEC BJR Z,?0014?0016:; 22. while(i--){LD L,ELD H,DINC DELD B,(HL)LD HL,(scrxy)LD (HL),B; 23. *scrxy.w=*(s++);LD HL,scrxy+1INC (HL); 24. scrxy.b[1]++;; 25. }JR ?0015?0014:; 26. }LD HL,scrxyLD A,(HL)SUB 255LD (HL),AINC HLLD A,(HL)SBC A,7LD (HL),A; 27. scrxy.w-=0x07ff;?0010:; 28. break;; 29. }LD A,(scrxy)OR AJR NZ,?0020?0017:; 30. if(!scrxy.b[0]){LD A,(scrxy+1)ADD A,8LD (scrxy+1),ACP 88JR NZ,?0020?0019:LD A,64LD (scrxy+1),A?0020:?0018:; 31. if((scrxy.b[1]+=8)==0x58) scrxy.b[1]=0x40;; 32. }LD HL,1; 33. return 1;JP ?LEAVE_DIRECT_L09; 34. }RSEG UDATA0scrxy:DEFS 2RSEG IDATA0mylib_font8x8:DEFS 2RSEG CDATA0DEFW 15360END