Skip to content

Commit

Permalink
在窗口中描绘字符和方块
Browse files Browse the repository at this point in the history
  • Loading branch information
yourtion committed May 9, 2016
1 parent 75a8244 commit eadcb88
Show file tree
Hide file tree
Showing 5 changed files with 80 additions and 31 deletions.
35 changes: 17 additions & 18 deletions 22_day/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -80,19 +80,6 @@ hello5.bim : hello5.obj Makefile
hello5.hrb : hello5.bim Makefile
$(BIM2HRB) hello5.bim hello5.hrb 0

winhelo.bim : winhelo.obj a_nask.obj Makefile
$(OBJ2BIM) @$(RULEFILE) out:winhelo.bim stack:1k map:winhelo.map \
winhelo.obj a_nask.obj

winhelo.hrb : winhelo.bim Makefile
$(BIM2HRB) winhelo.bim winhelo.hrb 0

bug1.bim : bug1.obj Makefile
$(OBJ2BIM) @$(RULEFILE) out:bug1.bim map:bug1.map bug1.obj a_nask.obj

bug1.hrb : bug1.bim Makefile
$(BIM2HRB) bug1.bim bug1.hrb 0

bug2.bim : bug2.obj Makefile
$(OBJ2BIM) @$(RULEFILE) out:bug2.bim map:bug2.map bug2.obj

Expand All @@ -105,9 +92,23 @@ bug3.bim : bug3.obj Makefile
bug3.hrb : bug3.bim Makefile
$(BIM2HRB) bug3.bim bug3.hrb 0

winhelo.bim : winhelo.obj a_nask.obj Makefile
$(OBJ2BIM) @$(RULEFILE) out:winhelo.bim stack:1k map:winhelo.map \
winhelo.obj a_nask.obj

winhelo.hrb : winhelo.bim Makefile
$(BIM2HRB) winhelo.bim winhelo.hrb 0

winhelo2.bim : winhelo2.obj a_nask.obj Makefile
$(OBJ2BIM) @$(RULEFILE) out:winhelo2.bim stack:1k map:winhelo2.map \
winhelo2.obj a_nask.obj

winhelo2.hrb : winhelo2.bim Makefile
$(BIM2HRB) winhelo2.bim winhelo2.hrb 0

haribote.img : ipl10.bin haribote.sys Makefile \
hello.hrb hello2.hrb a.hrb hello3.hrb bug1.hrb bug2.hrb bug3.hrb \
hello4.hrb hello5.hrb winhelo.hrb
hello.hrb hello2.hrb a.hrb hello3.hrb hello4.hrb hello5.hrb \
winhelo.hrb winhelo2.hrb
$(EDIMG) imgin:../z_tools/fdimg0at.tek \
wbinimg src:ipl10.bin len:512 from:0 to:0 \
copy from:haribote.sys to:@: \
Expand All @@ -117,12 +118,10 @@ haribote.img : ipl10.bin haribote.sys Makefile \
copy from:hello2.hrb to:@: \
copy from:a.hrb to:@: \
copy from:hello3.hrb to:@: \
copy from:bug1.hrb to:@: \
copy from:bug2.hrb to:@: \
copy from:bug3.hrb to:@: \
copy from:hello4.hrb to:@: \
copy from:hello5.hrb to:@: \
copy from:winhelo.hrb to:@: \
copy from:winhelo2.hrb to:@: \
imgout:haribote.img

# 其他指令
Expand Down
40 changes: 40 additions & 0 deletions 22_day/a_nask.nas
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
GLOBAL _api_putstr0
GLOBAL _api_end
GLOBAL _api_openwin
GLOBAL _api_putstrwin
GLOBAL _api_boxfilwin

[SECTION .text]

Expand Down Expand Up @@ -43,3 +45,41 @@ _api_openwin: ; int api_openwin(char *buf, int xsiz, int ysiz, int col_inv, char
POP ESI
POP EDI
RET

_api_putstrwin: ; void api_putstrwin(int win, int x, int y, int col, int len, char *str);
PUSH EDI
PUSH ESI
PUSH EBP
PUSH EBX
MOV EDX,6
MOV EBX,[ESP+20] ; win
MOV ESI,[ESP+24] ; x
MOV EDI,[ESP+28] ; y
MOV EAX,[ESP+32] ; col
MOV ECX,[ESP+36] ; len
MOV EBP,[ESP+40] ; str
INT 0x40
POP EBX
POP EBP
POP ESI
POP EDI
RET

_api_boxfilwin: ; void api_boxfilwin(int win, int x0, int y0, int x1, int y1, int col);
PUSH EDI
PUSH ESI
PUSH EBP
PUSH EBX
MOV EDX,7
MOV EBX,[ESP+20] ; win
MOV EAX,[ESP+24] ; x0
MOV ECX,[ESP+28] ; y0
MOV ESI,[ESP+32] ; x1
MOV EDI,[ESP+36] ; y1
MOV EBP,[ESP+40] ; col
INT 0x40
POP EBX
POP EBP
POP ESI
POP EDI
RET
13 changes: 0 additions & 13 deletions 22_day/bug1.c

This file was deleted.

8 changes: 8 additions & 0 deletions 22_day/console.c
Original file line number Diff line number Diff line change
Expand Up @@ -336,6 +336,14 @@ int *hrb_api(int edi, int esi, int ebp, int esp, int ebx, int edx, int ecx, int
sheet_slide(sht, 100, 50);
sheet_updown(sht, 3); /*背景层高度3位于task_a之上*/
reg[7] = (int) sht;
} else if (edx == 6) {
sht = (struct SHEET *) ebx;
putfonts8_asc(sht->buf, sht->bxsize, esi, edi, eax, (char *) ebp + ds_base);
sheet_refresh(sht, esi, edi, esi + ecx * 8, edi + 16);
} else if (edx == 7) {
sht = (struct SHEET *) ebx;
boxfill8(sht->buf, sht->bxsize, ebp, eax, ecx, esi, edi);
sheet_refresh(sht, eax, ecx, esi + 1, edi + 1);
}
return 0;
}
Expand Down
15 changes: 15 additions & 0 deletions 22_day/winhelo2.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
int api_openwin(char *buf, int xsiz, int ysiz, int col_inv, char *title);
void api_putstrwin(int win, int x, int y, int col, int len, char *str);
void api_boxfilwin(int win, int x0, int y0, int x1, int y1, int col);
void api_end(void);

char buf[150 * 50];

void HariMain(void)
{
int win;
win = api_openwin(buf, 150, 50, -1, "hello");
api_boxfilwin(win, 8, 36, 141, 43, 3); /*黄色*/
api_putstrwin(win, 28, 28, 0 /*黑色*/, 12, "hello, world");
api_end();
}

0 comments on commit eadcb88

Please sign in to comment.