vim: set textwidth=64:

  騥 砭 騥  ।⠢ 㭪権.
 --------------------------------------------------------

   㭪樨, ᫨   ७ ᯥ樠쭮, 
࠭ ࠭  ॣ஢ ய ஬
ॣ஢ I  IY. 㭪樨 ⬥祭    C
 ࠭ ࠭ ॣ IX.

   㭪樨, ᫨   ७ ᯥ樠쭮, 
॥࠭묨,      ४ᨢ
맮,   ᯮ ᪨ ६ 
ᠬ饣 .  ६ 뤥  ⥪.


  㭪樨 騥 ணࠬ:
 ------------------------------

exit_48
=======
室   ᨪ  ० spectrum 48kb.

exit_128.
=========
室   Basic-128.

exit_trdos
==========
室  TR-DOS.

exit_run
========
 ணࠬ...

call_magic
==========
   Magic.


  㭪樨 ࠡ⪨ 뢠:
 ------------------------------

setim2vec
=========
 ⠭  뢠  ० IM2.  ॣ HL
।  ⪠  饣  뢠,
ࠧ஬ 257 .     256-.  ॣ
BC ।   祥   ᮬ ࠦ饬
㫮 256*N+N.  ⮬  㤥 ᠭ 
室  ࠡ稪 뢠.  ॣ DE 㪠뢠
 ࠡ稪 뢠.  㭪  
뢠 ᮬ ।  ॣ BC, ⠭ 
  ॣ஬ BC  ᫮ 室 
 ࠡ稪 뢠  ॣ஬ DE,
⥫쭮 㭪 ⠭ ॣ I ⠪ ࠧ,
⮡  㪠뢠  樠஢  뢠.

  ࠧ  뢠  ᠬ
#8000-#BFFF,    ன  . 訬 ᮬ
⠭  뢠 㤥 #BE00-#BF00,  ᮬ
ࠧ饭 室  ࠡ稪 뢠 #BFBF.  
⠪ 㭪樨 im2_enter  im2_leave.

im2_enter
==========
  㭪 ࠭  ⥪ ᮤন  ॣ஢ 
 ᪫祭 SP, PC  IR. 㭪 㦨  맮 
ࠡ稪 뢠.  ⠪ 㭪 im2_leave.

im2_leave
=========
  㭪 ⠭ ᮤন  ॣ஢ 
( ᪫祭 SP, IR  PC), ⠭ 䫠 ࠧ襭
뢠 IFF1  IFF2,  ⢫   ࠡ稪
뢠.

  ਬ ᯮ짮 㭪権 setim2vec, im2_enter
 im2_leave:

; ⠭ ࠡ稪
; 뢠 ண ०,
; 뢠 ࠧ襭,
; ० 뢠 
      ld hl, #be00
      ld bc, #bfbf
      ld de, im2proc
      call setim2vec
      im 2
      ...
      ; த ᯮ
      ; ணࠬ  ࠡ騬
      ; ࠡ稪 ண
      ; ० 뢠.

; ⠭ ࢮ ०
; 뢠
      im 1
      ld a, #3f ;  ४⭮
      ld i, a   ; ࠡ TR-DOS
      ...


; 㭪 ࠡ⪨ 뢠
; ண ०
im2proc
      call im2_enter
      ...
      ; ࠡ⪠ 뢠
      ...
      jp im2_leave



  㭪樨 室:
 ------------------------------

setjmp
=======
  㭪 ࠭ ⥪ ணࠬ     㭪樨
longjmp.  ॣ HL ।  ६ 
࠭ ⥪.  ᫥ ࠭ ⥪ 㭪
頥  襭 䫠 C. ᫥   㭪樨
longjmp 㭪 頥  ⠭ 䫠 C  
ॣ A   ।  㭪樨 longjmp.  
६ 㦠饩  ࠭ ⥪ ।
⪮ JMPBUFSZ.   ⠪ ᠭ 㭪樨 longjmp.

longjmp
========

  㭪 ⢫   窥 맮 setjmp (᫥饩
樨  ᫥  맮 setjmp) 
⠭ ⥪ (⠭ ॣ 
SP  PC).  ॣ HL   ।  ६
ᯮ짮  ࠭ ⥪.  ॣ A  
। ,  㤥 饭 㭪樥 setjmp. 
४ ᯮ짮 0  ⢥ ⠪ .

  ४⭠ ࠡ ணࠬ ⠭ , ᫨  
맮 㭪樨 longjmp 㪠⥫ ⥪ SP 室 , 祬 
 맮 㭪樨 longjmp!

  ਬ ਬ 㭪権 setjmp  longjmp:

jpbf  ds JMPBUFSZ
      ...
      ld hl, jpbf
      call setjmp
      jr c, failure
      call myfunc
      call printsp
      db "ଠ쭮", 0
      ...

failure
      push af  ;   longjmp
      call printsp
      db "訡:",0
      pop af
      call prhexb
      call prnewln
      ...

myfunc
      ; 믮 ணࠬ
      ...
      ; ⠫쭠 訡
      ; (ਬ)
      ld a, 1   ;  訡
      ld hl, jpbf
      jp longjmp


case
======
  㭪 case ⢫ 室  ⠡  ᨬ 
࠭ 祭 㬥.  ॣ HL । 
⠡ 室,  ॣ DE । 㬥
ࠢ騩 室. 㭪   ⠡  ᮤঠ
- 祭,   ।  ॣ DE. ᫨ ⠪
,  㭪 ⢫ 室    ⠡
( ⮬   㭪樨 ⢫  㤥). ᫨
祭 ࠢ ᮤন ॣ DE  ⠡  
㤥 㭪    ᫥ ᫥ 
맮 㭪樨 case.

   室  ᫥騩 ଠ:

  DW addr, label
  DW addr, label
  ...
  DW 0

  addr --  室  砥, ᫨ 㬥
ࠢ騩 室 ࠢ 祭 label.

  ਬ:

      ld de, 㬥
      ld hl, jmptbl
      call case
      ; ᫨   ⠡
      ; 襭 ᯥ譮
      ;  ணࠬ 室
      ;   
      ...
      call printsp
      db "ᯥ譮", 0
      jr cont

jmptbl
      dw label1, "Y"
      dw label2, "N"
      dw 0

label1
      call printsp
      db "롮 1", 0
      jr cont

label2
      call printsp
      db "롮 2", 0
      jr cont

cont
      call printsp
      db " 롮", 0
      ...


  㭪樨  ࠡ  䠩:
 ------------------------------

findfile
=========
  㭪   ⥪饬 ᪥ 䠩  ண  
ப  ॣ஬ HL. ப 稢 ᨬ 
 0.   १ ᯥ譮 襭 㭪樨  
#5cdd 㦠 FCB 䠩  㭪 頥  襭
䫠 C.  砥 ᯥ譮 襭 㭪 頥 
⠭ 䫠 C.

findfirst
==========
  㭪   ⥪饬 ᪥  䠩  ᪮
(᪠   ⠪- ,    㭪樨 strglob).
㬥⠬ 㭪樨 㦠 ॣ HL ᮤঠ騩  ᪨ (
騬 ᨬ   0), ॣ DE ᮤঠ騩 
, 㤠 㤥 饭 FCB  䠩  ॣ IX
㦠騩 㪠⥫   ᯮ㥬 㭪樥 
ࠡ.     ॣ஬ IX ।
⪮ FINDBUFSZ. ᫨ 䠩   㭪 ୥ 
⠭ 䫠 C.   ⠪ ᠭ 㭪樨 findnext.

findnext
=========
   㭪   ᪥ ᫥騩 䠩 ᫥ ⮣ 
   䠩 㭪樥 findfirst.    ⮬
᪥,   ⥪騬   맮 㭪樨
findfirst. 㬥⮬ 㭪樨 㦨 ॣ IX ᮤঠ騩
㪠⥫    ந樠஢ 㭪樥
findfirst.  砥, ᫨  䠩 室騩  
(  ।⥫쭮 맮 㭪樨 findfirst) 㭪
୥  襭 䫠  FCB  䠩 㤥
饭      맮 㭪樨 findfirst.
 ⨢ 砥 㭪 ୥  ⠭ 䫠 C.


fcbtoname
==========
  㭪 ७  䠩  FCB  ॣ஬ HL 
ப  ॣ஬ DE.   ப   ᠭ 
13-   ⮬ 饣 ᨬ   0.

nametofcb
==========
  㭪 ७  䠩  ப  ॣ஬ HL 
FCB  ॣ஬ DE.  ப   ᨬ
  0.  FCB ७  8- ᨬ    3-
ᨬ ७ (७   ᨬ ᫥
᫥ 窨   䠩).




  㭪樨   :
 ------------------------------

inpkey
=======
    ,  ᨬ ᮮ⢥饣 ⮩
 頥  ॣ A.

input
======
  ⥪⮢ ப   ।஢.  
⥪ 㤥 饭   㪠뢠 ॣ஬ HL,
ᨬ쭠  ப   ॣ஬ A.
 ப 㤥 易⥫쭮 襭 ᨬ   0,
⮬        , 祬
㪠뢠  ॣ A.



  㭪樨 뢮  ࠭:
 ------------------------------

  뢮 ।। ⥪⮢ ⠭:

pryesno
========
  뢮 ப "yes"   "no"  ᨬ  ᮤন
ॣ A (A=0 no,  yes).

pronoff
========
  뢮 ப "on"   "off"  ᨬ  ᮤন
ॣ A (A=0 off,  on).


  뢮 ᥫ:

prdec
======
  뢮 ᫠  ॣ BC  筮 ⥬ ᫥.
騥 㫨  뢮.

prhexl
======
  뢮 32-ࠧ來 ᫠  ॣ஢ DE  BC 
᭠筮 .  DE ᮤন 訥  ᫠.
뢮  騥 㫨.

prhexw
=======
  뢮 16-ࠧ來 ᫠  ॣ BC  ᭠筮
⥬ ᫥. 뢮  騥 㫨.

prhexb
=======
  뢮 8-ࠧ來 ᫠  ॣ A  ᭠筮
⥬ ᫥. 뢮 騩 .


  뢮 ⥪:

printsp
========
  뢮 ⥪⮢ ப  㫥.  ப
ࠧ頥  設 ⥪.   㭪樨 ந 
 ᫥饬  㫥 騬 ⥪⮢ ப. ᫨
뢮 ப ⢫ ।⢠ ᨪ,  ᨬ 
 255  뢮   ᨬ   0.

  ਬ:

      call printsp
      db "hello world!", 0
      call printsp
      db "bye.", 0


prsafe_hl
==========
  뢮 ⥪⮢ ப 饩 㫥.  ப
।  ॣ HL.  㭪 뢮 ⮫쪮 ASCII ᨬ
  32-127.  ⠫ ᨬ  
 -- "?".

prsafe_a
=========
  뢮 ᨬ  ॣ A.  뢮 ⮫쪮 ASCII ᨬ 
 32-127, ⠫ ᨬ   .

printhl
========
  뢮 ப ⥪ 稢饩 㫥.  ப
।  ॣ HL.

prchar
=======
  뢮 ᨬ  ॣ A.  뢮 ᨬ   .
㭪 ࠭ ࠭ ॣ HL.

prnewln
========

  뢮 ᨬ " ப".   ࠧ 䨣 
  ᨬ   13, ᨬ   10,  
᫥⥫쭮 10, 13. 㭪 ᯥ稢 ࠭
ॣ HL.



  㭪樨  ࠡ  ⤥묨 ᨬ.
 ----------------------------------------------

tolower
========
     ॣ A ॢ   ॣ 
頥  ॣ A.  㭪 ࠡ⠥ ⮫쪮  ASCII
ᨬ   32-127 ( 㪢 ⨭᪮ 䠢),
樮 䠢  ন.

toupper
========
     ॣ A ॢ  孨 ॣ 
頥  ॣ A.  㭪 ࠡ⠥ ⮫쪮  ASCII
ᨬ   32-127 ( 㪢 ⨭᪮ 䠢),
樮 䠢  ন.

isspace
========
  㭪 ⠭ 䫠 Z ᫨ ᨬ   ॣ
A  ஡.  ஡ ⭮ ᨬ ஡ 
⠡樨.

isalpha
========
  㭪 ⠭ 䫠 Z ᫨ ᨬ   ॣ
A  㪢. 㭪 ࠡ⠥ ⮫쪮  ASCII ᨬ 
 32-127 ( 㪢 ⨭᪮ 䠢), 樮
䠢  ন.

isdigit
========
  㭪 ⠭ 䫠 Z ᫨ ᨬ   ॣ
A  ன 0-9.

ishex
=====
  㭪 ⠭ 䫠 Z ᫨ ᨬ   ॣ
A  ᭤筮 ன, ॣ 㪢  
祭.



  㭪樨 ࠡ  ப.
 ------------------------------

   ᠭ 㭪樨 ࠡ  ப, ᫨  ᯥ樠쭮
 ७, ࠡ ⮫쪮  ப 襭묨 ᨬ
  0.

strcmp
=======
  㭪 ࠢ ப 㪠 ॣࠬ HL  DE,
१ 頥  ॣ 䫠.  Z ⠭
᫨ ப , 䫠 S ( ᫠) 襭  䫠 C
⮦ 襭, ᫨ ப 㪠뢠 ॣ஬ HL  訩
, 祬 ப 㪠뢠 ॣ஬ DE. ࠢ
믮   ᨬ    ࠢ 
樮 䠢⮢.

strlen
=======
  㭪 頥  ப   饣  
ॣ BC  HL.  ப ।  ॣ HL.

strcpy
=======
  㭪  ப  ॣ஬ HL  
 ॣ஬ DE.   ᨬ, 
騩 .  ॣ HL 頥 㪠⥫ 
᫥ ᨬ  ப-ਥ ( ᥣ 騩 0).

  㭪 ᯮᮡ ९   ।祭
 ப 祭.  㭪 strncpy  ஢ 
஫ .

strncpy
========
  㭪  ப  ॣ஬ HL  
 ॣ஬ DE. ᨬ쭮 ᫮ 㥬 ᨬ
  ॣ BC.  砥, ᫨ ,  
饣 , ப  ॣ஬ HL ॢ蠥 
ࠢ 祭 ।  ॣ BC,  ப 
ॣ஬ DE  㤥  饣 .  ॣ HL
頥 㪠⥫  ᫥ ᨬ  பਥ,
  易⥫쭮 ᨬ   0 ( 砥 ९
ப).

strcat
=======
  㭪 ந ஢ ப 㪠 ॣ஬ HL 
 ப 㪠 ॣ஬ DE. 祭 ப 㤥
ᥣ  ᨬ   0.  ॣ HL
頥 㪠⥫  ᫥ ᨬ ப-ਥ (
ᥣ 騩 0).

  㭪 ᯮᮡ ९   ⢥ 
ப 祭.  ᭮  ப ᬮ
㭪 strncat.

strncat
========
  㭪 ந  ப 㪠 ॣ஬ HL
ப 㪠 ॣ஬ DE,  뢠  
ப 㪠 ॣ஬ HL.    ⢥ 
ப 祭 ।  ॣ BC -- ᪮஢ 㤥
  ᨬ, 祬   ⮬ ࠧ ப
祭  㥬 ப. ,  १
ப  㤥 襭 ᨬ   0.  ॣ HL
頥 㪠⥫  ᫥ ᨬ ப
祭.

strchr
=======
  㭪 ⢫  ᨬ   ॣ A, 
ப   ॣ HL.   砥 ᯥ譮 宦
ᨬ 䫠 Z 㤥 ⠭,  ॣ HL 㤥 ᮤঠ
  ᨬ.

  㭪    砫 ப   ( ஭
㢥祭 ).  㭪 strrchr  ᪠  ⭮
ࠢ.


strrchr
========
  㭪 ⢫  ᨬ   ॣ A, 
ப   ॣ HL.   砥 ᯥ譮 宦
ᨬ 䫠 Z 㤥 ⠭,  ॣ HL 㤥 㪠뢠 
 ᨬ.

  㭪     ப   砫 ( ஭
㬥襭 ).  㭪 strchr  ᪠  אַ
ࠢ.

strlower
=========
  㭪 ॢ ப  ॣ஬ HL  
ॣ ᨬ. 㭪 ࠡ⠥ ⮫쪮  ASCII ᨬ 
 32-127 ( 㪢 ⨭᪮ 䠢). 樮
䠢  ন.

strupper
=========
  㭪 ॢ ப  ॣ஬ HL  孨
ॣ ᨬ. 㭪 ࠡ⠥ ⮫쪮  ASCII ᨬ 
 32-127 ( 㪢 ⨭᪮ 䠢). 樮
䠢  ন.

strglob
========
  㭪 ⢫ ࠢ ப  ॣ஬ HL 
ப ᪨  ॣ஬ DE.  砥, ᫨ ப
ᮮ⢥ ᪥ 䫠 Z 㤥 ⠭.

  ᪠     ᨬ (஬ ᨬ  
0).  ᨬ  ᮡ ࠧ:

  * -- 砥  ᫮
        ᨬ.

  ? -- 砥   ᨬ.



  㭪樨 ८ࠧ ᥫ:
 ------------------------------

htoa
=====
  㭪 뢠  ᫮   ॣ A 
ப  ॣ஬ HL  ⭠筮 ⥬
᫥. 㤥 ᠭ 2  (騩  )
 ᨬ   0 稢騩 ப.  襭 㭪樨
ॣ HL 㤥 㪠뢠  ᫥ ᨬ ப
(騩 0).

wtoa
=====
  㭪 뢠  ᫮   ॣ BC 
ப  ॣ஬ HL  筮 ⥬ ᫥.
騥 㫨  뢠.    ᠭ  6- ,
 ᨬ   0 稢騩 ப.  ॣ HL
頥 㪠⥫  ᫥ ᨬ ப ( 0).



  ⥬᪨ 㭪樨:
 ------------------------------

mul
====
  㭪 ६  16-ࠧ來 ᫠  
ॣ DE  BC,  頥 १  ॣ DE  HL. 
ॣ DE ࠭ 訥  १. 㭪
믮 ਬ୮  800 ⠪⮢ .  ⠪
ᠭ 㭪樨 amul.

amul
=====
  㭪 ६  ᫠   ॣ A
 DE  ਡ १  ᮤন ॣ HL. 㭪
믮 ३ 祬 mul, ਬ୮  350 ⠪⮢   
ᯮ짮  㯠  ⠬ ᨢ.  ⮬ 砥
᫨ ࠧ ⮢  ࠧ୮ ᨢ  2^n 
 ⠭⠬   룮 ᯮ짮 
㣨 ᯮᮡ ᪮७ 㬭.  砥, ᫨ ॡ
    ⠬ ᨢ  ந
ࠧ஬   ࠧ୮   楫ᮮࠧ
ᯮ짮 ᨢ .

div
====
  㭪  ᫮   ॣ HL  ᫮  
ॣ BC, १ 頥  ॣ HL,  ⮪ 
ॣ DE.  砥   0  ॣ HL 뢠
,   ॣ DE 祭 . 㭪 믮
ਬ୮  900 ⠪⮢.

sqrt
=====
  㭪  楫᫥ 祭 ⭮ 
  ᫠   ॣ HL, १
頥  ॣ A.

w2bcd
======
  㭪   16-ࠧ來 ᫮ 
筮- ଠ. 㬥   ॣ HL,
१ 頥  ॣ D, E  C. 訥 
१ ᮤঠ  ॣ D, 訥  ॣ C.

randn
======
  㭪 頥 ᥢ砩 ᫮   .
쭮 祭 頥 砩 ᫠ -- 0.
ᨬ쭮 ᥣ  ᫠   ॣ DE.
 頥  ॣ HL.   ⠪ ᠭ
㭪樨 rand.

rand
=====
  㭪 頥  ᥢ砩 ᫮ 
ॣ HL. 頥 ᫮ 室   0..65535.
㭪 믮 ᪮쪮 ३ 㭪樨 randn. 믮
㭪樨 rand  ६ ਬ୮ ࠢ 3- 맮 檨
mul,   ६  ६ 믮 㭪樨 randn ᮯ⠢ 
4- 맮 㭪樨 mul.

srand
=====
  㭪 ⠭  砩 ᥫ.  ⠭
  祭 㥬 ᫥⥫쭮
ᥢ砩 ᥫ 㤥 ᥣ .


  㭪樨  ஫ :
 -------------------------------------

flatcher
=========
  㭪 뢠 祭  .  ॣ IX
। 㪠⥫   ,  ᮤন ன
㤥 ந .  ॣ BC । ࠧ
   .   ॣ HL  DE 
祭 16-ࠧ來  .   ᫨誮 㤠筠
㭪  ஫ 楫⭮ ,  ࠡ⠥ ३
㭪権  .

crc16_init
==========
  㭪 樠 ⠡  ண 
16-ࠧ來 横᪮ 筮  () 㭪樥
crc16_fast.   ॣ de ।   ࠧ஬ 512
  ࠭ ⠭ ⠡.   ॣ BC
㪠뢠 ஦騩 童 .  ⥫㭨樮
⮪ ᯮ ४  祭: 1021h.

crc16_fast
============
  㭪 뢠 祭     
砫 ᮬ   ॣ IX    
  ॣ BC.  ॣ DE ।  ⠡
।⥫쭮 ⠭   㭪樨 crc16_init. 
ॣ HL 㪠뢠 砫쭮 祭 . 
 頥  ॣ HL.

crc16
======
  㭪 뢠 祭     
砫 ᮬ   ॣ IX    
  ॣ BC.  ॣ DE 㪠뢠 ஦騩
童 .  ॣ HL  砫쭮 祭 .
  頥  ॣ HL.  ⢥
஦饣  童  ⥫㭨 樮 ⮪
ᯮ ४㥬  祭 1021h.

   ࠡ  㭪樨  祭
믮 㭪樨 crc16_fast,   㭪  ᯮ
࠭ ⠭ ⠡  ६  ࠡ ⥫쭮
.   ᯮ짮 㭪樨 crc16_init 
crc16_fast, ᫨ ॡ     ꥬ
.


