Save 37% off PRO during our Black Friday Sale! »

What can Emacs be? / Hackers Champloo 2019

What can Emacs be? / Hackers Champloo 2019

8519a654e3b51ef7dd19486a859ca91c?s=128

Wataru MIYAGUNI

June 29, 2019
Tweet

Transcript

  1. )BDLFST$IBNQMPP 4BU 8IBUDBO&NBDTCF ٶᅳ౉ !HPOHP;

  2. ࣗݾ঺հ w HJUIVCDPNHPOHP w !HPOHP; w 4NBSU)3 *OD

  3. &NBDTͷ࿩Λ͠·͢

  4. &NBDTͱ͸ w ςΩετΤσΟλͰ͢ w ͬͦ͘͞ެࣜ)1ΛݟͯΈΑ͏

  5. IUUQTXXXHOVPSHTPGUXBSFFNBDT

  6. None
  7. &NBDT-JTQΛ࢖ͬͯɺઃఆͷΧελϚΠζ΍ ػೳͷ௥Ճɾ֦ு͕Ͱ͖Δ

  8. None
  9. ϑΝΠϧ໊΍ߦ਺ɺϞʔυͳͲ͕දࣔ͞Ε͍ͯΔ &NBDTͰ͸͓ೃછͷʰϞʔυϥΠϯʱ

  10. None
  11. ΛྲྀͤΔ͙Β͍ࣗ༝ʹΧελϚΠζՄೳ

  12. ࠷৽ ҆ఆ ൛͸

  13. None
  14. None
  15. &NBDTʹ͸ ςΩετΤσΟλͷଞʹ ʰผͷ࢟ʱ͕ଘࡏ͢Δ

  16. &NBDTʹ͸ ςΩετΤσΟλͷଞʹ ʰผͷ࢟ʱ͕ଘࡏ͢Δ ☝:FT☝

  17. ݟʹߦ͜͏ɺͦͷʰઌʱΛ

  18.  &NBDT͕Ͱ͖Δ͜ͱ  &NBDT͕ͳΕΔ΋ͷ  &NBDT͕ͳΕΔ΋ͷ  ·ͱΊ ͋͐͡Μͩ

  19. w ࠷దɺ࠷ڧͷ&NBDT؀ڥ w ࣗ෼͚ͩͷ&NBDT͸ࣗ෼Ͱݟ͚ͭΔ͔͠ͳ͍
 w ଞͷΤσΟλͱͷൺֱ w ࠓ͚ͩ͸&NBDT͚ͩΛݟͯ΄͍͠ ຊൃදͰ͓఻͑͠ͳ͍͜ͱ

  20.  &NBDT͕Ͱ͖Δ͜ͱ  &NBDT͕ͳΕΔ΋ͷ  &NBDT͕ͳΕΔ΋ͷ  ·ͱΊ ͋͐͡Μͩ

  21. &NBDT͕Ͱ͖Δ͜ͱ

  22. &NBDT͸ςΩετΤσΟλͳͷͰ ʰςΩετΛॻ͘✍ʱ ͜ͱΛੜۀͱ͢Δਓʹͱͬͯ ศརͳػೳ͕༻ҙ͞Ε͍ͯ·͢

  23. ศརͳػೳͱ͸  ଞʹ΋͋Δ͚ͲɺࠓճͷςʔϚʹԊͬͨ΍ͭ  จࣈ΍എܠʹ৭Λ͚ͭΒΕΔ 5$1 ·ͨ͸6%1 ௨৴͕Մೳ  ඇ

    ಉظϓϩηεΛىಈͰ͖Δ
  24. ศརͳػೳͱ͸  จࣈ΍എܠʹ৭Λ͚ͭΒΕΔ 5$1 ιέοτ ௨৴͕Մೳ  ඇ ಉظϓϩηεΛىಈͰ͖Δ

  25. ศརͳػೳͱ͸  จࣈ΍എܠʹ৭Λ͚ͭΒΕΔ 5$1 ιέοτ ௨৴͕Մೳ  ඇ ಉظϓϩηεΛىಈͰ͖Δ ݟ΍͘͢ͳͬͯศར

  26. จࣈ΍എܠʹ৭Λ͚ͭΒΕΔ 2Կ͕ศར  "ࢹೝੑ͸݈શͳ৺ͱςΩετΛҭΉ w ςΩετ͕࣋ͭҙຯΛࢹ֮తʹ೺ѲͰ͖Δ w ೴ͷෛ୲ΛݮΒ͢ w ৭͚ͩͰͳ͘ελΠϧ΋มߋՄೳ

    w ϘʔϧυɺΠλϦοΫͳͲ
  27. ྫ QIQNPEF

  28. จࣈ΍എܠʹ৭Λ͚ͭΒΕΔ ελΠϧͷมߋ͸ &NBDT-JTQͰ ͔ͳΓࣗ༝ʹ ઃఆͰ͖Δ 0OFNPSFUIJOH

  29. None
  30. ޷͖ͳҐஔʹ޷͖ͳ৭Ͱ ண৭Մೳ

  31. ศརͳػೳͱ͸  จࣈ΍എܠʹ৭Λ͚ͭΒΕΔ 5$1 ιέοτ ௨৴͕Մೳ  ඇ ಉظϓϩηεΛىಈͰ͖Δ

  32. ศརͳػೳͱ͸  จࣈ΍എܠʹ৭Λ͚ͭΒΕΔ 5$1 ιέοτ ௨৴͕Մೳ  ඇ ಉظϓϩηεΛىಈͰ͖Δ

  33. ศརͳػೳͱ͸  จࣈ΍എܠʹ৭Λ͚ͭΒΕΔ 5$1 ιέοτ ௨৴͕Մೳ  ඇ ಉظϓϩηεΛىಈͰ͖Δ ੈքதͷσʔλΛ

    &NBDT಺Ͱ࢖͑ͯศར
  34. 5$1 ιέοτ ௨৴͕Մೳ 2Կ͕ศར  "8FCαʔϏε͕&NBDT͔Βར༻Ͱ͖Δ

  35. 5$1 ιέοτ ௨৴͕Մೳ Α͘໨ʹ͢ΔϓϥάΠϯ w (PPHMF຋༁΍DPEJDΛ࢖ͬͯ຋༁͍ͨ͠ w HPPHMFUSBOTMBUFFM FNBDTDPEJDFM w

    5XJUUFSͰπΠʔτͨ͠ΓGBWͬͨΓ w UXJUUFSJOHNPEF w ϝʔϧಡΜͩΓ w .FX
  36. 5$1 ιέοτ ௨৴͕Մೳ w ͜ͷؔ਺Λ࢖ͬͯΈ·͢ w VSMSFUSJFWFTZODISPOPVTMZ63-  w ࢦఆͨ͠63-ʹ(&5ϦΫΤετΛૹΓɺϨεϙϯεΛऔಘ


    w ͓ࢼ͠8FCαʔϏε w JGDPOpHJP w ΞΫηε͖ͯͨ͠ਓ ͜ͷ৔߹ࣗ෼ࣗ਎ ͷ(MPCBM*1"EESFTTͱ͔ɺ 6TFS"HFOUͱ͔ࠃίʔυͱ͔Λදࣔͯ͘͠ΕΔ ศར ࢼ͠ʹ΍ͬͯΈ·͠ΐ͏
  37. None
  38. 5$1 ιέοτ ௨৴͕Մೳ ߋʹࡉ͔͍ઃఆͰ௨৴Λ։͖͍ͨ࣌͸ NBLFOFUXPSLQSPDFTTΛ࢖͏ w 6%1Λ࢖͑ͨΓ w ૹ৴͚ͩͰͳ͘ड৴΋ՄೳͱͳͬͨΓ 0OFNPSFUIJOH

  39. ศརͳػೳͱ͸  จࣈ΍എܠʹ৭Λ͚ͭΒΕΔ 5$1 ιέοτ ௨৴͕Մೳ  ඇ ಉظϓϩηεΛىಈͰ͖Δ

  40. ศརͳػೳͱ͸  จࣈ΍എܠʹ৭Λ͚ͭΒΕΔ 5$1 ιέοτ ௨৴͕Մೳ  ඇ ಉظϓϩηεΛىಈͰ͖Δ

  41. ศརͳػೳͱ͸  จࣈ΍എܠʹ৭Λ͚ͭΒΕΔ 5$1 ιέοτ ௨৴͕Մೳ  ඇ ಉظϓϩηεΛىಈͰ͖Δ ·͡ศར

  42.  ඇ ಉظϓϩηεΛىಈͰ͖Δ 2Կ͕ศར  "ͭ·ΓԿͰ΋Ͱ͖Δ Լه͸ྫ

  43.  ඇ ಉظϓϩηεΛىಈͰ͖Δ ԿͰ΋ྫ w ιʔείʔυ੔ܗπʔϧΛىಈ͠ɺࠓ։͍͍ͯΔϑΝΠ ϧ៉ྷʹͯ͠΋Β͏ w HPGNU (P

     w SVGP 3VCZ  w ෳࡶͳ)551ϦΫΤετΛඞཁͱ͢Δ8FCαʔϏε͸ɺઐ ༻ͷΫϥΠΞϯτϥΠϒϥϦ͕͋Δ͸ͣͳͷͰɺϓϩηεىಈ͠ ͯͦͷ݁Ռ͚ͩΛ&NBDTͰνΣοΫ͢Δ
  44.  ඇ ಉظϓϩηεΛىಈͰ͖Δ ⏯ಉظϓϩηεͷىಈํ๏ ͍͔ͭ͋͘Δ  w DBMMQSPDFTT w ࢦఆͨ͠ίϚϯυΛ࣮ߦ

    w TIFMMDPNNBOE w ࢦఆͨ͠ίϚϯυΛγΣϧΛ௨࣮ͯ͠ߦ w ͭ·Γlczͱ͔lzͱ͔࢖͑Δʂ
  45. None
  46.  ඇ ಉظϓϩηεΛىಈͰ͖Δ 2DBMMQSPDFTTͰ࣌ؒͷ͔͔ΔϓϩηεΛ ىಈͨ͠Β&NBDT͕ݻ·ͬͯ͠·ͬͨ "&NBDT͸γϯάϧεϨουͳͷͰ 5ISFBEͷ࣮૷͕ਐΜͰ͍Δͱ͍͏࿩΋ௌ͖·͕͢ɺࠓճ͸ׂѪ 0OFNPSFUIJOH

  47.  ඇ ಉظϓϩηεΛىಈͰ͖Δ ΋ͪΖΜඇಉظϓϩηε΋ىಈͰ͖Δ w TUBSUQSPDFTTΛ࢖ͬͨΓ w DBMMQSPDFTTͷඇಉظ൛Έ͍ͨͳౕ w TIFMMDPNNBOEͰίϚϯυʹΛ͚ͭͨΓ

    w DBMMQSPDFTTͰ࣮ߦ͢ΔίϚϯυ͸σʔϞϯͱ͠ ͯىಈ͢Δ෺ʹݶఆͨ͠Γ 0OFNPSFUIJOH
  48. &NBDT͕Ͱ͖Δ͜ͱ͕Θ͔ͬͨͱ͜ΖͰ

  49.  &NBDT͕Ͱ͖Δ͜ͱ  &NBDT͕ͳΕΔ΋ͷ  &NBDT͕ͳΕΔ΋ͷ  ·ͱΊ ͋͐͡Μͩ

  50. &NBDT͕ͳΕΔ΋ͷ

  51. ԿʹͳΕΔͷ ͭ໨͸͜Ε

  52. ԿʹͳΕΔͷ  ϝσΟΞϓϨΠϠʔʹͳΕΔ ͭ໨͸͜Ε

  53. "QQMF57͍࣋ͬͯ·͔͢ ಥવͰ͕͢ Ҿ༻ݩIUUQTXXXBQQMFDPNKQTIPQCVZUWBQQMFUWIEHC $PQZSJHIU˜"QQMF*OD"MMSJHIUTSFTFSWFE

  54. "JS1MBZ࢖͍ͬͯ·͔͢ ͲͪΒ͔ͱ͍͏ͱ ˜ۼԬढ़೭ ˜#"/%"*/".$0&OUFSUBJONFOU*OD ˜#/&*ʗ130+&$5J.!4 ˜#/&*ʗ130+&$5$*/%&3&--"SJHI

  55. "JS1MBZͱ͸ l"JS1MBZΛ࢖͑͹ɺϏσΦɺࣸਅɺԻָͳͲΛɺ "QQMF੡σόΠε͔Β͋ͳͨͷ"QQMF57ɺ ͓ؾʹೖΓͷεϐʔΧʔɺਓؾͷεϚʔτςϨϏʹ ετϦʔϛϯάͰ͖·͢ɻz Ҿ༻ݩIUUQTXXXBQQMFDPNKQBJSQMBZ $PQZSJHIU˜"QQMF*OD"MMSJHIUTSFTFSWFE ˜ۼԬढ़೭ ˜#"/%"*/".$0&OUFSUBJONFOU*OD ˜#/&*ʗ130+&$5J.!4

    ˜#/&*ʗ130+&$5$*/%&3&--"SJHI
  56. w ͓खܰ w "JS1MBZରԠػث͸ଟ͍ "JS1MBZศར ˜ۼԬढ़೭ ˜#"/%"*/".$0&OUFSUBJONFOU*OD ˜#/&*ʗ130+&$5J.!4 ˜#/&*ʗ130+&$5$*/%&3&--"SJHI

  57. "JS1MBZ͸ศརʂͦ͏ࢥ͍ͬͯͨ͋Δ೔

  58. IUUQTOUPHJUIVCJP"JS1MBZIUNM

  59. “ This document describes these protocols, as implemented in Apple

    TV software version 5.0, iOS 5.1 and iTunes 10.6. They are based on well-known standard networking protocols such as Multicast DNS, HTTP, RTSP, RTP or NTP, with custom extensions. “
  60. “ This document describes these protocols, as implemented in Apple

    TV software version 5.0, iOS 5.1 and iTunes 10.6. They are based on well-known standard networking protocols such as Multicast DNS, HTTP, RTSP, RTP or NTP, with custom extensions. “
  61. "JS1MBZ4FSWFS1SPUPDPM 1045QMBZ ▶7JEFPͷ࠶ੜ 1045TUPQ ⏹7JEFPͷఀࢭ 1045SBUF ࠶ੜ଎౓ͷมߋ 165QIPUP ը૾ͷදࣔ ಈը΍ը૾ͷ੍ޚ͸)5513FRVFTUͰՄೳ

  62. ʮ)5513FRVFTUͰૢ࡞Ͱ͖ΔΜͩͳʯ

  63. &NBDTͷ͜ͱΛࢥ͍ग़ͯ͠ΈΑ͏

  64. &NBDTͷ͜ͱΛࢥ͍ग़ͯ͠ΈΑ͏

  65.  &NBDT͸ιέοτ௨৴͕Մೳ  "JS1MBZ͸͘͝Ұൠతͳωοτ ϫʔΫϓϩτίϧͰձ࿩͕Մೳ

  66. None
  67. ✨"JSQMBZCJOEJOHTUP&NBDT w IUUQTHJUIVCDPNHPOHPBJSQMBZFM ⚙ओͳػೳ w -"/಺ʹ͋Δ"JS1MBZػثΛݕࡧͰ͖Δ w Πϯλʔωοτ্ʹ͋Δը૾΍ಈըΛࢦఆͨ͠ "JS1MBZػثͰ࠶ੜͰ͖Δ &NBDT͔Β"JS1MBZΛ৮Ε·ͨ͠

  68. &NBDT͔Β"JS1MBZΛ৮Ε·ͨ͠ 6TBHF SFRVJSFBJSQMBZ  BJSQMBZEFWJDFCSPXTF   lz "JS1MBZαʔόͷ৘ใ BJSQMBZJNBHFWJFX6TFSTHPOHP%FTLUPQBQQMFUWKQH

     BJSQMBZWJEFPQMBZIUUQTFYBNQMFDPNFNBDTNW
  69. BJSQMBZFM͕΍͍ͬͯΔ͜ͱ  -"/಺ʹ͋Δ"JS1MBZαʔό ػث Λௐࠪ͠ɺ*1 ΞυϨεΛήοτ  Ͱݟ͚ͭͨ"JS1MBZαʔόʹ޲͚ͯʮ͜͜ʹஔ͍ ͯ͋ΔಈըϑΝΠϧΛ࠶ੜͯ͘͠ΕΑͳʯͱૹ৴ 

    ͋ͱ͸"JS1MBZαʔόଆͰউखʹ࠶ੜ։࢝
  70. BJSQMBZFM͕΍͍ͬͯΔ͜ͱ  -"/಺ʹ͋Δ"JS1MBZαʔό ػث Λௐࠪ͠ɺ*1 ΞυϨεΛήοτ  Ͱݟ͚ͭͨ"JS1MBZαʔόʹ޲͚ͯʮ͜͜ʹஔ͍ ͯ͋ΔಈըϑΝΠϧΛ࠶ੜͯ͘͠ΕΑͳʯͱૹ৴ 

    ͋ͱ͸"JS1MBZαʔόଆͰউखʹ࠶ੜ։࢝ N%/4ͱ͍͏࢓૊ΈΛ࢖͍ͬͯ͘Α
  71. N%/4 NVMUJDBTU%/4 “ In computer networking, the multicast DNS (mDNS)

    protocol resolves host names to IP addresses within small networks that do not include a local name server. “ Ҿ༻ݩIUUQTFOXJLJQFEJBPSHXJLJ.VMUJDBTU@%/4
  72. N%/4 NVMUJDBTU%/4

  73. N%/4 NVMUJDBTU%/4

  74. N%/4 NVMUJDBTU%/4

  75. N%/4 NVMUJDBTU%/4

  76. N%/4 NVMUJDBTU%/4

  77. N%/4 NVMUJDBTU%/4 (let ((process (make-network-process :name "mdns" :coding 'binary :buffer

    (current-buffer) :host "224.0.0.251" :service 5353 :type 'datagram)) (send-text (dns-write `((id ,(random 65000)) (opcode query) (queries (("_airplay._tcp.local" (type PTR)))))))) (process-send-string process send-text)) ࢀߟ: LAN ಺ͷ AppleTV ͷ IP ΞυϨεΛऔಘ͢Δ Emacs Lisp http://gongo.hatenablog.com/entry/2013/01/17/004306
  78. BJSQMBZFM͕΍͍ͬͯΔ͜ͱ  -"/಺ʹ͋Δ"JS1MBZαʔό ػث Λௐࠪ͠ɺ*1 ΞυϨεΛήοτ  Ͱݟ͚ͭͨ"JS1MBZαʔόʹ޲͚ͯʮ͜͜ʹஔ͍ ͯ͋ΔಈըϑΝΠϧΛ࠶ੜͯ͘͠ΕΑͳʯͱૹ৴ 

    ͋ͱ͸"JS1MBZαʔόଆͰউखʹ࠶ੜ։࢝
  79. ϝσΟΞϑΝΠϧͷ৔ॴΛڭ͑Δ

  80. ϝσΟΞϑΝΠϧͷ৔ॴΛڭ͑Δ

  81. ϝσΟΞϑΝΠϧͷ৔ॴΛڭ͑Δ

  82. ϝσΟΞϑΝΠϧͷ৔ॴΛڭ͑Δ 1045QMBZ)551 $POUFOU-FOHUI $POUFOU5ZQFUFYUQBSBNFUFST $POUFOU-PDBUJPOIUUQFYBNQMFDPNFNBDTNW 4UBSU1PTJUJPO 

  83. ϝσΟΞϑΝΠϧͷ৔ॴΛڭ͑Δ 1045QMBZ)551 $POUFOU-FOHUI $POUFOU5ZQFUFYUQBSBNFUFST $POUFOU-PDBUJPOIUUQFYBNQMFDPNFNBDTNW 4UBSU1PTJUJPO ʮ։࢝ҐஔΛͷҐஔʹࢦఆʯͷҙ

  84. ʮखݩͷ1$ʹ͋ΔϜʔϏʔϑΝΠϧΛ ɹɹ"QQMF57Ͱ࠶ੜͯ͠΄͍͠ͷ͚ͩͲ ɹɹ͍͍ͪͪΠϯλʔωοτʹ্͛Δͷ͸େมͩʯ ʮ͏ʔΜɺϜʔϏʔσʔλΛ)5513FTQPOTFͰ ɹɹฦͯ͋͛͠Ε͹͍͍͚͔ͩͩΒ ɹɹϩʔΧϧͰαʔόΛཱͯΕ͹ͳΜͱ͔ʯ ศར͚ͩͲʜ෺଍Γͳ͍

  85. ʮ͔ͤͬؔ͘਺Λͭݺͼग़͚ͩ͢Ͱ࠶ੜ ɹɹͰ͖Δͷʹࣄલʹ)551αʔόΛཱͯͯ ɹɹͦ͜ʹϑΝΠϧΛஔ͍ͯʔͱ͍͏ͷ͸ ɹɹΊΜͲ͍͔͘͞ͳʯ ʮͦ͏ͩͳʔͦ͏ͩΑͶʔʯ ศར͚ͩͲʜ෺଍Γͳ͍

  86. ʮɻɻɻʯ

  87. ʮɻɻɻʯ

  88. ʮʂʂʯ

  89. ✌੔͍·ͨ͠

  90. w &NBDT-JTQͰهड़͞Εͨ
 8FCαʔό TJNQMFIUUQEFM Λ֦ு w "JS1MBZαʔό͔ΒͷϦΫΤετΛॲཧ͢Δ͚ͩ w BJSQMBZFMͰ࠶ੜΛ࢝ΊΔλΠϛϯάͰ
 ඇಉظϓϩηεͰىಈ͢Δ

    BJSQMBZWJEFPTFSWFSFM HPOHPBJSQMBZFMʹಉࠝ
  91. 2Ͳ͏ͯ͠ඇಉظͰىಈ͢Δͷ

  92. 2Ͳ͏ͯ͠ඇಉظͰىಈ͢Δͷ  "&NBDT͔ͩΒͶ

  93. ࠶ੜ ഑৴ ͢ΔϑΝΠϧʹΑͬͯ͸ ɹҰ౓ͷ௨৴Ͱѻ͏σʔλྔ͕ଟ͘ ɹ͕͔͔࣌ؒΔ⏱
 ௨৴ʹूத͍ͯ͠Δؒɺ&NBDT͸
 ɹΩʔೖྗΛड͚͚ͭͳ͘ ʹ͘͘ ͳΔͷͰɺ
 ɹ·ͱ΋ʹ&NBDT͕ૢ࡞Ͱ͖ͳ͍

  94.  "JS1MBZͱͷ΍ΓͱΓ͚ͩΛ͢Δ &NBDTϓϩηε͕͋Ε͹ྑ͍͡ΌΜ

  95.  BJSQMBZWJEFPQMBZ ʹϩʔΧϧϑΝΠϧύε͕౉͞ΕΔͱ
 BJSQMBZWJEFPTFSWFSFMΛ&NBDTͷEBFNPONPEFͰىಈ  TJNQMFIUUQEΛ࢖ͬͯɺͰࢦఆͨ͠ϑΝΠϧΛTFSWF͢ΔΑ͏ͳ
 8FCαʔόΛىಈ  ىಈͨ͠8FCαʔόͷ*1ΞυϨεͱϙʔτ൪߸Λ࢖͍ɺ
 BJSQMBZFM͕"JS1MBZػثʹʮl\JQBEES^\QPSU^zͰ഑৴ͯ͠ΔಈըΛ࠶ੜͯ͠ʯͱ


    1045ϦΫΤετΛૹΔ  ϦΫΤετΛड͚ͱͬͨ"JS1MBZػث͕BJSQMBZWJEFPTFSWFSʹΞΫηε͢Δ  BJSQMBZWJEFPTFSWFS͕͍͍ײ͡ʹσʔλΛฦͯ͋͛͠Δ  ࠶ੜΛఀࢭ͢ΔλΠϛϯάͰɺىಈͨ͠BJSQMBZWJEFPTFSWFS΋ఀࢭ͢Δ BJSQMBZFM BJSQMBZWJEFPTFSWFSFM ࣍ͷεϥΠυ͔ΒਤͰઆ໌͠·͢➡
  96. None
  97. None
  98. None
  99. None
  100. None
  101. None
  102. ͬͪ͜ͷ&NBDT͸Ҿ͖ଓ͖ૢ࡞Մೳ

  103. None
  104. None
  105. None
  106. None
  107. None
  108. ԿʹͳΕΔͷ  ϝσΟΞϓϨΠϠʔʹͳΕΔ ͭ໨͸͜Εͷ·ͱΊ

  109. ԿʹͳΕΔͷ  ϝσΟΞϓϨΠϠʔʹͳΕΔ͠ ɹϝσΟΞαʔόʹ΋ͳΕΔ ͭ໨͸͜Εͷ·ͱΊ

  110.  &NBDT͕Ͱ͖Δ͜ͱ  &NBDT͕ͳΕΔ΋ͷ  &NBDT͕ͳΕΔ΋ͷ  ·ͱΊ ͋͐͡Μͩ

  111. &NBDT͕ͳΕΔ΋ͷ

  112. ԿʹͳΕΔͷ ͭ໨͸͜Ε

  113. ԿʹͳΕΔͷ  ήʔϜػʹͳΕΔ ͭ໨͸͜Ε

  114. ϑΝϛϦʔίϯϐϡʔλ͝ଘ஌Ͱ͔͢ ಥવͰ͕͢ Ҿ༻ݩIUUQTKBXJLJQFEJBPSHXJLJϑΝϛϦʔίϯϐϡʔλ

  115. &NBDTͰಈ͘७౓&NBDT-JTQͷ ϑΝϛϦʔίϯϐϡʔλͷΤϛϡϨʔλ Λ։ൃͨ͠࿩Λ͠·͢ IUUQTHJUIVCDPNHPOHPFNBDTOFT ݁࿦͔Βݴ͏ͱ

  116. FNBDTOFT·ͰͷಓͷΓ

  117. w $16 .04ͷΧελϜ൛ ͷ໋ྩηο τ͸ެ։͞Ε͍ͯΔ w IUUQPCFMJTLNFVLSFGFSFODFIUNM w ղઆهࣄ΍ςετ༻30.΋ଟ਺͋Δ w

    IUUQTXJLJOFTEFWDPNXJOEFYQIQ&NVMBUPS@UFTUT ϑΝϛίϯ/JOUFOEP&OUFSUBJONFOU4ZTUFN Ҏ߱/&4 
  118. ʮϓϩάϥϛϯάݴޠͰ/&4ͷΤϛϡϨʔλΛ࡞੒͢Δʯ͸ ࡢࠓ௝͘͠ͳ͍ίϯςϯπ Լه΋΄ΜͷҰྫ  w 3VCZ੡ w IUUQTHJUIVCDPNNBNFPQUDBSSPU w 1)1੡

    w IUUQTHJUIVCDPNIBTFHBXBUPNPLJQIQUFSNJOBMOFTFNVMBUPS w (P੡ w IUUQTHJUIVCDPNGPHMFNBOOFT ˡ೥લ ࢓༷͕͋ΔͳΒ࠶ݱͰ͖ΔΑͶ
  119. ʮϫγ΋΍ͬͯΈ͍͚ͨͲɺ ɹɹ΋͸΍ग़ਚͯͯ͘͠ࠓߋײ͋Δͳʯ ʮͦΕʹͳΜ͔ͩΜͩͰ೉ͦ͠͏ͩʯ ਺೥લͷ๻

  120. ͦΜͳ͋Δ೥݄

  121. Ҿ༻ݩCVJMEFSTDPO IUUQTCVJMEFSTDPOJPUPLZPTFTTJPOBBCDFECG

  122. ʮΊͬͪΌΘ͔Γ΍͍͢ Θ͔Βͳ͍ ʯ ʮ΋͏Ұ౓ࢿྉಡΈ௚ͯ͠ΈΔ͔ʯ ൃදݟͨ͋ͱͷ๻

  123. ʮ/&4͸ҎԼͷσόΠεͰߏ੒͞Ε͍ͯΔʯ ;Ή;Ήɻɻɻ

  124. ʮ/&4͸ҎԼͷσόΠεͰߏ੒͞Ε͍ͯΔʯ ;Ή;Ήɻɻɻ

  125. ʮ/&4͸ҎԼͷσόΠεͰߏ੒͞Ε͍ͯΔʯ w Χηοτ w $16 w 116 1JDUVSF1SPDFTTJOH6OJU  w

    3". w ίϯτϩʔϥ ;Ή;Ήɻɻɻ
  126. w Χηοτ w $16 w 116 w 3". w ίϯτϩʔϥ

    Χηοτ಺ͷ30.ʹࠁ·Ε͍ͯΔ ΩϟϥΫλʔ΍എܠσʔλΛಡΈࠐΉ ϑΥʔϚοτ͸ܾ·͍ͬͯΔ ʮɻɻɻɻɻʯ
  127. w Χηοτ w $16 w 116 w 3". w ίϯτϩʔϥ

    ʮɻɻɻɻɻɻʯ ໋ྩηοτΛݸ࣮ͣͭ૷͍ͯ͘͠ جຊతʹ࿦ཧԋࢉ͕Ͱ͖Ε͹ྑ͍
  128. w Χηοτ w $16 w 116 w 3". w ίϯτϩʔϥ

    ʮɻɻɻɻɻɻɻʯ ͬ͘͟Γݴ͑͹ը໘ʹ৭͚͍ͭͯ͘ɻ ೚ҙͷҐஔʹ೚ҙͷ৭Λ
  129. w Χηοτ w $16 w 116 w 3". w ίϯτϩʔϥ

    ʮɻɻɻɻɻɻɻɻʯ ϝϞϦۭؒΈ͍ͨͳ΋ͷͩ ༷ʑͳܭࢉ݁ՌΛอ؅Ͱ͖Ε͹0,
  130. w Χηοτ w $16 w 116 w 3". w ίϯτϩʔϥ

    ʮɻɻɻɻɻɻɻɻɻʯ "ͱ͔#ͱ͔ेࣈͱ͔ ͱʹ͔͘ೖྗ൑ఆͰ͖Ε͹ྑ͍ͷͩΖ͏
  131. ʮɻɻɻɻɻɻɻɻɻɻʯ w Χηοτ w $16 w 116 w 3". w

    ίϯτϩʔϥ
  132. w Χηοτ w $16 w 116 w 3". w ίϯτϩʔϥ

    ʮʂʂʂʂʂʂʂʂʂʂʂʯ
  133. ✌&NBDTͰͰ͖Δ͡ΌΜ

  134. ७౓&NBDT-JTQ/&4&NVMBUPS IUUQTHJUIVCDPNHPOHPFNBDTOFT վΊͯ঺հ ֤σόΠεΛͲͷΑ͏ʹͯ͠&NBDTͰ࣮ݱͯ͠ ͍Δ͔ɺ۷ΓԼ͍͖͛ͯ·͢

  135. ΧηοτͷऔΓѻ͍ OFTDBSUSJEHFFM

  136. Χηοτ͔Βٵ͍ग़ͨ͠30.Πϝʔδ͸ J/&4ͱݺ͹ΕΔϑΝΠϧϑΥʔϚοτͰ ߏ੒͞Ε͍ͯΔ IUUQTXJLJOFTEFWDPNXJOEFYQIQ*/&4 ΧηοτͷऔΓѻ͍

  137. Χηοτ͔Βٵ͍ग़ͨ͠30.Πϝʔδ͸ J/&4ͱݺ͹ΕΔϑΝΠϧϑΥʔϚοτͰ ߏ੒͞Ε͍ͯΔ IUUQTXJLJOFTEFWDPNXJOEFYQIQ*/&4 ✂ϑΥʔϚοτܾ·͍ͬͯΔͳΒ ܾΊଧͪͰσʔλநग़Ͱ͖ΔΑͶʂʂ ΧηοτͷऔΓѻ͍

  138. * ϑΝΠϧͷϔομ৘ใΛऔಘ ** ☝ϔομ৘ใ͔Βɺ৭σʔλ΍
 ΩϟϥΫλʔύλʔϯͷҐஔΛಛఆ ***⛏͋ͱ͸ͻͨ͢ΒSFBE͍ͯ͘͠ ΧηοτͷऔΓѻ͍

  139. * ϑΝΠϧͷϔομ৘ใΛऔಘ ** ☝ϔομ৘ใ͔Βɺ৭σʔλ΍
 ΩϟϥΫλʔύλʔϯͷҐஔΛಛఆ ***⛏͋ͱ͸ͻͨ͢ΒSFBE͍ͯ͘͠ (defconst nes/cartridge-ines-header-spec '((constant vec

    4 u8) (size-of-prg-rom u8) (size-of-chr-rom u8) (flags6 u8) (flags7 u8) (size-of-prg-ram u8) (flags9 u8) (flags10 u8) (zero-pad vec 5 u8))) (bindat-unpack nes/cartridge-ines-header-spec (encode-coding-string rom-data 'raw-text)) ΧηοτͷऔΓѻ͍
  140. * ϑΝΠϧͷϔομ৘ใΛऔಘ ** ☝ϔομ৘ใ͔Βɺ৭σʔλ΍
 ΩϟϥΫλʔύλʔϯͷҐஔΛಛఆ ***⛏͋ͱ͸ͻͨ͢ΒSFBE͍ͯ͘͠ ΧηοτͷऔΓѻ͍

  141. $16ͷΤϛϡϨʔτ OFTDQVFM

  142. ͷ໋ྩҰཡ $16ͷΤϛϡϨʔτ ද "%$ "/% "4- #$$ #$4 #&2 #*5

    #.* #/& #1- #3, #7$ #74 $-$ $-% $-* $-7 $.1 $19 $1: %&$ %&9 %&: &03 */$ */9 */: +.1 +43 -%" -%9 -%: -43 /01 03" 1)" 1)1 1-" 1-1 30- 303 35* 354 4#$ 4&$ 4&% 4&* 45" 459 45: 5"9 5": 549 59" 594 5:"
  143. ͷ໋ྩҰཡ ද "%$ "/% "4- #$$ #$4 #&2 #*5 #.*

    #/& #1- #3, #7$ #74 $-$ $-% $-* $-7 $.1 $19 $1: %&$ %&9 %&: &03 */$ */9 */: +.1 +43 -%" -%9 -%: -43 /01 03" 1)" 1)1 1-" 1-1 30- 303 35* 354 4#$ 4&$ 4&% 4&* 45" 459 45: 5"9 5": 549 59" 594 5:" ✍ͻͨ͢Βॻ͍͍͔ͯ͘͠Ͷ͑ $16ͷΤϛϡϨʔτ
  144. $16ͷΤϛϡϨʔτ (logand #b0101 #b1100) ;; AND => #b0100 (logior #b0101

    #b1100) ;; OR => #b1101 (logxor #b0101 #b1100) ;; XOR => #b1001 ;; Emacs Lisp ʹ͸ඪ४Ͱແ͔ͬͨͷͰࣗ࡞ (logbitp 0 #b1010) ;; => nil (logbitp 1 #b1010) ;; => t (logbitp 2 #b1010) ;; => nil FNBDTOFTͰΑ͘࢖ͬͨϏοτԋࢉؔ਺
  145. (defun nes/instruction-dex (c _address _mode) "Decrement X Register" (let* ((register

    (nes/cpu->register c)) (data (logand (1- (nes/cpu-register->idx-x register)) #xff))) (setf (nes/cpu-register->idx-x register) data) (nes/instruction--set-zero-and-negative-flags register data))) (defun nes/instruction-dey (c _address _mode) "Decrement Y Register" (let* ((register (nes/cpu->register c)) (data (logand (1- (nes/cpu-register->idx-y register)) #xff))) (setf (nes/cpu-register->idx-y register) data) (nes/instruction--set-zero-and-negative-flags register data))) (defun nes/instruction-adc (c addr-or-data mode) "Add with Carry" (let* ((register (nes/cpu->register c)) (data (if (eq mode :immediate) addr-or-data (nes/cpu-read c addr-or-data))) (acc (nes/cpu-register->acc register)) (result (+ acc data (if (nes/cpu-register->sr-carry register) 1 0)))) (nes/instruction--set-zero-and-negative-flags register result) (setf (nes/cpu-register->sr-carry register) (> result #xff)) (setf (nes/cpu-register->sr-overflow register) (and (not (nes--logbitp 7 (logxor acc data))) (nes--logbitp 7 (logxor acc result)))) (setf (nes/cpu-register->acc register) (logand result #xFF)))) ͻͨ͢ΒϏοτԋࢉ $16ͷΤϛϡϨʔτ
  146. 116ͷΤϛϡϨʔτ OFTQQVFM

  147. FNBDTOFTʹ͓͚Δը໘ͱ͸ ͢ͳΘͪ&NBDT όοϑΝ Ͱ͋Δ 116ͷΤϛϡϨʔτ

  148. FNBDTOFTʹ͓͚Δը໘ͱ͸ ͢ͳΘͪ&NBDT όοϑΝ Ͱ͋Δ &NBDTͳΒͰ͖Δ 116ͷΤϛϡϨʔτ

  149. FNBDTOFTͰ͸HBNFHSJEFMΛ࢖༻ lHBNFHSJEFMMJCSBSZGPSJNQMFNFOUJOHHSJECBTFEHBNFTPO&NBDTz &NBDTʹඪ४Ͱଘࡏ͢ΔϥΠϒϥϦ 116ͷΤϛϡϨʔτ

  150. FNBDTOFTͰ͸HBNFHSJEFMΛ࢖༻ lHBNFHSJEFMMJCSBSZGPSJNQMFNFOUJOHHSJECBTFEHBNFTPO&NBDTz &NBDTʹඪ४Ͱଘࡏ͢ΔϥΠϒϥϦ IUUQHPOHPIBUFOBCMPHDPNFOUSZ 116ͷΤϛϡϨʔτ

  151. FNBDTOFTͰ͸HBNFHSJEFMΛ࢖༻ lHBNFHSJEFMMJCSBSZGPSJNQMFNFOUJOHHSJECBTFEHBNFTPO&NBDTz &NBDTʹඪ४Ͱଘࡏ͢ΔϥΠϒϥϦ ͳΜ͔͍͍ײ͡ʹ ৭͚ͭΕͯศར IUUQHPOHPIBUFOBCMPHDPNFOUSZ 116ͷΤϛϡϨʔτ

  152. 3".ͷΤϛϡϨʔτ

  153. 3".ͷΤϛϡϨʔτ WJEFPSBN NBLFWFDUPSY ͜Ε͚ͩ

  154. ΩʔϘʔυͷΤϛϡϨʔτ OFTLFZCPBSEFM

  155. &NBDT͸ςΩετΤσΟλͳͷͰɺ ΋ͪΖΜΩʔόΠϯυઃఆ͸Մೳ ΩʔϘʔυͷΤϛϡϨʔτ

  156. &NBDT͸ςΩετΤσΟλͳͷͰɺ ΋ͪΖΜΩʔόΠϯυઃఆ͸Մೳ ΩʔϘʔυͷΤϛϡϨʔτ ྫ$USM YˠKͰTLLNPEF͕ىಈ͢Δ HMPCBMTFULFZ LCE$YK TLLNPEF

  157. ΩʔϘʔυͷΤϛϡϨʔτ ;; w Λԡ͢ͱ্ɺs Λԡ͢ͱԼ (defvar nes/keypad:up (kbd "w")) (defvar

    nes/keypad:down (kbd “s")) ;; CPU ʹରͯ͠ʮ্(4)͕ԡ͞Εͨͧʯͱ఻͑Δ key binding (define-key map nes/keypad:up (lambda () (interactive) (nes/keypad-check k 4))) ;; CPU ʹରͯ͠ʮԼ(5)͕ԡ͞Εͨͧʯͱ఻͑Δ key binding (define-key map nes/keypad:down (lambda () (interactive) (nes/keypad-check k 5)))
  158. ४උ͸੔͍·ͨ͠

  159. ४උ͸੔͍·ͨ͠

  160. ͍Α͍Αಈ͔͍ͯͧ͘͠ʔ  ςετ༻30.Λಈ͔ͯ͠ΈΔ  צ σόοά͢Δ  ͱΛ܁Γฦ͢  ̋̋Λಈ͔ͯ͠ΈΔ

  161. ͍Α͍Αಈ͔͍ͯͧ͘͠ʔ  ςετ༻30.Λಈ͔ͯ͠ΈΔ  צ σόοά͢Δ  ͱΛ܁Γฦ͢  ̋̋Λಈ͔ͯ͠ΈΔ

  162. ΤϛϡϨʔλʔ༻ͷ30.͕๛෋ w OFTUFTUOFT ඞਢڃ  w ༷ʑͳ$16໋ྩΛ࣮ߦ w ͜ΕΛύε͢Δ͜ͱ͔Β࢝·Δ w

    QBMFUUFOFT ͜͜Ͱࠞཚ͢Δ  w ΧϥʔύϨοτΈ͍ͨͳͷΛදࣔͯ͠ΈΔ༻ w ͜͜Ͱ่Ε͕ൃੜ్ͯ͠ํʹ͘ΕΔ IUUQTXJLJOFTEFWDPNXJOEFYQIQ&NVMBUPS@UFTUT
  163. ΤϛϡϨʔλʔ༻ͷ30.͕๛෋ w OFTUFTUOFT ඞਢڃ  w ༷ʑͳ$16໋ྩΛ࣮ߦ w ͜ΕΛύε͢Δ͜ͱ͔Β࢝·Δ w

    QBMFUUFOFT ͜͜Ͱࠞཚ͢Δ  w ΧϥʔύϨοτΈ͍ͨͳͷΛදࣔͯ͠ΈΔ༻ w ͜͜Ͱ่Ε͕ൃੜ్ͯ͠ํʹ͘ΕΔ IUUQTXJLJOFTEFWDPNXJOEFYQIQ&NVMBUPS@UFTUT
  164. ΤϛϡϨʔλʔ༻ͷ30.͕๛෋ w OFTUFTUOFT ඞਢڃ  w ༷ʑͳ$16໋ྩΛ࣮ߦ w ͜ΕΛύε͢Δ͜ͱ͔Β࢝·Δ w

    QBMFUUFOFT ͜͜Ͱࠞཚ͢Δ  w ΧϥʔύϨοτΈ͍ͨͳͷΛදࣔͯ͠ΈΔ༻ w ͜͜Ͱ่Ε͕ൃੜ్ͯ͠ํʹ͘ΕΔ IUUQTXJLJOFTEFWDPNXJOEFYQIQ&NVMBUPS@UFTUT
  165. ͍Α͍Αಈ͔͍ͯͧ͘͠ʔ  ςετ༻30.Λಈ͔ͯ͠ΈΔ  צ σόοά͢Δ  ͱΛ܁Γฦ͢  ̋̋Λಈ͔ͯ͠ΈΔ

  166. ͍Α͍Αಈ͔͍ͯͧ͘͠ʔ  ςετ༻30.Λಈ͔ͯ͠ΈΔ  צ σόοά͢Δ  ͱΛ܁Γฦ͢  ̋̋Λಈ͔ͯ͠ΈΔ

    ໨νΣοΫ ָ͍͠ ·ͨը໘ ่ΕͯΔ΍Μ͚
  167. σόοάͷखॱ  ςετ30.Λ࣮ߦ➡ಈ͔ͳ͍  ଞͷΤϛϡϨʔλͰಈ͔ͯ͠ΈΔ➡ಈ͘  ͷιʔείʔυΛಡΉ  ࢀߟʹ͢Δ 

    ʹ໭Δ㽉
  168. ͍Α͍Αಈ͔͍ͯͧ͘͠ʔ  ςετ༻30.Λಈ͔ͯ͠ΈΔ  צ σόοά͢Δ  ͱΛ܁Γฦ͢  ̋̋Λಈ͔ͯ͠ΈΔ

  169. IUUQTHJUIVCDPNHPOHPFNBDTOFTQVMM

  170. Ͱ͖͚ͨͲɺ·ͩ·ͩ໰୊͋Γ  ·ͣ஗͍ ͖ͬ͞ͷౕɺഒ଎   νϥ͖ͭ΋ͪΐͬͱؾʹͳΔ

  171. Ͱ͖͚ͨͲɺ·ͩ·ͩ໰୊͋Γ  ·ͣ஗͍ ͖ͬ͞ͷౕɺഒ଎   νϥ͖ͭ΋ͪΐͬͱؾʹͳΔ ɹɹɹɹɹ͍͔ͭղܾ͢ΔͰ͠ΐ͏

  172. ԿʹͳΕΔͷ  ήʔϜػʹͳΕΔ ͭ໨͸͜Εͷ·ͱΊ ࠷ۙήʔϜϘʔΠ൛΋ݟ͚ͭ·ͨ͠ IUUQTHJUIVCDPNWSFF[FFCPZ

  173.  &NBDT͕Ͱ͖Δ͜ͱ  &NBDT͕ͳΕΔ΋ͷ  &NBDT͕ͳΕΔ΋ͷ  ·ͱΊ ͋͐͡Μͩ

  174. w ιέοτ௨৴ͱϓϩηεىಈ͕
 ͋Ε͹େ఍ͷ͜ͱ͸Ͱ͖Δ w &NBDTͷࣗ༝͞ͱ૊߹ΘͤΔ͜ͱͰ
 ςΩετΤσΟλͷ࿮Λ௒͑ͨ͜ͱ͕
 ࣮ݱͰ͖Δ ·ͱΊ

  175. ·ͱΊ ͋ͳͨͷྗͰɺ&NBDTͷதʹ຾Δ ·ͩݟ͵ʰԿ͔ʱΛ࡞ͬͯΈ·ͤΜ͔

  176. w &NBDTͰಈ͘/&4ΤϛϡϨʔλΛ࡞͍ͬͯΔ࿩ w IUUQHPOHPIBUFOBCMPHDPNFOUSZ w .FSSZ$ISJTUNBTJO&NBDT w IUUQHPOHPIBUFOBCMPHDPNFOUSZ w &NBDTͷNPEFMJOFʹण͕࢘ྲྀΕΔ೔

    w IUUQHPOHPIBUFOBCMPHDPNFOUSZ w &NBDTͱ"QQMF57ͷՍ͚ڮͱͳΔBJSQMBZFM w IUUQHPOHPIBUFOBCMPHDPNFOUSZ ͓ΘΓ