たなしょのメモ

日々勉強していることをつらつらと

2020-06-01から1ヶ月間の記事一覧

Goを勉強することにしました

Go言語を学ぶことにした。 カジュアル面談していただいた会社がとてもよく自分もGo言語を初めて見ることにした。 カジュアル面談で他のエンジニアと会話するととても刺激になる。 advantedcalender見たく連載できたらいいな。 vim-goで突っかかる vimでコー…

OS作成奮闘記day48

day49 今日はinvader.cを軽くする作業をします。 ipl09.nasをダウンロードしてディレクトリに配置してから改造します。 invader.c #include <stdio.h> /* sprintf */ #include <string.h> /* strlen */ #include "apilib.h" void putstr(int win, char *winbuf, int x, int y, i</string.h></stdio.h>…

OS作成奮闘記day47

今日は画像ビューワを作っていきます。 gview/Makefile APP = gview STACK = 4480k MALLOC = 0k TOOLPATH = ..\..\z_tools\\ INCPATH = ..\..\z_tools\haribote\\ APILIBPATH = ../apilib/ HARIBOTEPATH = ../haribote/ MAKE = $(TOOLPATH)make.exe -r NASK …

OS作成奮闘記day46

MMLプレイヤーを作成していきます。 mmlplay/Makefile APP = mmlplay STACK = 132k MALLOC = 0k include ../app_make.txt mmlplay.c #include "apilib.h" #include <string.h> /* strlen */ int strtol(char *s, char **endp, int base); /* 標準関数(stdlib.h) */ v</string.h>…

OS作成奮闘記day45

今日はテキストビューアを作っていきます。 Makefile APP = tview STACK = 1024k MALLOC = 0k include ../app_make.txt tview.c #include "apilib.h" #include <stdio.h> int strtol(char *s, char **endp, int base); /* 標準関数(stdlib.h) */ char *skipspace(ch</stdio.h>…

OS作成奮闘記day44

本では30日目になりました。 Makefile APP = calc STACK = 4k MALLOC = 0k include ../app_make.txt calc.c #include "apilib.h" #include <stdio.h> /* sprintf */ #define INVALID -0x7fffffff int strtol(char *s, char **endp, int base); /* 標準関数(stdlib.h</stdio.h>…

OS作成奮闘記day43

インベーダーゲームを作ります。 このプログラムは長くなるので日記も分けて書くと思います。 invader.c #include <stdio.h> /* sprintf */ #include <string.h> /* strlen */ #include "apilib.h" void putstr(int win, char *winbuf, int x, int y, int col, unsigned char *s</string.h></stdio.h>…

OS作成奮闘記day42

本では29日目に突入しました。 まずは全角文字のバグを修正する所から始めていきます。 window.c void putfonts8_asc_sht(struct SHEET *sht, int x, int y, int c, int b, char *s, int l) { struct TASK *task = task_now(); boxfill8(sht->buf, sht->bxsi…

OS作成奮闘記day41

さらに日本語表示を改造していこうと思います。 graphic.c void putfonts8_asc(char *vram, int xsize, int x, int y, char c, unsigned char *s) { extern char hankaku[4096]; struct TASK *task = task_now(); char *nihongo = (char *) *((int *) 0x0fe8…

OS作成奮闘記day40

本では28日目に突入しました。 素数アプリを作っていきます。 sosu/Makefile APP = sosu STACK = 2k MALLOC = 0k include ../app_make.txt sosu.c #include <stdio.h> #include "apilib.h" #define MAX 1000 void HariMain(void) { char flag[MAX], s[8]; int i, j; f</stdio.h>…

OS作成奮闘記day39

ライブラリを作っていきます。 Makefile OBJS_BOOTPACK = bootpack.obj naskfunc.obj hankaku.obj graphic.obj dsctbl.obj \ int.obj fifo.obj keybord.obj mouse.obj memory.obj sheet.obj timer.obj \ mtask.obj window.obj console.obj file.obj OBJS_API…

OS作成奮闘記day38

例外を起こして悪い処理を強制終了させてみましょう。 bootpack.c /* dsctbl.c */ struct SEGMENT_DESCRIPTOR { short limit_low, base_low; char base_mid, access_right; char limit_high, base_high; }; struct GATE_DESCRIPTOR { short offset_low, sele…

OS作成奮闘記day37

アプリ実行中でもコンソールを閉じれるように改造します。 bootpack.c void HariMain(void) { struct BOOTINFO *binfo = (struct BOOTINFO *) ADR_BOOTINFO; struct SHTCTL *shtctl; char s[40]; struct FIFO32 fifo, keycmd; int fifobuf[128], keycmd_buf[…

OS作成奮闘記day36

xボタンを押したらウィンドウを閉じれるように改造します。 bootpack.c else if (512 <= i && i <= 767) { /* マウスデータ */ if (mouse_decode(&mdec, i - 512) != 0) { /* マウスカーソルの移動 */ mx += mdec.x; my += mdec.y; if (mx < 0) { mx = 0; } …

OS作成奮闘記day35

コンソールを閉じれるようにしたいと思います。 bootpack.h struct TASK { int sel, flags; /* selはGDTの番号のこと */ int level, priority; struct FIFO32 fifo; struct TSS32 tss; struct CONSOLE *cons; int ds_base, cons_stack; }; * console.c */ st…

OS作成奮闘記day34

本では26日目に突入しました。 ウィンドウ移動を早くしてみたいと思います。 sheet.c void sheet_refreshmap(struct SHTCTL *ctl, int vx0, int vy0, int vx1, int vy1, int h0) { int h, bx, by, vx, vy, bx0, by0, bx1, by1; unsigned char *buf, sid, *ma…

OS作成奮闘記day33

xボタンを押したらウィンドウを閉じれるようにしたいと思います。 bootpack.c void HariMain(void) { struct BOOTINFO *binfo = (struct BOOTINFO *) ADR_BOOTINFO; struct SHTCTL *shtctl; char s[40]; struct FIFO32 fifo, keycmd; int fifobuf[128], keyc…

OS作成奮闘記day32

色を滑らかにしていようと思います。 Makefile color2.bim : color2.obj a_nask.obj Makefile $(OBJ2BIM) @$(RULEFILE) out:color2.bim stack:1k map:color2.map \ color2.obj a_nask.obj color2.hrb : color2.bim Makefile $(BIM2HRB) color2.bim color2.hr…

OS作成奮闘記day31

タイマーを作っていきます。 console.c int *hrb_api(int edi, int esi, int ebp, int esp, int ebx, int edx, int ecx, int eax) { int ds_base = *((int *) 0xfe8); struct TASK *task = task_now(); struct CONSOLE *cons = (struct CONSOLE *) *((int *)…