-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfefunc.txt
2229 lines (1364 loc) · 83.7 KB
/
fefunc.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
- FE FUNCTION CALL MANUAL -
==============================================================================
・FE コール一覧
$fe00 __LMUL signed int multiplication d0 *= d1
$fe01 __LDIV signed int division d0 /= d1
$fe02 __LMOD signed int modulo d0 %= d1
$fe04 __UMUL unsigned int multiply d0 *= d1
$fe05 __UDIV unsigned int division d0 /= d1
$fe06 __UMOD unsigned int modulo d0 %= d1
$fe08 __IMUL unsigned int multiply d0d1 = d0*d1
$fe09 __IDIV unsigned int division d0...d1 = d0/d1
$fe0c __RANDOMIZE signed short random number init seed = d0(-32768〜32767)
$fe0d __SRAND unsigned short random init seed = d0(0〜65535)
$fe0e __RAND signed int random number d0 = rand()
$fe10 __STOL Decimal string → signed int d0 = (a0)〜
$fe11 __LTOS signed int → Decimal string (a0)〜 = d0
$fe12 __STOH Hex string → unsigned int d0 = (a0)〜
$fe13 __HTOS unsigned int → Hex string (a0)〜 = d0
$fe14 __STOO Octal string → unsigned int d0 = (a0)〜
$fe15 __OTOS unsigned int → Octal string (a0)〜 = d0
$fe16 __STOB Binary string → unsigned int d0 = (a0)〜
$fe17 __BTOS unsigned int → Binary string (a0)〜 = d0
$fe18 __IUSING signed int → Decimal string (a0)〜 = d0,d1pad
$fe1a __LTOD signed int → double d0d1 = d0
$fe1b __DTOL double → signed int d0 = d0d1
$fe1c __LTOF signed int → float d0 = d0
$fe1d __FTOL float → signed int d0 = d0
$fe1e __FTOD float → double d0d1 = d0
$fe1f __DTOF double → float d0 = d0d1
$fe20 __VAL String → double d0d1 = (a0)〜
$fe21 __USING double → Decimal string (a0)〜 = d0d1,d2.d3,d4
$fe22 __STOD Decimal string → double d0d1,d2,d3 = (a0)〜
$fe23 __DTOS double → Decimal string (a0)〜 = d0d1
$fe24 __ECVT double → string (a0),d0,d1 = d0d1,d2全体桁
$fe25 __FCVT double → string (a0),d0,d1 = d0d1,d2小数点桁
$fe26 __GCVT double → String (a0)〜 = d0d1,d2全体桁
$fe28 __DTST double 0 比較 Z,N = d0d1
$fe29 __DCMP double 比較 Z,C = d0d1-d2d3
$fe2a __DNEG double 符号反転 d0d1 = neg(d0d1)
$fe2b __DADD double Addition d0d1 += d2d3
$fe2c __DSUB double 減算 d0d1 -= d2d3
$fe2d __DMUL double 乗算 d0d1 *= d2d3
$fe2e __DDIV double 除算 d0d1 /= d2d3
$fe2f __DMOD double 除算の剰余 d0d1 %= d2d3
$fe30 __DABS double 絶対値 d0d1 = abs(d0d1)
$fe31 __DCEIL double 小数切上 d0d1 = ceil(d0d1)
$fe32 __DFIX double 整数部 d0d1 = fix(d0d1)
$fe33 __DFLOOR double 小数切捨 d0d1 = floor(d0d1)
$fe34 __DFRAC double 小数部 d0d1 = frac(d0d1)
$fe35 __DSGN double 正負零 d0d1 = sgn(d0d1)
$fe36 __SIN double 正弦 d0d1 = sin(d0d1)
$fe37 __COS double 余弦 d0d1 = cos(d0d1)
$fe38 __TAN double 正接 d0d1 = tan(d0d1)
$fe39 __ATAN double 逆正接 d0d1 = atan(d0d1)
$fe3a __LOG double 自然対数 d0d1 = ln(d0d1)
$fe3b __EXP double 指数関数 d0d1 = exp(d0d1)
$fe3c __SQR double 平方根 d0d1 = sqr(d0d1)
$fe3d __PI double 円周率 d0d1 = pi()
$fe3e __NPI double 円周率乗算 d0d1 = pi(d0d1)
$fe3f __POWER double 羃乗 d0d1 = pow(d0d1,d2d3)
$fe40 __RND double 乱数 d0d1 = rnd()
$fe41 __SINH double 双曲正弦 d0d1 = sinh(d0d1)
$fe42 __COSH double 双曲余弦 d0d1 = cosh(d0d1)
$fe43 __TANH double 双曲正接 d0d1 = tanh(d0d1)
$fe44 __ATANH double 双曲逆正接 d0d1 = atanh(d0d1)
$fe45 __ASIN double 逆正弦 d0d1 = asin(d0d1)
$fe46 __ACOS double 逆余弦 d0d1 = acos(d0d1)
$fe47 __LOG10 double 常用対数 d0d1 = log10(d0d1)
$fe48 __LOG2 double 対数(底2) d0d1 = log2(d0d1)
$fe49 __DFREXP double 仮数指数分割 d0d1,d2 = d0d1
$fe4a __DLDEXP double 仮数指数結合 d0d1 = d0d1,d2
$fe4b __DADDONE double 1 加算 d0d1 += 1.0#
$fe4c __DSUBONE double 1 減算 d0d1 -= 1.0#
$fe4d __DDIVTWO double 2 除算 d0d1 /= 2.0#
$fe4e __DIEECNV double SHARP → IEEE d0d1 = d0d1
$fe4f __IEEDCNV double IEEE → SHARP d0d1 = d0d1
$fe50 __FVAL 文字列 → float d0 = (a0)〜
$fe51 __FUSING float → 10進文字列 (a0)〜 = d0,d2.d3,d4
$fe52 __STOF 10進文字列 → float d0,d2,d3 = (a0)〜
$fe53 __FTOS float → 10進文字列 (a0)〜 = d0
$fe54 __FECVT float → 文字列 (a0),d0,d1 = d0,d2全体桁
$fe55 __FFCVT float → 文字列 (a0),d0,d1 = d0,d2小数点桁
$fe56 __FGCVT float → 文字列 (a0)〜 = d0,d2全体桁
$fe58 __FTST float 0 比較 Z,N = d0
$fe59 __FCMP float 比較 Z,C = d0-d1
$fe5a __FNEG float 符号反転 d0 = neg(d0)
$fe5b __FADD float 加算 d0 += d1
$fe5c __FSUB float 減算 d0 -= d1
$fe5d __FMUL float 乗算 d0 *= d1
$fe5e __FDIV float 除算 d0 /= d1
$fe5f __FMOD float 除算の剰余 d0 %= d1
$fe60 __FABS float 絶対値 d0 = abs(d0)
$fe61 __FCEIL float 小数切上 d0 = ceil(d0)
$fe62 __FFIX float 整数部 d0 = fix(d0)
$fe63 __FFLOOR float 小数切捨 d0 = floor(d0)
$fe64 __FFRAC float 小数部 d0 = frac(d0)
$fe65 __FSGN float 正負零 d0 = sgn(d0)
$fe66 __FSIN float 正弦 d0 = sin(d0)
$fe67 __FCOS float 余弦 d0 = cos(d0)
$fe68 __FTAN float 正接 d0 = tan(d0)
$fe69 __FATAN float 逆正接 d0 = atan(d0)
$fe6a __FLOG float 自然対数 d0 = ln(d0)
$fe6b __FEXP float 指数関数 d0 = exp(d0)
$fe6c __FSQR float 平方根 d0 = sqr(d0)
$fe6d __FPI float 円周率 d0 = pi()
$fe6e __FNPI float 円周率乗算 d0 = pi(d0)
$fe6f __FPOWER float 羃乗 d0 = pow(d0,d1)
$fe70 __FRND float Random number d0 = rnd()
$fe71 __FSINH float Hyperbolic sine d0 = sinh(d0)
$fe72 __FCOSH float Hyperbolic cosine d0 = cosh(d0)
$fe73 __FTANH float Hyperbolic tangent d0 = tanh(d0)
$fe74 __FATANH float Hyperbolic reverse tangent d0 = atanh(d0)
$fe75 __FASIN float Inverse sine d0 = asin(d0)
$fe76 __FACOS float Reverse cosine d0 = acos(d0)
$fe77 __FLOG10 float Common logarithm d0 = log10(d0)
$fe78 __FLOG2 float Logarithm (base 2) d0 = log2(d0)
$fe79 __FFREXP float Mantissa index split d0,d1 = d0
$fe7a __FLDEXP float Mantissa exponential combination d0 = d0,d1
$fe7b __FADDONE float 1 Addition d0 += 1.0#
$fe7c __FSUBONE float 1 Subtraction d0 -= 1.0#
$fe7d __FDIVTWO float 2 division d0 /= 2.0#
$fe7e __FIEECNV float SHARP → IEEE d0 = d0
$fe7f __IEEFCNV float IEEE → SHARP d0 = d0
$fee0 __CLMUL signed int Multiply (sp) *= (4,sp)
$fee1 __CLDIV signed int division (sp) /= (4,sp)
$fee2 __CLMOD signed int Division remainder (sp) %= (4,sp)
$fee3 __CUMUL unsigned int Multiply (sp) *= (4,sp)
$fee4 __CUDIV unsigned int division (sp) /= (4,sp)
$fee5 __CUMOD unsigned int Division remainder (sp) %= (4,sp)
$fee6 __CLTOD signed int → double (sp)(4,sp) = (sp)
$fee7 __CDTOL double → signed int (sp) = (sp)(4,sp)
$fee8 __CLTOF signed int → float (sp) = (sp)
$fee9 __CFTOL float → signed int (sp) = (sp)
$feea __CFTOD float → double (sp)(4,sp) = (sp)
$feeb __CDTOF double → float (sp) = (sp)(4,sp)
$feec __CDCMP double comparison Z,C = (sp)(4,sp)-(8,sp)(12,sp)
$feed __CDADD double addition (sp)(4,sp) += (8,sp)(12,sp)
$feee __CDSUB double subtraction (sp)(4,sp) -= (8,sp)(12,sp)
$feef __CDMUL double multiplication (sp)(4,sp) *= (8,sp)(12,sp)
$fef0 __CDDIV double except (sp)(4,sp) /= (8,sp)(12,sp)
$fef1 __CDMOD double modulo (sp)(4,sp) %= (8,sp)(12,sp)
$fef2 __CFCMP float comparison Z,C = (sp)-(4,sp)
$fef3 __CFADD float addition (sp) += (4,sp)
$fef4 __CFSUB float subtraction (sp) -= (4,sp)
$fef5 __CFMUL float multiplication (sp) *= (4,sp)
$fef6 __CFDIV float division (sp) /= (4,sp)
$fef7 __CFMOD float modulo (sp) %= (4,sp)
$fef8 __CDTST double 0 comparison Z,N = (sp)(4,sp)
$fef9 __CFTST float 0 comparison Z,N = (sp)
$fefa __CDINC double 1 addition (sp)(4,sp) += 1.0#
$fefb __CFINC float 1 addition (sp) += 1.0#
$fefc __CDDEC double 1 subtraction (sp)(4,sp) -= 1.0#
$fefd __CFDEC float 1 subtraction (sp) -= 1.0#
$fefe __FEVARG Numerical calculation driver type inspection d0,d1={HS86,IEEE},{SOFT,FPCP}
$feff __FEVECS Change processing address d0 = intvcs(d0,a0)
==============================================================================
・浮動小数点データ形式
・SHARP フォーマット(FLOAT1.X でのみ使用)
単精度(32bit)
| 31 | 30 29 … 9 8 | 7 6 … 1 0 |
| ↑ | 仮数部 23bit | 指数部 8bit |
仮数部の符号
倍精度(64bit)
| 63 | 62 61 … 12 11 | 10 9 … 1 0 |
| ↑ | 仮数部 52bit | 指数部 11bit |
仮数部の符号
・IEEE フォーマット
単精度(32bit)
| 31 | 30 29 … 24 23 | 22 21 … 1 0 |
| ↑ | 指数部 8bit | 仮数部 23bit |
仮数部の符号
倍精度(64bit)
| 63 | 62 61 … 53 52 | 51 50 … 1 0 |
| ↑ | 指数部 11bit | 仮数部 52bit |
仮数部の符号
仕様 単精度 倍精度
正規化数の表現 -1s*1.f*2e-127 -1s*1.f*2e-1023
非〃 -1s*0.f*2-126 -1s*0.f*2-1022
表現可能な数の絶対値(概数)
正規化数最大 3.4*1038 1.8*10307
〃 最小 1.2*10-38 2.2*10-308
非正規化数最小 1.4*10-45 4.9*10-324
(s:仮数部の符号,f:仮数部,e:指数部)
・実際の表現方法
実数を ±(1.mmmm‥‥)*2^(±eeee‥‥) と表わす. その時先頭の符号が仮数部の符
号、mmmm‥‥ が仮数となる. 指数部は、単/倍精度で (±eeee‥‥)+$7F / (±eeee‥‥
)+$3ff を与える. これはそれぞれ 1〜$fe / 1〜$7fe の範囲でなければならない.
演算の結果、指数が最大で仮数が 0 ならば±∞を表わす(符号は MSB による). また、
指数が最大で仮数が 0 以外ならば非数を表わす. 指数・仮数ともに 0 の場合は、数値
0 を表わす.
特殊な実数データのフォーマット
指数 仮数
最小値<指数<最大値 任意のビットパタン 正規化数(通常)
0 All 0 以外の任意のビットパタン 非正規化数
(アンダフロー限界付近の値)
0 0 零
最大値 0 無限大
〃 All 0 以外の任意のビットパタン NAN(Not A Number)
・非数及び無限大の文字列表現
非数 '#NAN','-#NAN'
無限大 '#INF','-#INF'
なお、演算においてエラーが起きた場合、Retは不定となる.
==============================================================================
$fe00 __LMUL signed int 乗算 d0 *= d1
Arg d0.l 被乗数
d1.l 乗数
Ret d0.l 演算結果
CCR C : エラーの時セット
ロングワード符号付き整数同士の乗算を行なう.
演算結果がロングワード符号付き整数の範囲を超えた場合はエラーとなる.
==============================================================================
$fe01 __LDIV signed int 除算 d0 /= d1
Arg d0.l 被除数
d1.l 除数
Ret d0.l 演算結果
CCR C : エラーの時セット
ロングワード符号付き整数同士の除算を行なう.
除数が 0 の場合はエラーとなる.
==============================================================================
$fe02 __LMOD signed int 除算の剰余 d0 %= d1
Arg d0.l 被除数
d1.l 除数
Ret d0.l 演算結果
CCR C : エラーの時セット
ロングワード符号付き整数同士の除算の剰余を計算する.
除数が 0 の場合はエラーとなる.
==============================================================================
$fe04 __UMUL unsigned int 乗算 d0 *= d1
Arg d0.l 被乗数
d1.l 乗数
Ret d0.l 演算結果
CCR C : エラーの時セット
ロングワード符号なし整数同士の乗算を行なう.
演算結果がロングワード符号なし整数の範囲を超えた場合はエラーとなる.
==============================================================================
$fe05 __UDIV unsigned int 除算 d0 /= d1
Arg d0.l 被除数
d1.l 除数
Ret d0.l 演算結果
CCR C : エラーの時セット
ロングワード符号なし整数同士の除算を行なう.
除数が 0 の場合はエラーとなる.
==============================================================================
$fe06 __UMOD unsigned int 除算の剰余 d0 %= d1
Arg d0.l 被除数
d1.l 除数
Ret d0.l 演算結果
CCR C : エラーの時セット
ロングワード符号なし整数同士の除算の剰余を計算する.
除数が 0 の場合はエラーとなる.
==============================================================================
$fe08 __IMUL unsigned int 乗算 d0d1 = d0*d1
Arg d0.l 被乗数
d1.l 乗数
Ret d0.l 演算結果の上位 4 バイト
d1.l 〃 下位 〃
ロングワード符号なし整数同士の乗算を行なう.
演算結果は 64 ビットまで対応しているので、エラーは発生しない.
==============================================================================
$fe09 __IDIV unsigned int 除算 d0...d1 = d0/d1
Arg d0.l 被除数
d1.l 除数
Ret d0.l 演算結果(商)
d1.l 〃 (Remainder)
CCR C : エラーの時セット
ロングワード符号なし整数同士の除算を行なう.
除数が 0 の場合はエラーとなる.
==============================================================================
$fe0c __RANDOMIZE signed short 乱数初期化 seed = d0(-32768〜32767)
Arg d0.l ランダム・シード
破壊 d0.l
-3,2768〜3,2767 の範囲でランダム・シードを与え、乱数を初期化する.
Argの上位ワードは無視され、d0.l の値が範囲外であっても下位ワードだけ
が参照されて常に初期化が行われる.
==============================================================================
$fe0d __SRAND unsigned short 乱数初期化 seed = d0(0〜65535)
Arg d0.l ランダム・シード
破壊 d0.l
0〜6,5535 の範囲でランダム・シードを与え、乱数を初期化する.
Argの上位ワードは無視され、d0.l の値が範囲外であっても下位ワードだけ
が参照されて常に初期化が行われる.
==============================================================================
$fe0e __RAND signed int 乱数 d0 = rand()
Ret d0.l 乱数(0〜3,2767)
ロングワード符号付き整数の乱数を返す.
==============================================================================
$fe10 __STOL Decimal string → signed int d0 = (a0)〜
Arg a0.l String address
Ret d0.l Converted longword signed integer
a0.l Address next to the last digit of the number
CCR C : Set at the time of error
N : (C = 1)Set when the numerical description method is incorrect
V : (C = 1)Set when overflow occurs
Convert a string to a longword signed integer.
==============================================================================
$fe11 __LTOS signed int → Decimal string (a0)〜 = d0
Arg d0.l Longword signed int
a0.l Buffer address
Ret (a0)〜 Converted character string
a0.l Address at the end of the string
Convert longword signed integers into strings.
==============================================================================
$fe12 __STOH 16進文字列 → unsigned int d0 = (a0)〜
Arg a0.l 文字列のアドレス
Ret d0.l 変換されたロングワード符号なし整数
a0.l 数値の末尾桁の次のアドレス
CCR C : エラーの時セット
N : (C = 1)数値の記述法がおかしい場合セット
V : (C = 1)オーバーフローが発生した場合セット
16進数を表わす文字列をロングワード符号なし整数に変換する.
==============================================================================
$fe13 __HTOS unsigned int → Hexadecimal string (a0)〜 = d0
Arg d0.l Longword unsigned integer
a0.l Buffer address
Ret (a0)〜 Converted string
a0.l Address at the end of the string
Converts a longword unsigned integer to a string in hexadecimal representation.
==============================================================================
$fe14 __STOO 8進文字列 → unsigned int d0 = (a0)〜
Arg a0.l 文字列のアドレス
Ret d0.l 変換されたロングワード符号なし整数
a0.l 数値の末尾桁の次のアドレス
CCR C : エラーの時セット
N : (C = 1)数値の記述法がおかしい場合セット
V : (C = 1)オーバーフローが発生した場合セット
8進数を表わす文字列をロングワード符号なし整数に変換する.
==============================================================================
$fe15 __OTOS unsigned int → 8進文字列 (a0)〜 = d0
Arg d0.l ロングワード符号なし整数
a0.l バッファのアドレス
Ret (a0)〜 変換された文字列
a0.l 文字列の末尾のアドレス
ロングワード符号なし整数を8進数表現の文字列に変換する.
==============================================================================
$fe16 __STOB 2進文字列 → unsigned int d0 = (a0)〜
Arg a0.l 文字列のアドレス
Ret d0.l 変換されたロングワード符号なし整数
a0.l 数値の末尾桁の次のアドレス
CCR C : エラーの時セット
N : (C = 1)数値の記述法がおかしい場合セット
V : (C = 1)オーバーフローが発生した場合セット
2進数を表わす文字列をロングワード符号なし整数に変換する.
==============================================================================
$fe17 __BTOS unsigned int → 2進文字列 (a0)〜 = d0
Arg d0.l ロングワード符号なし整数
a0.l バッファのアドレス
Ret (a0)〜 変換された文字列
a0.l 文字列の末尾のアドレス
ロングワード符号なし整数を2進数表現の文字列に変換する.
==============================================================================
$fe18 __IUSING signed int → Decimal string (a0)〜 = d0,d1 digits
Arg d0.l Longword signed integer
d1.l Number of digits
a0.l Buffer address
Ret (a0)〜 Converted string
a0.l Address at the end of the string
Converts a longword signed integer to a string. If the converted
character string is less than the specified number of digits, it is
space-filled and then right-justified and returned.
If the string is longer than the specified number of digits, ignore
the number of digits and return a string of the required length.
==============================================================================
$fe1a __LTOD signed int → double d0d1 = d0
Arg d0.l ロングワード符号付き整数
Ret d0/d1 変換された倍精度浮動小数点数
ロングワード符号付き整数を倍精度浮動小数点数に変換する.
==============================================================================
$fe1b __DTOL double → signed int d0 = d0d1
Arg d0/d1 倍精度浮動小数点数
Ret d0.l 変換されたロングワード符号付き整数
CCR C : エラーの時セット
倍精度浮動小数点数をロングワード符号付き整数に変換する. 小数部は切り捨
てられる.
変換結果がロングワード符号付き整数の範囲を超えた場合はエラーとなる.
==============================================================================
$fe1c __LTOF signed int → float d0 = d0
Arg d0.l ロングワード符号付き整数
Ret d0.l 変換された単精度浮動小数点数
ロングワード符号付き整数を単精度浮動小数点数に変換する.
==============================================================================
$fe1d __FTOL float → signed int d0 = d0
Arg d0.l 単精度浮動小数点数
Ret d0.l 変換されたロングワード符号付き整数
CCR C : エラーの時セット
単精度浮動小数点数をロングワード符号付き整数に変換する. 小数部は切り捨
てられる.
変換結果がロングワード符号付き整数の範囲を超えた場合はエラーとなる.
==============================================================================
$fe1e __FTOD float → double d0d1 = d0
Arg d0.l 単精度浮動小数点数
Ret d0/d1 変換された倍精度浮動小数点数
単精度浮動小数点数を倍精度浮動小数点数に変換する.
==============================================================================
$fe1f __DTOF double → float d0 = d0d1
Arg d0/d1 倍精度浮動小数点数
Ret d0.l 変換された単精度浮動小数点数
CCR C : エラーの時セット
倍精度浮動小数点数を単精度浮動小数点数に変換する.
変換できなかった場合はエラーとなる.
==============================================================================
$fe20 __VAL 文字列 → double d0d1 = (a0)〜
Arg a0.l 文字列のアドレス
Ret d0/d1 変換された倍精度浮動小数点数
d2.w 整数フラグ(文字列が10進数だった場合に有効)
d3.l 整数値 (〃)
a0.l 数値の末尾桁の次のアドレス
CCR C : エラーの時セット
N : (C = 1)数値の記述法がおかしい場合セット
V : (C = 1)オーバーフローが発生した場合セット
文字列を倍精度浮動小数点数に変換する. 文字列の先頭に"&H","&O","&B"がつ
いていている場合は、それぞれ16,8,2進数で表現されているものと扱う.
文字列が10進数だった場合、Retとして d2,d3 が有効になる. 文字列が整数
でかつロングワード符号付き整数で表現可能な場合、整数フラグ d2 は -1 に
なり d3 にはその整数値が入る. それ以外の場合は d2 = 0 になる.
==============================================================================
$fe21 __USING double → 10進文字列 (a0)〜 = d0d1,d2.d3,d4
Arg d0/d1 倍精度浮動小数点数
d2.l 整数部の桁数
d3.l 小数部の桁数
d4.l 属性
bit 6 正数の場合スペースを、負数の場合"-"を最後尾に付加する
bit 5 正数の場合"+"を、負数の場合"-"を最後尾に付加する
bit 4 正数の場合"+"を先頭に付加する
bit 3 指数形式で表現する
bit 2 整数部分を3桁ごとに","で区切る
bit 1 先頭に"\"を付加する
bit 0 整数部の指定桁数に満たない部分(左側)を"*"で埋める
(通常はスペース)
a0.l バッファのアドレス
Ret (a0)〜 変換された文字列
a0.l の値は変更されない.
倍精度浮動小数点数を属性 d4 で指定した形で文字列に変換する.
属性は各ビットをセットすることで、その機能が有効になる. 複数のビットを
セットすることは可能だが、矛盾する設定を行なってはいけない.
d3.l が負数の場合は 0 として扱われる. ただし、実際には最下位バイトだけ
が符号なしバイト値として参照される. 更に小数点 '.' が挿入されない.
==============================================================================
$fe22 __STOD 10進文字列 → double d0d1,d2,d3 = (a0)〜
Arg a0.l 文字列のアドレス
Ret d0/d1 変換された倍精度浮動小数点数
d2.w 整数フラグ
d3.l 整数値
a0.l 数値の末尾桁の次のアドレス
CCR C : エラーの時セット
N : (C = 1)数値の記述法がおかしい場合セット
V : (C = 1)オーバーフローが発生した場合セット
文字列を倍精度浮動小数点数に変換する.
文字列が整数で、かつロングワード符号付き整数で表現可能な場合、整数フラ
グ d2 は -1 になり d3 にはその整数値が入る. それ以外の場合は d2 = 0 に
なる.
==============================================================================
$fe23 __DTOS double → 10進文字列 (a0)〜 = d0d1
Arg d0/d1 倍精度浮動小数点数
a0.l バッファのアドレス
Ret (a0)〜 変換された文字列
a0.l 文字列の末尾のアドレス
倍精度浮動小数点数を文字列に変換する.
==============================================================================
$fe24 __ECVT double → 文字列 (a0),d0,d1 = d0d1,d2全体桁
Arg d0/d1 倍精度浮動小数点数
d2.b 全体の桁数
a0.l バッファのアドレス
Ret d0.l 小数点の位置
d1.l 符号(0:正 1:負)
(a0)〜 変換された文字列
a0.l の値は変更されない.
倍精度浮動小数点数を全体の桁数を指定して文字列に変換する.
無限大、非数の場合はそれぞれ "#INF"、"#NAN" を書き込むのでバッファは最
低でも 5 バイト(NUL の分を含む)が必要である.
==============================================================================
$fe25 __FCVT double → 文字列 (a0),d0,d1 = d0d1,d2小数点桁
Arg d0/d1 倍精度浮動小数点数
d2.b 小数点以下の桁数
a0.l バッファのアドレス
Ret d0.l 小数点の位置
d1.l 符号(0:正 1:負)
(a0)〜 変換された文字列
a0.l の値は変更されない.
倍精度浮動小数点数を、小数点以下の桁数を指定して文字列に変換する.
無限大、非数の場合はそれぞれ "#INF"、"#NAN" を書き込むのでバッファは最
低でも 5 バイト(NUL の分を含む)が必要である.
==============================================================================
$fe26 __GCVT double → 文字列 (a0)〜 = d0d1,d2全体桁
Arg d0/d1 倍精度浮動小数点数
d2.b 全体の桁数
a0.l バッファのアドレス
Ret d0.l 小数点の位置
d1.l 符号(0:正 1:負)
(a0)〜 変換された文字列
a0.l 文字列の末尾のアドレス
倍精度浮動小数点数を、全体の桁数を指定した浮動小数点表記または指数表現
に変換する. 負数の場合は文字列の先頭に"-"が付加される. 通常は浮動小数
点表記に変換されるが、桁数 d2 で表現できない場合に指数表現に変換される.
無限大、非数の場合はそれぞれ "#INF"、"#NAN" を書き込むのでバッファは最
低でも 5 バイト(NUL の分を含む)が必要である.
==============================================================================
$fe28 __DTST double 0 comparison Z,N = d0d1
Arg d0/d1 Double precision floating point
CCR Z : Set when d0 / d1 is zer0
N : Set when d0 / d1 is a negative number
Compare the double precision floating point number given by d0 / d1 and 0, and return the result as a flag.
==============================================================================
$fe29 __DCMP double 比較 Z,C = d0d1-d2d3
Arg d0/d1 被比較数
d2/d3 比較数
CCR N : 比較した結果が負数の時セット
Z : 〃 0 の時セット
C : ボローが発生した時セット
倍精度浮動小数点数同士を比較する. 被比較数 d0/d1 から比較数 d2/d3 を引
いた結果がフラグにのみ返される.
フラグの結果によって次のような関係を導き出すことが出来る.
d0/d1 > d2/d3 C=0,Z=0,N=0
d0/d1 = d2/d3 C=0,Z=1,N=0
d0/d1 < d2/d3 C=1,Z=0,N=1
==============================================================================
$fe2a __DNEG double 符号反転 d0d1 = neg(d0d1)
Arg d0/d1 倍精度浮動小数点数
Ret d0/d1 演算結果
倍精度浮動小数点数の符号を反転する.
==============================================================================
$fe2b __DADD double 加算 d0d1 += d2d3
Arg d0/d1 被加算数
d2/d3 加算数
Ret d0/d1 演算結果
CCR C : エラーの時セット
V : (C = 1)オーバーフローの場合はセット、アンダーフローの場合はクリア
倍精度浮動小数点数同士を加算する.
==============================================================================
$fe2c __DSUB double 減算 d0d1 -= d2d3
Arg d0/d1 被減算数
d2/d3 減算数
Ret d0/d1 演算結果
CCR C : エラーの時セット
V : (C = 1)オーバーフローの場合はセット、アンダーフローの場合はクリア
倍精度浮動小数点数同士を減算する.
==============================================================================
$fe2d __DMUL double 乗算 d0d1 *= d2d3
Arg d0/d1 被乗数
d2/d3 乗数
Ret d0/d1 演算結果
CCR C : エラーの時セット
V : (C = 1)オーバーフローの場合はセット、アンダーフローの場合はクリア
倍精度浮動小数点数同士を乗算する.
==============================================================================
$fe2e __DDIV double 除算 d0d1 /= d2d3
Arg d0/d1 被除数
d2/d3 除数
Ret d0/d1 演算結果
CCR C : エラーの時セット
V : (C = 1)オーバーフローの場合はセット、アンダーフローの場合はクリア
Z : (C = 1)0 で割った時セット
倍精度浮動小数点数同士を除算する.
==============================================================================
$fe2f __DMOD double 除算の剰余 d0d1 %= d2d3
Arg d0/d1 被除数
d2/d3 除数
Ret d0/d1 演算結果
CCR C : エラーの時セット
V : (C = 1)オーバーフローの場合はセット、アンダーフローの場合はクリア
Z : (C = 1)0 で割った時セット
倍精度浮動小数点数同士の剰余を求める.
==============================================================================
$fe30 __DABS double 絶対値 d0d1 = abs(d0d1)
Arg d0/d1 倍精度浮動小数点数
Ret d0/d1 演算結果
倍精度浮動小数点数の絶対値を求める.
==============================================================================
$fe31 __DCEIL double 小数切上 d0d1 = ceil(d0d1)
Arg d0/d1 倍精度浮動小数点数
Ret d0/d1 演算結果
d0/d1 で与えた倍精度浮動小数点数と等しいか、それ以上の最小の整数を返す.
==============================================================================
$fe32 __DFIX double 整数部 d0d1 = fix(d0d1)
Arg d0/d1 倍精度浮動小数点数
Ret d0/d1 演算結果
d0/d1 で与えた倍精度浮動小数点数の整数部を求める.
==============================================================================
$fe33 __DFLOOR double 小数切捨 d0d1 = floor(d0d1)
Arg d0/d1 倍精度浮動小数点数
Ret d0/d1 演算結果
d0/d1 で与えた倍精度浮動小数点数と等しいか、それより小さい最大の整数を
返す.
==============================================================================
$fe34 __DFRAC double 小数部 d0d1 = frac(d0d1)
Arg d0/d1 倍精度浮動小数点数
Ret d0/d1 演算結果
d0/d1 で与えた倍精度浮動小数点数の小数部を求める.
==============================================================================
$fe35 __DSGN double 正負零 d0d1 = sgn(d0d1)
Arg d0/d1 倍精度浮動小数点数
Ret d0/d1 結果(倍精度浮動小数点数)
d0/d1 で与えた倍精度浮動小数点数が正か負か 0 かを調べる.
正なら +1.0、負なら -1.0、0 なら 0.0 を返す.
==============================================================================
$fe36 __SIN double 正弦 d0d1 = sin(d0d1)
Arg d0/d1 角度(ラジアン単位、倍精度浮動小数点数)
Ret d0/d1 演算結果
角度(ラジアン単位)を与えて正弦を計算する.
==============================================================================
$fe37 __COS double 余弦 d0d1 = cos(d0d1)
Arg d0/d1 角度(ラジアン単位、倍精度浮動小数点数)
Ret d0/d1 演算結果
角度(ラジアン単位)を与えて余弦を計算する.
==============================================================================
$fe38 __TAN double 正接 d0d1 = tan(d0d1)
Arg d0/d1 角度(ラジアン単位、倍精度浮動小数点数)
Ret d0/d1 演算結果
CCR C : エラーの時セット
角度(ラジアン単位)を与えて正接を計算する.
結果が無限大になるような角度を与えた場合はエラーになる.
==============================================================================
$fe39 __ATAN double 逆正接 d0d1 = atan(d0d1)
Arg d0/d1 角度(ラジアン単位、倍精度浮動小数点数)
Ret d0/d1 演算結果
角度(ラジアン単位)を与えて逆正接を計算する.
==============================================================================
$fe3a __LOG double 自然対数 d0d1 = ln(d0d1)
Arg d0/d1 倍精度浮動小数点数
Ret d0/d1 演算結果
CCR C : エラーの時セット
Z : (C = 1)Argが 0 の場合セット
自然対数を計算する. Argが 0 以下の場合はエラーになる.
==============================================================================
$fe3b __EXP double 指数関数 d0d1 = exp(d0d1)
Arg d0/d1 倍精度浮動小数点数
Ret d0/d1 演算結果
CCR C : エラーの時セット
指数関数を計算する. オーバーフローが発生した場合はエラーになる.
==============================================================================
$fe3c __SQR double 平方根 d0d1 = sqr(d0d1)
Arg d0/d1 倍精度浮動小数点数
Ret d0/d1 演算結果
CCR C : エラーの時セット
Z : (C = 1)Argが 0 の場合セット
平方根を計算する. オーバーフローが発生した場合はエラーになる.
==============================================================================
$fe3d __PI double 円周率 d0d1 = pi()
Ret d0/d1 円周率
円周率を倍精度浮動小数点数の範囲内で返す.
==============================================================================
$fe3e __NPI double 円周率乗算 d0d1 = pi(d0d1)
Arg d0/d1 倍精度浮動小数点数
Ret d0/d1 演算結果
CCR C : エラーの時セット
円周率のArg倍の値を倍精度浮動小数点数の範囲内で返す.
オーバーフローが発生した場合はエラーになる.
==============================================================================
$fe3f __POWER double 羃乗 d0d1 = pow(d0d1,d2d3)
Arg d0/d1 Power factor
d2/d2 Power number
Ret d0/d1 Calculation result
CCR C : エラーの時セット
V : (C = 1)オーバーフローの場合はセット、アンダーフローの場合はクリア
Compute the power.
オーバーフロー/アンダーフローが発生した場合はエラーになる.
==============================================================================
$fe40 __RND double 乱数 d0d1 = rnd()
Ret d0/d1 乱数(倍精度浮動小数点数)
倍精度浮動小数点数で 0.0 以上 +1.0 未満の乱数を返す.