home *** CD-ROM | disk | FTP | other *** search
/ Crawly Crypt Collection 1 / crawlyvol1.bin / apps / word / japworpr / kan_show.gfa (.txt) < prev    next >
GFA-BASIC Atari  |  1990-08-13  |  10KB  |  439 lines

  1. '
  2. '  KANJI TEXT DISPLAY.   version 1.8
  3. '                            Programming by M.UTASHIRO     1990/07/31 ver 1.0
  4. '                                                          1990/08/03 ver 1.2
  5. '                                                          1990/08/05 ver 1.5
  6. '                                                          1990/08/07 ver 1.6
  7. '                                                          1990/08/14 ver 1.8
  8. '
  9. '
  10. initial
  11. initial_data
  12. asm_load
  13. mark
  14. explain
  15. key
  16. '
  17. > PROCEDURE asm_load
  18.   '
  19.   RESTORE asm1
  20. asm1:
  21.   DATA $206F,$0004,$226F,$0008,$202F,$000C,$7201,$D1C0
  22.   DATA $1091,$5288,$5289,$1091
  23.   DATA $D1FC,$0000,$004F,$5289,$5281,$B2BC,$0000,$0011,$66E6
  24.   DATA $4E75
  25.   '
  26.   FOR i%=1 TO 22
  27.     READ j%
  28.     asm$=asm$+MKI$(j%)
  29.   NEXT i%
  30.   '
  31.   asm%=V:asm$
  32.   screen%=XBIOS(2)
  33.   '
  34. RETURN
  35. '
  36. > PROCEDURE initial
  37.   OPTION BASE 0
  38.   GRAPHMODE 1
  39.   DEFFILL 1,0
  40.   BOUNDARY 1
  41.   IF XBIOS(4)<>2
  42.     ALERT 1,"SORRY !  |THIS PROGRAM RUNS ONLY  |HIGH RESOLUTION.  ",1," OK ",l%
  43.     SYSTEM
  44.   ENDIF
  45.   read_hira_font
  46. RETURN
  47. '
  48. > PROCEDURE initial_data
  49.   fin%=0                        ! FILE EXIST.
  50.   maxline%=1000                 ! MAX LINE.
  51.   max_xposition%=37             ! MAX COLUMN.(+1)
  52.   pageline%=15                  ! LINE PAR A PAGE.
  53.   spacechara%=&H217F            ! SPACE CHARACTER JIS CORD.
  54.   cr_chara%=&H2120              ! CR CHARACTER JIS CORD.
  55.   page_chara%=&H2220            ! PAGE CHARACTER JIS CORD.
  56.   end_chara%=&H222F             ! END CHARACTER JIS CORD.
  57.   '
  58.   DIM bun%(max_xposition%,maxline%)
  59. RETURN
  60. '
  61. > PROCEDURE key
  62.   '
  63.   bun_load
  64.   '
  65.   DO
  66.     tinput%=INP(2)
  67.     l$=CHR$(tinput%)
  68.     '    PRINT AT(1,1);tinput%
  69.     '    DELAY 1
  70.     SELECT tinput%
  71.     CASE 0 TO 18
  72.     CASE 19               ! CONTROL S : SAVE PICTURE.
  73.       pic_save
  74.     CASE 20 TO 26
  75.     CASE 27               ! ESCAPE
  76.       esc_quit
  77.     CASE 28 TO 186
  78.     CASE 187              ! F1
  79.     CASE 188              ! F2
  80.     CASE 189              ! F3
  81.     CASE 190              ! F4
  82.     CASE 191              ! F5
  83.     CASE 192              ! F6
  84.     CASE 193              ! F7
  85.       up_page
  86.     CASE 194              ! F8
  87.       dn_page
  88.     CASE 195              ! F9
  89.     CASE 196              ! F10
  90.       bun_load
  91.     CASE 197 TO 198
  92.     CASE 199
  93.       clr_home
  94.     CASE 200              ! UP ARROW
  95.       up_arrow
  96.     CASE 201 TO 207
  97.     CASE 208              ! DOWN ARROW
  98.       dn_arrow
  99.     CASE 209 TO 255
  100.     ENDSELECT
  101.   LOOP
  102.   '
  103. RETURN
  104. '
  105. > PROCEDURE bun_load
  106.   '
  107.   FILESELECT "\*.KAN","",file_1$
  108.   '
  109.   IF EXIST(file_1$)
  110.     ARRAYFILL bun%(),spacechara%
  111.     OPEN "I",#1,file_1$
  112.     texthead$=INPUT$(32,#1)
  113.     max_xposition%=CVI(MID$(texthead$,5,2))
  114.     IF max_xposition%<1
  115.       max_xposition%=37
  116.     ENDIF
  117.     IF max_xposition%>37
  118.       max_xposition%=37
  119.     ENDIF
  120.     i%=0
  121.     j%=0
  122.     i1%=(LOF(#1)-32)/2
  123.     FOR j1%=1 TO i1%
  124.       bun%(j%,i%)=CVI(INPUT$(2,#1))
  125.       d_load%=bun%(j%,i%)
  126.       INC j%
  127.       IF j%>max_xposition%
  128.         INC i%
  129.         j%=0
  130.       ENDIF
  131.       IF i%>maxline%
  132.         j1%=i1%
  133.       ENDIF
  134.     NEXT j1%
  135.     CLOSE #1
  136.     '
  137.     PRINT AT(2,2);"                                                                       "
  138.     PRINT AT(2,2);"FILE NAME = "+file_1$
  139.     max_text%=i%
  140.     IF j%=0
  141.       DEC max_text%
  142.     ENDIF
  143.     refline%=0
  144.     BOUNDARY 0
  145.     PBOX 10,55,628,365
  146.     BOUNDARY 1
  147.     redraw
  148.     fin%=1
  149.   ENDIF
  150.   '
  151.   '
  152. RETURN
  153. '
  154. > PROCEDURE redraw
  155.   '
  156.   PBOX 10,55,36+(max_xposition%*16),365
  157.   FOR i%=0 TO 14
  158.     offset%=(1600*i%)+4800
  159.     FOR j%=0 TO max_xposition%
  160.       chara1%=bun%(j%,i%+refline%)
  161.       IF chara1%=0 OR chara1%=spacechara% OR chara1%=cr_chara% OR chara1%=page_chara% OR chara1%=end_chara%
  162.         chara1%=&H2121
  163.       ENDIF
  164.       ADD offset%,2
  165.       asm%=V:asm$
  166.       ~C:asm%(L:screen%,L:V:c$(chara1%-&H2000),L:offset%)
  167.     NEXT j%
  168.   NEXT i%
  169.   PRINT AT(50,3);RIGHT$("     "+STR$(refline%+1),5)+" to "+RIGHT$("     "+STR$(refline%+15),5)+" / "+RIGHT$("     "+STR$(max_text%+1),5)+" LINES.  "
  170.   '
  171. RETURN
  172. '
  173. > PROCEDURE mark
  174.   '
  175.   CLS
  176.   ALERT 0,"KANJI TEXT DISPLAY.  |version 1.8     by uta's.  |",1," OK ",l%
  177.   '
  178. RETURN
  179. '
  180. > PROCEDURE esc_quit
  181.   '
  182.   ALERT 2," QUIT SURE ?  ",1,"  OK  |CANCEL",l%
  183.   IF l%=1
  184.     '    EDIT
  185.     SYSTEM
  186.   ENDIF
  187.   '
  188. RETURN
  189. '
  190. > PROCEDURE dn_page
  191.   '
  192.   IF fin%=1
  193.     refline1%=refline%
  194.     i%=DIV(refline%,pageline%)
  195.     refline2%=(i%+1)*pageline%
  196.     IF refline2%+14>maxline%
  197.       refline2%=maxline2%-14
  198.     ENDIF
  199.     IF refline1%<>refline2%
  200.       screen_add%=XBIOS(2)
  201.       FOR refline%=refline1%+1 TO refline2%
  202.         BMOVE screen_add%+6400,screen_add%+4800,22080
  203.         i%=14
  204.         offset%=27200
  205.         FOR j%=0 TO max_xposition%
  206.           chara1%=bun%(j%,i%+refline%)
  207.           IF chara1%=0 OR chara1%=spacechara% OR chara1%=cr_chara% OR chara1%=page_chara% OR chara1%=end_chara%
  208.             chara1%=&H2121
  209.           ENDIF
  210.           ADD offset%,2
  211.           asm%=V:asm$
  212.           ~C:asm%(L:screen%,L:V:c$(chara1%-&H2000),L:offset%)
  213.         NEXT j%
  214.         PRINT AT(50,3);RIGHT$("     "+STR$(refline%+1),5)+" to "+RIGHT$("     "+STR$(refline%+15),5)+" / "+RIGHT$("     "+STR$(max_text%+1),5)+" LINES.  "
  215.       NEXT refline%
  216.       DEC refline%
  217.     ENDIF
  218.   ENDIF
  219.   '
  220. RETURN
  221. '
  222. > PROCEDURE up_page
  223.   '
  224.   IF fin%=1
  225.     refline1%=refline%
  226.     i%=DIV(refline%,pageline%)
  227.     j%=MOD(refline%,pageline%)
  228.     IF j%<>0
  229.       refline2%=i%*pageline%
  230.     ELSE
  231.       IF i%=0
  232.         refline2%=0
  233.       ELSE
  234.         refline2%=(i%-1)*pageline%
  235.       ENDIF
  236.     ENDIF
  237.     IF refline1%<>refline2%
  238.       screen_add%=XBIOS(2)
  239.       FOR refline%=refline1%-1 DOWNTO refline2%
  240.         BMOVE screen_add%+4800,screen_add%+6400,22080
  241.         i%=0
  242.         offset%=4800
  243.         FOR j%=0 TO max_xposition%
  244.           chara1%=bun%(j%,i%+refline%)
  245.           IF chara1%=0 OR chara1%=spacechara% OR chara1%=cr_chara% OR chara1%=page_chara% OR chara1%=end_chara%
  246.             chara1%=&H2121
  247.           ENDIF
  248.           ADD offset%,2
  249.           asm%=V:asm$
  250.           ~C:asm%(L:screen%,L:V:c$(chara1%-&H2000),L:offset%)
  251.         NEXT j%
  252.         PRINT AT(50,3);RIGHT$("     "+STR$(refline%+1),5)+" to "+RIGHT$("     "+STR$(refline%+15),5)+" / "+RIGHT$("     "+STR$(max_text%+1),5)+" LINES.  "
  253.       NEXT refline%
  254.       INC refline%
  255.     ENDIF
  256.   ENDIF
  257.   '
  258. RETURN
  259. '
  260. > PROCEDURE up_arrow
  261.   '
  262.   IF fin%=1
  263.     INC refline%
  264.     IF refline%+14>maxline%
  265.       refline%=maxline%-14
  266.     ELSE
  267.       BOUNDARY 0
  268.       PBOX 11,60,34+(max_xposition%*16),79
  269.       BOUNDARY 1
  270.       screen_add%=XBIOS(2)
  271.       FOR i%=78 TO 60 STEP -2
  272.         BMOVE screen_add%+((i%+2)*80),screen_add%+(i%*80),22400
  273.       NEXT i%
  274.       i%=14
  275.       offset%=(1600*i%)+4800
  276.       FOR j%=0 TO max_xposition%
  277.         chara1%=bun%(j%,i%+refline%)
  278.         IF chara1%=0 OR chara1%=spacechara% OR chara1%=cr_chara% OR chara1%=page_chara% OR chara1%=end_chara%
  279.           chara1%=&H2121
  280.         ENDIF
  281.         ADD offset%,2
  282.         asm%=V:asm$
  283.         ~C:asm%(L:screen%,L:V:c$(chara1%-&H2000),L:offset%)
  284.       NEXT j%
  285.       PRINT AT(50,3);RIGHT$("     "+STR$(refline%+1),5)+" to "+RIGHT$("     "+STR$(refline%+15),5)+" / "+RIGHT$("     "+STR$(max_text%+1),5)+" LINES.  "
  286.     ENDIF
  287.   ENDIF
  288.   '
  289. RETURN
  290. '
  291. > PROCEDURE dn_arrow
  292.   '
  293.   IF fin%=1
  294.     DEC refline%
  295.     IF refline%<0
  296.       refline%=0
  297.     ELSE
  298.       BOUNDARY 0
  299.       PBOX 11,340,34+(max_xposition%*16),359
  300.       BOUNDARY 1
  301.       screen_add%=XBIOS(2)
  302.       FOR i%=58 TO 76 STEP 2
  303.         BMOVE screen_add%+((i%-2)*80),screen_add%+(i%*80),22400
  304.       NEXT i%
  305.       i%=0
  306.       offset%=4800
  307.       FOR j%=0 TO max_xposition%
  308.         chara1%=bun%(j%,i%+refline%)
  309.         IF chara1%=0 OR chara1%=spacechara% OR chara1%=cr_chara% OR chara1%=page_chara% OR chara1%=end_chara%
  310.           chara1%=&H2121
  311.         ENDIF
  312.         ADD offset%,2
  313.         asm%=V:asm$
  314.         ~C:asm%(L:screen%,L:V:c$(chara1%-&H2000),L:offset%)
  315.       NEXT j%
  316.       PRINT AT(50,3);RIGHT$("     "+STR$(refline%+1),5)+" to "+RIGHT$("     "+STR$(refline%+15),5)+" / "+RIGHT$("     "+STR$(max_text%+1),5)+" LINES.  "
  317.     ENDIF
  318.   ENDIF
  319.   '
  320. RETURN
  321. '
  322. > PROCEDURE clr_home
  323.   '
  324.   IF fin%=1
  325.     refline%=0
  326.     redraw
  327.   ENDIF
  328.   '
  329. RETURN
  330. '
  331. > PROCEDURE read_hira_font
  332.   '
  333.   PRINT
  334.   PRINT " FONT LOADING..."
  335.   '
  336.   DIM c$(&H3000)
  337.   IF EXIST(DIR$(0)+"\KANJI3.FNT")
  338.     OPEN "I",#1,DIR$(0)+"\KANJI3.FNT"
  339.     '
  340.     FOR i%=&H120 TO &H22F
  341.       IF MOD(i%,&H100)=&H80
  342.         i%=i%+&HA0
  343.       ENDIF
  344.       c$(i%)=INPUT$(32,#1)
  345.     NEXT i%
  346.     '
  347.     FOR i%=&H330 TO &H37F
  348.       c$(i%)=INPUT$(32,#1)
  349.     NEXT i%
  350.     '
  351.     FOR i%=&H420 TO &H47F
  352.       c$(i%)=INPUT$(32,#1)
  353.     NEXT i%
  354.     '
  355.     FOR i%=&H520 TO &H57F
  356.       c$(i%)=INPUT$(32,#1)
  357.     NEXT i%
  358.     '
  359.     FOR i%=&H620 TO &H65F
  360.       c$(i%)=INPUT$(32,#1)
  361.     NEXT i%
  362.     '
  363.     FOR i%=&H720 TO &H77F
  364.       c$(i%)=INPUT$(32,#1)
  365.     NEXT i%
  366.     '
  367.     FOR i%=&H1020 TO &H2F5F
  368.       IF MOD(i%,&H100)=&H80
  369.         i%=i%+&HA0
  370.       ENDIF
  371.       c$(i%)=INPUT$(32,#1)
  372.     NEXT i%
  373.     '
  374.     CLOSE #1
  375.   ELSE
  376.     ALERT 3,"KANJI FONT  |(KANJI3.FNT)  |NOT EXIST.  ",1," QUIT ",l%
  377.     '    EDIT
  378.     SYSTEM
  379.   ENDIF
  380. RETURN
  381. '
  382. > PROCEDURE pic_save
  383.   '
  384.   IF fin%=1
  385.     BOUNDARY 0
  386.     DEFFILL 1,0
  387.     PBOX 10,378,628,397
  388.     BOUNDARY 1
  389.     PRINT AT(2,24);"INPUT FILE NAME ";
  390.     INPUT file_pic$
  391.     PRINT AT(2,24);"                                                               "
  392.     file_pic$=LEFT$(file_pic$,8)+".PI3"
  393.     PRINT AT(2,2);"                                                                          "
  394.     PRINT AT(50,3);"                              "
  395.     SGET pic$
  396.     OPEN "O",#2,file_pic$
  397.     PRINT #2,pic$;
  398.     CLOSE #2
  399.     PRINT AT(2,2);"PICTURE SAVED. FILE NAME = "+file_pic$
  400.     ~INP(2)
  401.     PRINT AT(2,2);"                                                                          "
  402.     PRINT AT(2,2);"FILE NAME = "+file_1$
  403.     explain
  404.     redraw
  405.   ENDIF
  406.   '
  407. RETURN
  408. '
  409. > PROCEDURE explain
  410.   '
  411.   RESTORE explain_data
  412.   '
  413. explain_data:
  414.   DATA 2346,2337,2127,4130,2121,2346,2338,2127,3C21,2121,2346,2331,2330,2127
  415.   DATA 4649,397E,2121,222D,2127,2344,234F,2357,234E,2121,222C,2127,2355,2350
  416.   DATA 2121,2121,2121,2121,2345,2353,2343,2127,3D2A,4E3B,0
  417.   '
  418.   j%=0
  419.   DO
  420.     READ l$
  421.     chara1%=VAL("&H"+l$)
  422.     EXIT IF chara1%=0
  423.     offset%=(80*380)+(j%*2)+2
  424.     asm%=V:asm$
  425.     ~C:asm%(L:screen%,L:V:c$(chara1%-&H2000),L:offset%)
  426.     INC j%
  427.   LOOP
  428.   '
  429.   GRAPHMODE 3
  430.   BOUNDARY 0
  431.   DEFFILL 1,2,8
  432.   PBOX 10,378,628,397
  433.   GRAPHMODE 1
  434.   BOUNDARY 1
  435.   DEFFILL 1,0
  436.   '
  437. RETURN
  438. '
  439.