File indexing completed on 2024-04-14 05:36:54

0001 /***************************************************************************
0002  *   Copyright (C) 2003-2004 by David Saxton                               *
0003  *   david@bluehaze.org                                                    *
0004  *                                                                         *
0005  *   This program is free software; you can redistribute it and/or modify  *
0006  *   it under the terms of the GNU General Public License as published by  *
0007  *   the Free Software Foundation; either version 2 of the License, or     *
0008  *   (at your option) any later version.                                   *
0009  ***************************************************************************/
0010 
0011 #ifndef PICINFO14BIT_H
0012 #define PICINFO14BIT_H
0013 
0014 #include "asminfo.h"
0015 #include "picinfo.h"
0016 
0017 /**
0018 @short 14 Bit PIC Instructions
0019 @author David Saxton
0020  */
0021 class PicAsm14bit : public AsmInfo
0022 {
0023 public:
0024     static PicAsm14bit *self();
0025     Set set() const override
0026     {
0027         return AsmInfo::PIC14;
0028     }
0029 
0030     // protected:
0031     //  static PicAsm14bit *m_self;
0032 
0033     // private:
0034     PicAsm14bit();
0035 };
0036 
0037 /**
0038 @author David Saxton
0039  */
0040 class PicInfo14bit : public PicInfo
0041 {
0042 public:
0043     PicInfo14bit();
0044     ~PicInfo14bit() override;
0045 
0046     AsmInfo *instructionSet() override
0047     {
0048         return PicAsm14bit::self();
0049     }
0050 };
0051 
0052 /**
0053 @author David Saxton
0054  */
0055 class PicInfo16C8x : public PicInfo14bit
0056 {
0057 public:
0058     PicInfo16C8x();
0059     ~PicInfo16C8x() override;
0060 };
0061 
0062 /**
0063 Note: this PIC is superseeded by 16F84. SDCC does not recognize it.
0064 @author David Saxton
0065  */
0066 class PicInfo16C84 : public PicInfo16C8x
0067 {
0068 public:
0069     PicInfo16C84();
0070     ~PicInfo16C84() override;
0071     Support gpsimSupport() const override
0072     {
0073         return FullSupport;
0074     }
0075     Support microbeSupport() const override
0076     {
0077         return FullSupport;
0078     }
0079 };
0080 
0081 /**
0082 @author David Saxton
0083  */
0084 class PicInfo16F84 : public PicInfo16C8x
0085 {
0086 public:
0087     PicInfo16F84();
0088     ~PicInfo16F84() override;
0089     Support gpsimSupport() const override
0090     {
0091         return FullSupport;
0092     }
0093     Support flowcodeSupport() const override
0094     {
0095         return FullSupport;
0096     }
0097     Support microbeSupport() const override
0098     {
0099         return FullSupport;
0100     }
0101 };
0102 
0103 /**
0104 @author David Saxton
0105  */
0106 class PicInfo16CR84 : public PicInfo16F84
0107 {
0108 public:
0109     PicInfo16CR84();
0110     ~PicInfo16CR84() override;
0111     Support gpsimSupport() const override
0112     {
0113         return FullSupport;
0114     }
0115     Support flowcodeSupport() const override
0116     {
0117         return NoSupport;
0118     }
0119     Support microbeSupport() const override
0120     {
0121         return NoSupport;
0122     }
0123 };
0124 
0125 /**
0126 @author David Saxton
0127  */
0128 class PicInfo16F83 : public PicInfo16C8x
0129 {
0130 public:
0131     PicInfo16F83();
0132     ~PicInfo16F83() override;
0133     Support gpsimSupport() const override
0134     {
0135         return FullSupport;
0136     }
0137 };
0138 
0139 /**
0140 @author David Saxton
0141  */
0142 class PicInfo16CR83 : public PicInfo16F83
0143 {
0144 public:
0145     PicInfo16CR83();
0146     ~PicInfo16CR83() override;
0147     Support gpsimSupport() const override
0148     {
0149         return FullSupport;
0150     }
0151 };
0152 
0153 /**
0154 @author David Saxton
0155  */
0156 class PicInfo16C61 : public PicInfo16C8x
0157 {
0158 public:
0159     PicInfo16C61();
0160     ~PicInfo16C61() override;
0161     Support gpsimSupport() const override
0162     {
0163         return FullSupport;
0164     }
0165 };
0166 
0167 /**
0168 @author David Saxton
0169  */
0170 class PicInfo16X6X : public PicInfo14bit
0171 {
0172 public:
0173     PicInfo16X6X();
0174     ~PicInfo16X6X() override;
0175     Support gpsimSupport() const override
0176     {
0177         return NoSupport;
0178     }
0179 };
0180 
0181 /**
0182 @author David Saxton
0183  */
0184 class PicInfo16C62 : public PicInfo16X6X
0185 {
0186 public:
0187     PicInfo16C62();
0188     ~PicInfo16C62() override;
0189     Support gpsimSupport() const override
0190     {
0191         return FullSupport;
0192     }
0193 };
0194 
0195 /**
0196 @author David Saxton
0197  */
0198 class PicInfo16C63 : public PicInfo16C62
0199 {
0200 public:
0201     PicInfo16C63();
0202     ~PicInfo16C63() override;
0203     Support gpsimSupport() const override
0204     {
0205         return FullSupport;
0206     }
0207 };
0208 
0209 /**
0210 @author David Saxton
0211  */
0212 class PicInfo16C64 : public PicInfo16X6X
0213 {
0214 public:
0215     PicInfo16C64();
0216     ~PicInfo16C64() override;
0217     Support gpsimSupport() const override
0218     {
0219         return FullSupport;
0220     }
0221 };
0222 
0223 /**
0224 @author David Saxton
0225  */
0226 class PicInfo16C65 : public PicInfo16C64
0227 {
0228 public:
0229     PicInfo16C65();
0230     ~PicInfo16C65() override;
0231     Support gpsimSupport() const override
0232     {
0233         return FullSupport;
0234     }
0235 };
0236 
0237 /**
0238 @author David Saxton
0239  */
0240 class PicInfo16F62x : public PicInfo16X6X
0241 {
0242 public:
0243     PicInfo16F62x();
0244     ~PicInfo16F62x() override;
0245     Support gpsimSupport() const override
0246     {
0247         return NoSupport;
0248     }
0249 };
0250 
0251 /**
0252 @author David Saxton
0253  */
0254 class PicInfo16F627 : public PicInfo16F62x
0255 {
0256 public:
0257     PicInfo16F627();
0258     ~PicInfo16F627() override;
0259     Support gpsimSupport() const override
0260     {
0261         return FullSupport;
0262     }
0263     Support flowcodeSupport() const override
0264     {
0265         return PartialSupport;
0266     }
0267     Support microbeSupport() const override
0268     {
0269         return FullSupport;
0270     }
0271 };
0272 
0273 /**
0274 @author David Saxton
0275  */
0276 class PicInfo16F628 : public PicInfo16F627
0277 {
0278 public:
0279     PicInfo16F628();
0280     ~PicInfo16F628() override;
0281     Support gpsimSupport() const override
0282     {
0283         return FullSupport;
0284     }
0285     Support flowcodeSupport() const override
0286     {
0287         return PartialSupport;
0288     }
0289     Support microbeSupport() const override
0290     {
0291         return FullSupport;
0292     }
0293 };
0294 
0295 /**
0296 @author David Saxton
0297  */
0298 class PicInfo16F648 : public PicInfo16F628
0299 {
0300 public:
0301     PicInfo16F648();
0302     ~PicInfo16F648() override;
0303     Support gpsimSupport() const override
0304     {
0305         return FullSupport;
0306     }
0307 };
0308 
0309 /**
0310 @author David Saxton
0311  */
0312 class PicInfo16C71 : public PicInfo16C61
0313 {
0314 public:
0315     PicInfo16C71();
0316     ~PicInfo16C71() override;
0317     Support gpsimSupport() const override
0318     {
0319         return FullSupport;
0320     }
0321 };
0322 
0323 /**
0324 @author David Saxton
0325  */
0326 class PicInfo16C712 : public PicInfo16C62
0327 {
0328 public:
0329     PicInfo16C712();
0330     ~PicInfo16C712() override;
0331     Support gpsimSupport() const override
0332     {
0333         return FullSupport;
0334     }
0335 };
0336 
0337 /**
0338 @author David Saxton
0339  */
0340 class PicInfo16C716 : public PicInfo16C712
0341 {
0342 public:
0343     PicInfo16C716();
0344     ~PicInfo16C716() override;
0345     Support gpsimSupport() const override
0346     {
0347         return FullSupport;
0348     }
0349 };
0350 
0351 /**
0352 @author David Saxton
0353  */
0354 class PicInfo16C72 : public PicInfo16C62
0355 {
0356 public:
0357     PicInfo16C72();
0358     ~PicInfo16C72() override;
0359     Support gpsimSupport() const override
0360     {
0361         return FullSupport;
0362     }
0363 };
0364 
0365 /**
0366 @author David Saxton
0367  */
0368 class PicInfo16C73 : public PicInfo16C63
0369 {
0370 public:
0371     PicInfo16C73();
0372     ~PicInfo16C73() override;
0373     Support gpsimSupport() const override
0374     {
0375         return FullSupport;
0376     }
0377 };
0378 
0379 /**
0380 @author David Saxton
0381  */
0382 class PicInfo16C74 : public PicInfo16C65
0383 {
0384 public:
0385     PicInfo16C74();
0386     ~PicInfo16C74() override;
0387     Support gpsimSupport() const override
0388     {
0389         return FullSupport;
0390     }
0391 };
0392 
0393 /**
0394 @author David Saxton
0395  */
0396 class PicInfo16F873 : public PicInfo16C73
0397 {
0398 public:
0399     PicInfo16F873();
0400     ~PicInfo16F873() override;
0401     Support gpsimSupport() const override
0402     {
0403         return FullSupport;
0404     }
0405 };
0406 
0407 /**
0408 @author David Saxton
0409  */
0410 class PicInfo16F874 : public PicInfo16C74
0411 {
0412 public:
0413     PicInfo16F874();
0414     ~PicInfo16F874() override;
0415     Support gpsimSupport() const override
0416     {
0417         return FullSupport;
0418     }
0419 };
0420 
0421 /**
0422 @author David Saxton
0423  */
0424 class PicInfo16F877 : public PicInfo16F874
0425 {
0426 public:
0427     PicInfo16F877();
0428     ~PicInfo16F877() override;
0429     Support gpsimSupport() const override
0430     {
0431         return FullSupport;
0432     }
0433 };
0434 
0435 #endif