summaryrefslogtreecommitdiff
path: root/v2.0/source/DEBCONST.ASM
blob: e8f8c359d2595ca7279f7c02f54a692f3493cd31 (plain) (blame)
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
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
.xlist
.xcref
INCLUDE debequ.asm
INCLUDE dossym.asm
.list
.cref

CODE    SEGMENT PUBLIC BYTE 'CODE'
CODE    ENDS

CONST   SEGMENT PUBLIC BYTE
CONST   ENDS

DATA    SEGMENT PUBLIC BYTE
DATA    ENDS

DG      GROUP   CODE,CONST,DATA

CODE    SEGMENT PUBLIC  BYTE 'CODE'

        EXTRN       ALUFROMREG:NEAR,ALUTOREG:NEAR,ACCIMM:NEAR
        EXTRN       SEGOP:NEAR,ESPRE:NEAR,SSPRE:NEAR,CSPRE:NEAR
        EXTRN       DSPRE:NEAR,REGOP:NEAR,NOOPERANDS:NEAR
        EXTRN       SAVHEX:NEAR,SHORTJMP:NEAR,MOVSEGTO:NEAR
        EXTRN       WORDTOALU:NEAR,MOVSEGFROM:NEAR,GETADDR:NEAR
        EXTRN       XCHGAX:NEAR,LONGJMP:NEAR,LOADACC:NEAR,STOREACC:NEAR
        EXTRN       REGIMMB:NEAR,SAV16:NEAR,MEMIMM:NEAR,INT3:NEAR,SAV8:NEAR
        EXTRN       CHK10:NEAR,M8087:NEAR,M8087_D9:NEAR,M8087_DB:NEAR
        EXTRN       M8087_DD:NEAR,M8087_DF:NEAR,INFIXB:NEAR,INFIXW:NEAR
        EXTRN       OUTFIXB:NEAR,OUTFIXW:NEAR,JMPCALL:NEAR,INVARB:NEAR
        EXTRN       INVARW:NEAR,OUTVARB:NEAR,OUTVARW:NEAR,PREFIX:NEAR
        EXTRN       IMMED:NEAR,SIGNIMM:NEAR,SHIFT:NEAR,SHIFTV:NEAR
        EXTRN       GRP1:NEAR,GRP2:NEAR,REGIMMW:NEAR


        EXTRN       DB_OPER:NEAR,DW_OPER:NEAR,ASSEMLOOP:NEAR,GROUP2:NEAR
        EXTRN       NO_OPER:NEAR,GROUP1:NEAR,FGROUPP:NEAR,FGROUPX:NEAR
        EXTRN       FGROUPZ:NEAR,FD9_OPER:NEAR,FGROUPB:NEAR,FGROUP:NEAR
        EXTRN       FGROUPDS:NEAR,DCINC_OPER:NEAR,INT_OPER:NEAR,IN_OPER:NEAR
        EXTRN       DISP8_OPER:NEAR,JMP_OPER:NEAR,L_OPER:NEAR,MOV_OPER:NEAR
        EXTRN       OUT_OPER:NEAR,PUSH_OPER:NEAR,GET_DATA16:NEAR
        EXTRN       FGROUP3:NEAR,FGROUP3W:NEAR,FDE_OPER:NEAR,ESC_OPER:NEAR
        EXTRN       AA_OPER:NEAR,CALL_OPER:NEAR,FDB_OPER:NEAR,POP_OPER:NEAR
        EXTRN       ROTOP:NEAR,TST_OPER:NEAR,EX_OPER:NEAR

CODE    ENDS

CONST   SEGMENT PUBLIC BYTE

        PUBLIC  REG8,REG16,SREG,SIZ8,DISTAB,DBMN,ADDMN,ADCMN,SUBMN
        PUBLIC  SBBMN,XORMN,ORMN,ANDMN,AAAMN,AADMN,AASMN,CALLMN,CBWMN
        PUBLIC  UPMN,DIMN,CMCMN,CMPMN,CWDMN,DAAMN,DASMN,DECMN,DIVMN
        PUBLIC  ESCMN,HLTMN,IDIVMN,IMULMN,INCMN,INTOMN,INTMN,INMN,IRETMN
        PUBLIC  JAMN,JCXZMN,JNCMN,JBEMN,JZMN,JGEMN,JGMN,JLEMN,JLMN,JMPMN
        PUBLIC  JNZMN,JPEMN,JNZMN,JPEMN,JPOMN,JNSMN,JNOMN,JOMN,JSMN,LAHFMN
        PUBLIC  LDSMN,LEAMN,LESMN,LOCKMN,LODBMN,LODWMN,LOOPNZMN,LOOPZMN
        PUBLIC  LOOPMN,MOVBMN,MOVWMN,MOVMN,MULMN,NEGMN,NOPMN,NOTMN,OUTMN
        PUBLIC  POPFMN,POPMN,PUSHFMN,PUSHMN,RCLMN,RCRMN,REPZMN,REPNZMN
        PUBLIC  RETFMN,RETMN,ROLMN,RORMN,SAHFMN,SARMN,SCABMN,SCAWMN,SHLMN
        PUBLIC  SHRMN,STCMN,DOWNMN,EIMN,STOBMN,STOWMN,TESTMN,WAITMN,XCHGMN
        PUBLIC  XLATMN,ESSEGMN,CSSEGMN,SSSEGMN,DSSEGMN,BADMN

        PUBLIC  M8087_TAB,FI_TAB,SIZE_TAB,MD9_TAB,MD9_TAB2,MDB_TAB
        PUBLIC  MDB_TAB2,MDD_TAB,MDD_TAB2,MDF_TAB,OPTAB,MAXOP,SHFTAB,IMMTAB
        PUBLIC  GRP1TAB,GRP2TAB,SEGTAB,REGTAB,FLAGTAB,STACK

        PUBLIC  AXSAVE,BXSAVE,CXSAVE,DXSAVE,BPSAVE,SPSAVE,SISAVE
        PUBLIC  DISAVE,DSSAVE,ESSAVE,SSSAVE,CSSAVE,IPSAVE,FSAVE,RSTACK
        PUBLIC  REGDIF,RDFLG,TOTREG,DSIZ,NOREGL,DISPB,LBUFSIZ,LBUFFCNT
        PUBLIC  LINEBUF,PFLAG,COLPOS

        IF  SYSVER
        PUBLIC  CONFCB,POUT,COUT,CIN,IOBUFF,IOADDR,IOCALL,IOCOM,IOSTAT
        PUBLIC  IOCHRET,IOSEG,IOCNT
        ENDIF

        PUBLIC  QFLAG,NEWEXEC,RETSAVE,USER_PROC_PDB,HEADSAVE,EXEC_BLOCK
        PUBLIC  COM_LINE,COM_FCB1,COM_FCB2,COM_SSSP,COM_CSIP

REG8    DB      "ALCLDLBLAHCHDHBH"
REG16   DB      "AXCXDXBXSPBPSIDI"
SREG    DB      "ESCSSSDS",0,0
SIZ8    DB      "BYWODWQWTB",0,0
; 0
DISTAB  DW      OFFSET DG:ADDMN,ALUFROMREG
        DW      OFFSET DG:ADDMN,ALUFROMREG
        DW      OFFSET DG:ADDMN,ALUTOREG
        DW      OFFSET DG:ADDMN,ALUTOREG
        DW      OFFSET DG:ADDMN,ACCIMM
        DW      OFFSET DG:ADDMN,ACCIMM
        DW      OFFSET DG:PUSHMN,SEGOP
        DW      OFFSET DG:POPMN,SEGOP
        DW      OFFSET DG:ORMN,ALUFROMREG
        DW      OFFSET DG:ORMN,ALUFROMREG
        DW      OFFSET DG:ORMN,ALUTOREG
        DW      OFFSET DG:ORMN,ALUTOREG
        DW      OFFSET DG:ORMN,ACCIMM
        DW      OFFSET DG:ORMN,ACCIMM
        DW      OFFSET DG:PUSHMN,SEGOP
        DW      OFFSET DG:POPMN,SEGOP
; 10H
        DW      OFFSET DG:ADCMN,ALUFROMREG
        DW      OFFSET DG:ADCMN,ALUFROMREG
        DW      OFFSET DG:ADCMN,ALUTOREG
        DW      OFFSET DG:ADCMN,ALUTOREG
        DW      OFFSET DG:ADCMN,ACCIMM
        DW      OFFSET DG:ADCMN,ACCIMM
        DW      OFFSET DG:PUSHMN,SEGOP
        DW      OFFSET DG:POPMN,SEGOP
        DW      OFFSET DG:SBBMN,ALUFROMREG
        DW      OFFSET DG:SBBMN,ALUFROMREG
        DW      OFFSET DG:SBBMN,ALUTOREG
        DW      OFFSET DG:SBBMN,ALUTOREG
        DW      OFFSET DG:SBBMN,ACCIMM
        DW      OFFSET DG:SBBMN,ACCIMM
        DW      OFFSET DG:PUSHMN,SEGOP
        DW      OFFSET DG:POPMN,SEGOP
; 20H
        DW      OFFSET DG:ANDMN,ALUFROMREG
        DW      OFFSET DG:ANDMN,ALUFROMREG
        DW      OFFSET DG:ANDMN,ALUTOREG
        DW      OFFSET DG:ANDMN,ALUTOREG
        DW      OFFSET DG:ANDMN,ACCIMM
        DW      OFFSET DG:ANDMN,ACCIMM
        DW      OFFSET DG:ESSEGMN,ESPRE
        DW      OFFSET DG:DAAMN,NOOPERANDS
        DW      OFFSET DG:SUBMN,ALUFROMREG
        DW      OFFSET DG:SUBMN,ALUFROMREG
        DW      OFFSET DG:SUBMN,ALUTOREG
        DW      OFFSET DG:SUBMN,ALUTOREG
        DW      OFFSET DG:SUBMN,ACCIMM
        DW      OFFSET DG:SUBMN,ACCIMM
        DW      OFFSET DG:CSSEGMN,CSPRE
        DW      OFFSET DG:DASMN,NOOPERANDS
; 30H
        DW      OFFSET DG:XORMN,ALUFROMREG
        DW      OFFSET DG:XORMN,ALUFROMREG
        DW      OFFSET DG:XORMN,ALUTOREG
        DW      OFFSET DG:XORMN,ALUTOREG
        DW      OFFSET DG:XORMN,ACCIMM
        DW      OFFSET DG:XORMN,ACCIMM
        DW      OFFSET DG:SSSEGMN,SSPRE
        DW      OFFSET DG:AAAMN,NOOPERANDS
        DW      OFFSET DG:CMPMN,ALUFROMREG
        DW      OFFSET DG:CMPMN,ALUFROMREG
        DW      OFFSET DG:CMPMN,ALUTOREG
        DW      OFFSET DG:CMPMN,ALUTOREG
        DW      OFFSET DG:CMPMN,ACCIMM
        DW      OFFSET DG:CMPMN,ACCIMM
        DW      OFFSET DG:DSSEGMN,DSPRE
        DW      OFFSET DG:AASMN,NOOPERANDS
; 40H
        DW      OFFSET DG:INCMN,REGOP
        DW      OFFSET DG:INCMN,REGOP
        DW      OFFSET DG:INCMN,REGOP
        DW      OFFSET DG:INCMN,REGOP
        DW      OFFSET DG:INCMN,REGOP
        DW      OFFSET DG:INCMN,REGOP
        DW      OFFSET DG:INCMN,REGOP
        DW      OFFSET DG:INCMN,REGOP
        DW      OFFSET DG:DECMN,REGOP
        DW      OFFSET DG:DECMN,REGOP
        DW      OFFSET DG:DECMN,REGOP
        DW      OFFSET DG:DECMN,REGOP
        DW      OFFSET DG:DECMN,REGOP
        DW      OFFSET DG:DECMN,REGOP
        DW      OFFSET DG:DECMN,REGOP
        DW      OFFSET DG:DECMN,REGOP
; 50H
        DW      OFFSET DG:PUSHMN,REGOP
        DW      OFFSET DG:PUSHMN,REGOP
        DW      OFFSET DG:PUSHMN,REGOP
        DW      OFFSET DG:PUSHMN,REGOP
        DW      OFFSET DG:PUSHMN,REGOP
        DW      OFFSET DG:PUSHMN,REGOP
        DW      OFFSET DG:PUSHMN,REGOP
        DW      OFFSET DG:PUSHMN,REGOP
        DW      OFFSET DG:POPMN,REGOP
        DW      OFFSET DG:POPMN,REGOP
        DW      OFFSET DG:POPMN,REGOP
        DW      OFFSET DG:POPMN,REGOP
        DW      OFFSET DG:POPMN,REGOP
        DW      OFFSET DG:POPMN,REGOP
        DW      OFFSET DG:POPMN,REGOP
        DW      OFFSET DG:POPMN,REGOP
; 60H
        DW      OFFSET DG:DBMN,SAVHEX
        DW      OFFSET DG:DBMN,SAVHEX
        DW      OFFSET DG:DBMN,SAVHEX
        DW      OFFSET DG:DBMN,SAVHEX
        DW      OFFSET DG:DBMN,SAVHEX
        DW      OFFSET DG:DBMN,SAVHEX
        DW      OFFSET DG:DBMN,SAVHEX
        DW      OFFSET DG:DBMN,SAVHEX
        DW      OFFSET DG:DBMN,SAVHEX
        DW      OFFSET DG:DBMN,SAVHEX
        DW      OFFSET DG:DBMN,SAVHEX
        DW      OFFSET DG:DBMN,SAVHEX
        DW      OFFSET DG:DBMN,SAVHEX
        DW      OFFSET DG:DBMN,SAVHEX
        DW      OFFSET DG:DBMN,SAVHEX
        DW      OFFSET DG:DBMN,SAVHEX
; 70H
        DW      OFFSET DG:JOMN,SHORTJMP
        DW      OFFSET DG:JNOMN,SHORTJMP
        DW      OFFSET DG:JCMN,SHORTJMP
        DW      OFFSET DG:JNCMN,SHORTJMP
        DW      OFFSET DG:JZMN,SHORTJMP
        DW      OFFSET DG:JNZMN,SHORTJMP
        DW      OFFSET DG:JBEMN,SHORTJMP
        DW      OFFSET DG:JAMN,SHORTJMP
        DW      OFFSET DG:JSMN,SHORTJMP
        DW      OFFSET DG:JNSMN,SHORTJMP
        DW      OFFSET DG:JPEMN,SHORTJMP
        DW      OFFSET DG:JPOMN,SHORTJMP
        DW      OFFSET DG:JLMN,SHORTJMP
        DW      OFFSET DG:JGEMN,SHORTJMP
        DW      OFFSET DG:JLEMN,SHORTJMP
        DW      OFFSET DG:JGMN,SHORTJMP
; 80H
        DW      0,IMMED
        DW      0,IMMED
        DW      0,IMMED
        DW      0,SIGNIMM
        DW      OFFSET DG:TESTMN,ALUFROMREG
        DW      OFFSET DG:TESTMN,ALUFROMREG
        DW      OFFSET DG:XCHGMN,ALUFROMREG
        DW      OFFSET DG:XCHGMN,ALUFROMREG
        DW      OFFSET DG:MOVMN,ALUFROMREG
        DW      OFFSET DG:MOVMN,ALUFROMREG
        DW      OFFSET DG:MOVMN,ALUTOREG
        DW      OFFSET DG:MOVMN,ALUTOREG
        DW      OFFSET DG:MOVMN,MOVSEGTO
        DW      OFFSET DG:LEAMN,WORDTOALU
        DW      OFFSET DG:MOVMN,MOVSEGFROM
        DW      OFFSET DG:POPMN,GETADDR
; 90H
        DW      OFFSET DG:NOPMN,NOOPERANDS
        DW      OFFSET DG:XCHGMN,XCHGAX
        DW      OFFSET DG:XCHGMN,XCHGAX
        DW      OFFSET DG:XCHGMN,XCHGAX
        DW      OFFSET DG:XCHGMN,XCHGAX
        DW      OFFSET DG:XCHGMN,XCHGAX
        DW      OFFSET DG:XCHGMN,XCHGAX
        DW      OFFSET DG:XCHGMN,XCHGAX
        DW      OFFSET DG:CBWMN,NOOPERANDS
        DW      OFFSET DG:CWDMN,NOOPERANDS
        DW      OFFSET DG:CALLMN,LONGJMP
        DW      OFFSET DG:WAITMN,NOOPERANDS
        DW      OFFSET DG:PUSHFMN,NOOPERANDS
        DW      OFFSET DG:POPFMN,NOOPERANDS
        DW      OFFSET DG:SAHFMN,NOOPERANDS
        DW      OFFSET DG:LAHFMN,NOOPERANDS
; A0H
        DW      OFFSET DG:MOVMN,LOADACC
        DW      OFFSET DG:MOVMN,LOADACC
        DW      OFFSET DG:MOVMN,STOREACC
        DW      OFFSET DG:MOVMN,STOREACC
        DW      OFFSET DG:MOVBMN,NOOPERANDS
        DW      OFFSET DG:MOVWMN,NOOPERANDS
        DW      OFFSET DG:CMPBMN,NOOPERANDS
        DW      OFFSET DG:CMPWMN,NOOPERANDS
        DW      OFFSET DG:TESTMN,ACCIMM
        DW      OFFSET DG:TESTMN,ACCIMM
        DW      OFFSET DG:STOBMN,NOOPERANDS
        DW      OFFSET DG:STOWMN,NOOPERANDS
        DW      OFFSET DG:LODBMN,NOOPERANDS
        DW      OFFSET DG:LODWMN,NOOPERANDS
        DW      OFFSET DG:SCABMN,NOOPERANDS
        DW      OFFSET DG:SCAWMN,NOOPERANDS
; B0H
        DW      OFFSET DG:MOVMN,REGIMMB
        DW      OFFSET DG:MOVMN,REGIMMB
        DW      OFFSET DG:MOVMN,REGIMMB
        DW      OFFSET DG:MOVMN,REGIMMB
        DW      OFFSET DG:MOVMN,REGIMMB
        DW      OFFSET DG:MOVMN,REGIMMB
        DW      OFFSET DG:MOVMN,REGIMMB
        DW      OFFSET DG:MOVMN,REGIMMB
        DW      OFFSET DG:MOVMN,REGIMMW
        DW      OFFSET DG:MOVMN,REGIMMW
        DW      OFFSET DG:MOVMN,REGIMMW
        DW      OFFSET DG:MOVMN,REGIMMW
        DW      OFFSET DG:MOVMN,REGIMMW
        DW      OFFSET DG:MOVMN,REGIMMW
        DW      OFFSET DG:MOVMN,REGIMMW
        DW      OFFSET DG:MOVMN,REGIMMW
; C0H
        DW      OFFSET DG:DBMN,SAVHEX
        DW      OFFSET DG:DBMN,SAVHEX
        DW      OFFSET DG:RETMN,SAV16
        DW      OFFSET DG:RETMN,NOOPERANDS
        DW      OFFSET DG:LESMN,WORDTOALU
        DW      OFFSET DG:LDSMN,WORDTOALU
        DW      OFFSET DG:MOVMN,MEMIMM
        DW      OFFSET DG:MOVMN,MEMIMM
        DW      OFFSET DG:DBMN,SAVHEX
        DW      OFFSET DG:DBMN,SAVHEX
        DW      OFFSET DG:RETFMN,SAV16
        DW      OFFSET DG:RETFMN,NOOPERANDS
        DW      OFFSET DG:INTMN,INT3
        DW      OFFSET DG:INTMN,SAV8
        DW      OFFSET DG:INTOMN,NOOPERANDS
        DW      OFFSET DG:IRETMN,NOOPERANDS
; D0H
        DW      0,SHIFT
        DW      0,SHIFT
        DW      0,SHIFTV
        DW      0,SHIFTV
        DW      OFFSET DG:AAMMN,CHK10
        DW      OFFSET DG:AADMN,CHK10
        DW      OFFSET DG:DBMN,SAVHEX
        DW      OFFSET DG:XLATMN,NOOPERANDS
        DW      0,M8087                 ; d8
        DW      0,M8087_D9              ; d9
        DW      0,M8087                 ; da
        DW      0,M8087_DB              ; db
        DW      0,M8087                 ; dc
        DW      0,M8087_DD              ; dd
        DW      0,M8087                 ; de
        DW      0,M8087_DF              ; df
; E0H
        DW      OFFSET DG:LOOPNZMN,SHORTJMP
        DW      OFFSET DG:LOOPZMN,SHORTJMP
        DW      OFFSET DG:LOOPMN,SHORTJMP
        DW      OFFSET DG:JCXZMN,SHORTJMP
        DW      OFFSET DG:INMN,INFIXB
        DW      OFFSET DG:INMN,INFIXW
        DW      OFFSET DG:OUTMN,OUTFIXB
        DW      OFFSET DG:OUTMN,OUTFIXW
        DW      OFFSET DG:CALLMN,JMPCALL
        DW      OFFSET DG:JMPMN,JMPCALL
        DW      OFFSET DG:JMPMN,LONGJMP
        DW      OFFSET DG:JMPMN,SHORTJMP
        DW      OFFSET DG:INMN,INVARB
        DW      OFFSET DG:INMN,INVARW
        DW      OFFSET DG:OUTMN,OUTVARB
        DW      OFFSET DG:OUTMN,OUTVARW
; F0H
        DW      OFFSET DG:LOCKMN,PREFIX
        DW      OFFSET DG:DBMN,SAVHEX
        DW      OFFSET DG:REPNZMN,PREFIX
        DW      OFFSET DG:REPZMN,PREFIX
        DW      OFFSET DG:HLTMN,NOOPERANDS
        DW      OFFSET DG:CMCMN,NOOPERANDS
        DW      0,GRP1
        DW      0,GRP1
        DW      OFFSET DG:CLCMN,NOOPERANDS
        DW      OFFSET DG:STCMN,NOOPERANDS
        DW      OFFSET DG:DIMN,NOOPERANDS
        DW      OFFSET DG:EIMN,NOOPERANDS
        DW      OFFSET DG:UPMN,NOOPERANDS
        DW      OFFSET DG:DOWNMN,NOOPERANDS
        DW      0,GRP2
        DW      0,GRP2

DBMN    DB      "D","B"+80H
        DB      "D","W"+80H
        DB      ";"+80H
ADDMN   DB      "AD","D"+80H
ADCMN   DB      "AD","C"+80H
SUBMN   DB      "SU","B"+80H
SBBMN   DB      "SB","B"+80H
XORMN   DB      "XO","R"+80H
ORMN    DB      "O","R"+80H
ANDMN   DB      "AN","D"+80H
AAAMN   DB      "AA","A"+80H
AADMN   DB      "AA","D"+80H
AAMMN   DB      "AA","M"+80H
AASMN   DB      "AA","S"+80H
CALLMN  DB      "CAL","L"+80H
CBWMN   DB      "CB","W"+80H
CLCMN   DB      "CL","C"+80H
UPMN    DB      "CL","D"+80H            ; CLD+80H
DIMN    DB      "CL","I"+80H
CMCMN   DB      "CM","C"+80H
CMPBMN  DB      "CMPS","B"+80H          ; CMPSB
CMPWMN  DB      "CMPS","W"+80H          ; CMPSW+80H
CMPMN   DB      "CM","P"+80H
CWDMN   DB      "CW","D"+80H
DAAMN   DB      "DA","A"+80H
DASMN   DB      "DA","S"+80H
DECMN   DB      "DE","C"+80H
DIVMN   DB      "DI","V"+80H
ESCMN   DB      "ES","C"+80H
        DB      "FXC","H"+80H
        DB      "FFRE","E"+80H
        DB      "FCOMP","P"+80H
        DB      "FCOM","P"+80H
        DB      "FCO","M"+80H
        DB      "FICOM","P"+80H
        DB      "FICO","M"+80H
        DB      "FNO","P"+80H
        DB      "FCH","S"+80H
        DB      "FAB","S"+80H
        DB      "FTS","T"+80H
        DB      "FXA","M"+80H
        DB      "FLDL2","T"+80H
        DB      "FLDL2","E"+80H
        DB      "FLDLG","2"+80H
        DB      "FLDLN","2"+80H
        DB      "FLDP","I"+80H
        DB      "FLD","1"+80H
        DB      "FLD","Z"+80H
        DB      "F2XM","1"+80H
        DB      "FYL2XP","1"+80H
        DB      "FYL2","X"+80H
        DB      "FPTA","N"+80H
        DB      "FPATA","N"+80H
        DB      "FXTRAC","T"+80H
        DB      "FDECST","P"+80H
        DB      "FINCST","P"+80H
        DB      "FPRE","M"+80H
        DB      "FSQR","T"+80H
        DB      "FRNDIN","T"+80H
        DB      "FSCAL","E"+80H
        DB      "FINI","T"+80H
        DB      "FDIS","I"+80H
        DB      "FEN","I"+80H
        DB      "FCLE","X"+80H
        DB      "FBL","D"+80H
        DB      "FBST","P"+80H
        DB      "FLDC","W"+80H
        DB      "FSTC","W"+80H
        DB      "FSTS","W"+80H
        DB      "FSTEN","V"+80H
        DB      "FLDEN","V"+80H
        DB      "FSAV","E"+80H
        DB      "FRSTO","R"+80H
        DB      "FADD","P"+80H
        DB      "FAD","D"+80H
        DB      "FIAD","D"+80H
        DB      "FSUBR","P"+80H
        DB      "FSUB","R"+80H
        DB      "FSUB","P"+80H
        DB      "FSU","B"+80H
        DB      "FISUB","R"+80H
        DB      "FISU","B"+80H
        DB      "FMUL","P"+80H
        DB      "FMU","L"+80H
        DB      "FIMU","L"+80H
        DB      "FDIVR","P"+80H
        DB      "FDIV","R"+80H
        DB      "FDIV","P"+80H
        DB      "FDI","V"+80H
        DB      "FIDIV","R"+80H
        DB      "FIDI","V"+80H
        DB      "FWAI","T"+80H
        DB      "FIL","D"+80H
        DB      "FL","D"+80H
        DB      "FST","P"+80H
        DB      "FS","T"+80H
        DB      "FIST","P"+80H
        DB      "FIS","T"+80H
HLTMN   DB      "HL","T"+80H
IDIVMN  DB      "IDI","V"+80H
IMULMN  DB      "IMU","L"+80H
INCMN   DB      "IN","C"+80H
INTOMN  DB      "INT","O"+80H
INTMN   DB      "IN","T"+80H
INMN    DB      "I","N"+80H             ; IN
IRETMN  DB      "IRE","T"+80H
        DB      "JNB","E"+80H
        DB      "JA","E"+80H
JAMN    DB      "J","A"+80H
JCXZMN  DB      "JCX","Z"+80H
JNCMN   DB      "JN","B"+80H
JBEMN   DB      "JB","E"+80H
JCMN    DB      "J","B"+80H
        DB      "JN","C"+80H
        DB      "J","C"+80H
        DB      "JNA","E"+80H
        DB      "JN","A"+80H
JZMN    DB      "J","Z"+80H
        DB      "J","E"+80H
JGEMN   DB      "JG","E"+80H
JGMN    DB      "J","G"+80H
        DB      "JNL","E"+80H
        DB      "JN","L"+80H
JLEMN   DB      "JL","E"+80H
JLMN    DB      "J","L"+80H
        DB      "JNG","E"+80H
        DB      "JN","G"+80H
JMPMN   DB      "JM","P"+80H
JNZMN   DB      "JN","Z"+80H
        DB      "JN","E"+80H
JPEMN   DB      "JP","E"+80H
JPOMN   DB      "JP","O"+80H
        DB      "JN","P"+80H
JNSMN   DB      "JN","S"+80H
JNOMN   DB      "JN","O"+80H
JOMN    DB      "J","O"+80H
JSMN    DB      "J","S"+80H
        DB      "J","P"+80H
LAHFMN  DB      "LAH","F"+80H
LDSMN   DB      "LD","S"+80H
LEAMN   DB      "LE","A"+80H
LESMN   DB      "LE","S"+80H
LOCKMN  DB      "LOC","K"+80H
LODBMN  DB      "LODS","B"+80H          ; LODSB
LODWMN  DB      "LODS","W"+80H          ; LODSW+80H
LOOPNZMN DB     "LOOPN","Z"+80H
LOOPZMN DB      "LOOP","Z"+80H
        DB      "LOOPN","E"+80H
        DB      "LOOP","E"+80H
LOOPMN  DB      "LOO","P"+80H
MOVBMN  DB      "MOVS","B"+80H          ; MOVSB
MOVWMN  DB      "MOVS","W"+80H          ; MOVSW+80H
MOVMN   DB      "MO","V"+80H
MULMN   DB      "MU","L"+80H
NEGMN   DB      "NE","G"+80H
NOPMN   DB      "NO","P"+80H
NOTMN   DB      "NO","T"+80H
OUTMN   DB      "OU","T"+80H            ; OUT
POPFMN  DB      "POP","F"+80H
POPMN   DB      "PO","P"+80H
PUSHFMN DB      "PUSH","F"+80H
PUSHMN  DB      "PUS","H"+80H
RCLMN   DB      "RC","L"+80H
RCRMN   DB      "RC","R"+80H
REPZMN  DB      "REP","Z"+80H
REPNZMN DB      "REPN","Z"+80H
        DB      "REP","E"+80H
        DB      "REPN","E"+80H
        DB      "RE","P"+80H
RETFMN  DB      "RET","F"+80H
RETMN   DB      "RE","T"+80H
ROLMN   DB      "RO","L"+80H
RORMN   DB      "RO","R"+80H
SAHFMN  DB      "SAH","F"+80H
SARMN   DB      "SA","R"+80H
SCABMN  DB      "SCAS","B"+80H          ; SCASB
SCAWMN  DB      "SCAS","W"+80H          ; SCASW+80H
SHLMN   DB      "SH","L"+80H
SHRMN   DB      "SH","R"+80H
STCMN   DB      "ST","C"+80H
DOWNMN  DB      "ST","D"+80H            ; STD
EIMN    DB      "ST","I"+80H            ; STI
STOBMN  DB      "STOS","B"+80H          ; STOSB
STOWMN  DB      "STOS","W"+80H          ; STOSW+80H
TESTMN  DB      "TES","T"+80H
WAITMN  DB      "WAI","T"+80H
XCHGMN  DB      "XCH","G"+80H
XLATMN  DB      "XLA","T"+80H
ESSEGMN DB      "ES",":"+80H
CSSEGMN DB      "CS",":"+80H
SSSEGMN DB      "SS",":"+80H
DSSEGMN DB      "DS",":"+80H
BADMN   DB      "??","?"+80H

M8087_TAB DB "ADD$MUL$COM$COMP$SUB$SUBR$DIV$DIVR$"
FI_TAB    DB "F$FI$F$FI$"
SIZE_TAB  DB "DWORD PTR $DWORD PTR $QWORD PTR $WORD PTR $"
          DB "BYTE PTR $TBYTE PTR $"

MD9_TAB   DB "LD$@$ST$STP$LDENV$LDCW$STENV$STCW$"
MD9_TAB2  DB "CHS$ABS$@$@$TST$XAM$@$@$LD1$LDL2T$LDL2E$"
          DB "LDPI$LDLG2$LDLN2$LDZ$@$2XM1$YL2X$PTAN$PATAN$XTRACT$"
          DB "@$DECSTP$INCSTP$PREM$YL2XP1$SQRT$@$RNDINT$SCALE$@$@$"

MDB_TAB   DB  "ILD$@$IST$ISTP$@$LD$@$STP$"
MDB_TAB2  DB  "ENI$DISI$CLEX$INIT$"

MDD_TAB   DB "LD$@$ST$STP$RSTOR$@$SAVE$STSW$"
MDD_TAB2  DB "FREE$XCH$ST$STP$"

MDF_TAB   DB "ILD$@$IST$ISTP$BLD$ILD$BSTP$ISTP$"


OPTAB   DB      11111111B               ; DB
        DW      DB_OPER
        DB      11111111B               ; DW
        DW      DW_OPER
        DB      11111111B               ; COMMENT
        DW      ASSEMLOOP
        DB      0 * 8                   ; ADD
        DW      GROUP2
        DB      2 * 8                   ; ADC
        DW      GROUP2
        DB      5 * 8                   ; SUB
        DW      GROUP2
        DB      3 * 8                   ; SBB
        DW      GROUP2
        DB      6 * 8                   ; XOR
        DW      GROUP2
        DB      1 * 8                   ; OR
        DW      GROUP2
        DB      4 * 8                   ; AND
        DW      GROUP2
        DB      00110111B               ; AAA
        DW      NO_OPER
        DB      11010101B               ; AAD
        DW      AA_OPER
        DB      11010100B               ; AAM
        DW      AA_OPER
        DB      00111111B               ; AAS
        DW      NO_OPER
        DB      2 * 8                   ; CALL
        DW      CALL_OPER
        DB      10011000B               ; CBW
        DW      NO_OPER
        DB      11111000B               ; CLC
        DW      NO_OPER
        DB      11111100B               ; CLD
        DW      NO_OPER
        DB      11111010B               ; DIM
        DW      NO_OPER
        DB      11110101B               ; CMC
        DW      NO_OPER
        DB      10100110B               ; CMPB
        DW      NO_OPER
        DB      10100111B               ; CMPW
        DW      NO_OPER
        DB      7 * 8                   ; CMP
        DW      GROUP2
        DB      10011001B               ; CWD
        DW      NO_OPER
        DB      00100111B               ; DAA
        DW      NO_OPER
        DB      00101111B               ; DAS
        DW      NO_OPER
        DB      1 * 8                   ; DEC
        DW      DCINC_OPER
        DB      6 * 8                   ; DIV
        DW      GROUP1
        DB      11011000B               ; ESC
        DW      ESC_OPER
        DB      00001001B               ; FXCH
        DW      FGROUPP
        DB      00101000B               ; FFREE
        DW      FGROUPP
        DB      11011001B               ; FCOMPP
        DW      FDE_OPER
        DB      00000011B               ; FCOMP
        DW      FGROUPX                 ; Exception to normal P instructions
        DB      00000010B               ; FCOM
        DW      FGROUPX
        DB      00010011B               ; FICOMP
        DW      FGROUPZ
        DB      00010010B               ; FICOM
        DW      FGROUPZ
        DB      11010000B               ; FNOP
        DW      FD9_OPER
        DB      11100000B               ; FCHS
        DW      FD9_OPER
        DB      11100001B               ; FABS
        DW      FD9_OPER
        DB      11100100B               ; FTST
        DW      FD9_OPER
        DB      11100101B               ; FXAM
        DW      FD9_OPER
        DB      11101001B               ; FLDL2T
        DW      FD9_OPER
        DB      11101010B               ; FLDL2E
        DW      FD9_OPER
        DB      11101100B               ; FLDLG2
        DW      FD9_OPER
        DB      11101101B               ; FLDLN2
        DW      FD9_OPER
        DB      11101011B               ; FLDPI
        DW      FD9_OPER
        DB      11101000B               ; FLD1
        DW      FD9_OPER
        DB      11101110B               ; FLDZ
        DW      FD9_OPER
        DB      11110000B               ; F2XM1
        DW      FD9_OPER
        DB      11111001B               ; FYL2XP1
        DW      FD9_OPER
        DB      11110001B               ; FYL2X
        DW      FD9_OPER
        DB      11110010B               ; FPTAN
        DW      FD9_OPER
        DB      11110011B               ; FPATAN
        DW      FD9_OPER
        DB      11110100B               ; FXTRACT
        DW      FD9_OPER
        DB      11110110B               ; FDECSTP
        DW      FD9_OPER
        DB      11110111B               ; FINCSTP
        DW      FD9_OPER
        DB      11111000B               ; FPREM
        DW      FD9_OPER
        DB      11111010B               ; FSQRT
        DW      FD9_OPER
        DB      11111100B               ; FRNDINT
        DW      FD9_OPER
        DB      11111101B               ; FSCALE
        DW      FD9_OPER
        DB      11100011B               ; FINIT
        DW      FDB_OPER
        DB      11100001B               ; FDISI
        DW      FDB_OPER
        DB      11100000B               ; FENI
        DW      FDB_OPER
        DB      11100010B               ; FCLEX
        DW      FDB_OPER
        DB      00111100B               ; FBLD
        DW      FGROUPB
        DB      00111110B               ; FBSTP
        DW      FGROUPB
        DB      00001101B               ; FLDCW
        DW      FGROUP3W
        DB      00001111B               ; FSTCW
        DW      FGROUP3W
        DB      00101111B               ; FSTSW
        DW      FGROUP3W
        DB      00001110B               ; FSTENV
        DW      FGROUP3
        DB      00001100B               ; FLDENV
        DW      FGROUP3
        DB      00101110B               ; FSAVE
        DW      FGROUP3
        DB      00101100B               ; FRSTOR
        DW      FGROUP3
        DB      00110000B               ; FADDP
        DW      FGROUPP
        DB      00000000B               ; FADD
        DW      FGROUP
        DB      00010000B               ; FIADD
        DW      FGROUPZ
        DB      00110100B               ; FSUBRP
        DW      FGROUPP
        DB      00000101B               ; FSUBR
        DW      FGROUPDS
        DB      00110101B               ; FSUBP
        DW      FGROUPP
        DB      00000100B               ; FSUB
        DW      FGROUPDS
        DB      00010101B               ; FISUBR
        DW      FGROUPZ
        DB      00010100B               ; FISUB
        DW      FGROUPZ
        DB      00110001B               ; FMULP
        DW      FGROUPP
        DB      00000001B               ; FMUL
        DW      FGROUP
        DB      00010001B               ; FIMUL
        DW      FGROUPZ
        DB      00110110B               ; FDIVRP
        DW      FGROUPP
        DB      00000111B               ; FDIVR
        DW      FGROUPDS
        DB      00110111B               ; FDIVP
        DW      FGROUPP
        DB      00000110B               ; FDIV
        DW      FGROUPDS
        DB      00010111B               ; FIDIVR
        DW      FGROUPZ
        DB      00010110B               ; FIDIV
        DW      FGROUPZ
        DB      10011011B               ; FWAIT
        DW      NO_OPER
        DB      00011000B               ; FILD
        DW      FGROUPZ
        DB      00001000B               ; FLD
        DW      FGROUPX
        DB      00001011B               ; FSTP
        DW      FGROUPX
        DB      00101010B               ; FST
        DW      FGROUPX
        DB      00011011B               ; FISTP
        DW      FGROUPZ
        DB      00011010B               ; FIST
        DW      FGROUPZ
        DB      11110100B               ; HLT
        DW      NO_OPER
        DB      7 * 8                   ; IDIV
        DW      GROUP1
        DB      5 * 8                   ; IMUL
        DW      GROUP1
        DB      0 * 8                   ; INC
        DW      DCINC_OPER
        DB      11001110B               ; INTO
        DW      NO_OPER
        DB      11001100B               ; INTM
        DW      INT_OPER
        DB      11101100B               ; IN
        DW      IN_OPER
        DB      11001111B               ; IRET
        DW      NO_OPER
        DB      01110111B               ; JNBE
        DW      DISP8_OPER
        DB      01110011B               ; JAE
        DW      DISP8_OPER
        DB      01110111B               ; JA
        DW      DISP8_OPER
        DB      11100011B               ; JCXZ
        DW      DISP8_OPER
        DB      01110011B               ; JNB
        DW      DISP8_OPER
        DB      01110110B               ; JBE
        DW      DISP8_OPER
        DB      01110010B               ; JB
        DW      DISP8_OPER
        DB      01110011B               ; JNC
        DW      DISP8_OPER
        DB      01110010B               ; JC
        DW      DISP8_OPER
        DB      01110010B               ; JNAE
        DW      DISP8_OPER
        DB      01110110B               ; JNA
        DW      DISP8_OPER
        DB      01110100B               ; JZ
        DW      DISP8_OPER
        DB      01110100B               ; JE
        DW      DISP8_OPER
        DB      01111101B               ; JGE
        DW      DISP8_OPER
        DB      01111111B               ; JG
        DW      DISP8_OPER
        DB      01111111B               ; JNLE
        DW      DISP8_OPER
        DB      01111101B               ; JNL
        DW      DISP8_OPER
        DB      01111110B               ; JLE
        DW      DISP8_OPER
        DB      01111100B               ; JL
        DW      DISP8_OPER
        DB      01111100B               ; JNGE
        DW      DISP8_OPER
        DB      01111110B               ; JNG
        DW      DISP8_OPER
        DB      4 * 8                   ; JMP
        DW      JMP_OPER
        DB      01110101B               ; JNZ
        DW      DISP8_OPER
        DB      01110101B               ; JNE
        DW      DISP8_OPER
        DB      01111010B               ; JPE
        DW      DISP8_OPER
        DB      01111011B               ; JPO
        DW      DISP8_OPER
        DB      01111011B               ; JNP
        DW      DISP8_OPER
        DB      01111001B               ; JNS
        DW      DISP8_OPER
        DB      01110001B               ; JNO
        DW      DISP8_OPER
        DB      01110000B               ; JO
        DW      DISP8_OPER
        DB      01111000B               ; JS
        DW      DISP8_OPER
        DB      01111010B               ; JP
        DW      DISP8_OPER
        DB      10011111B               ; LAHF
        DW      NO_OPER
        DB      11000101B               ; LDS
        DW      L_OPER
        DB      10001101B               ; LEA
        DW      L_OPER
        DB      11000100B               ; LES
        DW      L_OPER
        DB      11110000B               ; LOCK
        DW      NO_OPER
        DB      10101100B               ; LODB
        DW      NO_OPER
        DB      10101101B               ; LODW
        DW      NO_OPER
        DB      11100000B               ; LOOPNZ
        DW      DISP8_OPER
        DB      11100001B               ; LOOPZ
        DW      DISP8_OPER
        DB      11100000B               ; LOOPNE
        DW      DISP8_OPER
        DB      11100001B               ; LOOPE
        DW      DISP8_OPER
        DB      11100010B               ; LOOP
        DW      DISP8_OPER
        DB      10100100B               ; MOVB
        DW      NO_OPER
        DB      10100101B               ; MOVW
        DW      NO_OPER
        DB      11000110B               ; MOV
        DW      MOV_OPER
        DB      4 * 8                   ; MUL
        DW      GROUP1
        DB      3 * 8                   ; NEG
        DW      GROUP1
        DB      10010000B               ; NOP
        DW      NO_OPER
        DB      2 * 8                   ; NOT
        DW      GROUP1
        DB      11101110B               ; OUT
        DW      OUT_OPER
        DB      10011101B               ; POPF
        DW      NO_OPER
        DB      0 * 8                   ; POP
        DW      POP_OPER
        DB      10011100B               ; PUSHF
        DW      NO_OPER
        DB      6 * 8                   ; PUSH
        DW      PUSH_OPER
        DB      2 * 8                   ; RCL
        DW      ROTOP
        DB      3 * 8                   ; RCR
        DW      ROTOP
        DB      11110011B               ; REPZ
        DW      NO_OPER
        DB      11110010B               ; REPNZ
        DW      NO_OPER
        DB      11110011B               ; REPE
        DW      NO_OPER
        DB      11110010B               ; REPNE
        DW      NO_OPER
        DB      11110011B               ; REP
        DW      NO_OPER
        DB      11001011B               ; RETF
        DW      GET_DATA16
        DB      11000011B               ; RET
        DW      GET_DATA16
        DB      0 * 8                   ; ROL
        DW      ROTOP
        DB      1 * 8                   ; ROR
        DW      ROTOP
        DB      10011110B               ; SAHF
        DW      NO_OPER
        DB      7 * 8                   ; SAR
        DW      ROTOP
        DB      10101110B               ; SCAB
        DW      NO_OPER
        DB      10101111B               ; SCAW
        DW      NO_OPER
        DB      4 * 8                   ; SHL
        DW      ROTOP
        DB      5 * 8                   ; SHR
        DW      ROTOP
        DB      11111001B               ; STC
        DW      NO_OPER
        DB      11111101B               ; STD
        DW      NO_OPER
        DB      11111011B               ; EI
        DW      NO_OPER
        DB      10101010B               ; STOB
        DW      NO_OPER
        DB      10101011B               ; STOW
        DW      NO_OPER
        DB      11110110B               ; TEST
        DW      TST_OPER
        DB      10011011B               ; WAIT
        DW      NO_OPER
        DB      10000110B               ; XCHG
        DW      EX_OPER
        DB      11010111B               ; XLAT
        DW      NO_OPER
        DB      00100110B               ; ESSEG
        DW      NO_OPER
        DB      00101110B               ; CSSEG
        DW      NO_OPER
        DB      00110110B               ; SSSEG
        DW      NO_OPER
        DB      00111110B               ; DSSEG
        DW      NO_OPER

zzopcode label  byte
MAXOP   = (zzopcode-optab)/3

SHFTAB  DW             OFFSET DG:ROLMN,OFFSET DG:RORMN,OFFSET DG:RCLMN
        DW             OFFSET DG:RCRMN,OFFSET DG:SHLMN,OFFSET DG:SHRMN
        DW             OFFSET DG:BADMN,OFFSET DG:SARMN

IMMTAB  DW      OFFSET DG:ADDMN,OFFSET DG:ORMN,OFFSET DG:ADCMN
        DW      OFFSET DG:SBBMN,OFFSET DG:ANDMN,OFFSET DG:SUBMN
        DW      OFFSET DG:XORMN,OFFSET DG:CMPMN

GRP1TAB DW      OFFSET DG:TESTMN,OFFSET DG:BADMN,OFFSET DG:NOTMN
        DW      OFFSET DG:NEGMN,OFFSET DG:MULMN,OFFSET DG:IMULMN
        DW      OFFSET DG:DIVMN,OFFSET DG:IDIVMN

GRP2TAB DW      OFFSET DG:INCMN,OFFSET DG:DECMN,OFFSET DG:CALLMN
        DW      OFFSET DG:CALLMN,OFFSET DG:JMPMN,OFFSET DG:JMPMN
        DW      OFFSET DG:PUSHMN,OFFSET DG:BADMN

SEGTAB  DW      OFFSET DG:ESSAVE,OFFSET DG:CSSAVE,OFFSET DG:SSSAVE
        DW      OFFSET DG:DSSAVE

REGTAB  DB      "AXBXCXDXSPBPSIDIDSESSSCSIPPC"

; Flags are ordered to correspond with the bits of the flag
; register, most significant bit first, zero if bit is not
; a flag. First 16 entries are for bit set, second 16 for
; bit reset.

FLAGTAB DW      0
        DW      0
        DW      0
        DW      0
        DB      "OV"
        DB      "DN"
        DB      "EI"                    ; "STI"
        DW      0
        DB      "NG"
        DB      "ZR"
        DW      0
        DB      "AC"
        DW      0
        DB      "PE"
        DW      0
        DB      "CY"
        DW      0
        DW      0
        DW      0
        DW      0
        DB      "NV"
        DB      "UP"                    ; "CLD"
        DB      "DI"
        DW      0
        DB      "PL"
        DB      "NZ"
        DW      0
        DB      "NA"
        DW      0
        DB      "PO"
        DW      0
        DB      "NC"

        DB      80H DUP(?)
STACK   LABEL   BYTE


; Register save area

AXSAVE  DW      0
BXSAVE  DW      0
CXSAVE  DW      0
DXSAVE  DW      0
SPSAVE  DW      5AH
BPSAVE  DW      0
SISAVE  DW      0
DISAVE  DW      0
DSSAVE  DW      0
ESSAVE  DW      0
RSTACK  LABEL   WORD                    ; Stack set here so registers can be saved by pushing
SSSAVE  DW      0
CSSAVE  DW      0
IPSAVE  DW      100H
FSAVE   DW      0

REGDIF  EQU      AXSAVE-REGTAB

; RAM area.

RDFLG   DB      READ
TOTREG  DB      13
DSIZ    DB      0FH
NOREGL  DB      8
DISPB   DW      128

LBUFSIZ         DB      BUFLEN
LBUFFCNT        DB      0
LINEBUF DB      0DH
        DB      BUFLEN DUP (?)
PFLAG   DB      0
COLPOS  DB      0

        IF      SYSVER
CONFCB  DB      0
        DB      "PRN        "
        DB      25 DUP(0)

POUT    DD      ?
COUT    DD      ?
CIN     DD      ?
IOBUFF  DB      3 DUP (?)
IOADDR  DD      ?

IOCALL          DB      22
                DB      0
IOCOM           DB      0
IOSTAT          DW      0
                DB      8 DUP (0)
IOCHRET         DB      0
                DW      OFFSET DG:IOBUFF
IOSEG           DW      ?
IOCNT           DW      1
                DW      0
        ENDIF

QFLAG   DB      0
NEWEXEC DB      0
RETSAVE DW      ?

USER_PROC_PDB DW ?

HEADSAVE DW     ?

EXEC_BLOCK LABEL BYTE
        DW      0
COM_LINE LABEL  DWORD
        DW      80H
        DW      ?
COM_FCB1 LABEL  DWORD
        DW      FCB
        DW      ?
COM_FCB2 LABEL  DWORD
        DW      FCB + 10H
        DW      ?
COM_SSSP DD     ?
COM_CSIP DD     ?

CONST   ENDS
        END