#PBFORMS CREATED V1.50 '-------------------------------------------------------------- ' The first line in this file is a PB/Forms metastatement. ' It should ALWAYS be the first line of the file. Other ' PB/Forms metastatements are placed at the beginning and ' end of "Named Blocks" of code that should be edited ' with PBForms only. Do not manually edit or delete these ' metastatements or PB/Forms will not be able to reread ' the file correctly. See the PB/Forms documentation for ' more information. ' Named blocks begin like this: #PBFORMS BEGIN ... ' Named blocks end like this: #PBFORMS END ... ' Other PB/Forms metastatements such as: ' #PBFORMS DECLARATIONS ' are used by PB/Forms to insert additional code. ' Feel free to make changes anywhere else in the file. '-------------------------------------------------------------- #COMPILE EXE #DIM ALL '-------------------------------------------------------------- ' ** Includes ** '-------------------------------------------------------------- #PBFORMS BEGIN INCLUDES #IF NOT %DEF(%WINAPI) #INCLUDE "WIN32API.INC" #ENDIF #PBFORMS END INCLUDES '-------------------------------------------------------------- '-------------------------------------------------------------- ' ** Constants ** '-------------------------------------------------------------- #PBFORMS BEGIN CONSTANTS %IDD_DIALOG1_FPUVIEWER = 101 %IDC_LABEL_ST0 = 1001 %IDC_LABEL_ST1 = 1002 %IDC_LABEL_ST2 = 1003 %IDC_LABEL_ST3 = 1004 %IDC_LABEL_ST4 = 1005 %IDC_LABEL_ST5 = 1006 %IDC_LABEL_ST6 = 1007 %IDC_LABEL_ST7 = 1008 %IDC_REG_ST0 = 1009 %IDC_REG_ST1 = 1010 %IDC_REG_ST2 = 1011 %IDC_REG_ST3 = 1012 %IDC_REG_ST4 = 1013 %IDC_REG_ST5 = 1014 %IDC_REG_ST6 = 1015 %IDC_REG_ST7 = 1016 %IDC_LABEL9 = 1025 '* %IDC_TAG0 = 1017 %IDC_TAG1 = 1018 %IDC_TAG2 = 1019 %IDC_TAG3 = 1020 %IDC_TAG4 = 1021 %IDC_TAG5 = 1022 %IDC_TAG6 = 1023 %IDC_TAG7 = 1024 %IDC_LABEL1 = 1026 %IDC_LABEL2 = 1027 %IDC_BUTTON_RUN = 1028 %IDC_LABEL3 = 1030 %IDC_LABEL4 = 1031 %IDC_LABEL_IC = 1033 %IDC_REG_IC = 1032 %IDC_LABEL_RC = 1034 %IDC_LABEL_PC = 1036 %IDC_LABEL_PM = 1038 %IDC_LABEL_UM = 1040 %IDC_LABEL_OM = 1042 %IDC_LABEL_ZM = 1044 %IDC_LABEL14 = 1050 '* %IDC_LABEL16 = 1051 '* %IDC_LABEL_DM = 1047 %IDC_LABEL_IM = 1049 %IDC_REG_RC = 1035 %IDC_REG_PC = 1037 %IDC_REG_PM = 1039 %IDC_REG_UM = 1041 %IDC_REG_OM = 1043 %IDC_REG_ZM = 1045 %IDC_REG_DM = 1046 %IDC_REG_IM = 1048 %IDC_LABEL5 = 1052 '* %IDC_INPUT = 1080 %IDC_LABEL_B = 1069 %IDC_REG_B = 1068 %IDC_LABEL_C3 = 1067 %IDC_REG_C3 = 1066 %IDC_LABEL_TOP = 1065 %IDC_REG_TOP = 1064 %IDC_LABEL_C2 = 1063 %IDC_REG_C2 = 1062 %IDCANCEL = 2 %IDC_LABEL_C1 = 1061 %IDC_LABEL_C0 = 1059 %IDC_LABEL_IR = 1057 %IDC_REG_IR = 1056 %IDC_REG_C0 = 1058 %IDC_REG_C1 = 1060 %IDC_LABEL_SF = 1055 %IDC_REG_SF = 1054 %IDC_REG_P = 1053 %IDC_LABEL_U = 1079 %IDC_REG_U = 1078 %IDC_LABEL_O = 1077 %IDC_REG_O = 1076 %IDC_LABEL_Z = 1075 %IDC_REG_Z = 1074 %IDC_LABEL_D = 1073 %IDC_REG_D = 1072 %IDC_LABEL_I = 1071 %IDC_REG_I = 1070 %IDC_BUTTON_HELP = 1081 %IDC_LABEL_P = 1082 %IDC_LABEL_IEM = 1084 %IDC_REG_IEM = 1083 %IDC_LINE1 = 1085 %IDC_LABEL_CONTROL_HELP = 1087 %IDC_LABEL_TAGS_HELP = 1086 %IDC_LABEL_STATUS_HELP = 1088 #PBFORMS END CONSTANTS %FPUSLEEP =2000 $D0=CHR$(0) + CHR$(0) $D1=CHR$(0) + CHR$(1) $D2=CHR$(1) + CHR$(0) $D3=CHR$(1) + CHR$(1) '-------------------------------------------------------------- TYPE FPUENV ControlWord AS WORD Unused1 AS WORD StatusWord AS WORD Unused2 AS WORD TagWord AS WORD Unused3 AS WORD InstructionPointer AS DWORD CodeSegment AS WORD Unused4 AS WORD OperandAddress AS DWORD DataSegment AS WORD Unused5 AS WORD st0 AS EXT st1 AS EXT st2 AS EXT st3 AS EXT st4 AS EXT st5 AS EXT st6 AS EXT st7 AS EXT END TYPE MACRO xtoy 'st0 ^ st1 !fyl2x ;Compute x*log(y) !fld st(0) ;Duplicate top of stack !frndint ;Compute INTEGER portion. !fsubr st(0), st(1) ;Compute fractional part. !f2xm1 ;Compute 2**FRAC(x)-1. !fld1 !fadd ;Compute 2**FRAC(x). !fscale ;Compute 2**INT(x) * 2**FRAC(x). !fxch !fstp st(0) END MACRO '-------------------------------------------------------------- ' ** Declarations ** '-------------------------------------------------------------- DECLARE CALLBACK FUNCTION ShowDIALOG1_FPUVIEWERProc() DECLARE FUNCTION ShowDIALOG1_FPUVIEWER(BYVAL hParent AS DWORD) AS LONG #PBFORMS DECLARATIONS '-------------------------------------------------------------- '-------------------------------------------------------------- ' ** Main Application Entry Point ** '-------------------------------------------------------------- FUNCTION PBMAIN() ShowDIALOG1_FPUVIEWER %HWND_DESKTOP END FUNCTION '-------------------------------------------------------------- FUNCTION UpdateFPUView(parent AS LONG,s AS STRING) AS LONG LOCAL f AS fpuenv LOCAL temp AS LONG LOCAL tag1 AS LONG, tag2 AS LONG, tagresult AS STRING LOCAL status1 AS LONG, status2 AS LONG , status3 AS LONG LOCAL control1 AS LONG, control2 AS LONG LOCAL statustop AS LONG DIM mytagstemp(7) AS LONG DIM mytags(7) AS LONG LOCAL a AS DOUBLE !fstenv f CONTROL SET TEXT parent,%IDC_INPUT,s status1=BIT(f.statusword,11) status2=BIT(f.statusword,12) status3=BIT(f.statusword,13) statustop=status1+ status2*2 + status3*4 : CONTROL SET TEXT parent,%IDC_REG_TOP,STR$(statustop) status1=BIT(f.statusword,15): CONTROL SET TEXT parent,%IDC_REG_B,STR$(status1) status1=BIT(f.statusword,14): CONTROL SET TEXT parent,%IDC_REG_C3,STR$(status1) status1=BIT(f.statusword,10): CONTROL SET TEXT parent,%IDC_REG_C2,STR$(status1) status1=BIT(f.statusword,9): CONTROL SET TEXT parent,%IDC_REG_C1,STR$(status1) status1=BIT(f.statusword,8): CONTROL SET TEXT parent,%IDC_REG_C0,STR$(status1) status1=BIT(f.statusword,7): CONTROL SET TEXT parent,%IDC_REG_IR,STR$(status1) status1=BIT(f.statusword,6): CONTROL SET TEXT parent,%IDC_REG_SF,STR$(status1) status1=BIT(f.statusword,5): CONTROL SET TEXT parent,%IDC_REG_P,STR$(status1) status1=BIT(f.statusword,4): CONTROL SET TEXT parent,%IDC_REG_U,STR$(status1) status1=BIT(f.statusword,3): CONTROL SET TEXT parent,%IDC_REG_O,STR$(status1) status1=BIT(f.statusword,2): CONTROL SET TEXT parent,%IDC_REG_Z,STR$(status1) status1=BIT(f.statusword,1): CONTROL SET TEXT parent,%IDC_REG_D,STR$(status1) status1=BIT(f.statusword,0): CONTROL SET TEXT parent,%IDC_REG_I,STR$(status1) control1=BIT(f.controlword,12): CONTROL SET TEXT parent,%IDC_REG_IC,STR$(control1) control1=BIT(f.controlword,10): control2=BIT(f.controlword,11): CONTROL SET TEXT parent,%IDC_REG_RC,STR$(control1+control2*2) control1=BIT(f.controlword,8): control2=BIT(f.controlword,9): CONTROL SET TEXT parent,%IDC_REG_PC,STR$(control1+control2*2) control1=BIT(f.controlword,7): CONTROL SET TEXT parent,%IDC_REG_IEM,STR$(control1) control1=BIT(f.controlword,5): CONTROL SET TEXT parent,%IDC_REG_PM,STR$(control1) control1=BIT(f.controlword,4): CONTROL SET TEXT parent,%IDC_REG_UM,STR$(control1) control1=BIT(f.controlword,3): CONTROL SET TEXT parent,%IDC_REG_OM,STR$(control1) control1=BIT(f.controlword,2): CONTROL SET TEXT parent,%IDC_REG_ZM,STR$(control1) control1=BIT(f.controlword,1): CONTROL SET TEXT parent,%IDC_REG_DM,STR$(control1) control1=BIT(f.controlword,0): CONTROL SET TEXT parent,%IDC_REG_IM,STR$(control1) tag1=BIT(f.tagword,0) :tag2=BIT(f.tagword,1) : mytagstemp(0)=(tag1+tag2*2) tag1=BIT(f.tagword,2) :tag2=BIT(f.tagword,3) : mytagstemp(1)=(tag1+tag2*2) tag1=BIT(f.tagword,4) :tag2=BIT(f.tagword,5) : mytagstemp(2)=(tag1+tag2*2) tag1=BIT(f.tagword,6) :tag2=BIT(f.tagword,7) : mytagstemp(3)=(tag1+tag2*2) tag1=BIT(f.tagword,8) :tag2=BIT(f.tagword,9) : mytagstemp(4)=(tag1+tag2*2) tag1=BIT(f.tagword,10) :tag2=BIT(f.tagword,11) : mytagstemp(5)=(tag1+tag2*2) tag1=BIT(f.tagword,12) :tag2=BIT(f.tagword,13) : mytagstemp(6)=(tag1+tag2*2) tag1=BIT(f.tagword,14) :tag2=BIT(f.tagword,15) : mytagstemp(7)=(tag1+tag2*2) IF statustop=7 THEN mytags(0)=mytagstemp(7) : mytags(1)=mytagstemp(0) : mytags(2)=mytagstemp(1) : mytags(3)=mytagstemp(2) mytags(4)=mytagstemp(3) : mytags(5)=mytagstemp(4) : mytags(6)=mytagstemp(5) : mytags(7)=mytagstemp(6) END IF IF statustop=6 THEN mytags(0)=mytagstemp(6) : mytags(1)=mytagstemp(7) : mytags(2)=mytagstemp(0) : mytags(3)=mytagstemp(1) mytags(4)=mytagstemp(2) : mytags(5)=mytagstemp(3) : mytags(6)=mytagstemp(4) : mytags(7)=mytagstemp(5) END IF IF statustop=5 THEN mytags(0)=mytagstemp(5) : mytags(1)=mytagstemp(6) : mytags(2)=mytagstemp(7) : mytags(3)=mytagstemp(0) mytags(4)=mytagstemp(1) : mytags(5)=mytagstemp(2) : mytags(6)=mytagstemp(3) : mytags(7)=mytagstemp(4) END IF IF statustop=4 THEN mytags(0)=mytagstemp(4) : mytags(1)=mytagstemp(5) : mytags(2)=mytagstemp(6) : mytags(3)=mytagstemp(7) mytags(4)=mytagstemp(1) : mytags(5)=mytagstemp(2) : mytags(6)=mytagstemp(3) : mytags(7)=mytagstemp(4) END IF IF statustop=3 THEN mytags(0)=mytagstemp(3) : mytags(1)=mytagstemp(4) : mytags(2)=mytagstemp(5) : mytags(3)=mytagstemp(6) mytags(4)=mytagstemp(7) : mytags(5)=mytagstemp(0) : mytags(6)=mytagstemp(1) : mytags(7)=mytagstemp(2) END IF IF statustop=2 THEN mytags(0)=mytagstemp(2) : mytags(1)=mytagstemp(3) : mytags(2)=mytagstemp(4) : mytags(3)=mytagstemp(5) mytags(4)=mytagstemp(6) : mytags(5)=mytagstemp(7) : mytags(6)=mytagstemp(0) : mytags(7)=mytagstemp(1) END IF IF statustop=1 THEN mytags(0)=mytagstemp(1) : mytags(1)=mytagstemp(2) : mytags(2)=mytagstemp(3) : mytags(3)=mytagstemp(4) mytags(4)=mytagstemp(5) : mytags(5)=mytagstemp(6) : mytags(6)=mytagstemp(7) : mytags(7)=mytagstemp(0) END IF IF statustop=0 THEN mytags(0)=mytagstemp(0) : mytags(1)=mytagstemp(1) : mytags(2)=mytagstemp(2) : mytags(3)=mytagstemp(3) mytags(4)=mytagstemp(4) : mytags(5)=mytagstemp(5) : mytags(6)=mytagstemp(6) : mytags(7)=mytagstemp(7) END IF CONTROL SET TEXT parent,%IDC_TAG0,STR$(mytags(0)) CONTROL SET TEXT parent,%IDC_TAG1,STR$(mytags(1)) CONTROL SET TEXT parent,%IDC_TAG2,STR$(mytags(2)) CONTROL SET TEXT parent,%IDC_TAG3,STR$(mytags(3)) CONTROL SET TEXT parent,%IDC_TAG4,STR$(mytags(4)) CONTROL SET TEXT parent,%IDC_TAG5,STR$(mytags(5)) CONTROL SET TEXT parent,%IDC_TAG6,STR$(mytags(6)) CONTROL SET TEXT parent,%IDC_TAG7,STR$(mytags(7)) CONTROL SET TEXT parent,%IDC_REG_ST0,"Empty" CONTROL SET TEXT parent,%IDC_REG_ST1,"Empty" CONTROL SET TEXT parent,%IDC_REG_ST2,"Empty" CONTROL SET TEXT parent,%IDC_REG_ST3,"Empty" CONTROL SET TEXT parent,%IDC_REG_ST4,"Empty" CONTROL SET TEXT parent,%IDC_REG_ST5,"Empty" CONTROL SET TEXT parent,%IDC_REG_ST6,"Empty" CONTROL SET TEXT parent,%IDC_REG_ST7,"Empty" IF mytags(0) < 2 THEN !fst a CONTROL SET TEXT parent,%IDC_REG_ST0,STR$(a) ELSEIF mytags(0)=2 THEN CONTROL SET TEXT parent,%IDC_REG_ST0,"NAN,Infinity,Denormal" ELSE CONTROL SET TEXT parent,%IDC_REG_ST0,"Empty" END IF IF statustop < 7 THEN !fxch st(1) IF mytags(1) < 2 THEN !fst a CONTROL SET TEXT parent,%IDC_REG_ST1,STR$(a) ELSEIF mytags(1)=2 THEN CONTROL SET TEXT parent,%IDC_REG_ST1,"NAN,Infinity,Denormal" ELSE CONTROL SET TEXT parent,%IDC_REG_ST1,"Empty" END IF !fxch st(1) END IF IF statustop < 6 THEN !fxch st(2) IF mytags(2) < 2 THEN !fst a CONTROL SET TEXT parent,%IDC_REG_ST2,STR$(a) ELSEIF mytags(2)=2 THEN CONTROL SET TEXT parent,%IDC_REG_ST2,"NAN,Infinity,Denormal" ELSE CONTROL SET TEXT parent,%IDC_REG_ST2,"Empty" END IF !fxch st(2) END IF IF statustop < 5 THEN !fxch st(3) IF mytags(3) < 2 THEN !fst a CONTROL SET TEXT parent,%IDC_REG_ST3,STR$(a) ELSEIF mytags(3)=2 THEN CONTROL SET TEXT parent,%IDC_REG_ST3,"NAN,Infinity,Denormal" ELSE CONTROL SET TEXT parent,%IDC_REG_ST3,"Empty" END IF !fxch st(3) END IF IF statustop < 4 THEN !fxch st(4) IF mytags(4) < 2 THEN !fst a CONTROL SET TEXT parent,%IDC_REG_ST4,STR$(a) ELSEIF mytags(4)=2 THEN CONTROL SET TEXT parent,%IDC_REG_ST4,"NAN,Infinity,Denormal" ELSE CONTROL SET TEXT parent,%IDC_REG_ST4,"Empty" END IF !fxch st(4) END IF IF statustop < 3 THEN !fxch st(5) IF mytags(5) < 2 THEN !fst a CONTROL SET TEXT parent,%IDC_REG_ST5,STR$(a) ELSEIF mytags(5)=2 THEN CONTROL SET TEXT parent,%IDC_REG_ST5,"NAN,Infinity,Denormal" ELSE CONTROL SET TEXT parent,%IDC_REG_ST5,"Empty" END IF !fxch st(5) END IF IF statustop < 2 THEN !fxch st(6) IF mytags(6) < 2 THEN !fst a CONTROL SET TEXT parent,%IDC_REG_ST6,STR$(a) ELSEIF mytags(6)=2 THEN CONTROL SET TEXT parent,%IDC_REG_ST6,"NAN,Infinity,Denormal" ELSE CONTROL SET TEXT parent,%IDC_REG_ST6,"Empty" END IF !fxch st(6) END IF IF statustop < 1 THEN !fxch st(7) IF mytags(7) < 2 THEN !fst a CONTROL SET TEXT parent,%IDC_REG_ST7,STR$(a) ELSEIF mytags(7)=2 THEN CONTROL SET TEXT parent,%IDC_REG_ST7,"NAN,Infinity,Denormal" ELSE CONTROL SET TEXT parent,%IDC_REG_ST7,"Empty" END IF !fxch st(7) END IF 'SLEEP %FPUSLEEP MSGBOX "Click the OK button to proceed" END FUNCTION FUNCTION fpuRun(parent AS LONG) AS LONG LOCAL s AS STRING LOCAL a AS DOUBLE LOCAL c AS DOUBLE !finit a=1.0 !fld a s="!fld 1" : UpdateFPUView(parent,s) a=2.0 !fld a s="!fld 2" : UpdateFPUView(parent,s) !fadd s="!fadd" : UpdateFPUView(parent,s) a=4 !fld a s="!fld 4" : UpdateFPUView(parent,s) xtoy s="4^3" : UpdateFPUView(parent,s) '!fstp a ' END FUNCTION '-------------------------------------------------------------- ' ** CallBacks ** '-------------------------------------------------------------- CALLBACK FUNCTION ShowDIALOG1_FPUVIEWERProc() SELECT CASE AS LONG CBMSG CASE %WM_INITDIALOG ' Initialization handler CASE %WM_NCACTIVATE STATIC hWndSaveFocus AS DWORD IF ISFALSE CBWPARAM THEN ' Save control focus hWndSaveFocus = GetFocus() ELSEIF hWndSaveFocus THEN ' Restore control focus SetFocus(hWndSaveFocus) hWndSaveFocus = 0 END IF CASE %WM_COMMAND ' Process control notifications SELECT CASE AS LONG CBCTL CASE %IDC_BUTTON_RUN IF CBCTLMSG = %BN_CLICKED OR CBCTLMSG = 1 THEN fpurun(CBHNDL) END IF CASE %IDCANCEL IF CBCTLMSG = %BN_CLICKED OR CBCTLMSG = 1 THEN DIALOG END CBHNDL, 0 END IF END SELECT END SELECT END FUNCTION '-------------------------------------------------------------- '-------------------------------------------------------------- ' ** Dialogs ** '-------------------------------------------------------------- FUNCTION ShowDIALOG1_FPUVIEWER(BYVAL hParent AS DWORD) AS LONG LOCAL lRslt AS LONG LOCAL tagstr AS STRING LOCAL controlstr AS STRING LOCAL statusstr AS STRING tagstr= "Tag=0 The register contains a valid non-zero value" + $CRLF tagstr=tagstr + "Tag=1 The register contains a value equal to zero" + $CRLF tagstr=tagstr + "Tag=2 The register contains a special value (NAN, infinity, or denormal)" + $CRLF tagstr=tagstr + "Tag=3 The register is empty" controlstr= "IC Infinity Control 0=both unsigned infinity, 1=Respect +inf and -inf" + $CRLF controlstr=controlstr + "RC Rounding Control 0=nearest, 1=round down, 2=round up, 3=truncate" + $CRLF controlstr=controlstr + "PC Precision Control 0=24 bits,1=not used, 2=53 bits, 3=64 bits" + $CRLF controlstr=controlstr + "IEM Interupt Enable Mask 0=enabled 1=disabled" + $CRLF controlstr=controlstr + "PM Precision Mask" + $CRLF controlstr=controlstr + "UM Underflow Mask" + $CRLF controlstr=controlstr + "OM Overflow Mask" + $CRLF controlstr=controlstr + "ZM Zero Divide Mask" + $CRLF controlstr=controlstr + "DM Denormalized Mask" + $CRLF controlstr=controlstr + "IM Invalid Operation Mask" + $CRLF statusstr= "B Busy 0=idle 1=busy" + $CRLF statusstr=statusstr + "C3 Condition Code" + $CRLF statusstr=statusstr + "TOP Which of the 8 slots is at ST0" + $CRLF statusstr=statusstr + "C2 Condition Code" + $CRLF statusstr=statusstr + "C1 Condition Code" + $CRLF statusstr=statusstr + "C0 Condition Code" + $CRLF statusstr=statusstr + "IR Interrupt Request" + $CRLF statusstr=statusstr + "SF Stack Fault" + $CRLF statusstr=statusstr + "P Precision Exception - some precision lost on last instruction" + $CRLF statusstr=statusstr + "U Underflow Exception" + $CRLF statusstr=statusstr + "O Overflow Exception" + $CRLF statusstr=statusstr + "Z Zero Divide Exception" + $CRLF statusstr=statusstr + "D Denormalization Exception" + $CRLF statusstr=statusstr + "I Invalid Operation Exception" + $CRLF #PBFORMS BEGIN DIALOG %IDD_DIALOG1_FPUVIEWER->-> LOCAL hDlg AS DWORD DIALOG NEW hParent, "FPU Viewer", 70, 70, 533, 299, TO hDlg CONTROL ADD LABEL, hDlg, %IDC_LABEL_ST0, "ST0", 5, 15, 25, 10 CONTROL ADD LABEL, hDlg, %IDC_LABEL_ST1, "ST1", 5, 25, 25, 10 CONTROL ADD LABEL, hDlg, %IDC_LABEL_ST2, "ST2", 5, 35, 25, 10 CONTROL ADD LABEL, hDlg, %IDC_LABEL_ST3, "ST3", 5, 45, 25, 10 CONTROL ADD LABEL, hDlg, %IDC_LABEL_ST4, "ST4", 5, 55, 25, 10 CONTROL ADD LABEL, hDlg, %IDC_LABEL_ST5, "ST5", 5, 65, 25, 10 CONTROL ADD LABEL, hDlg, %IDC_LABEL_ST6, "ST6", 5, 75, 25, 10 CONTROL ADD LABEL, hDlg, %IDC_LABEL_ST7, "ST7", 5, 85, 25, 10 CONTROL ADD LABEL, hDlg, %IDC_REG_ST0, "0", 30, 15, 120, 10 CONTROL SET COLOR hDlg, %IDC_REG_ST0, -1, %WHITE CONTROL ADD LABEL, hDlg, %IDC_REG_ST1, "0", 30, 25, 120, 10 CONTROL SET COLOR hDlg, %IDC_REG_ST1, -1, %WHITE CONTROL ADD LABEL, hDlg, %IDC_REG_ST2, "0", 30, 35, 120, 10 CONTROL SET COLOR hDlg, %IDC_REG_ST2, -1, %WHITE CONTROL ADD LABEL, hDlg, %IDC_REG_ST3, "0", 30, 45, 120, 10 CONTROL SET COLOR hDlg, %IDC_REG_ST3, -1, %WHITE CONTROL ADD LABEL, hDlg, %IDC_REG_ST4, "0", 30, 55, 120, 10 CONTROL SET COLOR hDlg, %IDC_REG_ST4, -1, %WHITE CONTROL ADD LABEL, hDlg, %IDC_REG_ST5, "0", 30, 65, 120, 10 CONTROL SET COLOR hDlg, %IDC_REG_ST5, -1, %WHITE CONTROL ADD LABEL, hDlg, %IDC_REG_ST6, "0", 30, 75, 120, 10 CONTROL SET COLOR hDlg, %IDC_REG_ST6, -1, %WHITE CONTROL ADD LABEL, hDlg, %IDC_REG_ST7, "0", 30, 85, 120, 10 CONTROL SET COLOR hDlg, %IDC_REG_ST7, -1, %WHITE CONTROL ADD LABEL, hDlg, %IDC_TAG0, "", 150, 15, 50, 10 CONTROL ADD LABEL, hDlg, %IDC_TAG1, "", 150, 25, 50, 10 CONTROL ADD LABEL, hDlg, %IDC_TAG2, "", 150, 35, 50, 10 CONTROL ADD LABEL, hDlg, %IDC_TAG3, "", 150, 45, 50, 10 CONTROL ADD LABEL, hDlg, %IDC_TAG4, "", 150, 55, 50, 10 CONTROL ADD LABEL, hDlg, %IDC_TAG5, "", 150, 65, 50, 10 CONTROL ADD LABEL, hDlg, %IDC_TAG6, "", 150, 75, 50, 10 CONTROL ADD LABEL, hDlg, %IDC_TAG7, "", 150, 85, 50, 10 CONTROL ADD LABEL, hDlg, %IDC_LABEL1, "Tag", 160, 0, 35, 10 CONTROL ADD LABEL, hDlg, %IDC_LABEL2, "Content", 30, 0, 70, 10 CONTROL ADD BUTTON, hDlg, %IDC_BUTTON_RUN, "Run", 80, 270, 50, 20 CONTROL ADD BUTTON, hDlg, %IDCANCEL, "Done", 135, 270, 50, 20 CONTROL ADD LABEL, hDlg, %IDC_LABEL3, "Control Word", 10, 100, 45, 10 CONTROL ADD LABEL, hDlg, %IDC_LABEL4, "Status Word", 145, 100, 45, 10 CONTROL ADD LABEL, hDlg, %IDC_REG_IC, "", 35, 110, 40, 10 CONTROL SET COLOR hDlg, %IDC_REG_IC, -1, %WHITE CONTROL ADD LABEL, hDlg, %IDC_LABEL_IC, "IC", 10, 110, 25, 10 CONTROL ADD LABEL, hDlg, %IDC_LABEL_RC, "RC", 10, 120, 25, 10 CONTROL ADD LABEL, hDlg, %IDC_REG_RC, "", 35, 120, 40, 10 CONTROL SET COLOR hDlg, %IDC_REG_RC, -1, %WHITE CONTROL ADD LABEL, hDlg, %IDC_LABEL_PC, "PC", 10, 130, 25, 10 CONTROL ADD LABEL, hDlg, %IDC_REG_PC, "", 35, 130, 40, 10 CONTROL SET COLOR hDlg, %IDC_REG_PC, -1, %WHITE CONTROL ADD LABEL, hDlg, %IDC_LABEL_PM, "PM", 10, 150, 25, 10 CONTROL ADD LABEL, hDlg, %IDC_REG_PM, "", 35, 150, 40, 10 CONTROL SET COLOR hDlg, %IDC_REG_PM, -1, %WHITE CONTROL ADD LABEL, hDlg, %IDC_LABEL_UM, "UM", 10, 160, 25, 10 CONTROL ADD LABEL, hDlg, %IDC_REG_UM, "", 35, 160, 40, 10 CONTROL SET COLOR hDlg, %IDC_REG_UM, -1, %WHITE CONTROL ADD LABEL, hDlg, %IDC_LABEL_OM, "OM", 10, 170, 25, 10 CONTROL ADD LABEL, hDlg, %IDC_REG_OM, "", 35, 170, 40, 10 CONTROL SET COLOR hDlg, %IDC_REG_OM, -1, %WHITE CONTROL ADD LABEL, hDlg, %IDC_LABEL_ZM, "ZM", 10, 180, 25, 10 CONTROL ADD LABEL, hDlg, %IDC_REG_ZM, "", 35, 180, 40, 10 CONTROL SET COLOR hDlg, %IDC_REG_ZM, -1, %WHITE CONTROL ADD LABEL, hDlg, %IDC_REG_DM, "", 35, 190, 40, 10 CONTROL SET COLOR hDlg, %IDC_REG_DM, -1, %WHITE CONTROL ADD LABEL, hDlg, %IDC_LABEL_DM, "DM", 10, 190, 25, 10 CONTROL ADD LABEL, hDlg, %IDC_REG_IM, "", 35, 200, 40, 10 CONTROL SET COLOR hDlg, %IDC_REG_IM, -1, %WHITE CONTROL ADD LABEL, hDlg, %IDC_LABEL_IM, "IM", 10, 200, 25, 10 CONTROL ADD LABEL, hDlg, %IDC_REG_P, "", 160, 190, 40, 10 CONTROL SET COLOR hDlg, %IDC_REG_P, -1, %WHITE CONTROL ADD LABEL, hDlg, %IDC_LABEL_P, "P", 135, 190, 25, 10 CONTROL ADD LABEL, hDlg, %IDC_REG_SF, "", 160, 180, 40, 10 CONTROL SET COLOR hDlg, %IDC_REG_SF, -1, %WHITE CONTROL ADD LABEL, hDlg, %IDC_LABEL_SF, "SF", 135, 180, 25, 10 CONTROL ADD LABEL, hDlg, %IDC_REG_IR, "", 160, 170, 40, 10 CONTROL SET COLOR hDlg, %IDC_REG_IR, -1, %WHITE CONTROL ADD LABEL, hDlg, %IDC_LABEL_IR, "IR", 135, 170, 25, 10 CONTROL ADD LABEL, hDlg, %IDC_REG_C0, "", 160, 160, 40, 10 CONTROL SET COLOR hDlg, %IDC_REG_C0, -1, %WHITE CONTROL ADD LABEL, hDlg, %IDC_LABEL_C0, "C0", 135, 160, 25, 10 CONTROL ADD LABEL, hDlg, %IDC_REG_C1, "", 160, 150, 40, 10 CONTROL SET COLOR hDlg, %IDC_REG_C1, -1, %WHITE CONTROL ADD LABEL, hDlg, %IDC_LABEL_C1, "C1", 135, 150, 25, 10 CONTROL ADD LABEL, hDlg, %IDC_REG_C2, "", 160, 140, 40, 10 CONTROL SET COLOR hDlg, %IDC_REG_C2, -1, %WHITE CONTROL ADD LABEL, hDlg, %IDC_LABEL_C2, "C2", 135, 140, 25, 10 CONTROL ADD LABEL, hDlg, %IDC_REG_TOP, "", 160, 130, 40, 10 CONTROL SET COLOR hDlg, %IDC_REG_TOP, -1, %WHITE CONTROL ADD LABEL, hDlg, %IDC_LABEL_TOP, "TOP", 135, 130, 25, 10 CONTROL ADD LABEL, hDlg, %IDC_REG_C3, "", 160, 120, 40, 10 CONTROL SET COLOR hDlg, %IDC_REG_C3, -1, %WHITE CONTROL ADD LABEL, hDlg, %IDC_LABEL_C3, "C3", 135, 120, 25, 10 CONTROL ADD LABEL, hDlg, %IDC_REG_B, "", 160, 110, 40, 10 CONTROL SET COLOR hDlg, %IDC_REG_B, -1, %WHITE CONTROL ADD LABEL, hDlg, %IDC_LABEL_B, "B", 135, 110, 25, 10 CONTROL ADD LABEL, hDlg, %IDC_REG_I, "", 160, 240, 40, 10 CONTROL SET COLOR hDlg, %IDC_REG_I, -1, %WHITE CONTROL ADD LABEL, hDlg, %IDC_LABEL_I, "I", 135, 240, 25, 10 CONTROL ADD LABEL, hDlg, %IDC_REG_D, "", 160, 230, 40, 10 CONTROL SET COLOR hDlg, %IDC_REG_D, -1, %WHITE CONTROL ADD LABEL, hDlg, %IDC_LABEL_D, "D", 135, 230, 25, 10 CONTROL ADD LABEL, hDlg, %IDC_REG_Z, "", 160, 220, 40, 10 CONTROL SET COLOR hDlg, %IDC_REG_Z, -1, %WHITE CONTROL ADD LABEL, hDlg, %IDC_LABEL_Z, "Z", 135, 220, 25, 10 CONTROL ADD LABEL, hDlg, %IDC_REG_O, "", 160, 210, 40, 10 CONTROL SET COLOR hDlg, %IDC_REG_O, -1, %WHITE CONTROL ADD LABEL, hDlg, %IDC_LABEL_O, "O", 135, 210, 25, 10 CONTROL ADD LABEL, hDlg, %IDC_REG_U, "", 160, 200, 40, 10 CONTROL SET COLOR hDlg, %IDC_REG_U, -1, %WHITE CONTROL ADD LABEL, hDlg, %IDC_LABEL_U, "U", 135, 200, 25, 10 CONTROL ADD LABEL, hDlg, %IDC_INPUT, "", 5, 255, 195, 10 CONTROL SET COLOR hDlg, %IDC_INPUT, -1, %WHITE ' CONTROL ADD BUTTON, hDlg, %IDC_BUTTON_HELP, "Help", 5, 270, 50, 20 CONTROL ADD LABEL, hDlg, %IDC_REG_IEM, "", 35, 140, 40, 10 CONTROL SET COLOR hDlg, %IDC_REG_IEM, -1, %WHITE CONTROL ADD LABEL, hDlg, %IDC_LABEL_IEM, "IEM", 10, 140, 25, 10 CONTROL ADD LINE, hDlg, %IDC_LINE1, "Line1", 210, 5, 5, 285 CONTROL ADD LABEL, hDlg, %IDC_LABEL_TAGS_HELP, "Tags", 225, 5, 300, 40 CONTROL SET COLOR hDlg, %IDC_LABEL_TAGS_HELP, -1, %WHITE CONTROL ADD LABEL, hDlg, %IDC_LABEL_CONTROL_HELP, "Control Word", 225, _ 50, 300, 95 CONTROL SET COLOR hDlg, %IDC_LABEL_CONTROL_HELP, -1, %WHITE CONTROL ADD LABEL, hDlg, %IDC_LABEL_STATUS_HELP, "StatusWord", 225, 150, _ 300, 145 CONTROL SET COLOR hDlg, %IDC_LABEL_STATUS_HELP, -1, %WHITE #PBFORMS END DIALOG CONTROL SET TEXT hDlg,%IDC_LABEL_TAGS_HELP,tagstr CONTROL SET TEXT hDlg,%IDC_LABEL_CONTROL_HELP,controlstr CONTROL SET TEXT hDlg,%IDC_LABEL_STATUS_HELP,statusstr DIALOG SHOW MODAL hDlg, CALL ShowDIALOG1_FPUVIEWERProc TO lRslt #PBFORMS BEGIN CLEANUP %IDD_DIALOG1_FPUVIEWER #PBFORMS END CLEANUP FUNCTION = lRslt END FUNCTION