Extreme Assembler Tanka - eagle0wl

A
エクストリーム・アセンブラ短歌
Extreme Assembler Tanka
松田和樹 (eagle0wl)
Kazuki Matsuda
2014.02.15 AVTokyo
8bit CPU
MOS
Technology
6502
どこにあるの?
Where is this?
Apple II
Apple Inc.
1977
ファミリーコンピュータ
(Nintendo Entertainment System)
任天堂 Nintendo
1983
RP2A03 (リコー RICOH)
PC エンジン (TurboGrafx-16)
NEC ホームエレクトロニクス (NEC Corporation)
1987
HuC6280 (ハドソン Hudson)
...
ターミネーター (T-800)
スカイネット/サイバーダイン
(Skynet / Cyberdyne Systems)
映画公開は 1984 年
Release dates(Film) 1984
and...
Commodore 64
コモドール Commodore
1982
コモドール 64(6502) で
アセンブラ短歌
Assembler Tanka on
Commodore 64 (6502)
なぜ Commodore 64 ?
Why should I use Commodore 64?
販売台数
1250 万~ 1700 万台
(単一機種で!)
selling
12.5 ~ 17 million
(only single computer model !)
未だに新作ソフトが
アマチュアによって
開発されている!
The new program release
by amature are still continued even now!
Coma Light 13 by Oxyron (2012)
(いわゆるメガデモ Intro, Demo )
Micro HEXAGON (2013)
Super Hexagon Fan game
アセンブラ短歌・試作
Assembler Tanka - First Try
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)
a9 00 48 a9 41
48 aa a9 4b 48 8a 48
a9 77 48 ba e8
8a a0 01 20 1e ab ea
ea 68 68 68 68 68 60
結果
Result
Waka
わずか 4 文字 !
Only 4 BPT! (Byte Per Tanka)
BASIC Version
10 FOR A=49152 TO 49182
20 READ B
30 POKE A,B
40 NEXT
50 DATA 169,0,72,169,65
60 DATA 72,170,169,75,72,138,72
70 DATA 169,119,72,186,232
80 DATA 138,160,1,32,30,171,234
90 DATA 234,104,104,104,104,104,96
100 POKE 53272,23
110 SYS 58692
120 SYS 49152
文字数を
増やしたい !
More BPT! More BPT!
Commodore 64 の
文字コードに着目する
Forcus on charcode
of Commodore 64
ASCII ?
http://e-words.jp/p/r-ascii.html
No!
PETSCII (unshifted)
(PET Standard Code of Information Interchange)
PETSCII (shifted)
(PET Standard Code of Information Interchange)
エクストリーム・アセンブラ短歌 !
Extreme Assembler Tanka!
Charactor Sets
コモドール 64 のデフォルト文字セット
Commodore 64 default character sets
Charactor Sets
コモドール 64 のデフォルト文字セット
Commodore 64 default character sets
Modified Charactor Sets
オリジナルの文字セット “ BOKUSCII”
Original character sets “BOKUSCII”
Modified Charactor Sets
オリジナルの文字セット “ BOKUSCII”
Original character sets “BOKUSCII”
エクストリーム・アセンブラ短歌
試作
Extreme Assembler Tanka - Try
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-2
PushLoop: ; スタックに文字列(連番)をプッシュし続ける
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-1
PullLoop: ; プッシュした回数分 POP してスタックポインタを復旧
pla
dex
cpx #$59 ; X != #$59 なら PullLoop にジャンプ
bne PullLoop
rts
a9 00 48 a2 7b
8a 48 ca e0 5a d0 f9
ea ea ba e8 8a
a0 01 20 1e ab a2 7b
68 ca e0 59 d0 fa 60
結果
Result
35 文字(空白含む)
35BPT(space include)
若山牧水
Bokusui Wakayama
1885-1928
コモドール 64 上で日本語を表示 !
Display Japanese Text on Commodore 64!
ふ
る
さ
と
の
 
 
お
鈴
の
や
ま
の
 
か
な
し
さ
よ
 
 
 
秋
の
か
す
み
の
 
 
 
 
た
な
び
き
て
お
り
Thank you!
1 of 40

Recommended

FPGA startup 第一回 LT by
FPGA startup 第一回 LTFPGA startup 第一回 LT
FPGA startup 第一回 LTYamato Kazuhiro
1.4K views10 slides
Raspberry Jam #1 20121229 by
Raspberry Jam #1 20121229Raspberry Jam #1 20121229
Raspberry Jam #1 20121229Hideki Aoshima
1.6K views14 slides
FPGAによるHDMI to LVDS変換器 by
FPGAによるHDMI to LVDS変換器FPGAによるHDMI to LVDS変換器
FPGAによるHDMI to LVDS変換器I_HaL
5.1K views25 slides
Riscv+fpga200606 by
Riscv+fpga200606Riscv+fpga200606
Riscv+fpga200606たけおか しょうぞう
670 views26 slides
LSIが「エリンギ」になるために by
LSIが「エリンギ」になるためにLSIが「エリンギ」になるために
LSIが「エリンギ」になるためにJunichi Akita
413 views52 slides
MakeLSI:ないと:Lチカから語るやわらかハードな夜 by
MakeLSI:ないと:Lチカから語るやわらかハードな夜MakeLSI:ないと:Lチカから語るやわらかハードな夜
MakeLSI:ないと:Lチカから語るやわらかハードな夜Junichi Akita
974 views94 slides

More Related Content

What's hot

アセンブラ短歌(第2回APASEC+第2期サイボウズ・ラボユース合同勉強会) by
アセンブラ短歌(第2回APASEC+第2期サイボウズ・ラボユース合同勉強会)アセンブラ短歌(第2回APASEC+第2期サイボウズ・ラボユース合同勉強会)
アセンブラ短歌(第2回APASEC+第2期サイボウズ・ラボユース合同勉強会)kozossakai
811 views111 slides
Fuji sakuraボード 2013/11/23 by
Fuji sakuraボード 2013/11/23Fuji sakuraボード 2013/11/23
Fuji sakuraボード 2013/11/23Takashi Kojo
1.9K views9 slides
Androidでロボットを動かそう・すまべん関西201003 by
Androidでロボットを動かそう・すまべん関西201003Androidでロボットを動かそう・すまべん関西201003
Androidでロボットを動かそう・すまべん関西201003cat sin
3.3K views25 slides
Rsqb flip flopの等価回路モデル by
Rsqb flip flopの等価回路モデルRsqb flip flopの等価回路モデル
Rsqb flip flopの等価回路モデルマルツエレック株式会社 marutsuelec
254 views10 slides
SRQ Flip Flopの等価回路モデル by
SRQ Flip Flopの等価回路モデルSRQ Flip Flopの等価回路モデル
SRQ Flip Flopの等価回路モデルマルツエレック株式会社 marutsuelec
434 views10 slides
モーターを低速で定速で動かしてみる by
モーターを低速で定速で動かしてみるモーターを低速で定速で動かしてみる
モーターを低速で定速で動かしてみるKeiichi Sakai
9K views36 slides

What's hot(20)

アセンブラ短歌(第2回APASEC+第2期サイボウズ・ラボユース合同勉強会) by kozossakai
アセンブラ短歌(第2回APASEC+第2期サイボウズ・ラボユース合同勉強会)アセンブラ短歌(第2回APASEC+第2期サイボウズ・ラボユース合同勉強会)
アセンブラ短歌(第2回APASEC+第2期サイボウズ・ラボユース合同勉強会)
kozossakai811 views
Fuji sakuraボード 2013/11/23 by Takashi Kojo
Fuji sakuraボード 2013/11/23Fuji sakuraボード 2013/11/23
Fuji sakuraボード 2013/11/23
Takashi Kojo1.9K views
Androidでロボットを動かそう・すまべん関西201003 by cat sin
Androidでロボットを動かそう・すまべん関西201003Androidでロボットを動かそう・すまべん関西201003
Androidでロボットを動かそう・すまべん関西201003
cat sin3.3K views
モーターを低速で定速で動かしてみる by Keiichi Sakai
モーターを低速で定速で動かしてみるモーターを低速で定速で動かしてみる
モーターを低速で定速で動かしてみる
Keiichi Sakai9K views
OSC Tokyo 2013 Spring JRPUG by Hideki Aoshima
OSC Tokyo 2013 Spring JRPUGOSC Tokyo 2013 Spring JRPUG
OSC Tokyo 2013 Spring JRPUG
Hideki Aoshima2.6K views
増え続ける情報に対応するためのFPGA基礎知識 by なおき きしだ
増え続ける情報に対応するためのFPGA基礎知識増え続ける情報に対応するためのFPGA基礎知識
増え続ける情報に対応するためのFPGA基礎知識
なおき きしだ10.2K views
レベルを上げて物理で殴る 16x9 by Knit Tiger
レベルを上げて物理で殴る 16x9レベルを上げて物理で殴る 16x9
レベルを上げて物理で殴る 16x9
Knit Tiger2.8K views
ソフトウェア技術者はFPGAをどのように使うか by なおき きしだ
ソフトウェア技術者はFPGAをどのように使うかソフトウェア技術者はFPGAをどのように使うか
ソフトウェア技術者はFPGAをどのように使うか
なおき きしだ10.6K views
FPGAスタートアップ資料 by marsee101
FPGAスタートアップ資料FPGAスタートアップ資料
FPGAスタートアップ資料
marsee1014.4K views

Similar to Extreme Assembler Tanka - eagle0wl

20111015 勉強会 (PCIe / SR-IOV) by
20111015 勉強会 (PCIe / SR-IOV)20111015 勉強会 (PCIe / SR-IOV)
20111015 勉強会 (PCIe / SR-IOV)Kentaro Ebisawa
8.7K views14 slides
あるブートローダの話 by
あるブートローダの話あるブートローダの話
あるブートローダの話nullnilaki
1.2K views24 slides
あなたのAppleにもEFIモンスターはいませんか? by Pedro Vilaça - CODE BLUE 2015 by
あなたのAppleにもEFIモンスターはいませんか? by Pedro Vilaça - CODE BLUE 2015あなたのAppleにもEFIモンスターはいませんか? by Pedro Vilaça - CODE BLUE 2015
あなたのAppleにもEFIモンスターはいませんか? by Pedro Vilaça - CODE BLUE 2015CODE BLUE
2.3K views173 slides
HaskellではじめるCortex-M3組込みプログラミング by
HaskellではじめるCortex-M3組込みプログラミングHaskellではじめるCortex-M3組込みプログラミング
HaskellではじめるCortex-M3組込みプログラミングKiwamu Okabe
2.8K views11 slides
並列計算への道 2015年版 by
並列計算への道 2015年版並列計算への道 2015年版
並列計算への道 2015年版ryos36
2K views100 slides
20120519_qpstudy 2012.05 いやらしい@hasegawのI/O入門 by
20120519_qpstudy 2012.05 いやらしい@hasegawのI/O入門20120519_qpstudy 2012.05 いやらしい@hasegawのI/O入門
20120519_qpstudy 2012.05 いやらしい@hasegawのI/O入門Takeshi HASEGAWA
3.2K views46 slides

Similar to Extreme Assembler Tanka - eagle0wl(20)

20111015 勉強会 (PCIe / SR-IOV) by Kentaro Ebisawa
20111015 勉強会 (PCIe / SR-IOV)20111015 勉強会 (PCIe / SR-IOV)
20111015 勉強会 (PCIe / SR-IOV)
Kentaro Ebisawa8.7K views
あるブートローダの話 by nullnilaki
あるブートローダの話あるブートローダの話
あるブートローダの話
nullnilaki1.2K views
あなたのAppleにもEFIモンスターはいませんか? by Pedro Vilaça - CODE BLUE 2015 by CODE BLUE
あなたのAppleにもEFIモンスターはいませんか? by Pedro Vilaça - CODE BLUE 2015あなたのAppleにもEFIモンスターはいませんか? by Pedro Vilaça - CODE BLUE 2015
あなたのAppleにもEFIモンスターはいませんか? by Pedro Vilaça - CODE BLUE 2015
CODE BLUE2.3K views
HaskellではじめるCortex-M3組込みプログラミング by Kiwamu Okabe
HaskellではじめるCortex-M3組込みプログラミングHaskellではじめるCortex-M3組込みプログラミング
HaskellではじめるCortex-M3組込みプログラミング
Kiwamu Okabe2.8K views
並列計算への道 2015年版 by ryos36
並列計算への道 2015年版並列計算への道 2015年版
並列計算への道 2015年版
ryos362K views
20120519_qpstudy 2012.05 いやらしい@hasegawのI/O入門 by Takeshi HASEGAWA
20120519_qpstudy 2012.05 いやらしい@hasegawのI/O入門20120519_qpstudy 2012.05 いやらしい@hasegawのI/O入門
20120519_qpstudy 2012.05 いやらしい@hasegawのI/O入門
Takeshi HASEGAWA3.2K views
Bluetooth通信の 仕組みと活用法紹介 by Takehiko YOSHIDA
Bluetooth通信の仕組みと活用法紹介Bluetooth通信の仕組みと活用法紹介
Bluetooth通信の 仕組みと活用法紹介
Takehiko YOSHIDA12.7K views
【A-1】AIを支えるGPUコンピューティングの今 by Developers Summit
【A-1】AIを支えるGPUコンピューティングの今【A-1】AIを支えるGPUコンピューティングの今
【A-1】AIを支えるGPUコンピューティングの今
Developers Summit1.3K views
Windowsのパケットモニタ作成 by Shinichi Hirauchi
Windowsのパケットモニタ作成Windowsのパケットモニタ作成
Windowsのパケットモニタ作成
Shinichi Hirauchi9.1K views
第162回情報処理学会ハイパフォーマンスコンピューティング研究発表会 by Hitoshi Sato
第162回情報処理学会ハイパフォーマンスコンピューティング研究発表会第162回情報処理学会ハイパフォーマンスコンピューティング研究発表会
第162回情報処理学会ハイパフォーマンスコンピューティング研究発表会
Hitoshi Sato1.1K views
「前回の COMSTAR ネタに刺激されてしまったので、オレも COMSTAR を使ってみた。」(仮) by Kazuyuki Sato
「前回の COMSTAR ネタに刺激されてしまったので、オレも COMSTAR を使ってみた。」(仮)「前回の COMSTAR ネタに刺激されてしまったので、オレも COMSTAR を使ってみた。」(仮)
「前回の COMSTAR ネタに刺激されてしまったので、オレも COMSTAR を使ってみた。」(仮)
Kazuyuki Sato3.2K views
あるキャッシュメモリの話 by nullnilaki
あるキャッシュメモリの話あるキャッシュメモリの話
あるキャッシュメモリの話
nullnilaki3.8K views
OSC2011 Tokyo/Fall 濃いバナ(virtio) by Takeshi HASEGAWA
OSC2011 Tokyo/Fall 濃いバナ(virtio)OSC2011 Tokyo/Fall 濃いバナ(virtio)
OSC2011 Tokyo/Fall 濃いバナ(virtio)
Takeshi HASEGAWA5.2K views
CUDAプログラミング入門 by NVIDIA Japan
CUDAプログラミング入門CUDAプログラミング入門
CUDAプログラミング入門
NVIDIA Japan29.1K views
バイナリ駄洒落コンテスト by kozossakai
バイナリ駄洒落コンテストバイナリ駄洒落コンテスト
バイナリ駄洒落コンテスト
kozossakai359 views
Info talk2013 by Koichi Ise
Info talk2013Info talk2013
Info talk2013
Koichi Ise6.6K views
Odyssey MAX 10 FPGA入門セミナーテキスト by Tsuyoshi Horigome
Odyssey MAX 10 FPGA入門セミナーテキストOdyssey MAX 10 FPGA入門セミナーテキスト
Odyssey MAX 10 FPGA入門セミナーテキスト
Tsuyoshi Horigome882 views
機械学習 (AI/ML) 勉強会 #2 IoT編 by Fujio Kojima
機械学習 (AI/ML) 勉強会 #2 IoT編 機械学習 (AI/ML) 勉強会 #2 IoT編
機械学習 (AI/ML) 勉強会 #2 IoT編
Fujio Kojima2K views

Recently uploaded

速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料) by
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)NTT DATA Technology & Innovation
18 views38 slides
The Things Stack説明資料 by The Things Industries by
The Things Stack説明資料 by The Things IndustriesThe Things Stack説明資料 by The Things Industries
The Things Stack説明資料 by The Things IndustriesCRI Japan, Inc.
51 views29 slides
SNMPセキュリティ超入門 by
SNMPセキュリティ超入門SNMPセキュリティ超入門
SNMPセキュリティ超入門mkoda
301 views15 slides
Windows 11 information that can be used at the development site by
Windows 11 information that can be used at the development siteWindows 11 information that can be used at the development site
Windows 11 information that can be used at the development siteAtomu Hidaka
80 views41 slides
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20... by
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...NTT DATA Technology & Innovation
104 views42 slides

Recently uploaded(11)

速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料) by NTT DATA Technology & Innovation
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
The Things Stack説明資料 by The Things Industries by CRI Japan, Inc.
The Things Stack説明資料 by The Things IndustriesThe Things Stack説明資料 by The Things Industries
The Things Stack説明資料 by The Things Industries
CRI Japan, Inc.51 views
SNMPセキュリティ超入門 by mkoda
SNMPセキュリティ超入門SNMPセキュリティ超入門
SNMPセキュリティ超入門
mkoda301 views
Windows 11 information that can be used at the development site by Atomu Hidaka
Windows 11 information that can be used at the development siteWindows 11 information that can be used at the development site
Windows 11 information that can be used at the development site
Atomu Hidaka80 views
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20... by NTT DATA Technology & Innovation
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
Web3 Career_クレデン資料 .pdf by nanamatsuo
Web3 Career_クレデン資料 .pdfWeb3 Career_クレデン資料 .pdf
Web3 Career_クレデン資料 .pdf
nanamatsuo16 views
SSH応用編_20231129.pdf by icebreaker4
SSH応用編_20231129.pdfSSH応用編_20231129.pdf
SSH応用編_20231129.pdf
icebreaker4287 views
さくらのひやおろし2023 by 法林浩之
さくらのひやおろし2023さくらのひやおろし2023
さくらのひやおろし2023
法林浩之94 views

Extreme Assembler Tanka - eagle0wl