Extreme Assembler Tanka - eagle0wl
-
Upload
asmtanka -
Category
Technology
-
view
209 -
download
4
description
Transcript of Extreme Assembler Tanka - eagle0wl
![Page 1: Extreme Assembler Tanka - eagle0wl](https://reader034.fdocuments.net/reader034/viewer/2022042700/5595f2611a28ab650e8b47bb/html5/thumbnails/1.jpg)
エクストリーム・アセンブラ短歌Extreme Assembler Tanka
松田和樹 (eagle0wl)Kazuki Matsuda
2014.02.16 AVTokyo
![Page 2: Extreme Assembler Tanka - eagle0wl](https://reader034.fdocuments.net/reader034/viewer/2022042700/5595f2611a28ab650e8b47bb/html5/thumbnails/2.jpg)
問題Quiz
![Page 3: Extreme Assembler Tanka - eagle0wl](https://reader034.fdocuments.net/reader034/viewer/2022042700/5595f2611a28ab650e8b47bb/html5/thumbnails/3.jpg)
released in 19758bit CPU
developed by MOS Technology[Hint 4]
クイズマジックアカデミー天の学舎 Quiz Magic Academy Ten no Manabiyahttp://www.konami.jp/am/qma/index.html
![Page 4: Extreme Assembler Tanka - eagle0wl](https://reader034.fdocuments.net/reader034/viewer/2022042700/5595f2611a28ab650e8b47bb/html5/thumbnails/4.jpg)
MOS Technology
6502
![Page 5: Extreme Assembler Tanka - eagle0wl](https://reader034.fdocuments.net/reader034/viewer/2022042700/5595f2611a28ab650e8b47bb/html5/thumbnails/5.jpg)
どこにあるの?Where is this?
![Page 6: Extreme Assembler Tanka - eagle0wl](https://reader034.fdocuments.net/reader034/viewer/2022042700/5595f2611a28ab650e8b47bb/html5/thumbnails/6.jpg)
Apple IIApple Inc.
1977
![Page 7: Extreme Assembler Tanka - eagle0wl](https://reader034.fdocuments.net/reader034/viewer/2022042700/5595f2611a28ab650e8b47bb/html5/thumbnails/7.jpg)
ファミリーコンピュータ(Nintendo Entertainment System)
任天堂 Nintendo1983
RP2A03 (リコー RICOH)
![Page 8: Extreme Assembler Tanka - eagle0wl](https://reader034.fdocuments.net/reader034/viewer/2022042700/5595f2611a28ab650e8b47bb/html5/thumbnails/8.jpg)
PC エンジン (TurboGrafx-16)NEC ホームエレクトロニクス (NEC Corporation)
1987HuC6280 (ハドソン Hudson)
![Page 9: Extreme Assembler Tanka - eagle0wl](https://reader034.fdocuments.net/reader034/viewer/2022042700/5595f2611a28ab650e8b47bb/html5/thumbnails/9.jpg)
![Page 10: Extreme Assembler Tanka - eagle0wl](https://reader034.fdocuments.net/reader034/viewer/2022042700/5595f2611a28ab650e8b47bb/html5/thumbnails/10.jpg)
![Page 11: Extreme Assembler Tanka - eagle0wl](https://reader034.fdocuments.net/reader034/viewer/2022042700/5595f2611a28ab650e8b47bb/html5/thumbnails/11.jpg)
ターミネーター (T-800)スカイネット/サイバーダイン
(Skynet / Cyberdyne Systems)
映画公開は 1984 年Release dates(Film) 1984
![Page 12: Extreme Assembler Tanka - eagle0wl](https://reader034.fdocuments.net/reader034/viewer/2022042700/5595f2611a28ab650e8b47bb/html5/thumbnails/12.jpg)
and...
![Page 13: Extreme Assembler Tanka - eagle0wl](https://reader034.fdocuments.net/reader034/viewer/2022042700/5595f2611a28ab650e8b47bb/html5/thumbnails/13.jpg)
What is the home-computer released in 1982and awarded a Guinness record as the
"best-selling single computer model of all time"?
クイズマジックアカデミー天の学舎 Quiz Magic Academy Ten no Manabiyahttp://www.konami.jp/am/qma/index.html
![Page 14: Extreme Assembler Tanka - eagle0wl](https://reader034.fdocuments.net/reader034/viewer/2022042700/5595f2611a28ab650e8b47bb/html5/thumbnails/14.jpg)
Commodore 64コモドール Commodore
1982
![Page 15: Extreme Assembler Tanka - eagle0wl](https://reader034.fdocuments.net/reader034/viewer/2022042700/5595f2611a28ab650e8b47bb/html5/thumbnails/15.jpg)
コモドール 64(6502) でアセンブラ短歌
Assembler Tanka onCommodore 64 (6502)
![Page 16: Extreme Assembler Tanka - eagle0wl](https://reader034.fdocuments.net/reader034/viewer/2022042700/5595f2611a28ab650e8b47bb/html5/thumbnails/16.jpg)
なぜ Commodore 64 ?
Why should I use Commodore 64?
![Page 17: Extreme Assembler Tanka - eagle0wl](https://reader034.fdocuments.net/reader034/viewer/2022042700/5595f2611a28ab650e8b47bb/html5/thumbnails/17.jpg)
販売台数1250 万~ 1700 万台
(単一機種で!)
selling12.5 ~ 17 million
(only single computer model !)
![Page 18: Extreme Assembler Tanka - eagle0wl](https://reader034.fdocuments.net/reader034/viewer/2022042700/5595f2611a28ab650e8b47bb/html5/thumbnails/18.jpg)
未だに新作ソフトがアマチュアによって開発されている!
The new program releaseby amature are still continued even now!
![Page 19: Extreme Assembler Tanka - eagle0wl](https://reader034.fdocuments.net/reader034/viewer/2022042700/5595f2611a28ab650e8b47bb/html5/thumbnails/19.jpg)
Coma Light 13 by Oxyron (2012)(いわゆるメガデモ Intro, Demo )
![Page 20: Extreme Assembler Tanka - eagle0wl](https://reader034.fdocuments.net/reader034/viewer/2022042700/5595f2611a28ab650e8b47bb/html5/thumbnails/20.jpg)
Micro HEXAGON (2013)Super Hexagon Fan game
![Page 21: Extreme Assembler Tanka - eagle0wl](https://reader034.fdocuments.net/reader034/viewer/2022042700/5595f2611a28ab650e8b47bb/html5/thumbnails/21.jpg)
アセンブラ短歌・試作Assembler Tanka - First Try
![Page 22: Extreme Assembler Tanka - eagle0wl](https://reader034.fdocuments.net/reader034/viewer/2022042700/5595f2611a28ab650e8b47bb/html5/thumbnails/22.jpg)
processor 6502 org $C000 ; $C000番地からマッピングする; 5 : 2-1-2 lda #$00 ; Aレジスタに #$00(null終端 )を代入 (LoaD Accumulator) ; #は即値, $は 16進数を表す記号 pha ; Aレジスタ値をスタックに PUSHする (PusH Accumulator) lda #$41 ; A = 'a'; 7 : 1-1-2-1-1-1 pha tax ; Aレジスタ値を Xレジスタにコピー (Transfer Accumulator to X) lda #$4B ; A = 'k' pha txa ; Xレジスタ値を Aレジスタにコピー (Transfer X Into Accumulator) ; A = X = 'a' pha; 5 : 2-1-1-1 lda #$77 ; A = 'W' pha ; 'k'をスタックにプッシュする tsx ; スタックポインタを Xレジスタにコピー ; (Transfer Stack pointer to X) inx ; Xレジスタ値をインクリメント; 7 : 1-2-3-1 txa ; Xレジスタ値を Aレジスタにコピー ; スタックに積んだ表示文字列の下位アドレス ldy #$01 ; スタックに積んだ表示文字列の上位アドレス ; (スタック領域は $0100-$01FFなので,上位アドレスは #$01固定) jsr $AB1E ; STROUT(BASIC ROM) ; Y=表示文字列の上位アドレス, A=表示文字列の下位アドレス nop ; 何もしない (No OPeration); 7 : 1-1-1-1-1-1-1 nop pla ; スタックポインタの復旧のため, PUSHした回数ぶん pla ; スタックから Aレジスタに POPする (PulL Accumulator) pla pla pla ; 最初に PUSHした NULLがそのまま戻り値になる rts ; (ReTurn from Subroutine)
![Page 23: Extreme Assembler Tanka - eagle0wl](https://reader034.fdocuments.net/reader034/viewer/2022042700/5595f2611a28ab650e8b47bb/html5/thumbnails/23.jpg)
a9 00 48 a9 4148 aa a9 4b 48 8a 48a9 77 48 ba e88a a0 01 20 1e ab eaea 68 68 68 68 68 60
![Page 24: Extreme Assembler Tanka - eagle0wl](https://reader034.fdocuments.net/reader034/viewer/2022042700/5595f2611a28ab650e8b47bb/html5/thumbnails/24.jpg)
結果Result
![Page 25: Extreme Assembler Tanka - eagle0wl](https://reader034.fdocuments.net/reader034/viewer/2022042700/5595f2611a28ab650e8b47bb/html5/thumbnails/25.jpg)
![Page 26: Extreme Assembler Tanka - eagle0wl](https://reader034.fdocuments.net/reader034/viewer/2022042700/5595f2611a28ab650e8b47bb/html5/thumbnails/26.jpg)
Wakaわずか 4 文字 !Only 4 BPT! (Byte Per Tanka)
![Page 27: Extreme Assembler Tanka - eagle0wl](https://reader034.fdocuments.net/reader034/viewer/2022042700/5595f2611a28ab650e8b47bb/html5/thumbnails/27.jpg)
BASIC Version10 FOR A=49152 TO 4918220 READ B30 POKE A,B40 NEXT50 DATA 169,0,72,169,6560 DATA 72,170,169,75,72,138,7270 DATA 169,119,72,186,23280 DATA 138,160,1,32,30,171,23490 DATA 234,104,104,104,104,104,96100 POKE 53272,23110 SYS 58692120 SYS 49152
![Page 28: Extreme Assembler Tanka - eagle0wl](https://reader034.fdocuments.net/reader034/viewer/2022042700/5595f2611a28ab650e8b47bb/html5/thumbnails/28.jpg)
文字数を増やしたい !More BPT! More BPT!
![Page 29: Extreme Assembler Tanka - eagle0wl](https://reader034.fdocuments.net/reader034/viewer/2022042700/5595f2611a28ab650e8b47bb/html5/thumbnails/29.jpg)
Commodore 64 の文字コードに着目する
Forcus on charcodeof Commodore 64
![Page 30: Extreme Assembler Tanka - eagle0wl](https://reader034.fdocuments.net/reader034/viewer/2022042700/5595f2611a28ab650e8b47bb/html5/thumbnails/30.jpg)
ASCII ?http://e-words.jp/p/r-ascii.html
![Page 31: Extreme Assembler Tanka - eagle0wl](https://reader034.fdocuments.net/reader034/viewer/2022042700/5595f2611a28ab650e8b47bb/html5/thumbnails/31.jpg)
No!
![Page 32: Extreme Assembler Tanka - eagle0wl](https://reader034.fdocuments.net/reader034/viewer/2022042700/5595f2611a28ab650e8b47bb/html5/thumbnails/32.jpg)
PETSCII (unshifted)(PET Standard Code of Information Interchange)
![Page 33: Extreme Assembler Tanka - eagle0wl](https://reader034.fdocuments.net/reader034/viewer/2022042700/5595f2611a28ab650e8b47bb/html5/thumbnails/33.jpg)
PETSCII (shifted)(PET Standard Code of Information Interchange)
![Page 34: Extreme Assembler Tanka - eagle0wl](https://reader034.fdocuments.net/reader034/viewer/2022042700/5595f2611a28ab650e8b47bb/html5/thumbnails/34.jpg)
エクストリーム・アセンブラ短歌 !Extreme Assembler Tanka!
![Page 35: Extreme Assembler Tanka - eagle0wl](https://reader034.fdocuments.net/reader034/viewer/2022042700/5595f2611a28ab650e8b47bb/html5/thumbnails/35.jpg)
Charactor Sets
コモドール 64 のデフォルト文字セット
Commodore 64 default character sets
![Page 36: Extreme Assembler Tanka - eagle0wl](https://reader034.fdocuments.net/reader034/viewer/2022042700/5595f2611a28ab650e8b47bb/html5/thumbnails/36.jpg)
Charactor Sets
コモドール 64 のデフォルト文字セット
Commodore 64 default character sets
![Page 37: Extreme Assembler Tanka - eagle0wl](https://reader034.fdocuments.net/reader034/viewer/2022042700/5595f2611a28ab650e8b47bb/html5/thumbnails/37.jpg)
Modified Charactor Sets
オリジナルの文字セット “ BOKUSCII”
Original character sets “BOKUSCII”
![Page 38: Extreme Assembler Tanka - eagle0wl](https://reader034.fdocuments.net/reader034/viewer/2022042700/5595f2611a28ab650e8b47bb/html5/thumbnails/38.jpg)
Modified Charactor Sets
オリジナルの文字セット “ BOKUSCII”
Original character sets “BOKUSCII”
![Page 39: Extreme Assembler Tanka - eagle0wl](https://reader034.fdocuments.net/reader034/viewer/2022042700/5595f2611a28ab650e8b47bb/html5/thumbnails/39.jpg)
エクストリーム・アセンブラ短歌試作
Extreme Assembler Tanka - Try
![Page 40: Extreme Assembler Tanka - eagle0wl](https://reader034.fdocuments.net/reader034/viewer/2022042700/5595f2611a28ab650e8b47bb/html5/thumbnails/40.jpg)
processor 6502
org $2000 ; $2000番地から独自文字セット "BOKUSCII"をマッピングする incbin "c64-tanka-extreme.c64"
org $C000 ; $C000番地からマッピングする; 5 : 2-1-2 lda #$00 ; null終端文字としての #$00をスタックに PUSH pha ldx #$7B ; ループカウンタとしての Xレジスタに #$7Bをセット; 7 : 1-1-1-2-2PushLoop: ; スタックに文字列(連番)をプッシュし続ける txa ; Xレジスタ値を Aレジスタにコピー pha ; Aレジスタ値をスタックに PUSHする dex ; Xレジスタをデクリメント cpx #$5A ; X != #$5A なら PushLoopにジャンプ bne PushLoop; 5 : 1-1-1-1-1 nop nop tsx ; スタックポインタを Xレジスタにコピー inx ; Xレジスタ値をインクリメント txa ; スタックに積んだ表示文字列の下位アドレス; 7 : 2-3-2 ldy #$01 ; スタックに積んだ表示文字列の上位アドレス ; (スタック領域は $0100-$01FFなので,上位アドレスは #$01固定) jsr $AB1E ; STROUT(BASIC ROM) ; Y=表示文字列の上位アドレス, A=表示文字列の下位アドレス ldx #$7B ; ループカウンタとしての Xレジスタに #$7Bをセット; 7 : 1-1-2-2-1PullLoop: ; プッシュした回数分 POPしてスタックポインタを復旧 pla dex cpx #$59 ; X != #$59 なら PullLoopにジャンプ bne PullLoop rts
![Page 41: Extreme Assembler Tanka - eagle0wl](https://reader034.fdocuments.net/reader034/viewer/2022042700/5595f2611a28ab650e8b47bb/html5/thumbnails/41.jpg)
a9 00 48 a2 7b8a 48 ca e0 5a d0 f9ea ea ba e8 8aa0 01 20 1e ab a2 7b68 ca e0 59 d0 fa 60
![Page 42: Extreme Assembler Tanka - eagle0wl](https://reader034.fdocuments.net/reader034/viewer/2022042700/5595f2611a28ab650e8b47bb/html5/thumbnails/42.jpg)
結果Result
![Page 43: Extreme Assembler Tanka - eagle0wl](https://reader034.fdocuments.net/reader034/viewer/2022042700/5595f2611a28ab650e8b47bb/html5/thumbnails/43.jpg)
![Page 44: Extreme Assembler Tanka - eagle0wl](https://reader034.fdocuments.net/reader034/viewer/2022042700/5595f2611a28ab650e8b47bb/html5/thumbnails/44.jpg)
![Page 45: Extreme Assembler Tanka - eagle0wl](https://reader034.fdocuments.net/reader034/viewer/2022042700/5595f2611a28ab650e8b47bb/html5/thumbnails/45.jpg)
35 文字(空白含む)35BPT(space include)
若山牧水Bokusui Wakayama
1885-1928
コモドール 64 上で日本語を表示 !Display Japanese Text on Commodore 64!
ふるさとの
お鈴のやまの
かなしさよ
秋のかすみの
たなびきており
![Page 46: Extreme Assembler Tanka - eagle0wl](https://reader034.fdocuments.net/reader034/viewer/2022042700/5595f2611a28ab650e8b47bb/html5/thumbnails/46.jpg)
Thank you!