• Backup OSCCAL

    05/25/2026 at 14:04 0 comments

    DS41228F

    This document includes the programming specifications for the following devices:
    • PIC10F200
    • PIC10F202
    • PIC10F204
    • PIC10F206

    MEMORY MAPPING
    User Program Memory Map
    The user memory space extends from (0x000-0x0FF) on the PIC10F200/204 and (0x000-0x1FF) on the PIC10F202/206. In Program/Verify mode, the program memory space extends from (0x000-0x1FF) for the PIC10F200/204 and (0x000-0x3FF) for the PIC10F202/206. The first half, (0x000-0x0FF) and (0x000-0x1FF) respectively, is user program memory. The second half, (0x100-0x1FF) and (0x200-0x3FF) respectively, is configuration memory. The PC will
    increment from (0x000-0x0FF) and (0x000-0x1FF) respectively, then to 0x100 and 0x200, respectively (not to 0x000).
    In the configuration memory space, 0x100-0x13F for the PIC10F200/204, and 0x200-0x23F for the PIC10F202/206, are physically implemented. However, only locations 0x100-0x103 and 0x200-0x203 are available. Other locations are reserved.

    PIC10F200/204 PROGRAM MEMORY MAP

    HOW TO VIEW THE BACKUP OSCCAL?

    The memory locations 0x0100-0x103 are used for User ID Locations. The backup value of the OSCCAL value is located at 0x0104. 

    Take any fresh PIC10F200 and read the content normally.

    We can see the final location of the FLASH memory contains the OSCCAL value of 0xC18

    Now set the device as PIC10F202. By this way the programmer able to access the higher memory locations.

    In the above view please note the selected chip is PIC10F202. But the actual chip we used is PIC10F200. At the memory location 0x0104 we can see the same OSCCAL value which in this chip is 0xC18.

    Below is the screen view for one more PIC10F200 chip

    In the above case the different PIC10F200 which is having the OSCCAL of 0xC1C. The same value of 0xC1C can be seen at the location 0x0104.

    Other values are RESERVED as per Microchip and needs further investigation.

  • BASIC-52 INSTRUCTION SET SUMMARY

    03/07/2026 at 14:03 0 comments

    COMMANDS             STATEMENTS           OPERATORS
    RUN                  BAUD                 ADD (+)
    CONT                 CALL                 DIVIDE (/)
    LIST                 CLEAR                EXPONENTIATION (**)
    LIST#                CLEAR(S&I)           MULTIPLY (*)
    LIST@ (V1.1)         CLOCK(1&0)           SUBTRACT (-)
    NEW                  DATA                 LOGICAL AND (.AND.)
    NULL                 READ                 LOGICAL OR (.OR.)
    RAM                  RESTORE              LOGICAL X-OR (.XOR.)
    ROM                  DIM                  LOGICAL NOT (.OR.)
    XFER                 DO-WHILE             ABS( )
    PROG                 DO-UNTIL             INT( )
    PROG1                END                  SGN( )
    PROG2                FOR-TO-STEP          SQR( )
    PROG3 (V1.1)         NEXT                 RND
    PROG4 (V1.1)         GOSUB                LOG( )
    PROG5 (V1.1)         RETURN               EXP( )
    PROG6 (V1.1)         GOTO                 SIN( )
    FPROG                ON-GOTO              COS( )
    FPROG1               ON-GOSUB             TAN( )
    FPROG2               IF-THEN-ELSE         ATN( )
    FPROG3 (V1.1)        INPUT                =, >, >=, <, <=, <>
    FPROG4 (V1.1)        LET                  ASC( )
    FPROG5 (V1.1)        ONERR                CHR( )
    FPROG6 (V1.1)        ONEX1                CBY( )
                         ONTIME               DBY( )
                         PRINT                XBY( )
                         PRINT#               GET
                         PRINT@ (V1.1)        IE
                         PH0.                 IP
                         PH0.#                PORT1
                         PH0.@ (V1.1)         PCON
                         PH1.                 RCAP2
                         PH1.#                T2CON
                         PH1.(@ (V1.1)        TCON
                         PGM (V1. 1 )         TMOD
                         PUSH                 TIME
                         POP                  TIMER0
                         PWM                  TIMER1
                         REM                  TIMER2
                         RETI                 XTAL
                         STOP                 MTOP
                         STRING               LEN
                         UI(1&0)              FREE
                         U0(1&0)              PI
                         LD@ (V1. 1 )
                         ST@ (V1. 1 )
                         IDLE (V1.1)
                         RROM (V1. 1 )

  • Calculating speed of light with BASIC-52

    03/04/2026 at 06:46 0 comments

    Let us calculate the speed of light from permittivity of free space and permeability of free space.

    ε0 = 8.8541878188(14)×10−12 F⋅m−1

    μ0 = 1.25663706127(20)×10−6 N⋅A−2

    10     REM CALCULATE SPEED OF LIGHT
    20    MUZERO=1.2566370612720E-6
    30    EPZERO=8.854187818814E-12
    60    C=1/SQR(MUZERO*EPZERO)
    70     PRINT " SPEED OF LIGHT c = ",C,"m/s"
    80     END

    Or we can simply write directly as

    10     REM CALCULATE SPEED OF LIGHT
    20    C=1/SQR(1.2566371E-6*8.8541878E-12)
    30     PRINT " SPEED OF LIGHT  c = ",C,"m/s"
    40     END

    READY
    >RUN

     SPEED OF LIGHT  c =  2.9979245 E+8 m/s

    READY
    >

    10     REM CALCULATE SPEED OF LIGHT
    20    MUZERO=1.2566370612720E-6
    30    EPZERO=8.854187818814E-12
    40    rem X=MUZERO*EPZERO
    50    rem Y=SQR(X)
    60    C=1/SQR(muzero*epzero)
    70     PRINT " SPEED OF LIGHT = ",C, "m/s"
    80     END
    90 rem MUZERO = 1.2566370612720e-6
    100 rem EPZERO = 8.854187818814e-12
    110 rem MUZERO * EPZERO = 1.1126500560584764552371408e-17
    120 rem SQR(MUZERO * EPZERO) = 3.3356409519888024891312226903836e-9
    130 rem C = 29,97,92,457.99934552707422964167902

     The above is comparison data between BASIC-52 and MS Windows calculator results.

    10     REM CALCULATE SPEED OF LIGHT
    20    MUZERO=PI*4E-7
    30    EPZERO=8.854187818814E-12
    60    C=1/SQR(MUZERO*EPZERO)
    70     PRINT " SPEED OF LIGHT = ",C,"m/s"
    80     END

    The above uses constant PI directly and gives only 2m error.

    READY
    >RUN
    
     SPEED OF LIGHT =  2.9979246 E+8 m/s