From 534a83cc78dd58acc8fcfcf97e93cedfacd74b60 Mon Sep 17 00:00:00 2001 From: minjaesong Date: Thu, 23 Dec 2021 17:58:10 +0900 Subject: [PATCH] assemble hangul test --- assets/FontROM7x14.png | Bin 3701 -> 3311 bytes assets/FontROM7x14_437.png | Bin 0 -> 3701 bytes assets/FontROM7x14_HANGUL.kra | 4 +- assets/disk0/AUTOEXEC.BAT | 1 + assets/disk0/fox.bytes | 3 + assets/disk0/home/hangasm.js | 160 ++++++++++++++++++++++++++++++++++ assets/disk0/pal.js | 4 + 7 files changed, 170 insertions(+), 2 deletions(-) create mode 100644 assets/FontROM7x14_437.png create mode 100644 assets/disk0/fox.bytes create mode 100644 assets/disk0/home/hangasm.js create mode 100644 assets/disk0/pal.js diff --git a/assets/FontROM7x14.png b/assets/FontROM7x14.png index ac140a00c07fb78cf41ce25048c8891afe731d3f..cd1abc948fd420a93121da4d58e5543b552f914e 100644 GIT binary patch delta 3293 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 delta 3686 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 Eg3KK&YybcN diff --git a/assets/FontROM7x14_437.png b/assets/FontROM7x14_437.png new file mode 100644 index 0000000000000000000000000000000000000000..ac140a00c07fb78cf41ce25048c8891afe731d3f GIT binary patch literal 3701 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 TuMD-y00000NkvXXu0mjfwVow$ literal 0 HcmV?d00001 diff --git a/assets/FontROM7x14_HANGUL.kra b/assets/FontROM7x14_HANGUL.kra index c83d29c..ace0c08 100644 --- a/assets/FontROM7x14_HANGUL.kra +++ b/assets/FontROM7x14_HANGUL.kra @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b6bfbfff0ec4b62f72600580b7dd3929dd60801dda734f2330d35f9e93274b98 -size 102734 +oid sha256:795a6781abb5ba11b363ed0ab10e0dcff09dc72973a9510355b6380cfd840dd6 +size 208440 diff --git a/assets/disk0/AUTOEXEC.BAT b/assets/disk0/AUTOEXEC.BAT index 53256dd..5b468f5 100644 --- a/assets/disk0/AUTOEXEC.BAT +++ b/assets/disk0/AUTOEXEC.BAT @@ -2,6 +2,7 @@ echo "Starting TVDOS..." rem put set-xxx commands here: set PATH=\tvdos\tuidev;$PATH +set KEYBOARD=us_colemak rem this line specifies which shell to be presented after the boot precess: command diff --git a/assets/disk0/fox.bytes b/assets/disk0/fox.bytes new file mode 100644 index 0000000..c1f2963 --- /dev/null +++ b/assets/disk0/fox.bytes @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f7d52e197adea681b6a5d5cacd1b5bf3a960d62df5030f63be6d1310fc68215a +size 250880 diff --git a/assets/disk0/home/hangasm.js b/assets/disk0/home/hangasm.js new file mode 100644 index 0000000..c1b44ec --- /dev/null +++ b/assets/disk0/home/hangasm.js @@ -0,0 +1,160 @@ + +/* + * A character is defined as one of: + * 1. [I,x] (Initial only) + * 2.1. [I,x,I,x] (Double Initial) + * 2.2. [Ip,x,P,x] (Initial and Peak) + * 3.1. [Ip,F,P,x] (Initial, Peak and one Final) + * 3.2. [Ip,F1,P,F2] (Initial, Peak and complex Final) + * 4.1. [I,x,Ip,x,P,x] (Double Initial and Peak) + * 4.2. [I,x,Ip,F,P,x] (Double Initial, Peak and Final) + * 4.3. [I,x,Ip,F1,P,F2] (Double Initial, Peak and complex Final) + * + * Index 0,2,4 is always top and 1,3,5 is always bottom row. + * + * ## Character Cell Numbering + * +--+--+--+ + * |c0|c2|c4| + * |c1|c3|c5| + * +--+--+--+ + * + * + */ + +let charmap = { +i:{ // Cell Indices: [c0,c2] +// c0,c2:[ㄱ,ㄴ,ㄷ,ㄹ,...] +0:[0], +1:[0,0], +2:[1], +3:[2], +4:[2,2], +5:[3], +6:[4], +7:[5], +8:[5,5], +9:[6], +10:[6,6], +11:[7], +12:[8], +13:[8,8], +14:[9], +15:[10], +16:[11], +17:[12], +18:[13] +},p:{ // Cell Indices: [c2,c4], where c2 will be work as an multiplier +// c2:[null,ㅗ,ㅛ,ㅜ,ㅠ,ㅡ] +// c4:[0xC6,ㅏ,ㅐ,ㅑ,ㅒ,ㅓ,ㅔ,ㅕ,ㅖ,ㅘ,ㅙ,ㅚㅢㅟ,ㅝ,ㅞ,ㅣ] +0:[0,0], +1:[0,1], +2:[0,2], +3:[0,3], +4:[0,4], +5:[0,5], +6:[0,6], +7:[0,7], +8:[1,0], +9:[1,9], +10:[1,10], +11:[1,11], +12:[2,0], +13:[3,0], +14:[3,12], +15:[3,13], +16:[3,11], +17:[4,0], +18:[5,0], +19:[5,11], +20:[0,14] +},f:{ // Cell Indices: [c3,c5] +// c3,c5:[null,ㄱ,ㄴ,ㄷ,...] +0:[0,0], +1:[1,0], +2:[1,1], +3:[1,7], +4:[2,0], +5:[2,9], +6:[2,14], +7:[3,0], +8:[4,0], +9:[4,1], +10:[4,5], +11:[4,6], +12:[4,7], +13:[4,12], +14:[4,13], +15:[4,14], +16:[5,0], +17:[6,0], +18:[6,7], +19:[7,0], +20:[7,7], +21:[8,0], +22:[9,0], +23:[10,0], +24:[11,0], +25:[12,0], +26:[13,0], +27:[14,0] +}} + +let enc = { +i:[ +0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d, +0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0x9b,0x9c,0x9d, +0xe0,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xeb,0xec,0xed, +0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd, +0xb7,0xb8,0xb9,0xba,0xbb,0xbc,0xbd,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd +],p:[ +0xc6,0x8e,0x8f,0xae,0xaf,0xce,0xcf,0xee,0xef,0xb0,0xb1,0xb2,0xb5,0xb6,0xfe +],f:[ +0x20,0xd1,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xdb,0xdc,0xdd,0xde,0xdf +] +} + +function toLineChar(i,p,f) { + let out = [] + let ibuf = charmap.i[i] + let pbuf = charmap.p[p] + let fbuf = charmap.f[f] + let dbl = 2*(ibuf.length == 2) // 0 or 2 + /* 0 | 0 */out[0] = ibuf[0] + /* x | 2 */out[2] = ibuf[1] + /* 2 | 4 */out[2+dbl] = pbuf[1] + /* | */out[dbl] *= pbuf[0]*2 + /* 1 | 3 */out[1+dbl] = fbuf[0] + /* 3 | 5 */out[3+dbl] = fbuf[1] + + if (ibuf.length > 4) { + out[0] = enc.i[out[0]] + out[2] = enc.i[out[2]] + out[3] = enc.f[out[3]] + out[4] = enc.p[out[4]] + out[5] = enc.f[out[5]] + } + else { + out[0] = enc.i[out[0]] + out[1] = enc.f[out[1]] + out[2] = enc.p[out[2]] + out[3] = enc.f[out[3]] + } + + return out +} + + +function printHangul(char) { + let [cy,cx] = con.getyx() + + serial.println(char) + + char.forEach((v,i)=>{ + con.mvaddch(cy+(i%2),cx+(i/2),v) + serial.println(v.toString(16)) + }) + con.move(cy+(char.length%2),cx+(char.length/2)) +} + +con.move(4,4) +printHangul(toLineChar(2,0,1)) \ No newline at end of file diff --git a/assets/disk0/pal.js b/assets/disk0/pal.js new file mode 100644 index 0000000..54732c7 --- /dev/null +++ b/assets/disk0/pal.js @@ -0,0 +1,4 @@ +con.clear() +for (let i=0;i<256;i++) { + graphics.plotPixel(200+(i%16),200+((i/16)|0),i) +}