├── .gitattributes ├── .gitignore ├── README ├── c--other-info.zip ├── c--sphinx.narod.ru.zip ├── c--sphinx.sources.rar └── original.src ├── ASM.H ├── ASMNEMON.H ├── ASM_NAME.H ├── BC3.BAT ├── C--.DOC ├── C--.INI ├── C--32.IDE ├── C--32.MAK ├── C--NEWS.TXT ├── CLASS.CPP ├── COFF.H ├── CONST.H ├── DEBUG.CPP ├── DIRLIST.H ├── DISASM.CPP ├── ERRORS.CPP ├── FASTLIST ├── ASMNEMON.H ├── ASM_NAME.H ├── CONST.H ├── DIRLIST.H ├── DIR_NAME.H ├── FASTLIST.CPP ├── ID.H ├── ID_NAME.H ├── MAKEFILE ├── RES.H ├── RESNAME.H ├── RES_NAME.H └── fastlist.exe ├── ID.H ├── LE.H ├── LIBOBJ.CPP ├── MAIN.CPP ├── MAKEFILE ├── MAKEFILE.NT ├── MISC.CPP ├── NEW_TYPE.CPP ├── OPTREG.CPP ├── OUTLE.CPP ├── OUTOBJ.CPP ├── OUTPE.CPP ├── POINTER.CPP ├── PREDEF.TXT ├── RES.H ├── RESNAME.H ├── STARTUP.H-- ├── STRUCT.H ├── SWITCH.CPP ├── TABLE.H ├── TODO.TXT ├── TOK.H ├── TOKA.CPP ├── TOKB.CPP ├── TOKC.CPP ├── TOKE.CPP ├── TOKR.CPP ├── WC3.BAT ├── Wc3nt.bat ├── ZRDX.EXE ├── c--.exe └── res.cpp /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | 4 | # Custom for Visual Studio 5 | *.cs diff=csharp 6 | *.sln merge=union 7 | *.csproj merge=union 8 | *.vbproj merge=union 9 | *.fsproj merge=union 10 | *.dbproj merge=union 11 | 12 | # Standard to msysgit 13 | *.doc diff=astextplain 14 | *.DOC diff=astextplain 15 | *.docx diff=astextplain 16 | *.DOCX diff=astextplain 17 | *.dot diff=astextplain 18 | *.DOT diff=astextplain 19 | *.pdf diff=astextplain 20 | *.PDF diff=astextplain 21 | *.rtf diff=astextplain 22 | *.RTF diff=astextplain 23 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ################# 2 | ## Eclipse 3 | ################# 4 | 5 | *.pydevproject 6 | .project 7 | .metadata 8 | bin/ 9 | tmp/ 10 | *.tmp 11 | *.bak 12 | *.swp 13 | *~.nib 14 | local.properties 15 | .classpath 16 | .settings/ 17 | .loadpath 18 | 19 | # External tool builders 20 | .externalToolBuilders/ 21 | 22 | # Locally stored "Eclipse launch configurations" 23 | *.launch 24 | 25 | # CDT-specific 26 | .cproject 27 | 28 | # PDT-specific 29 | .buildpath 30 | 31 | 32 | ################# 33 | ## Visual Studio 34 | ################# 35 | 36 | ## Ignore Visual Studio temporary files, build results, and 37 | ## files generated by popular Visual Studio add-ons. 38 | 39 | # User-specific files 40 | *.suo 41 | *.user 42 | *.sln.docstates 43 | 44 | # Build results 45 | 46 | [Dd]ebug/ 47 | [Rr]elease/ 48 | x64/ 49 | build/ 50 | [Bb]in/ 51 | [Oo]bj/ 52 | 53 | # MSTest test Results 54 | [Tt]est[Rr]esult*/ 55 | [Bb]uild[Ll]og.* 56 | 57 | *_i.c 58 | *_p.c 59 | *.ilk 60 | *.meta 61 | *.obj 62 | *.pch 63 | *.pdb 64 | *.pgc 65 | *.pgd 66 | *.rsp 67 | *.sbr 68 | *.tlb 69 | *.tli 70 | *.tlh 71 | *.tmp 72 | *.tmp_proj 73 | *.log 74 | *.vspscc 75 | *.vssscc 76 | .builds 77 | *.pidb 78 | *.log 79 | *.scc 80 | 81 | # Visual C++ cache files 82 | ipch/ 83 | *.aps 84 | *.ncb 85 | *.opensdf 86 | *.sdf 87 | *.cachefile 88 | 89 | # Visual Studio profiler 90 | *.psess 91 | *.vsp 92 | *.vspx 93 | 94 | # Guidance Automation Toolkit 95 | *.gpState 96 | 97 | # ReSharper is a .NET coding add-in 98 | _ReSharper*/ 99 | *.[Rr]e[Ss]harper 100 | 101 | # TeamCity is a build add-in 102 | _TeamCity* 103 | 104 | # DotCover is a Code Coverage Tool 105 | *.dotCover 106 | 107 | # NCrunch 108 | *.ncrunch* 109 | .*crunch*.local.xml 110 | 111 | # Installshield output folder 112 | [Ee]xpress/ 113 | 114 | # DocProject is a documentation generator add-in 115 | DocProject/buildhelp/ 116 | DocProject/Help/*.HxT 117 | DocProject/Help/*.HxC 118 | DocProject/Help/*.hhc 119 | DocProject/Help/*.hhk 120 | DocProject/Help/*.hhp 121 | DocProject/Help/Html2 122 | DocProject/Help/html 123 | 124 | # Click-Once directory 125 | publish/ 126 | 127 | # Publish Web Output 128 | *.Publish.xml 129 | *.pubxml 130 | 131 | # NuGet Packages Directory 132 | ## TODO: If you have NuGet Package Restore enabled, uncomment the next line 133 | #packages/ 134 | 135 | # Windows Azure Build Output 136 | csx 137 | *.build.csdef 138 | 139 | # Windows Store app package directory 140 | AppPackages/ 141 | 142 | # Others 143 | sql/ 144 | *.Cache 145 | ClientBin/ 146 | [Ss]tyle[Cc]op.* 147 | ~$* 148 | *~ 149 | *.dbmdl 150 | *.[Pp]ublish.xml 151 | *.pfx 152 | *.publishsettings 153 | 154 | # RIA/Silverlight projects 155 | Generated_Code/ 156 | 157 | # Backup & report files from converting an old project file to a newer 158 | # Visual Studio version. Backup files are not needed, because we have git ;-) 159 | _UpgradeReport_Files/ 160 | Backup*/ 161 | UpgradeLog*.XML 162 | UpgradeLog*.htm 163 | 164 | # SQL Server files 165 | App_Data/*.mdf 166 | App_Data/*.ldf 167 | 168 | ############# 169 | ## Windows detritus 170 | ############# 171 | 172 | # Windows image file caches 173 | Thumbs.db 174 | ehthumbs.db 175 | 176 | # Folder config file 177 | Desktop.ini 178 | 179 | # Recycle Bin used on file shares 180 | $RECYCLE.BIN/ 181 | 182 | # Mac crap 183 | .DS_Store 184 | 185 | 186 | ############# 187 | ## Python 188 | ############# 189 | 190 | *.py[co] 191 | 192 | # Packages 193 | *.egg 194 | *.egg-info 195 | dist/ 196 | build/ 197 | eggs/ 198 | parts/ 199 | var/ 200 | sdist/ 201 | develop-eggs/ 202 | .installed.cfg 203 | 204 | # Installer logs 205 | pip-log.txt 206 | 207 | # Unit test / coverage reports 208 | .coverage 209 | .tox 210 | 211 | #Translations 212 | *.mo 213 | 214 | #Mr Developer 215 | .mr.developer.cfg 216 | -------------------------------------------------------------------------------- /README: -------------------------------------------------------------------------------- 1 | C-- is a programming language occupying an intermediate position 2 | between Assembler and C. It is ideally suited for writing small 3 | programs, TSRs, drivers, or interrupt handlers. In order to work 4 | with C-- you should know Assembler and C. C-- can now 5 | generate 32-bit code under DOS and Windows. 6 | 7 | The author of SPHINX C-- is Peter Cellik (CANADA). 8 | The author's latest version 9 | of SPHINX C-- is v0.203 of October 28, 1996. Unfortunately the author 10 | has abandoned further development of the language. The language 11 | and its source code were declared an orphan and are freely 12 | given to anyone anywhere to use as they wish. 13 | On this page you will find the latest (but no longer the author's) 14 | version of the language, libraries, sample programs, a description 15 | of the language and libraries in Norton Guide format, and lots of other 16 | useful information on C--. 17 | 18 | Source code from last supporter (in Russia) by Michael Shecker. 19 | -------------------------------------------------------------------------------- /c--other-info.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jossk/c--sphinx/3054be4dd30b1c231d54028e4b4a513168a099a6/c--other-info.zip -------------------------------------------------------------------------------- /c--sphinx.narod.ru.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jossk/c--sphinx/3054be4dd30b1c231d54028e4b4a513168a099a6/c--sphinx.narod.ru.zip -------------------------------------------------------------------------------- /c--sphinx.sources.rar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jossk/c--sphinx/3054be4dd30b1c231d54028e4b4a513168a099a6/c--sphinx.sources.rar -------------------------------------------------------------------------------- /original.src/ASM.H: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jossk/c--sphinx/3054be4dd30b1c231d54028e4b4a513168a099a6/original.src/ASM.H -------------------------------------------------------------------------------- /original.src/ASMNEMON.H: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jossk/c--sphinx/3054be4dd30b1c231d54028e4b4a513168a099a6/original.src/ASMNEMON.H -------------------------------------------------------------------------------- /original.src/ASM_NAME.H: -------------------------------------------------------------------------------- 1 | char *Mnemonics[]={ 2 | // FIRST OF ALL THE COMMANDS WITH A P-FLAG. THIS"LL MAKE THINGS EASIER FOR 3 | // COMPARISON IN THE PARSE ENGINE 4 | //P1=0-7 5 | "ADD","OR","ADC","SBB/BC","AND","SUB","XOR","CMP", 6 | //P2=4-7 7 | "NOT","NEG","MUL","-","DIV","IDIV", 8 | // IMUL ENTFERNT 9 | //P3=0-5/7 10 | "ROL","ROR","RCL","RCR","SHL/AL","SHR","-","SAR", 11 | //P4=4-7 12 | "BT","BTS","BTR","BTC", 13 | // USUAL COMMANDS 14 | "INC","DEC","TEST", "IMUL","SHLD","SHRD", 15 | "DAA","DAS","AAA","AAS","AAM","AAD", 16 | "MOVZX","MOVSX","CBW","CWDE","CWD","CDQ", 17 | "BSWAP","XLAT/LATB","BSF","BSR", 18 | "CMPXCHG","CMPXCHG8B","XADD", 19 | "NOP","WAIT","LOCK","HLT/ALT","INT", 20 | "INTO","IRET","IRETD", 21 | "POPF","POPFD","PUSHF","PUSHFD","SAHF","LAHF", 22 | "CMC","CLC","STC","CLI","STI","CLD","STD", 23 | "PUSH","PUSHA","PUSHAD","POP","POPA","POPAD", 24 | "XCHG","MOV","LEA", 25 | "LFS","LGS","LSS", 26 | "LES","LDS", 27 | "ADRSIZE", 28 | "IN","OUT","INSB","INSW","INSD","OUTSB","OUTSW","OUTSD", 29 | "MOVSB","MOVSW","MOVSD","CMPSB","CMPSW","CMPSD", 30 | "STOSB","STOSW","STOSD","LODSB","LODSW","LODSD", 31 | "SCASB","SCASW","SCASD","REPNE/EPNZ","REP/EPE/EPZ", 32 | "JCXZ","JECXZ","LOOP/OOPW","LOOPD","LOOPZ/OOPE","LOOPNZ/OOPNE", 33 | "JO","JNO","JC/B/NAE","JNC/AE/NB", 34 | "JE/Z","JNE/NZ","JBE/NA","JA/NBE", 35 | "JS","JNS","JP/PE","JNP/PO","JL/NGE","JGE/NL", 36 | "JLE/NG","JG/NLE", 37 | "SETO","SETNO","SETC/ETB/ETNAE","SETNC/ETAE/ETNB", 38 | "SETE/ETZ","SETNE/ETNZ","SETBE/ETNA","SETA/ETNBE", 39 | "SETS","SETNS","SETP/ETPE","SETNP/ETPO","SETL/ETNGE","SETGE/ETNL", 40 | "SETLE/ETNG","SETG/ETNLE", 41 | /*"JMPS","JMPN","JMPF",*/"JMP", 42 | "CALL",/*"CALLF",*/"RET","RETF", 43 | "ENTER","LEAVE","BOUND","ARPL", 44 | "SLDT","STR","LLDT","LTR","VERR","VERW","LAR","LSL", 45 | "SGDT","SIDT","LGDT","LIDT","SMSW","LMSW","CLTS", 46 | "INVD","WBINVD",//"INVLPD", 47 | //INTEL PENTIUM COMMANDS 48 | "WRMSR","CPUID","RDMSR","RDTSC","RSM", 49 | //INTEL PENTIUM PRO INSTRUCTIONS 50 | "RDPMC","UD2",/*"EMMX","SETALC",*/ 51 | //MMX INSTRUCTIONS 52 | 53 | "PUNPCKLBW","PUNPCKLWD","PUNPCKLDQ", //UNPACK LOW ORDER 60 - 54 | "PACKSSWB", 55 | "PCMPGTB","PCMPGTW","PCMPGTD", 56 | "PACKUSWB", //PACK MMX REG WITH UNSIGNED SATURATION 57 | "PUNPCKHBW","PUNPCKHWD","PUNPCKHDQ", //UNPACK HIGH ORDER 58 | "PACKSSDW", //PACK MMX REG WITH SIGNED SATURATION - 6B 59 | 60 | "PSRLW","PSRLD","PSRLQ", 61 | "PSRAW","PSRAD", 62 | "PSLLW","PSLLD","PSLLQ", 63 | 64 | "PCMPEQB","PCMPEQW","PCMPEQD",//74-76 65 | "PMULLW", //d5 66 | 67 | "MOVD","MOVQ", //MOVE MMX REG 68 | 69 | "PSUBUSB","PSUBUSW",//d8-d9 70 | 71 | "EMMS", 72 | 73 | "PAND", //db 74 | "PADDUSB","PADDUSW", //" WITH UNSIGNED SATURATION 75 | "PANDN", //df 76 | "PMULHW", //e5 77 | "PSUBSB","PSUBSW", //e8-e9 78 | "POR", //eb 79 | "PADDSB","PADDSW", //" WITH SIGNED SATURATION 80 | "PXOR", //ef 81 | "PMADDWD", //f5 82 | "PSUBB","PSUBW","PSUBD", //SUBTRACT MMX REG f8-fa 83 | "PADDB","PADDW","PADDD", //ADD MMX REG WITH WRAP-AROUND fc-fe 84 | 85 | 86 | "DB","DW","DD","INVLPG","LOADALL","OPSIZE", 87 | 88 | "F2XM1","FABS","FADD","FADDP","FBLD","FBSTP","FCHS","FCLEX","FCOM", 89 | "FCOMP","FNCLEX","FCOMPP","FCOS","FDECSTP","FDISI","FDIV","FDIVP", 90 | "FDIVR","FDIVRP","FFREE","FIADD","FICOM","FICOMP","FIDIV","FIDIVR", 91 | "FILD","FILDQ","FIMUL","FIST","FISTP","FISUB","FISUBR","FENI","FINCSTP", 92 | "FINIT","FNINIT","FLD","FLDCW","FLDENV","FLDLG2","FLDLN2","FLDL2E", 93 | "FLDL2T","FLDPI","FLDZ","FLD1","FMUL","FMULP","FNOP","FPATAN","FPREM", 94 | "FPREM1","FPTAN","FRNDINT","FSETPM","FRSTOR","FSAVE","FNSAVE","FSCALE", 95 | "FSIN","FSINCOS","FSQRT","FST","FSTCW","FNSTCW","FSTP","FSTSW","FNSTSW", 96 | "FSTENV","FNSTENV","FSUB","FSUBP","FSUBR","FSUBRP","FTST","FUCOM","FUCOMP", 97 | "FUCOMPP","FXCH","FWAIT","FXAM","FXTRACT","FYL2X","FYL2XP1", 98 | "SYSENTER","SYSEXIT","FCMOVB","FCMOVE","FCMOVBE","FCMOVU","FCMOVNB", 99 | "FCMOVNE","FCMOVNBE","FCMOVNU","FCOMI","FCOMIP","FUCOMI","FUCOMIP", 100 | "FXRSTOR","FXSAVE", "FNDISI", "FNENI", "FNSETPM", 101 | 102 | "CMOVO","CMOVNO","CMOVB/MOVNAE/MOVC","CMOVAE/MOVNB/MOVNC","CMOVE/MOVZ", 103 | "CMOVNE/MOVNZ","CMOVBE/MOVNA","CMOVA/MOVNBE","CMOVS","CMOVNS", 104 | "CMOVP/MOVPE","CMOVNP/MOVPO","CMOVL/MOVNGE","CMOVGE/MOVNL", 105 | "CMOVLE/MOVNG","CMOVG/MOVNLE", 106 | 107 | //MMX Pentium III extention 108 | "MASKMOVQ", "MOVNTQ", "PAVGB", "PAVGW", "PEXTRW", "PINSRW", 109 | "PMAXUB", "PMAXSW", "PMINUB", "PMINSW", "PMOVMSKB","PMULHUW", 110 | "PREFETCHT0","PREFETCHT1","PREFETCHT2","PREFETCHNTA","SFENCE", "PSADBW", 111 | "PSHUFW", 112 | //XMM extentions Pentium III 113 | "ADDPS", "ADDSS", "ANDNPS", "ANDPS", "CMPPS", "CMPSS", 114 | "COMISS", "CVTPI2PS","CVTPS2PI","CVTSI2SS","CVTSS2SI","CVTTPS2PI", 115 | "CVTTSS2SI","DIVPS", "DIVSS", "LDMXCSR", "MAXPS", "MAXSS", 116 | "MINPS", "MINSS", "MOVAPS", "MOVHLPS", "MOVHPS", "MOVLHPS", 117 | "MOVLPS", "MOVMSKPS","MOVSS", "MOVUPS", "MULPS", "MULSS", 118 | "MOVNTPS", "ORPS", "RCPPS", "RCPSS", "RSQRTPS", "RSQRTSS", 119 | "SHUFPS", "SQRTPS", "SQRTSS", "STMXCSR", "SUBPS", "SUBSS", 120 | "UCOMISS", "UNPCKHPS","UNPCKLPS","XORPS", 121 | 122 | // Pentium IV 123 | "LFENCE", "MFENCE", "ADDPD", "ADDSD", "ANDPD", "ANDNPD", 124 | "CMPPD", "COMISD", "CVTDQ2PD", "CVTDQ2PS", "CVTPD2DQ", "CVTPD2PI", 125 | "CVTPD2PS","CVTPI2PD", "CVTPS2DQ", "CVTPS2PD", "CVTSD2SI", "CVTSD2SS", 126 | "CVTSI2SD","CVTSS2SD", "CVTTPD2PI", "CVTTPD2DQ", "CVTTPS2DQ", "CVTTSD2SI", 127 | "DIVPD", "DIVSD", "MASKMOVDQU","MAXPD", "MAXSD", "MINPD", 128 | "MINSD", "MOVAPD", "MOVDQA", "MOVDQU", "MOVDQ2Q", "MOVHPD", 129 | "MOVLPD", "MOVMSKPD", "MOVNTDQ", "MOVNTPD", "MOVNTI", "MOVQ2DQ", 130 | "MOVUPD", "MULPD", "MULSD", "ORPD", "PSHUFD", "PSHUFHW", 131 | "PSHUFLW", "PSLLDQ", "PSRLDQ", "SHUFPD", "SQRTPD", "SQRTSD", 132 | "SUBPD", "SUBSD", "UCOMISD", "UNPCKHPD", "UNPCKLPD", "XORPD", 133 | "PADDQ", "PMULUDQ", "PSUBQ", "PUNPCKHQDQ","PUNPCKLQDQ","CLFLUSH", 134 | "MONITOR", "MWAIT", "ADDSUBPD", "ADDSUBPS", "CMPEQSD", "CMPLTSD", 135 | "CMPLESD", "CMPUNORDSD","CMPNEQSD", "CMPNLTSD", "CMPNLESD", "CMPORDSD", 136 | "CMPEQPD", "CMPLTPD", "CMPLEPD", "CMPUNORDPD","CMPNEQPD", "CMPNLTPD", 137 | "CMPNLEPD","CMPORDPD", "CMPEQPS", "CMPLTPS", "CMPLEPS", "CMPUNORDPS", 138 | "CMPNEQPS","CMPNLTPS", "CMPNLEPS", "CMPORDPS", "CMPEQSS", "CMPLTSS", 139 | "CMPLESS", "CMPUNORDSS","CMPNEQSS", "CMPNLTSS", "CMPNLESS", "CMPORDSS", 140 | "HADDPD", "HADDPS", "HSUBPD", "HSUBPS", "LDDQU", "MOVDDUP", 141 | "MOVSHDUP","MOVSLDUP", "PAUSE", 142 | 143 | NULL}; 144 | 145 | -------------------------------------------------------------------------------- /original.src/BC3.BAT: -------------------------------------------------------------------------------- 1 | @echo off 2 | make -fc--32.mak >a 3 | copy c--32.exe c:\c--\c--.exe 4 | -------------------------------------------------------------------------------- /original.src/C--.DOC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jossk/c--sphinx/3054be4dd30b1c231d54028e4b4a513168a099a6/original.src/C--.DOC -------------------------------------------------------------------------------- /original.src/C--.INI: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jossk/c--sphinx/3054be4dd30b1c231d54028e4b4a513168a099a6/original.src/C--.INI -------------------------------------------------------------------------------- /original.src/C--32.IDE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jossk/c--sphinx/3054be4dd30b1c231d54028e4b4a513168a099a6/original.src/C--32.IDE -------------------------------------------------------------------------------- /original.src/C--32.MAK: -------------------------------------------------------------------------------- 1 | # 2 | # Borland C++ IDE generated makefile 3 | # Generated 14.04.01 at 11:01:08 4 | # 5 | .AUTODEPEND 6 | 7 | 8 | # 9 | # Borland C++ tools 10 | # 11 | IMPLIB = Implib 12 | BCC32 = Bcc32 +BccW32.cfg 13 | BCC32I = Bcc32i +BccW32.cfg 14 | TLINK32 = TLink32 15 | ILINK32 = Ilink32 16 | TLIB = TLib 17 | BRC32 = Brc32 18 | TASM32 = Tasm32 19 | # 20 | # IDE macros 21 | # 22 | 23 | 24 | # 25 | # Options 26 | # 27 | IDE_LinkFLAGS32 = -LC:\BC5\LIB 28 | LinkerLocalOptsAtC32_cxx32dexe = -Tpe -ap -c -went -wdup -wdef -wimt -wbdl -wsrf -wmsk 29 | ResLocalOptsAtC32_cxx32dexe = 30 | BLocalOptsAtC32_cxx32dexe = 31 | CompInheritOptsAt_cxx32dexe = -IC:\BC5\INCLUDE 32 | LinkerInheritOptsAt_cxx32dexe = -x 33 | LinkerOptsAt_cxx32dexe = $(LinkerLocalOptsAtC32_cxx32dexe) 34 | ResOptsAt_cxx32dexe = $(ResLocalOptsAtC32_cxx32dexe) 35 | BOptsAt_cxx32dexe = $(BLocalOptsAtC32_cxx32dexe) 36 | 37 | # 38 | # Dependency List 39 | # 40 | Dep_Cxx32 = \ 41 | c--32.exe 42 | 43 | C--32 : BccW32.cfg $(Dep_Cxx32) 44 | echo MakeNode 45 | 46 | Dep_cxx32dexe = \ 47 | outle.obj\ 48 | switch.obj\ 49 | disasm.obj\ 50 | errors.obj\ 51 | tokr.obj\ 52 | outpe.obj\ 53 | outobj.obj\ 54 | debug.obj\ 55 | toke.obj\ 56 | tokc.obj\ 57 | tokb.obj\ 58 | toka.obj\ 59 | main.obj\ 60 | class.obj\ 61 | pointer.obj\ 62 | new_type.obj\ 63 | optreg.obj\ 64 | libobj.obj\ 65 | res.obj 66 | 67 | c--32.exe : $(Dep_cxx32dexe) 68 | $(ILINK32) @&&| 69 | /v $(IDE_LinkFLAGS32) $(LinkerOptsAt_cxx32dexe) $(LinkerInheritOptsAt_cxx32dexe) + 70 | C:\BC5\LIB\c0x32.obj+ 71 | outle.obj+ 72 | switch.obj+ 73 | disasm.obj+ 74 | errors.obj+ 75 | tokr.obj+ 76 | outpe.obj+ 77 | outobj.obj+ 78 | debug.obj+ 79 | toke.obj+ 80 | tokc.obj+ 81 | tokb.obj+ 82 | toka.obj+ 83 | main.obj+ 84 | class.obj+ 85 | pointer.obj+ 86 | new_type.obj+ 87 | optreg.obj+ 88 | libobj.obj+ 89 | res.obj 90 | $<,$* 91 | C:\BC5\LIB\bidsf.lib+ 92 | C:\BC5\LIB\import32.lib+ 93 | C:\BC5\LIB\cw32.lib 94 | 95 | 96 | 97 | | 98 | outle.obj : outle.cpp 99 | $(BCC32) -c @&&| 100 | $(CompOptsAt_cxx32dexe) $(CompInheritOptsAt_cxx32dexe) -o$@ outle.cpp 101 | | 102 | 103 | switch.obj : switch.cpp 104 | $(BCC32) -c @&&| 105 | $(CompOptsAt_cxx32dexe) $(CompInheritOptsAt_cxx32dexe) -o$@ switch.cpp 106 | | 107 | 108 | disasm.obj : disasm.cpp 109 | $(BCC32) -c @&&| 110 | $(CompOptsAt_cxx32dexe) $(CompInheritOptsAt_cxx32dexe) -o$@ disasm.cpp 111 | | 112 | 113 | errors.obj : errors.cpp 114 | $(BCC32) -c @&&| 115 | $(CompOptsAt_cxx32dexe) $(CompInheritOptsAt_cxx32dexe) -o$@ errors.cpp 116 | | 117 | 118 | tokr.obj : tokr.cpp 119 | $(BCC32) -c @&&| 120 | $(CompOptsAt_cxx32dexe) $(CompInheritOptsAt_cxx32dexe) -o$@ tokr.cpp 121 | | 122 | 123 | outpe.obj : outpe.cpp 124 | $(BCC32) -c @&&| 125 | $(CompOptsAt_cxx32dexe) $(CompInheritOptsAt_cxx32dexe) -o$@ outpe.cpp 126 | | 127 | 128 | outobj.obj : outobj.cpp 129 | $(BCC32) -c @&&| 130 | $(CompOptsAt_cxx32dexe) $(CompInheritOptsAt_cxx32dexe) -o$@ outobj.cpp 131 | | 132 | 133 | debug.obj : debug.cpp 134 | $(BCC32) -c @&&| 135 | $(CompOptsAt_cxx32dexe) $(CompInheritOptsAt_cxx32dexe) -o$@ debug.cpp 136 | | 137 | 138 | toke.obj : toke.cpp 139 | $(BCC32) -c @&&| 140 | $(CompOptsAt_cxx32dexe) $(CompInheritOptsAt_cxx32dexe) -o$@ toke.cpp 141 | | 142 | 143 | tokc.obj : tokc.cpp 144 | $(BCC32) -c @&&| 145 | $(CompOptsAt_cxx32dexe) $(CompInheritOptsAt_cxx32dexe) -o$@ tokc.cpp 146 | | 147 | 148 | tokb.obj : tokb.cpp 149 | $(BCC32) -c @&&| 150 | $(CompOptsAt_cxx32dexe) $(CompInheritOptsAt_cxx32dexe) -o$@ tokb.cpp 151 | | 152 | 153 | toka.obj : toka.cpp 154 | $(BCC32) -c @&&| 155 | $(CompOptsAt_cxx32dexe) $(CompInheritOptsAt_cxx32dexe) -o$@ toka.cpp 156 | | 157 | 158 | main.obj : main.cpp 159 | $(BCC32) -c @&&| 160 | $(CompOptsAt_cxx32dexe) $(CompInheritOptsAt_cxx32dexe) -o$@ main.cpp 161 | | 162 | 163 | class.obj : class.cpp 164 | $(BCC32) -c @&&| 165 | $(CompOptsAt_cxx32dexe) $(CompInheritOptsAt_cxx32dexe) -o$@ class.cpp 166 | | 167 | 168 | pointer.obj : pointer.cpp 169 | $(BCC32) -c @&&| 170 | $(CompOptsAt_cxx32dexe) $(CompInheritOptsAt_cxx32dexe) -o$@ pointer.cpp 171 | | 172 | 173 | new_type.obj : new_type.cpp 174 | $(BCC32) -c @&&| 175 | $(CompOptsAt_cxx32dexe) $(CompInheritOptsAt_cxx32dexe) -o$@ new_type.cpp 176 | | 177 | 178 | res.obj : res.cpp 179 | $(BCC32) -c @&&| 180 | $(CompOptsAt_cxx32dexe) $(CompInheritOptsAt_cxx32dexe) -o$@ res.cpp 181 | | 182 | 183 | optreg.obj : optreg.cpp 184 | $(BCC32) -c @&&| 185 | $(CompOptsAt_cxx32dexe) $(CompInheritOptsAt_cxx32dexe) -o$@ optreg.cpp 186 | | 187 | # Compiler configuration file 188 | BccW32.cfg : 189 | Copy &&| 190 | -w 191 | -R 192 | -v 193 | -WM- 194 | -vi 195 | -H 196 | -H=c--32.csm 197 | -WC 198 | -O2 199 | -Og 200 | -4 201 | -D_OPTREG_ 202 | | $@ 203 | 204 | 205 | -------------------------------------------------------------------------------- /original.src/C--NEWS.TXT: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jossk/c--sphinx/3054be4dd30b1c231d54028e4b4a513168a099a6/original.src/C--NEWS.TXT -------------------------------------------------------------------------------- /original.src/CLASS.CPP: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jossk/c--sphinx/3054be4dd30b1c231d54028e4b4a513168a099a6/original.src/CLASS.CPP -------------------------------------------------------------------------------- /original.src/COFF.H: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jossk/c--sphinx/3054be4dd30b1c231d54028e4b4a513168a099a6/original.src/COFF.H -------------------------------------------------------------------------------- /original.src/CONST.H: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jossk/c--sphinx/3054be4dd30b1c231d54028e4b4a513168a099a6/original.src/CONST.H -------------------------------------------------------------------------------- /original.src/DEBUG.CPP: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jossk/c--sphinx/3054be4dd30b1c231d54028e4b4a513168a099a6/original.src/DEBUG.CPP -------------------------------------------------------------------------------- /original.src/DIRLIST.H: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jossk/c--sphinx/3054be4dd30b1c231d54028e4b4a513168a099a6/original.src/DIRLIST.H -------------------------------------------------------------------------------- /original.src/DISASM.CPP: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jossk/c--sphinx/3054be4dd30b1c231d54028e4b4a513168a099a6/original.src/DISASM.CPP -------------------------------------------------------------------------------- /original.src/ERRORS.CPP: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jossk/c--sphinx/3054be4dd30b1c231d54028e4b4a513168a099a6/original.src/ERRORS.CPP -------------------------------------------------------------------------------- /original.src/FASTLIST/ASMNEMON.H: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jossk/c--sphinx/3054be4dd30b1c231d54028e4b4a513168a099a6/original.src/FASTLIST/ASMNEMON.H -------------------------------------------------------------------------------- /original.src/FASTLIST/ASM_NAME.H: -------------------------------------------------------------------------------- 1 | char *Mnemonics[]={ 2 | // FIRST OF ALL THE COMMANDS WITH A P-FLAG. THIS"LL MAKE THINGS EASIER FOR 3 | // COMPARISON IN THE PARSE ENGINE 4 | //P1=0-7 5 | "ADD","OR","ADC","SBB/BC","AND","SUB","XOR","CMP", 6 | //P2=4-7 7 | "NOT","NEG","MUL","-","DIV","IDIV", 8 | // IMUL ENTFERNT 9 | //P3=0-5/7 10 | "ROL","ROR","RCL","RCR","SHL/AL","SHR","-","SAR", 11 | //P4=4-7 12 | "BT","BTS","BTR","BTC", 13 | // USUAL COMMANDS 14 | "INC","DEC","TEST", "IMUL","SHLD","SHRD", 15 | "DAA","DAS","AAA","AAS","AAM","AAD", 16 | "MOVZX","MOVSX","CBW","CWDE","CWD","CDQ", 17 | "BSWAP","XLAT/LATB","BSF","BSR", 18 | "CMPXCHG","CMPXCHG8B","XADD", 19 | "NOP","WAIT","LOCK","HLT/ALT","INT", 20 | "INTO","IRET","IRETD", 21 | "POPF","POPFD","PUSHF","PUSHFD","SAHF","LAHF", 22 | "CMC","CLC","STC","CLI","STI","CLD","STD", 23 | "PUSH","PUSHA","PUSHAD","POP","POPA","POPAD", 24 | "XCHG","MOV","LEA", 25 | "LFS","LGS","LSS", 26 | "LES","LDS", 27 | "ADRSIZE", 28 | "IN","OUT","INSB","INSW","INSD","OUTSB","OUTSW","OUTSD", 29 | "MOVSB","MOVSW","MOVSD","CMPSB","CMPSW","CMPSD", 30 | "STOSB","STOSW","STOSD","LODSB","LODSW","LODSD", 31 | "SCASB","SCASW","SCASD","REPNE/EPNZ","REP/EPE/EPZ", 32 | "JCXZ","JECXZ","LOOP/OOPW","LOOPD","LOOPZ/OOPE","LOOPNZ/OOPNE", 33 | "JO","JNO","JC/B/NAE","JNC/AE/NB", 34 | "JE/Z","JNE/NZ","JBE/NA","JA/NBE", 35 | "JS","JNS","JP/PE","JNP/PO","JL/NGE","JGE/NL", 36 | "JLE/NG","JG/NLE", 37 | "SETO","SETNO","SETC/ETB/ETNAE","SETNC/ETAE/ETNB", 38 | "SETE/ETZ","SETNE/ETNZ","SETBE/ETNA","SETA/ETNBE", 39 | "SETS","SETNS","SETP/ETPE","SETNP/ETPO","SETL/ETNGE","SETGE/ETNL", 40 | "SETLE/ETNG","SETG/ETNLE", 41 | /*"JMPS","JMPN","JMPF",*/"JMP", 42 | "CALL",/*"CALLF",*/"RET","RETF", 43 | "ENTER","LEAVE","BOUND","ARPL", 44 | "SLDT","STR","LLDT","LTR","VERR","VERW","LAR","LSL", 45 | "SGDT","SIDT","LGDT","LIDT","SMSW","LMSW","CLTS", 46 | "INVD","WBINVD",//"INVLPD", 47 | //INTEL PENTIUM COMMANDS 48 | "WRMSR","CPUID","RDMSR","RDTSC","RSM", 49 | //INTEL PENTIUM PRO INSTRUCTIONS 50 | "RDPMC","UD2",/*"EMMX","SETALC",*/ 51 | //MMX INSTRUCTIONS 52 | 53 | "PUNPCKLBW","PUNPCKLWD","PUNPCKLDQ", //UNPACK LOW ORDER 60 - 54 | "PACKSSWB", 55 | "PCMPGTB","PCMPGTW","PCMPGTD", 56 | "PACKUSWB", //PACK MMX REG WITH UNSIGNED SATURATION 57 | "PUNPCKHBW","PUNPCKHWD","PUNPCKHDQ", //UNPACK HIGH ORDER 58 | "PACKSSDW", //PACK MMX REG WITH SIGNED SATURATION - 6B 59 | 60 | "PSRLW","PSRLD","PSRLQ", 61 | "PSRAW","PSRAD", 62 | "PSLLW","PSLLD","PSLLQ", 63 | 64 | "PCMPEQB","PCMPEQW","PCMPEQD",//74-76 65 | "PMULLW", //d5 66 | 67 | "MOVD","MOVQ", //MOVE MMX REG 68 | 69 | "PSUBUSB","PSUBUSW",//d8-d9 70 | 71 | "EMMS", 72 | 73 | "PAND", //db 74 | "PADDUSB","PADDUSW", //" WITH UNSIGNED SATURATION 75 | "PANDN", //df 76 | "PMULHW", //e5 77 | "PSUBSB","PSUBSW", //e8-e9 78 | "POR", //eb 79 | "PADDSB","PADDSW", //" WITH SIGNED SATURATION 80 | "PXOR", //ef 81 | "PMADDWD", //f5 82 | "PSUBB","PSUBW","PSUBD", //SUBTRACT MMX REG f8-fa 83 | "PADDB","PADDW","PADDD", //ADD MMX REG WITH WRAP-AROUND fc-fe 84 | 85 | 86 | "DB","DW","DD","INVLPG","LOADALL","OPSIZE", 87 | 88 | "F2XM1","FABS","FADD","FADDP","FBLD","FBSTP","FCHS","FCLEX","FCOM", 89 | "FCOMP","FNCLEX","FCOMPP","FCOS","FDECSTP","FDISI","FDIV","FDIVP", 90 | "FDIVR","FDIVRP","FFREE","FIADD","FICOM","FICOMP","FIDIV","FIDIVR", 91 | "FILD","FILDQ","FIMUL","FIST","FISTP","FISUB","FISUBR","FENI","FINCSTP", 92 | "FINIT","FNINIT","FLD","FLDCW","FLDENV","FLDLG2","FLDLN2","FLDL2E", 93 | "FLDL2T","FLDPI","FLDZ","FLD1","FMUL","FMULP","FNOP","FPATAN","FPREM", 94 | "FPREM1","FPTAN","FRNDINT","FSETPM","FRSTOR","FSAVE","FNSAVE","FSCALE", 95 | "FSIN","FSINCOS","FSQRT","FST","FSTCW","FNSTCW","FSTP","FSTSW","FNSTSW", 96 | "FSTENV","FNSTENV","FSUB","FSUBP","FSUBR","FSUBRP","FTST","FUCOM","FUCOMP", 97 | "FUCOMPP","FXCH","FWAIT","FXAM","FXTRACT","FYL2X","FYL2XP1", 98 | "SYSENTER","SYSEXIT","FCMOVB","FCMOVE","FCMOVBE","FCMOVU","FCMOVNB", 99 | "FCMOVNE","FCMOVNBE","FCMOVNU","FCOMI","FCOMIP","FUCOMI","FUCOMIP", 100 | "FXRSTOR","FXSAVE", "FNDISI", "FNENI", "FNSETPM", 101 | 102 | "CMOVO","CMOVNO","CMOVB/MOVNAE/MOVC","CMOVAE/MOVNB/MOVNC","CMOVE/MOVZ", 103 | "CMOVNE/MOVNZ","CMOVBE/MOVNA","CMOVA/MOVNBE","CMOVS","CMOVNS", 104 | "CMOVP/MOVPE","CMOVNP/MOVPO","CMOVL/MOVNGE","CMOVGE/MOVNL", 105 | "CMOVLE/MOVNG","CMOVG/MOVNLE", 106 | 107 | //MMX Pentium III extention 108 | "MASKMOVQ", "MOVNTQ", "PAVGB", "PAVGW", "PEXTRW", "PINSRW", 109 | "PMAXUB", "PMAXSW", "PMINUB", "PMINSW", "PMOVMSKB","PMULHUW", 110 | "PREFETCHT0","PREFETCHT1","PREFETCHT2","PREFETCHNTA","SFENCE", "PSADBW", 111 | "PSHUFW", 112 | //XMM extentions Pentium III 113 | "ADDPS", "ADDSS", "ANDNPS", "ANDPS", "CMPPS", "CMPSS", 114 | "COMISS", "CVTPI2PS","CVTPS2PI","CVTSI2SS","CVTSS2SI","CVTTPS2PI", 115 | "CVTTSS2SI","DIVPS", "DIVSS", "LDMXCSR", "MAXPS", "MAXSS", 116 | "MINPS", "MINSS", "MOVAPS", "MOVHLPS", "MOVHPS", "MOVLHPS", 117 | "MOVLPS", "MOVMSKPS","MOVSS", "MOVUPS", "MULPS", "MULSS", 118 | "MOVNTPS", "ORPS", "RCPPS", "RCPSS", "RSQRTPS", "RSQRTSS", 119 | "SHUFPS", "SQRTPS", "SQRTSS", "STMXCSR", "SUBPS", "SUBSS", 120 | "UCOMISS", "UNPCKHPS","UNPCKLPS","XORPS", 121 | 122 | // Pentium IV 123 | "LFENCE", "MFENCE", "ADDPD", "ADDSD", "ANDPD", "ANDNPD", 124 | "CMPPD", "COMISD", "CVTDQ2PD", "CVTDQ2PS", "CVTPD2DQ", "CVTPD2PI", 125 | "CVTPD2PS","CVTPI2PD", "CVTPS2DQ", "CVTPS2PD", "CVTSD2SI", "CVTSD2SS", 126 | "CVTSI2SD","CVTSS2SD", "CVTTPD2PI", "CVTTPD2DQ", "CVTTPS2DQ", "CVTTSD2SI", 127 | "DIVPD", "DIVSD", "MASKMOVDQU","MAXPD", "MAXSD", "MINPD", 128 | "MINSD", "MOVAPD", "MOVDQA", "MOVDQU", "MOVDQ2Q", "MOVHPD", 129 | "MOVLPD", "MOVMSKPD", "MOVNTDQ", "MOVNTPD", "MOVNTI", "MOVQ2DQ", 130 | "MOVUPD", "MULPD", "MULSD", "ORPD", "PSHUFD", "PSHUFHW", 131 | "PSHUFLW", "PSLLDQ", "PSRLDQ", "SHUFPD", "SQRTPD", "SQRTSD", 132 | "SUBPD", "SUBSD", "UCOMISD", "UNPCKHPD", "UNPCKLPD", "XORPD", 133 | "PADDQ", "PMULUDQ", "PSUBQ", "PUNPCKHQDQ","PUNPCKLQDQ","CLFLUSH", 134 | "MONITOR", "MWAIT", "ADDSUBPD", "ADDSUBPS", "CMPEQSD", "CMPLTSD", 135 | "CMPLESD", "CMPUNORDSD","CMPNEQSD", "CMPNLTSD", "CMPNLESD", "CMPORDSD", 136 | "CMPEQPD", "CMPLTPD", "CMPLEPD", "CMPUNORDPD","CMPNEQPD", "CMPNLTPD", 137 | "CMPNLEPD","CMPORDPD", "CMPEQPS", "CMPLTPS", "CMPLEPS", "CMPUNORDPS", 138 | "CMPNEQPS","CMPNLTPS", "CMPNLEPS", "CMPORDPS", "CMPEQSS", "CMPLTSS", 139 | "CMPLESS", "CMPUNORDSS","CMPNEQSS", "CMPNLTSS", "CMPNLESS", "CMPORDSS", 140 | "HADDPD", "HADDPS", "HSUBPD", "HSUBPS", "LDDQU", "MOVDDUP", 141 | "MOVSHDUP","MOVSLDUP", "PAUSE", 142 | 143 | NULL}; 144 | 145 | -------------------------------------------------------------------------------- /original.src/FASTLIST/CONST.H: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jossk/c--sphinx/3054be4dd30b1c231d54028e4b4a513168a099a6/original.src/FASTLIST/CONST.H -------------------------------------------------------------------------------- /original.src/FASTLIST/DIRLIST.H: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jossk/c--sphinx/3054be4dd30b1c231d54028e4b4a513168a099a6/original.src/FASTLIST/DIRLIST.H -------------------------------------------------------------------------------- /original.src/FASTLIST/DIR_NAME.H: -------------------------------------------------------------------------------- 1 | char *dirlist[]={ 2 | "ctrl_c", "jumptomain", "parsecommandline","argc", "resize", 3 | "resizemessage","stack", "startaddress", "sysattribute","sysname", 4 | "syscommand", "atexit", "dataseg", "sizerom", "movedatarom", 5 | "startuptomain","fastcallapi","startusevar", "usestartup", "imagebase", 6 | 7 | "align", "aligner", "alignword", /*"beep",*/ 8 | "codesize", "define", "DOSrequired","endif", "ifdef", 9 | "ifndef", "include", "maxerrors", /*"pause",*/ "print", 10 | "printhex", "randombyte", "speed", "use8086", "use8088", 11 | "use80186", "use80286", "use80386", "use80486", "usePentium", 12 | "useMMX", "use80786", "setdinproc", "warning", "includepath", 13 | "initallvar","code32", "undef", 14 | "aligncode", "fixuptable", "dosstring", "compilerversion", 15 | "else", "winmonoblock","pragma", "inline", NULL}; 16 | 17 | -------------------------------------------------------------------------------- /original.src/FASTLIST/FASTLIST.CPP: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jossk/c--sphinx/3054be4dd30b1c231d54028e4b4a513168a099a6/original.src/FASTLIST/FASTLIST.CPP -------------------------------------------------------------------------------- /original.src/FASTLIST/ID.H: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jossk/c--sphinx/3054be4dd30b1c231d54028e4b4a513168a099a6/original.src/FASTLIST/ID.H -------------------------------------------------------------------------------- /original.src/FASTLIST/ID_NAME.H: -------------------------------------------------------------------------------- 1 | #include "const.h" 2 | 3 | char *ID[]= 4 | {"CARRYFLAG","ELSE","EXTRACT","FROM","IF", 5 | "NOTCARRYFLAG","NOTOVERFLOW","OVERFLOW", 6 | "ZEROFLAG","NOTZEROFLAG", 7 | "__CODEPTR__","__DATAPTR__","__POSTPTR__", 8 | "GOTO","BREAK","CONTINUE", 9 | "WHILE","FOR","MINUSFLAG","PLUSFLAG", 10 | "LOOPNZ","loopnz","byte","word","char","int","dword","long", 11 | "if","loop","return","do","while","else","interrupt","void", 12 | "enum","inline","far","goto","break","continue","for","asm","switch", 13 | "case","default","float","struct","sizeof","extern","cdecl","pascal", 14 | "fastcall","stdcall","union","_export","short","unsigned", 15 | "signed","__FILE__","__LINE__","SWITCH","CASE", 16 | "RETURN","static","new","delete","qword","double",NULL}; 17 | 18 | short IDvalue[]= 19 | {tk_carryflag,tk_ELSE,tk_extract,tk_from,tk_IF, 20 | tk_notcarryflag,tk_notoverflowflag,tk_overflowflag, 21 | tk_zeroflag,tk_notzeroflag, 22 | tk_codeptr,tk_dataptr,tk_postptr, 23 | tk_GOTO,tk_BREAK,tk_CONTINUE, 24 | tk_WHILE,tk_FOR,tk_minusflag,tk_plusflag, 25 | tk_LOOPNZ,tk_loopnz,tk_byte,tk_word,tk_char,tk_int,tk_dword,tk_long, 26 | tk_if,tk_loop,tk_return,tk_do,tk_while,tk_else,tk_interrupt,tk_void, 27 | tk_enum,tk_inline,tk_far,tk_goto,tk_break,tk_continue,tk_for,tk_asm, 28 | tk_switch,tk_case,tk_default,tk_float,tk_struct,tk_sizeof,tk_extern, 29 | tk_cdecl,tk_pascal,tk_fastcall,tk_stdcall,tk_union,tk_export, 30 | tk_short,tk_unsigned,tk_signed,tk_file,tk_line,tk_SWITCH,tk_CASE, 31 | tk_RETURN,tk_static,tk_new,tk_delete,tk_qword,tk_double}; 32 | -------------------------------------------------------------------------------- /original.src/FASTLIST/MAKEFILE: -------------------------------------------------------------------------------- 1 | # Use the C or C++ compiler 2 | Compiler = wcl 3 | 4 | # compiler options for code that has to run from an interrupt: 5 | Compiler_Options = /4 /ms /zp1 /c /fp3 /ox /ot /y /cc++ 6 | #/oxl+ /j /s /Iinclude 7 | 8 | Linker_options = op c 9 | 10 | # Compile using dos4g or pmodew 11 | System = dos 12 | 13 | Exe_file = fastlist.exe 14 | 15 | #################### 16 | ## Makefile rules ## 17 | #################### 18 | 19 | all : fastlist.exe 20 | 21 | fastlist.exe : fastlist.obj 22 | 23 | *wlink system $(System) $(Linker_Options) name fastlist & 24 | file {$<} 25 | 26 | clean 27 | del *.obj 28 | del *.err 29 | del *.bak 30 | 31 | # next are the exceptions that don't have to be compiled with the /zu option 32 | # since they will never be called from a interrupt. hey.. I _tried_ to find 33 | # a clean solution.. 34 | 35 | fastlist.obj : fastlist.cpp 36 | $(Compiler) $(Compiler_Options) $< 37 | 38 | .cpp.obj: 39 | $(Compiler) $(Compiler_Options) $< 40 | 41 | -------------------------------------------------------------------------------- /original.src/FASTLIST/RES.H: -------------------------------------------------------------------------------- 1 | #define RT_CURSOR 1 2 | #define RT_BITMAP 2 3 | #define RT_ICON 3 4 | #define RT_MENU 4 5 | #define RT_DIALOG 5 6 | #define RT_STRING 6 7 | #define RT_FONTDIR 7 8 | #define RT_FONT 8 9 | #define RT_ACCELERATOR 9 10 | #define RT_RCDATA 10 11 | #define RT_MESSAGETABLE 11 12 | #define RT_GROUP_CURSOR 12 13 | #define RT_GROUP_ICON 14 14 | #define RT_VERSION 16 15 | #define RT_DLGINCLUDE 17 16 | #define RT_PLUGPLAY 19 17 | #define RT_VXD 20 18 | #define RT_ANICURSOR 21 19 | #define RT_ANIICON 22 20 | 21 | 22 | #define MOVEABLE 0x0010 23 | #define FIXED ~MOVEABLE 24 | #define PURE 0x0020 25 | #define IMPURE ~PURE 26 | #define PRELOAD 0x0040 27 | #define LOADONCALL ~PRELOAD 28 | #define DISCARDABLE 0x1000 29 | 30 | #define DRESNUM 100; 31 | 32 | enum{ 33 | rc_accelerators,rc_auto3state, rc_autocheckbox,rc_autoradiobutton,rc_bitmap, 34 | rc_caption, rc_characteristics,rc_checkbox, rc_class, rc_combobox, 35 | rc_control, rc_ctext, rc_cursor, rc_defpushbutton, rc_dialog, 36 | rc_dialogex, rc_edittext, rc_exstyle, rc_font, rc_groupbox, 37 | rc_icon, rc_listbox, rc_ltext, rc_menu, rc_menuex, 38 | rc_menuitem, rc_messagetable, rc_popup, rc_pushbox, rc_pushbutton, 39 | rc_radiobutton, rc_rcdata, rc_rtext, rc_scrollbar, rc_state3, 40 | rc_stringtable, rc_style, rc_version, rc_versioninfo, rc_begin, 41 | rc_end, rc_language 42 | }; 43 | -------------------------------------------------------------------------------- /original.src/FASTLIST/RESNAME.H: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jossk/c--sphinx/3054be4dd30b1c231d54028e4b4a513168a099a6/original.src/FASTLIST/RESNAME.H -------------------------------------------------------------------------------- /original.src/FASTLIST/RES_NAME.H: -------------------------------------------------------------------------------- 1 | char *res_name[]={ 2 | "accelerators","auto3state", "autocheckbox","autoradiobutton","bitmap", 3 | "caption", "characteristics","checkbox", "class", "combobox", 4 | "control", "ctext", "cursor", "defpushbutton", "dialog", 5 | "dialogex", "edittext", "exstyle", "font", "groupbox", 6 | "icon", "listbox", "ltext", "menu", "menuex", 7 | "menuitem", "messagetable", "popup", "pushbox", "pushbutton", 8 | "radiobutton", "rcdata", "rtext", "scrollbar", "state3", 9 | "stringtable", "style", "version", "versioninfo", "begin", 10 | "end", "language", NULL 11 | }; 12 | 13 | -------------------------------------------------------------------------------- /original.src/FASTLIST/fastlist.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jossk/c--sphinx/3054be4dd30b1c231d54028e4b4a513168a099a6/original.src/FASTLIST/fastlist.exe -------------------------------------------------------------------------------- /original.src/ID.H: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jossk/c--sphinx/3054be4dd30b1c231d54028e4b4a513168a099a6/original.src/ID.H -------------------------------------------------------------------------------- /original.src/LE.H: -------------------------------------------------------------------------------- 1 | /***************************************************************************** 2 | ;* * 3 | ;* This structure define format of LE header for OS/2,Windows exe files * 4 | ;* ---------------------------------------------------------- * 5 | ;* * 6 | ;* Author Trigub Serge. B&M&T Corp. * 7 | ;* 10 January 1993 * 8 | ;* * 9 | ;*****************************************************************************/ 10 | 11 | enum CPU_Type 12 | { 13 | i80286 =0x01, 14 | i80386 =0x02, 15 | i80486 =0x03, 16 | i80586 =0x04, 17 | i860_N10 =0x20, 18 | i860_N11 =0x21, 19 | MIPS_Mark_I =0x40, 20 | MIPS_Mark_II =0x41, 21 | MIPS_Mark_III=0x42 22 | }; 23 | 24 | struct Module_Type_Flags 25 | { 26 | unsigned long Module_Is_DLL :1; 27 | unsigned long Reserved1 :1; 28 | unsigned long Errors_In_Module :1; 29 | unsigned long Reserved2 :1; 30 | unsigned long Code_Load_Application:1; 31 | unsigned long Application_Type :3; 32 | 33 | unsigned long Reserved3 :2; 34 | unsigned long No_External_FIXUP :1; 35 | unsigned long No_Internal_FIXUP :1; 36 | unsigned long Protected_Mode_Only :1; 37 | unsigned long Global_Initialization:1; 38 | unsigned long Multipledata :1; 39 | unsigned long Singledata :1; 40 | }; 41 | 42 | struct LE_Header 43 | { 44 | unsigned short Signature; // Signature 'LE' for exe header 45 | unsigned char Byte_Order; 46 | unsigned char Word_Order; 47 | unsigned long Exec_Format_Level; 48 | unsigned short CPU_Type; 49 | unsigned short Target_OS; 50 | unsigned long Module_Version; 51 | union{ 52 | unsigned long Type_Flags; 53 | Module_Type_Flags Flags; 54 | }; 55 | unsigned long Number_Of_Memory_Pages; 56 | unsigned long Initial_CS; 57 | unsigned long Initial_EI; 58 | unsigned long Initial_SS; 59 | unsigned long Initial_ESP; 60 | unsigned long Memory_Page_Size; 61 | unsigned long Bytes_On_Last_Page; 62 | unsigned long Fixup_Section_Size; 63 | unsigned long Fixup_Section_Checksum; 64 | unsigned long Loader_Section_Size; 65 | unsigned long Loader_Section_CheckSum; 66 | unsigned long Object_Table_Offset; 67 | unsigned long Object_Table_Entries; 68 | unsigned long Object_Page_Map_Table_Offset; 69 | unsigned long Object_Iterate_Data_Map_Offset; 70 | unsigned long Resource_Table_Offset; 71 | unsigned long Resource_Table_Entries; 72 | unsigned long Resident_Names_Table_Offset; 73 | unsigned long Entry_Table_Offset; 74 | unsigned long Module_Directives_Table_Offset; 75 | unsigned long Module_Directives_Table_Entries; 76 | unsigned long Fixup_Page_Table_Offset; 77 | unsigned long Fixup_Record_Table_Offset; 78 | unsigned long Imported_Module_Names_Table_Offset; 79 | unsigned long Imported_Modules_Count; 80 | unsigned long Imported_Procedure_Name_Table_Offset; 81 | unsigned long Per_page_Checksum_Table_Offset; 82 | unsigned long Data_Pages_Offset; 83 | unsigned long Preload_Page_Count; 84 | unsigned long Nonresident_Names_Table_Offset; 85 | unsigned long Nonresident_Names_Table_Length; 86 | unsigned long Nonresident_Names_Table_Checksum; 87 | unsigned long Automatic_Data_Object; 88 | unsigned long Debug_Information_Offset; 89 | unsigned long Debug_Information_Length; 90 | unsigned long Preload_Instance_Pages_Number; 91 | unsigned long Demand_Instance_Pages_Number; 92 | unsigned long Extra_Heap_Allocation; 93 | unsigned long Unknown[1]; 94 | }; 95 | 96 | struct OBJ_FLAGS 97 | { 98 | unsigned long I_O_Privilage_Level :1; 99 | unsigned long Conforming_Segment :1; 100 | unsigned long BIG_Segment :1; 101 | unsigned long Alias_16_16 :1; 102 | unsigned long Reserved :1; 103 | unsigned long Resident_Long_Locable:1; 104 | unsigned long Segment_Type :2; 105 | unsigned long Segment_Invalid :1; 106 | unsigned long Segment_Preloaded :1; 107 | unsigned long Segment_Shared :1; 108 | unsigned long Segment_Discardable :1; 109 | unsigned long Segment_Resource :1; 110 | unsigned long Segment_Executable :1; 111 | unsigned long Segment_Writable :1; 112 | unsigned long Segment_Readable :1; 113 | }; 114 | 115 | struct Object_Table 116 | { 117 | unsigned long Virtual_Segment_Size; 118 | unsigned long Relocation_Base_Address; 119 | union { 120 | unsigned long ObjTableFlags; 121 | OBJ_FLAGS FLAGS; 122 | }; 123 | unsigned long Page_MAP_Index; 124 | unsigned long Page_MAP_Entries; 125 | unsigned long Reserved; 126 | }; 127 | 128 | 129 | enum { 130 | Segment_Type_Normal, 131 | Segment_Zero_Filled, 132 | Segment_Resident, 133 | Segment_Resident_contiguous 134 | }; 135 | 136 | struct PM_FLAGS 137 | { 138 | unsigned char Page_Type:2; 139 | unsigned char Reserved :6; 140 | unsigned char End_Page :2; 141 | }; 142 | 143 | struct Page_Map_Table 144 | { 145 | unsigned short High_Page_Number; 146 | unsigned char Low_Page_Number; 147 | // union{ 148 | // PM_FLAGS SFLAGS; 149 | unsigned char FLAGS; 150 | // }; 151 | }; 152 | 153 | enum{//LE_PM_FLG_Page_Type_Enum ENUM { 154 | Legal_Page =0, 155 | Iterated_Page =1, 156 | Invalid_Page =2, 157 | Zero_Filled_Page=3 158 | }; 159 | 160 | struct Entry_Table 161 | { 162 | unsigned char Number_of_Entries; 163 | unsigned char Bungle_Flags; 164 | unsigned short Object_Index; 165 | //LE_Entry_First_Entry equ $ 166 | }; 167 | 168 | struct Entry 169 | { 170 | unsigned char Entry_Flags; 171 | union{ 172 | unsigned short Word_Offset; 173 | unsigned long Dword_Offset; 174 | }; 175 | }; 176 | 177 | struct Entry_Bungle_Flags 178 | { 179 | unsigned char Bits_Entry :1; 180 | unsigned char Valid_Entry:1; 181 | }; 182 | 183 | struct Fixup_Record_Table 184 | { 185 | unsigned char Relocation_Address_Type; 186 | unsigned char Relocation_Type; 187 | unsigned short Relocation_Page_Offset; 188 | unsigned char Segment_or_Module_Index; 189 | unsigned short Offset_Or_Ordinal_Value; 190 | }; 191 | 192 | struct Rel_Addr_Type 193 | { 194 | unsigned char Repeat_Offset :1; 195 | unsigned char Target_OFFSET_Absent:1; 196 | unsigned char Rel_Addr_Type :4; 197 | }; 198 | 199 | enum// LE_Relocation_Address_Type_ENUM 200 | { 201 | RA_Low_Byte =0, 202 | RA_16_bits_selector =2, 203 | RA_32_bits_Far_Pointer=3, 204 | RA_16_bits_Offset =5, 205 | RA_48_bits_Far_Pointer=6, 206 | RA_32_bits_Offset =7, 207 | RA_32_bits_EIP_Rel =8 208 | }; 209 | 210 | struct Reloc_Type 211 | { 212 | unsigned char Ordinal_Byte :1; 213 | unsigned char Reserv1 :1; 214 | unsigned char ABS_Dword :1; 215 | unsigned char Target_Offset_32:1; 216 | unsigned char Reserv2 :1; 217 | unsigned char ADDITIVE_Type :1; 218 | unsigned char Reloc_Type :2; 219 | }; 220 | 221 | enum //LE_Relocation_Type_ENUM 222 | { 223 | Internal_Reference=0, 224 | Imported_Ordinal =1, 225 | Imported_Name =2, 226 | OS_FIXUP =3 227 | }; 228 | 229 | -------------------------------------------------------------------------------- /original.src/LIBOBJ.CPP: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jossk/c--sphinx/3054be4dd30b1c231d54028e4b4a513168a099a6/original.src/LIBOBJ.CPP -------------------------------------------------------------------------------- /original.src/MAIN.CPP: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jossk/c--sphinx/3054be4dd30b1c231d54028e4b4a513168a099a6/original.src/MAIN.CPP -------------------------------------------------------------------------------- /original.src/MAKEFILE: -------------------------------------------------------------------------------- 1 | # Use the C or C++ compiler 2 | Compiler = wcl386 3 | 4 | # compiler options for code that has to run from an interrupt: 5 | Compiler_Options = /5r /zp1 /c /s /fp3 /ox /ot /y /cc++ /d_WC_ /mf 6 | #/oxl+ /j /s /zu /Iinclude 7 | 8 | Linker_options = option stack=65536 op stub=zrdx.exe op c 9 | 10 | # Compile using dos4g or pmodew 11 | System = dos4g 12 | 13 | Exe_file = c--.exe 14 | 15 | #################### 16 | ## Makefile rules ## 17 | #################### 18 | 19 | all : c--.exe 20 | 21 | c--.exe : main.obj toka.obj tokb.obj tokc.obj toke.obj tokr.obj & 22 | errors.obj debug.obj outobj.obj outpe.obj disasm.obj switch.obj & 23 | outle.obj pointer.obj new_type.obj class.obj res.obj optreg.obj libobj.obj 24 | 25 | *wlink system $(System) $(Linker_Options) name c--.exe & 26 | file {$<} 27 | 28 | clean 29 | del *.obj 30 | del *.err 31 | del *.bak 32 | 33 | # next are the exceptions that don't have to be compiled with the /zu option 34 | # since they will never be called from a interrupt. hey.. I _tried_ to find 35 | # a clean solution.. 36 | 37 | main.obj : main.cpp 38 | $(Compiler) $(Compiler_Options) $< 39 | 40 | toka.obj : toka.cpp 41 | $(Compiler) $(Compiler_Options) $< 42 | 43 | tokb.obj : tokb.cpp 44 | $(Compiler) $(Compiler_Options) $< 45 | 46 | tokc.obj : tokc.cpp 47 | $(Compiler) $(Compiler_Options) $< 48 | 49 | toke.obj : toke.cpp 50 | $(Compiler) $(Compiler_Options) $< 51 | 52 | tokr.obj : tokr.cpp 53 | $(Compiler) $(Compiler_Options) $< 54 | 55 | errors.obj :errors.cpp 56 | $(Compiler) $(Compiler_Options) $< 57 | 58 | debug.obj : debug.cpp 59 | $(Compiler) $(Compiler_Options) $< 60 | 61 | outobj.obj : outobj.cpp 62 | $(Compiler) $(Compiler_Options) $< 63 | 64 | outpe.obj : outpe.cpp 65 | $(Compiler) $(Compiler_Options) $< 66 | 67 | disasm.obj : disasm.cpp 68 | $(Compiler) $(Compiler_Options) $< 69 | 70 | switch.obj : switch.cpp 71 | $(Compiler) $(Compiler_Options) $< 72 | 73 | outle.obj : outle.cpp 74 | $(Compiler) $(Compiler_Options) $< 75 | 76 | pointer.obj : pointer.cpp 77 | $(Compiler) $(Compiler_Options) $< 78 | 79 | new_type.obj : new_type.cpp 80 | $(Compiler) $(Compiler_Options) $< 81 | 82 | class.obj : class.cpp 83 | $(Compiler) $(Compiler_Options) $< 84 | 85 | res.obj : res.cpp 86 | $(Compiler) $(Compiler_Options) $< 87 | 88 | optreg.obj : optreg.cpp 89 | $(Compiler) $(Compiler_Options) $< 90 | 91 | libobj.obj : libobj.cpp 92 | $(Compiler) $(Compiler_Options) $< 93 | 94 | .cpp.obj: 95 | $(Compiler) $(Compiler_Options) $< 96 | 97 | .asm.obj: 98 | wasm -3pr $< 99 | -------------------------------------------------------------------------------- /original.src/MAKEFILE.NT: -------------------------------------------------------------------------------- 1 | # Use the C or C++ compiler 2 | Compiler = wcl386 3 | 4 | # compiler options for code that has to run from an interrupt: 5 | Compiler_Options = /5r /zp1 /c /s /fp3 /ox /ot /y /cc++ /d_WC_ /mf /d__CONSOLE__ 6 | #/oxl+ /j /s /zu /Iinclude 7 | 8 | Linker_options = option stack=50176 op c 9 | 10 | # Compile using dos4g or pmodew 11 | System = 386 12 | 13 | Exe_file = c--.exe 14 | 15 | #################### 16 | ## Makefile rules ## 17 | #################### 18 | 19 | all : c--.exe 20 | 21 | c--.exe : main.obj toka.obj tokb.obj tokc.obj toke.obj tokr.obj & 22 | errors.obj debug.obj outobj.obj outpe.obj disasm.obj switch.obj & 23 | outle.obj pointer.obj new_type.obj class.obj res.obj optreg.obj libobj.obj 24 | 25 | *wlink system $(System) $(Linker_Options) name c--.exe & 26 | file {$<} 27 | 28 | clean 29 | del *.obj 30 | del *.err 31 | del *.bak 32 | 33 | # next are the exceptions that don't have to be compiled with the /zu option 34 | # since they will never be called from a interrupt. hey.. I _tried_ to find 35 | # a clean solution.. 36 | 37 | main.obj : main.cpp 38 | $(Compiler) $(Compiler_Options) $< 39 | 40 | toka.obj : toka.cpp 41 | $(Compiler) $(Compiler_Options) $< 42 | 43 | tokb.obj : tokb.cpp 44 | $(Compiler) $(Compiler_Options) $< 45 | 46 | tokc.obj : tokc.cpp 47 | $(Compiler) $(Compiler_Options) $< 48 | 49 | toke.obj : toke.cpp 50 | $(Compiler) $(Compiler_Options) $< 51 | 52 | tokr.obj : tokr.cpp 53 | $(Compiler) $(Compiler_Options) $< 54 | 55 | errors.obj :errors.cpp 56 | $(Compiler) $(Compiler_Options) $< 57 | 58 | debug.obj : debug.cpp 59 | $(Compiler) $(Compiler_Options) $< 60 | 61 | outobj.obj : outobj.cpp 62 | $(Compiler) $(Compiler_Options) $< 63 | 64 | outpe.obj : outpe.cpp 65 | $(Compiler) $(Compiler_Options) $< 66 | 67 | disasm.obj : disasm.cpp 68 | $(Compiler) $(Compiler_Options) $< 69 | 70 | switch.obj : switch.cpp 71 | $(Compiler) $(Compiler_Options) $< 72 | 73 | outle.obj : outle.cpp 74 | $(Compiler) $(Compiler_Options) $< 75 | 76 | pointer.obj : pointer.cpp 77 | $(Compiler) $(Compiler_Options) $< 78 | 79 | new_type.obj : new_type.cpp 80 | $(Compiler) $(Compiler_Options) $< 81 | 82 | class.obj : class.cpp 83 | $(Compiler) $(Compiler_Options) $< 84 | 85 | res.obj : res.cpp 86 | $(Compiler) $(Compiler_Options) $< 87 | 88 | optreg.obj :optreg.cpp 89 | $(Compiler) $(Compiler_Options) $< 90 | 91 | libobj.obj :libobj.cpp 92 | $(Compiler) $(Compiler_Options) $< 93 | 94 | .cpp.obj: 95 | $(Compiler) $(Compiler_Options) $< 96 | 97 | .asm.obj: 98 | wasm -3pr $< 99 | -------------------------------------------------------------------------------- /original.src/MISC.CPP: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #include "tok.h" 4 | 5 | long getfilelen(int fd) 6 | { 7 | struct stat sb; 8 | if(fstat(fd,&sb)!=0)return -1; 9 | return sb.st_size; 10 | } 11 | 12 | #ifndef CL 13 | void strupr(char *string) 14 | { 15 | char ch; 16 | while((ch=*string)){ 17 | if(ch>='a'&&ch<='z')*string=ch-0x20; 18 | string++; 19 | } 20 | } 21 | #endif 22 | -------------------------------------------------------------------------------- /original.src/NEW_TYPE.CPP: -------------------------------------------------------------------------------- 1 | #define _NEW_TYPE_ 2 | 3 | #include "tok.h" 4 | 5 | void convert_type(int *sign,int *rettype,int *pointr,int reg) 6 | { 7 | int usebracket=FALSE; 8 | if(tok==tk_openbracket&&(tok2>=tk_char&&tok2<=tk_double)){ 9 | nexttok(); 10 | usebracket=TRUE; 11 | } 12 | switch ( tok ){ 13 | case tk_byte: 14 | case tk_word: 15 | case tk_dword: 16 | case tk_float: 17 | case tk_double: 18 | case tk_qword: 19 | *sign=0; 20 | *rettype=tok; 21 | if(usebracket)nexttok(); 22 | else getoperand(reg); 23 | break; 24 | case tk_char: 25 | case tk_int: 26 | case tk_long: 27 | *sign=1; 28 | *rettype=tok; 29 | if(usebracket)nexttok(); 30 | else getoperand(reg); 31 | break; 32 | } 33 | if(usebracket){ 34 | while(tok==tk_mult){ 35 | nexttok(); 36 | *pointr++; 37 | } 38 | if(tok!=tk_closebracket)expected(')'); 39 | else getoperand(reg); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /original.src/OPTREG.CPP: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jossk/c--sphinx/3054be4dd30b1c231d54028e4b4a513168a099a6/original.src/OPTREG.CPP -------------------------------------------------------------------------------- /original.src/OUTLE.CPP: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jossk/c--sphinx/3054be4dd30b1c231d54028e4b4a513168a099a6/original.src/OUTLE.CPP -------------------------------------------------------------------------------- /original.src/OUTOBJ.CPP: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jossk/c--sphinx/3054be4dd30b1c231d54028e4b4a513168a099a6/original.src/OUTOBJ.CPP -------------------------------------------------------------------------------- /original.src/OUTPE.CPP: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jossk/c--sphinx/3054be4dd30b1c231d54028e4b4a513168a099a6/original.src/OUTPE.CPP -------------------------------------------------------------------------------- /original.src/POINTER.CPP: -------------------------------------------------------------------------------- 1 | #define _POINTER_ 2 | 3 | #include "tok.h" 4 | 5 | void dopointerproc() 6 | { 7 | unsigned int snum; 8 | int razr=r16; 9 | ITOK wtok; 10 | char *wbuf; 11 | SINFO wstr; 12 | if(am32)razr=r32; 13 | itok.rm=itok.sib; 14 | itok.sib=am32==0?CODE16:CODE32; 15 | if((FixUp) 16 | 17 | &&((itok.rm==rm_d32&&am32)||(itok.rm==rm_d16&&am32==0)))//16.07.04 16:01 18 | //18.08.04 18:03 itok.rm==rm_d32 was itok.rm==CODE32 19 | 20 | itok.flag|=f_reloc; 21 | else compressoffset(&itok); 22 | wstr=strinf; 23 | strinf.bufstr=NULL; 24 | wtok=itok; 25 | wbuf=bufrm; 26 | bufrm=NULL; 27 | unsigned int oaddESP=addESP; 28 | if(wtok.npointr<2){ 29 | itok.flag&=~f_far; 30 | // itok.post=0; 31 | snum=initparamproc(); 32 | CheckAllMassiv(wbuf,razr,&wstr,&wtok); 33 | outseg(&wtok,2); 34 | op(0xFF); op(0x10+wtok.rm+((wtok.flag&f_far)!=0?8:0)); 35 | outaddress(&wtok); 36 | } 37 | else{ 38 | int reg=BX; 39 | getpointeradr(&wtok,wbuf,&wstr,wtok.npointr-1,am32==0?r16:r32,reg); 40 | snum=initparamproc(); 41 | op66(razr); 42 | op(0xFF); 43 | op(0xD0+reg); /* CALL reg with stack params */ 44 | } 45 | if((wtok.flag&f_typeproc)==tp_cdecl)CorrectStack(snum); 46 | else addESP=oaddESP; 47 | clearregstat(0); 48 | } 49 | 50 | void dopointer() 51 | { 52 | if(itok.type==tk_proc){ 53 | if(tok2==tk_openbracket){ 54 | dopointerproc(); 55 | nexttok(); 56 | return; 57 | } 58 | itok.rm=itok.sib; 59 | itok.sib=am32==0?CODE16:CODE32; 60 | compressoffset(&itok); 61 | } 62 | int razr=r16; 63 | if(am32||(itok.flag&f_far))razr=r32; 64 | do_d_wordvar(0,razr); 65 | } 66 | 67 | void getpointeradr(ITOK *gstok,char *&gbuf,SINFO *gstr,int numpointer,int razr, int reg) 68 | { 69 | if(gstok->flag&f_far){ 70 | CheckAllMassiv(gbuf,4,gstr,gstok); 71 | outseg(gstok,2); 72 | op(0xC4); 73 | op(gstok->rm+8*reg); 74 | outaddress(gstok); 75 | itok.segm=ES; 76 | itok.sib=CODE16; 77 | if(reg==BX)itok.rm=rm_BX; 78 | else if(reg==SI)itok.rm=rm_SI; 79 | else if(reg==DI)itok.rm=rm_DI; 80 | warningreg(segs[0]); 81 | } 82 | else{ 83 | int retreg; 84 | if((gstok->flag&f_useidx)==0&&(retreg=CheckIDZReg(gstok->name,reg,razr))!=NOINREG){ 85 | if(am32==0&&retreg!=BX&&retreg!=SI&&retreg!=DI){ 86 | GenRegToReg(reg,retreg,razr); 87 | IDZToReg(gstok->name,reg,razr); 88 | } 89 | else if(retreg!=SKIPREG)reg=retreg; 90 | if(gbuf){ 91 | free(gbuf); 92 | gbuf=NULL; 93 | } 94 | if(gstr->bufstr){ 95 | free(gstr->bufstr); 96 | gstr->bufstr=NULL; 97 | } 98 | goto nomov; 99 | } 100 | if((gstok->flag&f_useidx))IDZToReg(gstok->name,reg,razr); 101 | CheckAllMassiv(gbuf,razr,gstr,gstok); 102 | outseg(gstok,2); 103 | op(0x8B); 104 | op(reg*8+gstok->rm); 105 | outaddress(gstok); 106 | nomov: 107 | itok.segm=DS; 108 | if(am32==0){ 109 | itok.sib=CODE16; 110 | if(reg==BX)itok.rm=rm_BX; 111 | else if(reg==SI)itok.rm=rm_SI; 112 | else if(reg==DI)itok.rm=rm_DI; 113 | } 114 | else{ 115 | itok.sib=CODE32; 116 | itok.rm=reg; 117 | } 118 | } 119 | itok.post=0; 120 | itok.number=0; 121 | itok.flag=gstok->flag&(!f_reloc); 122 | warningreg(regs[am32][reg]); 123 | while(numpointer){ 124 | outseg(&itok,2); 125 | op(0x8B); 126 | op(itok.rm+reg*8); 127 | outaddress(&itok); 128 | numpointer--; 129 | } 130 | } 131 | 132 | void dovalpointer() 133 | { 134 | int sign=0,rettype,pointr,razr=r8; 135 | int rrettype; 136 | int numpointer=0; 137 | int hnumber=0; 138 | //int i=0; 139 | int reg=BX; 140 | int npointr=0; 141 | do{ 142 | nexttok(); 143 | numpointer++; 144 | }while(tok==tk_mult); 145 | ITOK wtok; 146 | char *wbuf; 147 | SINFO wstr; 148 | unsigned char ocha; 149 | unsigned int oinptr; 150 | unsigned int olinenum; 151 | int otok2; 152 | wstr=strinf; 153 | strinf.bufstr=NULL; 154 | wtok=itok; 155 | wbuf=bufrm; 156 | bufrm=NULL; 157 | if(numpointer==itok.npointr){ 158 | switch(itok.type){ 159 | case tk_qword: 160 | case tk_double: 161 | razr+=4; 162 | case tk_dword: 163 | case tk_float: 164 | razr+=2; 165 | case tk_word: 166 | razr++; 167 | break; 168 | case tk_long: 169 | razr+=2; 170 | case tk_int: 171 | razr++; 172 | case tk_char: 173 | sign=1; 174 | break; 175 | } 176 | rrettype=rettype=itok.type; 177 | oinptr=inptr2; 178 | ocha=cha2; 179 | olinenum=linenumber; 180 | otok2=tok2; 181 | nexttok(); 182 | if(tok==tk_assign){ 183 | nexttok(); 184 | convert_type(&sign,(int *)&rettype,&pointr); 185 | while(tok==tk_mult){ 186 | nexttok(); 187 | npointr++; 188 | } 189 | if(npointr>itok.npointr)unuseableinput(); 190 | if(tok2==tk_assign){ 191 | hnumber=MultiAssign(razr,USEALLREG,npointr); 192 | if(reg==hnumber)reg=DI; 193 | goto getfromax; 194 | } 195 | } 196 | linenumber=linenum2=olinenum; 197 | cha2=ocha; 198 | inptr2=oinptr; 199 | tok2=otok2; 200 | itok=wtok; 201 | if(itok.type==tk_proc){ 202 | dopointer(); 203 | return; 204 | } 205 | getpointeradr(&itok,wbuf,&wstr,numpointer-1,razr,reg); 206 | tok=tk_charvar+itok.type-tk_char; 207 | switch(itok.type){ 208 | case tk_long: 209 | case tk_dword: 210 | case tk_int: 211 | case tk_word: 212 | do_d_wordvar(sign,razr); 213 | return; 214 | case tk_char: 215 | case tk_byte: 216 | dobytevar(sign); 217 | return; 218 | case tk_float: 219 | dofloatvar(); 220 | return; 221 | case tk_qword: 222 | doqwordvar(); 223 | return; 224 | case tk_double: 225 | // dodoublevar(); 226 | return; 227 | } 228 | getfromax: 229 | convert_returnvalue(rrettype,rettype); 230 | ITOK otok=itok; 231 | getpointeradr(&wtok,wbuf,&wstr,numpointer-1,razr,reg); 232 | switch(rrettype){ 233 | case tk_char: 234 | case tk_byte: 235 | outseg(&itok,2); 236 | op(0x88); 237 | op(itok.rm+hnumber*8); //[reg]=AL 238 | break; 239 | case tk_int: 240 | case tk_word: 241 | case tk_long: 242 | case tk_dword: 243 | case tk_qword: 244 | op66(razr); 245 | outseg(&itok,2); 246 | op(0x89); 247 | op(itok.rm+hnumber*8); // MOV [rmword],AX 248 | break; 249 | case tk_float: 250 | outseg(&itok,2); //fstp var 251 | op(0xd9); 252 | op(itok.rm+0x18); 253 | fwait3(); 254 | break; 255 | case tk_double: 256 | outseg(&itok,2); //fstpq var 257 | op(0xdd); 258 | op(itok.rm+0x18); 259 | fwait3(); 260 | break; 261 | } 262 | itok=otok; 263 | } 264 | else if(numpointer>6)&3) 3 | #define REG(a) (((a)>>3)&7) 4 | #define RM(a) ((a)&7) 5 | #define SCALE(a) (((a)>>6)&3) 6 | #define INDEX(a) (((a)>>3)&7) 7 | #define BASE(a) ((a)&7) 8 | 9 | typedef union{ 10 | struct{ 11 | unsigned short ofs; 12 | unsigned short seg; 13 | }w; 14 | unsigned long dword; 15 | }WORD32; 16 | 17 | /* prototypes */ 18 | void ua_str(char *); 19 | unsigned char getbyte(void); 20 | int modrm(); 21 | int sib(); 22 | void uprintf(char *, ...); 23 | void uputchar(char ); 24 | int bytes(char ); 25 | void outhex(char , int , int , int , int ); 26 | void reg_name(int , char ); 27 | void do_sib(int ); 28 | void do_modrm(char ); 29 | void floating_point(int ); 30 | void percent(char , char ); 31 | void undata(unsigned ofs,unsigned long len,unsigned int type); 32 | 33 | -------------------------------------------------------------------------------- /original.src/TODO.TXT: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jossk/c--sphinx/3054be4dd30b1c231d54028e4b4a513168a099a6/original.src/TODO.TXT -------------------------------------------------------------------------------- /original.src/TOK.H: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jossk/c--sphinx/3054be4dd30b1c231d54028e4b4a513168a099a6/original.src/TOK.H -------------------------------------------------------------------------------- /original.src/TOKA.CPP: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jossk/c--sphinx/3054be4dd30b1c231d54028e4b4a513168a099a6/original.src/TOKA.CPP -------------------------------------------------------------------------------- /original.src/TOKB.CPP: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jossk/c--sphinx/3054be4dd30b1c231d54028e4b4a513168a099a6/original.src/TOKB.CPP -------------------------------------------------------------------------------- /original.src/TOKC.CPP: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jossk/c--sphinx/3054be4dd30b1c231d54028e4b4a513168a099a6/original.src/TOKC.CPP -------------------------------------------------------------------------------- /original.src/TOKE.CPP: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jossk/c--sphinx/3054be4dd30b1c231d54028e4b4a513168a099a6/original.src/TOKE.CPP -------------------------------------------------------------------------------- /original.src/TOKR.CPP: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jossk/c--sphinx/3054be4dd30b1c231d54028e4b4a513168a099a6/original.src/TOKR.CPP -------------------------------------------------------------------------------- /original.src/WC3.BAT: -------------------------------------------------------------------------------- 1 | @echo off 2 | wmake 3 | rem compile watcom with zordex 4 | rem wcl386 /5r /zp1 /d2 /hw /c /fp3 /ox /ot /y /cc++ /d_WC_ /mf main.cpp toka.cpp tokb.cpp tokc.cpp toke.cpp tokr.cpp errors.cpp 5 | rem wlink op map n c-- f main.obj f toka.obj f tokb.obj f tokc.obj f toke.obj f tokr.obj f errors.obj sys dos4g op c op stub=zrdx.exe op st=32768 6 | rem del *.obj 7 | copy c--.exe c:\c--\*.* 8 | -------------------------------------------------------------------------------- /original.src/Wc3nt.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | wmake -f makefile.nt 3 | copy c--.exe c:\c--\*.* 4 | -------------------------------------------------------------------------------- /original.src/ZRDX.EXE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jossk/c--sphinx/3054be4dd30b1c231d54028e4b4a513168a099a6/original.src/ZRDX.EXE -------------------------------------------------------------------------------- /original.src/c--.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jossk/c--sphinx/3054be4dd30b1c231d54028e4b4a513168a099a6/original.src/c--.exe -------------------------------------------------------------------------------- /original.src/res.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jossk/c--sphinx/3054be4dd30b1c231d54028e4b4a513168a099a6/original.src/res.cpp --------------------------------------------------------------------------------