home *** CD-ROM | disk | FTP | other *** search
/ SeeIn AO / ALICE-CD.BIN / Šj”­ƒlƒbƒg�•‚»‚Ì‘¼ / nv_mini / source / nvstr.adv < prev    next >
Text File  |  1998-08-31  |  10KB  |  415 lines

  1. ;================================================================================
  2. ; NVSYSTEM-mini ò╢ÄÜù±è╓îW                               programmed by ALICE SOFT
  3. ;================================================================================
  4.  
  5. ;================================================================================
  6. ; InitStr(),RemoveStr(),InitStrArray()
  7.  
  8. **InitStr:
  9.     US a01,30:
  10.     ~SwitchGetStrMode TRUE:
  11.     ~SwitchPutStrMode FALSE:
  12.     ~InitStrVarArray:
  13.     ~SetFDec StrDecNum,StrDecColor:
  14.     ~InitSfComStr:
  15.     ~InitSpStr:
  16.     UG a01,30:
  17.     ~0,0:
  18.  
  19. **RemoveStr:
  20.     ~SwitchGetStrMode FALSE:
  21.     ~SwitchPutStrMode TRUE:
  22.     ~0,0:
  23.  
  24. **InitStrVarArray:
  25.     US a01,30:
  26.  
  27.     DF sX[0]     ,sMax,0:
  28.     DF sY[0]     ,sMax,0:
  29.     DF sStrNum[0],sMax,0:
  30.     DF sStrOff[0],sMax,0:
  31.     DF sAttr[0]  ,sMax,0:
  32.     DF sFSize[0] ,sMax,0:
  33.     DF sFColor[0],sMax,0:
  34.     DF sSpFlag[0],sMax,0:
  35.     DF sSpeed[0] ,sMax,0:
  36.  
  37.     !StrCurX:0!
  38.     !StrCurY:0!
  39.     !StrCurXCrd:StrXOff!
  40.     !StrCurYCrd:StrYOff!
  41.     !StrCurNum:StrBuffTop!
  42.  
  43.     < a01,StrBuffTop,StrBuffTop+StrBuffSize-1,1,1:    ;ò╢ÄÜù±èiö[âoâbâtâ@é╠Åëè·ë╗
  44.         MS a01,:                                    ;
  45.         >                                            ;
  46.  
  47.     UG a01,30:
  48.     ~0,0:
  49.  
  50. ;================================================================================
  51. **InitSfComStr:
  52.     US a01,30:
  53.     < a01,SfComStrTop,SfComStrTop+2,1,1:
  54.         MS a01,üméméÅü@ébéÅéìéìéàéÄéöün:
  55.         >
  56.     UG a01,30:
  57.     ~0,0:
  58.  
  59. ;================================================================================
  60. ; SetNextLine(),SetNextPage()
  61.  
  62. **SetNextLine:
  63.     US a01,30:
  64.     !StrCurX:0!
  65.     !StrCurY:StrCurY+1!
  66.     !StrCurXCrd:StrXOff!
  67.     !StrCurNum:StrCurNum+1!
  68.     !a02:StrFontSize!
  69.     < a01,0,StrXMax-1,1,1:                    ;æOé╠ìsé┼êΩö╘æσé½é⌐é┴é╜
  70.         ~GsP a01,StrCurY-1:~~sP:            ;âtâHâôâgâTâCâYé≡Æ▓é╫éΘ
  71.         { a02<sFSize[sP]:!a02:sFSize[sP]!}    ;
  72.         >                                    ;
  73.     !StrCurYCrd:StrCurYCrd+a02+StrYSpace!
  74.     { SelMode=1:!CurSelCount:CurSelCount+1!};
  75.     UG a01,30:
  76.     ~0,0:
  77.  
  78. **SetNextPage:
  79.     ~InitStrVarArray:
  80.     ~ClearSpArray:
  81.     ~PageClear:
  82.     ~0,0:
  83.  
  84. ;================================================================================
  85. ; CheckTmpStr(),CheckLastStr()
  86.  
  87. **CheckTmpStr:
  88.     ML Res,StrTmpBuff:
  89.     ~0,Res:
  90.  
  91. **CheckLastStr:
  92.     US a01,30:
  93.     ~GsP StrCurX,StrCurY:~~a01:
  94.     < a02,a01,0,0,1:
  95.         {(sAttr[a02]&0x0100)\0:!Res:a02!@CheckLastStrOut:}
  96.         >
  97.     !Res:0!
  98. *CheckLastStrOut:
  99.     UG a01,30:
  100.     ~0,Res:
  101.  
  102. ;================================================================================
  103. ; SetStrFont(),SetStrColor()
  104.  
  105. **SetStrFont f01:    ZM f01:~0,0:
  106. **SetStrColor f01:    ZC 1,f01:~0,0:
  107.  
  108. ;================================================================================
  109. ; SetStrArray:
  110.  
  111. **SetStrArray:
  112.     US a01,30:
  113.     ~CheckTmpStr:~~a01:
  114.     !a02:StrCurX!
  115.     !a04:StrCurY!
  116.     { StrCurX=0:
  117.         { CurSelCount\0:!slDat[StrCurY]:CurSelCount!}}
  118.     { a01\NULL:
  119.         MA StrCurNum,StrTmpBuff:
  120.         MS StrTmpBuff,:
  121.         < a03,a02,a02+a01-1,1,1:
  122.             ~GsP a03,a04:~~sP:
  123.             {(StrCurXCrd+StrFontSize)>(StrXOff+StrXLen):
  124.                 MS DebugMsgStr,éwì└òWé¬Æ┤éªé▄é╡é╜:
  125.                 ~DebugMsgPut DebugMsgStr:
  126.                 @SetStrArraySkip:}
  127.             {(StrCurYCrd+StrFontSize+StrYSpace)>(StrYOff+StrYLen):
  128.                 MS DebugMsgStr,éxì└òWé¬Æ┤éªé▄é╡é╜:
  129.                 ~DebugMsgPut DebugMsgStr:
  130.                 @SetStrArraySkip:}
  131.             {(a03>StrXMax)+(a03=StrXMax):
  132.                 MS DebugMsgStr,özù±éwùvæfé¬Æ┤éªé▄é╡é╜:
  133.                 ~DebugMsgPut DebugMsgStr:
  134.                 @SetStrArraySkip:}
  135.             {(a04>StrYMax)+(a04=StrYMax):
  136.                 MS DebugMsgStr,özù±éxùvæfé¬Æ┤éªé▄é╡é╜:
  137.                 ~DebugMsgPut DebugMsgStr:
  138.                 @SetStrArraySkip:}
  139.  
  140.             !sX[sP]:StrCurXCrd!
  141.             !sY[sP]:StrCurYCrd!
  142.             !sStrNum[sP]:StrCurNum!
  143.             !sStrOff[sP]:a03!
  144.             !sAttr[sP]:1!
  145.             !sFSize[sP]:StrFontSize!
  146.             !sFColor[sP]:StrFontColor!
  147.             !StrCurX:StrCurX+1!
  148.             !StrCurXCrd:StrCurXCrd+StrFontSize!
  149.             !sSpFlag[sP]:FALSE!
  150.             !sSpeed[sP]:StrCurPutTime!
  151. *SetStrArraySkip:
  152.             >
  153.         ~CheckSpStr a02,a04:
  154.         }
  155.     UG a01,30:
  156.     ~0,0:
  157.  
  158. ;================================================================================
  159. ; PutStrArray(),SearchTopsP()
  160.  
  161. **PutStrArray:
  162.     US a01,30:
  163.     {(GrpRewriteFlag=TRUE):
  164.         ~SetGrpToDib:
  165.         CC XSize,0,XSize,YSize,0,YSize:
  166.         ~SetStrToDib:
  167.         ~Cp 0,YSize,XSize,YSize,0,0:
  168.         !GrpRewriteFlag:FALSE!
  169.         !StrHideFlag:FALSE!
  170.         }
  171.     {(GrpRewriteFlag=FALSE)*(StrHideFlag=TRUE):
  172.         CC XSize,0,XSize,YSize,0,YSize:
  173.         ~SetStrToDib:
  174.         ~Cp 0,YSize,XSize,YSize,0,0:
  175.         !StrHideFlag:FALSE!}
  176.  
  177.     ~SearchTopsP:~~Res:
  178.     { Res=0xffff:@PutStrArrayOut:}
  179.     !a01:Res&0x00ff!
  180.     !a02:(Res&0xff00)/0x0100!
  181.     ~PutStrArraySub a01,a02:
  182.  
  183. *PutStrArrayOut:
  184.     UG a01,30:
  185.     ~0,0:
  186.  
  187. **SearchTopsP:
  188.     US a01,30:
  189.     < a02,0,StrYMax-1,1,1:                                ;Åæé½Åoé╡ê╩Æué≡Æ▓é╫éΘ
  190.         < a01,0,StrXMax-1,1,1:                            ;
  191.             ~GsP a01,a02:~~sP:                            ;
  192.             {((sAttr[sP]&0x0100)=0)*(sAttr[sP]&0x00ff):    ;
  193.                 !Res:a02*0x0100+a01!                    ;
  194.                 @SearchTopsPOut:}                        ;
  195.             >                                            ;
  196.         >                                                ;
  197.     !Res:0xffff!                                        ;
  198. *SearchTopsPOut:
  199.     UG a01,30:
  200.     ~0,Res:
  201.  
  202.     ;; ü½ü½ü½ü@é▒éΩé¬NVSYSTEM-minié╠ÉSæƒòöé┼é╖üBü@ü½ü½ü½
  203.  
  204. **PutStrArraySub f01,f02:
  205.     US a01,30:
  206.     NB a01,f01,2:            ;(a01,a02)Åæé½ì₧é▌éwüCéx
  207.  
  208.     !a03:StrFontSize!        ; a03 = âtâHâôâgâTâCâY
  209.     !a04:StrFontColor!        ; a04 = âtâHâôâgâJâëü[
  210.     ~SetFSize a03:            ;
  211.     ~SetFColor a04:            ;
  212.     ~GsP StrCurX,StrCurY:~~a30:
  213.  
  214. *PutStrArraySubMainLoop:
  215.     ~TimerSet 0:
  216.     ~GetKey:
  217.     ~CheckShiftKey:
  218. *PutStrArraySubMainLoop0:
  219.     ~GsP a01,a02:~~sP:
  220.     !a29:slDat[a02]!
  221.     ~GetRpFlag CurRPage:~~a28:
  222.     ~GetIxResult:~~a27:
  223.     ~GetRp CurRPage:~~a26:
  224.     {(a26=FALSE)*(a27=TRUE):
  225.         ~SetIxResult FALSE:~~a27:
  226.     }
  227.  
  228.     { sP<a30:
  229.         {(sAttr[sP]&0x00ff)=0:!a01:0!!a02:a02+1!@PutStrArraySubMainLoop0:}
  230.         { sFSize[sP]\a03:~SetFSize sFSize[sP]:!a03:sFSize[sP]!}
  231.         { sFColor[sP]\a04:~SetFColor sFColor[sP]:!a04:sFColor[sP]!}
  232.  
  233. *PutStrArraySubMainLoop0a:
  234.         { a29\0:        @PutStrArraySubMainLoop0b:}        ;æIæ≡Äê
  235.         { sSpeed[sP]=0:    @PutStrArraySubMainLoop0b:}        ;ò╢ÄÜâXâsü[âhé¬éO
  236.         { a27=TRUE:        @PutStrArraySubMainLoop0b:}        ;ăé╠æIæ≡Äêé▄é┼Éié▐on
  237.         { a28=TRUE:        @PutStrArraySubMainLoop0b:}        ;êΩôxî⌐é╜ò╢Å═é═æ¼é¡
  238.         { CopyEffect\0:    @PutStrArraySubMainLoop0a1:}    ;âRâsü[âGâtâFâNâgoné╚éτ
  239.         { Mkd\0:        @PutStrArraySubMainLoop0b:}        ;âLü[ôⁿù═éáéΦ
  240.  
  241. *PutStrArraySubMainLoop0a1:                                ;êΩò╢ÄÜé╕é┬ò\Ī
  242.             MS StrTmpBuff-1,:
  243.             ME StrTmpBuff-1,0,sStrNum[sP],sStrOff[sP],1:
  244.             T sX[sP],sY[sP]+YSize:
  245.             X StrTmpBuff-1:
  246.             { sSpFlag[sP]\FALSE:~PutSpLine sX[sP],sY[sP]+YSize,sFSize[sP]:}
  247.             US CopyEffect,2:
  248.             ~Cp sX[sP],sY[sP]+YSize,sFSize[sP]+2,sFSize[sP]+2,sX[sP],sY[sP]:
  249.             UG CopyEffect,2:
  250.             {(CopyEffect=1000)+(CopyEffect=1001):!CopyEffect:0!!CopyEffectTime:0!}
  251.  
  252.             !sAttr[sP]:(sAttr[sP]|0x0100)!
  253.             !a01:a01+1!
  254.             !Res:0!<@ Res<sSpeed[sP]:~TimerGet:~~Res:>
  255.             @PutStrArraySubMainLoop:
  256.  
  257. *PutStrArraySubMainLoop0b:                                ;êΩìsé▄é╞é▀é─ò\Ī
  258.         !a05:sX[sP]!!a06:sY[sP]!
  259.         !a07:0!!a08:sFSize[sP]!
  260.         <@ (sAttr[sP]&0x00ff)\0:
  261.             { sFSize[sP]\a03:~SetFSize sFSize[sP]:!a03:sFSize[sP]!
  262.                 { a08<sFSize[sP]:!a08:sFSize[sP]!}}
  263.                 { a29=0:{ sFColor[sP]\a04:~SetFColor sFColor[sP]:!a04:sFColor[sP]!}}
  264.                 { a29\0:{ SelStrColor\a04:~SetFColor SelStrColor:!a04:SelStrColor!}}
  265.             MS StrTmpBuff-1,:
  266.             ME StrTmpBuff-1,0,sStrNum[sP],sStrOff[sP],1:
  267.             {(sX[sP]>XSize)+(sY[sP]>YSize):
  268.                 ~DebugNumPutData sP,0:
  269.                 IK 0:
  270.                 }
  271.             T sX[sP],sY[sP]+YSize:
  272.             X StrTmpBuff-1:
  273.             { sSpFlag[sP]\FALSE:~PutSpLine sX[sP],sY[sP]+YSize,sFSize[sP]:}
  274.             !sAttr[sP]:(sAttr[sP]|0x0100)!
  275.             !a07:a07+sFSize[sP]!
  276.             !a01:a01+1!
  277.             ~GsP a01,a02:~~sP:
  278.             >
  279.         {(a05+a07>XSize):!a07:XSize-a05!}
  280.         ~Cp a05,a06+YSize,a07,a08+StrYSpace,a05,a06:
  281.  
  282.         !a01:0!
  283.         !a02:a02+1!
  284.         @PutStrArraySubMainLoop0:
  285.         }
  286.     !CopyEffect:0!!CopyEffectTime:0!        ;Åπé┼üAæ╥ö≡é╡é─éóéΘÅΩìçé¬éáéΘé╠é┼
  287.                                             ;é▒é▒é┼âNâèâA
  288.  
  289. *PutStrArraySubOut:
  290.     UG a01,30:
  291.     ~0,0:
  292.  
  293. ;================================================================================
  294. ; CheckGetStrMode(),SwitchGetStrMode(Sw),CheckPutStrMode(),SwitchPutStrMode(Sw)
  295.  
  296. **CheckGetStrMode:
  297.     ~0,GetStrFlag:
  298.  
  299. **SwitchGetStrMode f01:
  300.     US a01,30:
  301.     NB a01,f01,1:
  302.     !Res:GetStrFlag!
  303.     { a01=TRUE:
  304.         MG 0,TRUE:
  305.         MG 1,StrTmpBuff:
  306.         MG 2,1:
  307.         MG 3,3:
  308.         MG 4,0:
  309.         !GetStrFlag:TRUE!
  310.         }
  311.     { a01\TRUE:
  312.         MG 0,FALSE:
  313.         !GetStrFlag:FALSE!
  314.         }
  315.     UG a01,30:
  316.     ~0,GetStrFlag:
  317.  
  318. **CheckPutStrMode:
  319.     ~0,PutStrFlag:
  320.  
  321. **SwitchPutStrMode f01:
  322.     US a01,30:
  323.     NB a01,f01,1:
  324.     !Res:PutStrFlag!
  325.     MG 100,a01:
  326.     UG a01,30:
  327.     ~0,Res:
  328.  
  329. ;================================================================================
  330. ; GsP(sX,sY)::out ~~Res = pointer
  331. ; GsPR pointer::out ~~Res = X+Y*0x100
  332.  
  333. **GsP f01,f02:    ~0,f01+f02*StrXMax:
  334. **GsPR f01:
  335.     US a01,30:
  336.     NB a01,f01,1:
  337.     !a02:a01-(a01/StrXMax)*StrXMax!
  338.     !a03:a01/StrXMax!
  339.     !Res:a02+a03*0x100!
  340.     UG a01,30:
  341.     ~0,Res:
  342.  
  343. ;================================================================================
  344. ; SetFSize(),SetFColor()
  345.  
  346. **SetFSize f01:
  347.     { f01=0:
  348.         MS DebugMsgStr,âtâHâôâgâTâCâYé¬éOé┼é╖:
  349.         ~DebugMsgPut DebugMsgStr:
  350.         @SetFSizeOut:}
  351.     ZM f01:
  352. *SetFSizeOut:
  353.     ~0,0:
  354.  
  355. **SetFColor f01:
  356.     {(f01<16)+(f01>(255-16)):
  357.         MS DebugMsgStr,âVâXâeâÇâJâëü[é≡Ägùpé╡é─éóé▄é╖:
  358.         ~DebugMsgPut DebugMsgStr:
  359.         @SetFColorOut:}
  360.     ZC 1,f01:
  361. *SetFColorOut:
  362.     ~0,0:
  363.  
  364. **SetFDec f01,f02:
  365.     {(f01>10)+(f01=5):
  366.         MS DebugMsgStr,ò╢ÄÜæòÅⁿâ^âCâvé═éOü`éSüAéUü`éPéOé┼é╖:
  367.         ~DebugMsgPut DebugMsgStr:
  368.         @SetFDecOut:}
  369.     ZA 0,f01:
  370.     {(f02<16)+(f02>(255-16)):
  371.         MS DebugMsgStr,âVâXâeâÇâJâëü[é≡Ägùpé╡é─éóé▄é╖:
  372.         ~DebugMsgPut DebugMsgStr:
  373.         @SetFDecOut:}
  374.     ZA 1,f02:
  375. *SetFDecOut:
  376.     ~0,0:
  377.  
  378. ;===============================================================================
  379. **SetStrToDib:
  380.     US a01,30:
  381.     !a03:StrFontSize!
  382.     !a04:StrFontColor!
  383.     ~SetFSize a03:
  384.     ~SetFColor a04:
  385.     < a02,0,StrYMax-1,1,1:
  386.         !a05:slDat[a02]!
  387.         < a01,0,StrXMax-1,1,1:
  388.             ~GsP a01,a02:~~sP:
  389.             {(sAttr[sP]&0x0100)\0:
  390.                 { a03\sFSize[sP]:~SetFSize sFSize[sP]:!a03:sFSize[sP]!}
  391.                 { a05=0:{ a04\sFColor[sP]:~SetFColor sFColor[sP]:!a04:sFColor[sP]!}}
  392.                 { a05\0:{ a04\SelStrColor:~SetFColor SelStrColor:!a04:SelStrColor!}}
  393.                 MS StrTmpBuff-1,:
  394.                 ME StrTmpBuff-1,0,sStrNum[sP],sStrOff[sP],1:
  395.                 T sX[sP],sY[sP]+YSize:
  396.                 X StrTmpBuff-1:
  397.                 { sSpFlag[sP]\FALSE:~PutSpLine sX[sP],sY[sP]+YSize,sFSize[sP]:}
  398.                 }
  399.             >
  400.         >
  401.     UG a01,30:
  402.     ~0,0:
  403. ;===============================================================================
  404. **GetRpFlag f01:
  405.     US a01,30:
  406.     NB a01,f01,1:
  407.     { FastReadFlag=FALSE:!Res:FALSE!@GRpOut:}
  408.     !Res:RpFlag[a01]!
  409. *GRpOut:
  410.     UG a01,30:
  411.     ~0,Res:
  412.  
  413. **GetRp f01:~0,RpFlag[f01]:
  414.  
  415.