-------------------------------------------------------------------------
      SC61860 CROSS ASSEMBLER for Win32 (Rev 0.05)
  Win95/98/98SE/NT4/2000/XP/Vista/7/8/10/11
Ɛӎ  {vO̓t[\tgłBDȂ悤ɎgĂB
          zzRłB{vOō쐬ꂽR[hɎs
          ł邩͕ۏ؂ł܂B(R[ho͂悤ɓw͂
          Ă܂jp͊e̐ӔCōsĂB
    (QZE12045@nifty.com)
URL       http://hd61700.yukimizake.net/
-------------------------------------------------------------------------
 
  SHARP|PR(SCnFPC-12XX,PC-13XX,PC-14XX)ŗpĂSC61860
  Win32pNXAZułBR}hvvg(DOS)œ삵܂B
  p\Rƃ|PRԂŃf[^ʐMł^[QbgɂĂ܂B
  yasm̖߂ɑΉĂ܂WAVo͂͂܂B
  WAV"bin2wav"(http://pocket.free.fr/html/soft/bin2wav_e.html)ɂ
  sĂB

 @\
  1.x16܂ŁB̋o^\łB
    R[hGA64KB܂Ŋmۂł܂B
  2.AhXxł͂Ȃ]߂Őlxp\łB
    i΃Wv́AAhXŵ݉łj
  3.o͌`̓`FbNTt_vXg(dmp)AoCi`APBF`(1)A
    Intel HEX(8bit)`Ił܂B
  4.`ꂽXgt@C(.lst)o͂܂B
  5.Lxȋ^(ORGAEQUADBADWADLADSAifAelseAendifAincludeAincbinA
    listAnolistAeject)T|[gĂ܂B

(1)PBF`Ƃ́AoCit@CeLXgϊvOɂėpĂ
BINARYASCIIϊ`̂ƂłB(ڂ CASIO PB-1000 Forever! Qƕ)
DSC61𗘗pďo̓t@C𑼌`ɕϊۂɗpB

 t@Ce
  README.TXT    (̃t@Cł)
  SC61.EXE      (AZust@C Win32p)
  SC61D.EXE     (AZust@C DOSp)

 g
  Windows̃R}hvvgňȉ̃R}hs܂B
  SC61 [\[Xt@C] ( IvV[/hex /b /p /tab] [V{x]=[l/x] )

sƁAwt@CAZu܂B
j
>sc61 test.s [Enter]
SC61860 ASSEMBLER Rev 0.02
Input : test.s
 PASS 1 END 
 PASS 2 END
ASSEMBLY COMPLETE, NO ERRORS FOUND
>
ȏꍇA[ASSEMBLY COMPLETE, NO ERRORS FOUND]\ďI܂B
̎A.dmpt@C.lstt@C܂B
AZuɉ炩̃G[ꍇ́AG[s\ďI܂B

 IvViȗj
 AZuɈȉ̃IvVwł܂B
  /b ---  oCi`(*.bin)ŏo͂B(ftHg̓`FbNTt_vXg(dmp)`)
  /hex -  IntelHEX(8bit)`(*.hex)ŏo͂B
  /p ---  PBF`(*.pbf)ŏo͂BiDSC61ɂđ`ɕϊɗpj
  /tab -  Xgt@CTAB=8ŏo͂B
  [V{x]=[l/x] --- Cӂ̃V{x`B

EV{x`pIvVɂ
ÑR}hCwɂĔCӂ̃V{x`邱Ƃo܂B
́Aif`else`endif^߂𗘗pĊe@pɃAZuR[h؂
ւĂꍇAeʕʂɃAZuJnAhX؂ւꍇɁA
\[XC邱ƂȂACӂ̃V{xlw肷邱Ƃ\Ƃ܂B

ob`t@C𗘗pĎŊe@p̏o͌ʂ𓾂ꍇɗpB
Ax\[XEQU錾ĂꍇAR}hCɂĒ`l
D悳܂B

l10i܂16iŎwł܂B16iAhXw肷Ƃ́A
0xtĂBi̗Qƕj

j
@햼ƊJnAhXR}hCw肷B
>SC61 SAMPLE.S MODEL=PC1262 BASE=0x2000

 쐬vO̎s
AZuʂ́A_vXg(8oCg`FbNTt)сAoCióA
Intel HEX(8bit)ɂďo͂ł܂̂ŁAKvȌ`|PRɓǂݍŉB
iȂ̓]vOKvƂȂ܂j

JZbgC^[tF[X(CE-124)pWAVt@ĆA/bIvVɂ
oCit@Co͌"bin2wav"𗘗p邱Ƃŉ\łB
bin2wav"The pocket computer museum"(http://pocket.free.fr/)ɂĔzzĂ܂B
_E[hyюǵALURLQƉB
 http://pocket.free.fr/html/soft/bin2wav_e.html

 AZu̕@
Eߌꏑ
  AZuł̖߂̋Lq͈ȉ̒ʂłB
  F   ([LABEL:]) [Mnemonic] [OP1][,OP2][,OP3] EEE([;(#)Comment])

  jjbNƃIyh1(OP1)Ƃ̊Ԃɂ̓Xy[X܂TABKvłB
  Iyh2ȍ~Lqꍇ́AJ}ŋ؂ĉB
  Z~R';'܂́AV[v'#'ȍ~̕RgƂ݂Ȃ܂B
  jjbN/Iyh̋Lq́A啶łłvłB
  Ax錾ƃRg͏ȗ\łB

EjjbN
  {Iɂ́AYASM61860`𓥏PĂAQlɂTCg̖߈ꗗ
  AZu\łB

El
   l8rbg^(IM8:0`255)A16rbg^(IM16:0`65535)T|[g܂B
   10iȊOɁA$/&/&h/0x(16i)A&B(2i)\\łB

Ex
  x16܂ŋLqłp\"@""_""A`Z""a`z""0`9"łB
  擪͐̕ȊOłKvAAt@xbg啶Ə͋ʂ܂B
  `ꂽx͐lw\ȑSẴIyhŗpł܂B

EƉZq
  lIyhx܂͎ɂ鉉Z(IyhZ)ɒu邱Ƃ\łB
  Z͈ȉ̗D揇ʂɏ]ďs܂B
   p\ȉZqiォ炩D揇    j
   (1)PZq ---  .H8rbgwA.L8rbgwA.N rbg]
   (2)]̔] ---  !
   (3)ʓZ ---  ()
   (4)lZ -----  * ZA / ZA % ](MOD)
   (5)lZ -----  + ZA - Z
   (6)VtgZ ---  >> EVtgA << Vtg
   (7)_Z -----  & ANDA  |  OR  A ^ XOR
   (8)֌W(r) ---  = ()  A > < >= <= 召r A<> s

E^
(1) ORG
   ORG [AhX](܂ LABEL/)
 @\  AZuɑ΂R[hzuJnAhX錾܂BvOɕ
       p\łALqꂽꏊ̃AZuAhX菬ORG錾͂ł܂B
       {錾̓vO̐擪ɋLqKv܂(ۂɂSTART,EQǓłł)
       Iyh̓x⎮pł܂Apɒl肵ĂKv܂B
(2) START
   START [sJnAhX](܂ LABEL/)
 @\  vO̎sJnAhX^܂BvOɂP񂾂錾\łB
       iAPBFo͈ȊOł͗p܂Bj
(3) EQU
   [LABEL(:)] EQU [l](܂ LABEL/)
 @\  錾ꂽxɑ΂āAIyh̐l^܂Bx錾͏ȗł܂B
       Iyhl̓x⎮pł܂Apɒl肵ĂKv܂B
       AEQU߂ɌAxɂR':'͏ȗ\łB
(4) DB
   ([LABEL:]) DB [l](,[l],"",LABEL,, ......)
 @\  Iyh1ȍ~ɋLqꂽl(ѕ)oCgPʂŃɊi[܂B
       x̋Lq͏ȗ\łBw肷Ƃ̓_uR[e[VVO
       R[e[Vň͂ŉBIyhl̓x⎮pł܂A
       0`255͈͓̔̒lłKv܂B
   )  DB  1,2,3,"ABCDEF 0 1 2",$20
        DB  'ABCD"TEST"'   ; VO/_uR[e[V͔rpł܂B
        DB  "ABCD'TEST'"   ; <-̗̂悤Ɍ݂͂̕ނƂ\łB
(5) DW
   ([LABEL:]) DW [l](,[l],LABEL,, ......)
 @\  Iyh1ȍ~ɋLqꂽl(ѕ)[hP(rbOGfBA)
       Ɋi[܂BIyhl̓x⎮pł܂B
       ̎wł܂ADB[߂ƈႢ2oCg܂łwł܂B
   )  DW $1234,"AB","CD"
(6) DS
   ([LABEL:]) DS [l](܂ LABEL/)
 @\  Iyh1ɋLqꂽlƓoCgR[hɊmۂ܂B
       mۂꂽ̈ɂ0i[܂BIyhl̓x⎮pł܂A
       pɒl肵ĂKv܂B
   )  DW $1234,"AB","CD"
(7) DL
   ([LABEL:]) DL [l(8bit)],[l(16bit)]
 @\  CASE2(CASE)ߗp̃Wve[u`Lq܂BIyh̓oCg(8bit)
       `ŁA2Iyh̓[h(16bit)`ŃɊi[܂B
       1Iyhɂ͕̎wł܂B2Iyh̐l̓x⎮pł܂B
   )  DL 1,$1234,"2",$3456
(8)IF`ELSE`ENDIF
  IF (!)[]
       << LqP >>
      (ELSE
       << LqQ >>)
      ENDIF
      (ELSE`<<Lq2>>)͏ȗ\łB
 @\  if߂̃Iyh1̒l^(=0ȊO)Ȃ΁ALqPL(else`endif܂ł
       LqQ𖳌)܂Bɂ́AZq![]ltɂ]pł܂B
       i!Zq̗D揇ʂ͒PZqƊʂ̊ԂłBj
       ɂ̓xw\łApɒlm肵ĂKv܂B
       IF`ELSE`ENDIF̃lXeBO\łB(255x܂)
(9)INCLUDE
   INCLUDE(t@C)
 @\  Iyh1̊ʓɋLqꂽt@CAZuɑgݍ݂܂B
       AZu͂̕Ƥ\[Xt@C̃AZu𒆎~ĤINCLUDE
       w肳ꂽt@CAZu܂Bwt@C̃AZuA
       \[Xt@C̃AZuĊJ܂B
       INCLUDẼlXeBO256x܂ŉ\łBOPENꂽINCLUDEt@C
       ċAIȌĂяosƁA"Invalid Include File Name"G[ƂȂ܂B
       INCLUDEXgt@C̏o͍͂s邽߁AINCLUDẼXgo͂
       ֎~ɂ͌qNOLIST/LIST^߂𗘗pKv܂B
(10)INCBIN
   INCBIN(t@C.BMP/t@C)
 @\  Iyh1̊ʓɋLqꂽoCit@CAZuɑgݍ݂܂B
       AZu͂̕Ƥw肳ꂽt@CoCif[^Ƃ
       DBtH[}bgɕϊēǂݍ݂܂B
       ϊɃAhX64KB𒴂ꍇAG[I܂B
       Windowsrbg}bv`̃t@C(gq.BMP)w肳ƁAsNZf[^
       LCD\pOtBbNf[^(GPRINT`)ɕϊēǂݍ݂܂B
       ǂݍ݉\ȃrbg}bv́AmN2F`݂̂łB(TCY64KBȉ)
       ȊOBMP`̏ꍇA"Illigal Bitmap File Format"\ăG[I܂B
       ̊gq(.bmpȊO)t@Cw肵ꍇAAoCif[^Ƃ
       DBtH[}bgɕϊ܂B
(11)NOLISTALISTAEJECT
   NOLIST
       LIST
       EJECT
 @\  Xg(.lstt@C)ւ̏o͂𐧌䂵܂BNOLIST߂Ƃȍ~̍s.lst
       t@Cւ̏o͂~܂BĊJLIST߂ɂčs܂B
       EJECT߂́ALINE FEED(&h0C)o͂܂B(Ƀy[Wwb_o͂܂j

CASE1(SET)ACASE2(CASE)߂̎
CASE1(SET)сACASE2(CASE)߂͂悻ȉ̂悤ȎdlɂȂĂ܂B

CASE1  {߂Ԓn}
CASE2
		1	{1}
		2	{1}
		{vȂꍇ̕}

SC61ŋLڂꍇ́ACASE1͓s2̃Iyhw肵ACASE2͒PƂŋLڂ
DL^߂DW^߂ŃWve[uLڂ܂BȂAjjbNCASE1/CASE2
܂́ASET/CASE2ނ̃yAg܂B

ȉ́AۂɗpĂR[hSC61`ŋLڂ(R[htXg)łB
Ql܂ŁB

D285: 7A06D2A0  CASE1   6,$D2A0     ; k=6,PUSH D2A0h
D289: 69        CASE2
D28A: 01C990      DL    1,$C990     ; IF A=1 JUMP C990h
D28D: 02CB10      DL    2,$CB10     ; IF A=2 JUMP CB10h
D290: 03CBB8      DL    3,$CBB8     ; IF A=3 JUMP CBB8h
D293: 04CC10      DL    4,$CC10     ; IF A=4 JUMP CC10h
D296: 05CCC0      DL    5,$CCC0     ; IF A=5 JUMP CCC0h
D299: 06D1A8      DL    6,$D1A8     ; IF A=6 JUMP D1A8h
D29C: D1A6        DW    $D1A6       ; ELSE   JUMP D1A6h	RETURN

 G[bZ[W
AZuɕ\G[bZ[W͈ȉ̒ʂłB
iKȉpȂ̂͂e͂EEj
 \[Xt@COPENłȂ        "Invalid Source File Name."
 Ps̕I[o[          "Line Length is Too Long"
 IyhI[o[        "Oprand Length is Too Long"
 xI[o[          "LABEL Length is Too Long"
 ORGߒ`Ȃ                   "ORG Not Entry"
 IyhLqȂ                  "Operand Not Entry"
 EQUɃxGgȂ             "EQU without Label"
 IyhLq~X                  "Illegal Operand"
 STARTQȏ゠               "START Already Defined"
 J}Lq                "Illegal [,]"
 ٺð/ ُ              "Illegal ['']or[(]or[)]"
 xLqQȏ゠            "LABEL Already Defined"
 xɗpłȂ            "LABEL Type Mismatch"
 xo^Ȃ                      "Undefined LABEL"
 Y߂Ȃ/Lq@̃~X         "Operation Type Mismatch"
 Iyhl͈͊O                "Operand Range Over"
 ΃Wv͈͊O                "Jump Address Over"
 o̓obt@I[o[                "Output Buffer Over Flow"
 AZuAhXI[o[      "Assemble Address Over Flow"
 sAhX擪ORG錾菬 "Execute Address Illegal"	
 Zُ( 0 Z )          "Could not calculate"
 if`else`endif̃lXgُ       "Illegal [if] - [endif]"
 includet@COPENłȂ       "Invalid Include File Name"
 includelXgُ                   "Could Not Nest Include"
 CWX^ԍُ              "Illegal Register Number"

 \[XR[hɂ
ȉŌJĂ܂B
https://hd61700.yukimizake.net/SC61860/
ɐ݂͂܂BDȂ悤ɂpB
WSLŃrh
[U[̃[JtH_SC61860.c/SC61860.huāAȉ̃R}hsB
 gcc ./SC61860.c -o sc61
 sudo mv ./sc61 /usr/local/bin

 Ql
{vO̍쐬ɂ͈ȉ̕URLQlɂĂ܂B
1. YASM61860 KOBAYASHI, Hiroyuki
   ( https://www.oit.ac.jp/rd/labs/kobayashi-lab/~yagshi/old_web/misc/pocketcom/yasm.html )
2. PC-12n̊e steduka
   ( http://www.d1.dion.ne.jp/~steduka/pc12_database.htm )
3.uThe machine language of SC-61860v Lolo's WebSite
   ( http://destroyedlolo.info/sharp/LM.html )
4.uCASE1/CASE2ɂāv PocketGriffon
   ( https://pocketgriffon.hatenablog.com/entry/2020/12/21/003621 )
5.uSC61860 (aka ESR-H) Instruction Setvutz82
   ( https://github.com/utz82/SC61860-Instruction-Set )

J̎Ql܂܂ĂAłɃN؂̏܂Ae͂B

 
NXpSC61860tAZu(DSC61)ŁAAZu
܂܂BP̂WAV͏oȂ̂́ADOSœ삵܂AListt@C
o͂BMPt@C̎荞ݓANXł̊Jpɓ@\𓋍ڂ
܂̂ŁAȂɎgƎv܂B

ƌAperl삷łAYASM61860WAV܂ŉ\Ȃ̂ŁA
gƂIXX܂Bi

2021/8/24ǋL
˂Ă̌ĂCASE1/CASE2ɑΉ܂B
^߂g}NȂǂl̂łAPocketGriffonBlogł̍\Ⴊ
ɃVv炵Ǝv܂̂ŁAɋ𒸂ŎQlɂ
łB

 
Rev 0.01  2006.11.07  ŏ̃o[WBHD61x[Xɍ쐬B
Rev 0.02  2021.08.24  CASE1(SET)CASE2(CASE)̃e[uWv(dl`)ǉB
Rev 0.03  2024.01.13  MVWP(0x35)ǉB]"DATA"Lqg܂BiROMzopj
                      ORG錾ŃR[ho͖ƂȂGA0NAȂꍇ̂CB
Rev 0.04  2025.08.11  LIIH(0x72)/HALT(0x7b)/CPID(0xd7)߂ǉB
                      Xgo͂ɎsTCNǉB(CASE߂͔\)
                      Ή߈ꗗ(SC61860.pdf)YtB
Rev 0.04a 2026.10.04  rhwarningCBWSLɂrhǋLB
Rev 0.05  2026.10.18  16i\'0x'ǉB('&h','$h'eƂĂ)
