PC-On-a-Chip v5.05 PRELIMINARY SPECIFICATION -------------------------------------------- INTRODUCTION ------------ The MVS PCOC5 is an IBM PC compatible computer in a single chip complete with memory, serial/parallel ports, LCD/keyboard interfaces and BIOS/DOS. ZERO external components are required with an internal oscillator available in 1mhz (low pwr), 4.77mhz (legacy), or 7mhz (turbo). The crystal version (PCOC5a) runs from 455khz to 20mhz. With industry standard 8051 type pinout it is a drop-in replacement for this popular microcontroller but runs x86 code. Operating current as low as 500ua (10ua idle) means it can be powered from batteries or even serial handshake lines. Applications include industrial, robotics, security, data logging, education, etc.. A revolutionary Microcoded Programmable Device implements a subset of Athlon/Pentium instructions which means you can debug and test programs on the desktop then download over a serial port. No cross compilers or emulators required because the programs are actually executed on the host PC with its wide selection of software and hardware development tools. Files can be loaded using simple comm programs like PROCOMM or WINDOWS HYPERTERM so no special download utilities are required. Another big advantage over other PC compatibles is that code can't be read once downloaded which prevents reverse engineering of user programs. The LCD can be a one, two, or four line alphanumeric type or graphics panels up to 640x480. Users access the display with BIOS/DOS calls so it looks like a standard PC VGA screen to software. The keyboard can be a simple hex keypad or an 8x8 matrix with access to all ASCII numbers and letters of the alphabet. The keyboard also uses BIOS/DOS calls so it looks like a standard PC type to software with no "bit-banging" required. Built-in serial ports have the same address as a regular PC (3F8, 3E8, etc.) which makes I/O programming easy. The PCOC5 has a total of six serial lines. They can be configured as RS232 type or Single-Wire Multi-Drop for networking. Again, BIOS/DOS calls simplify programming. The PCOC5 has four parallel ports (2 shared) with the same address as LPT1 and LPT2 on a PC (3BC/378/379/37a). They can be used to interface to printers or as general purpose TTL compatible bits for driving relays, indicators, etc.. If features like serial, display, and keypad are not needed then up to 35 I/O bits are available to the user that can be made into either inputs or outputs. MVS has available many PC compatible modules (VGA, flash/hard drive, sound, etc.) that interface to the PCOC5. PINOUT (8051 compatible) ------------------------ PCOC5 LPT1 data outputs KROW/LCD/3BC-0 1 pin 40 VCC KROW/LCD/3BC-1 2 39 378-0 LPT2 data outputs +/KROW/LCD/3BC-2 3 38 378-1 -/KROW/LCD/3BC-3 4 37 378-2 KROW/LCD/3BC-4 5 36 378-3 KROW/LCD/3BC-5 6 35 378-4 KROW/LCD/3BC-6 7 34 378-5 KROW/LCD/3BC-7 8 33 378-6 RESETL 9 32 378-7 RX1 10 31 37A-1 TX1 11 30 37A-2 LPT2 control outputs RX2 12 29 37A-3 TX2 13 28 379/KCOL-7 LPT2 status inputs RX3 14 27 379/KCOL-6 TX3 15 26 379/KCOL-5 LED/37A-0 16 25 379/KCOL-4 LCDEN 17 24 379/KCOL-3 XO 18 23 379/KCOL-2 XI 19 22 379/KCOL-1 GND 20 21 379/KCOL-0 MEMORY MAP ---------- 0000-17ff ROM (FLASH, code goes here) E000-E1ff EE (like RAM but slower to write) FE00-FFFF RAM BIOS CALLS ----------- int ah desc 10 00 VIDEO INITIALIZE 10 0E VIDEO WRITE 13 02 DISK READ entry: DL=Drv DH=Hd CH=Trk CL=Sec AL=Secs ES:BX=Buf exit: AH=Stat AL=Secs Rd CY=Bad 13 03 DISK WRITE 13 05 DISK FORMAT 14 00 SERIAL INITIALIZE entry: al=baud (19.2k=23h 38.4k=43h 57.6k=63h 115.2k=83h 4.8k=C3h 9.6k=E3h) 14 01 SERIAL OUTPUT entry: port in DX, char in AL 14 02 SERIAL INPUT entry: port in DX exit: char in AL 16 00 KEYBOARD READ 17 00 PARALLEL PORT OUTPUT entry: byt in AL, port address in DX 17 02 PARALLEL PORT STATUS entry: port address in DX exit: byt read in AL 19 BOOT 1A 00 TIME-OF-DAY READ exit: tics (120us) in DX 20 TERMINATE 25 ABS RD al=drv cx=num secs dx=beg sec ds:bx=buf 26 ABS WR DOS CALLS (INT 21) ------------------ func# description 09 display string, entry: ds:dx=asci$ str 0a get string, entry: dx=ptr 1st=max exit: 2nd=sz 3rd=str 0e set current disk, entry: dl=disk no. exit: al=total drives 19 get current disk, exit: al=disk no. 25 set int vect, entry: al=int no. dx=4 byt address 35 get vect, entry: al=int exit: es:bx=cs:ip 36 disk stat, entry: dl=drv+1 exit: bx=free dx=tot cx=bps ax=spc 3c create, now same as fopen 3d open file, entry: al=0=rd ds:dx=asciz exit: ax=Hndl 3e close file, entry: bx=Hndl 3f rd file, entry: bx=Hndl cx=sz ds:dx=buf exit: ax=sz,0=eof 40 wr file, entry: bx=Hndl cx=sz ds:dx=buf exit: ax=sz 42 file seek, entry: al=method bx=Hndl cx:dx=ofst INSTRUCTION SET --------------- ADC AH,012h ADC AH,AH ADC AH,AL ADC AH,BH ADC AH,BL ADC AH,CH ADC AH,CL ADC AH,DH ADC AH,DL ADC AL,012h ADC AL,AH ADC AL,AL ADC AL,BH ADC AL,BL ADC AL,CH ADC AL,CL ADC AL,DH ADC AL,DL ADC BH,012h ADC BH,AH ADC BH,AL ADC BH,BH ADC BH,BL ADC BH,CH ADC BH,CL ADC BH,DH ADC BH,DL ADC BL,012h ADC BL,AH ADC BL,AL ADC BL,BH ADC BL,BL ADC BL,CH ADC BL,CL ADC BL,DH ADC BL,DL ADC CH,012h ADC CH,AH ADC CH,AL ADC CH,BH ADC CH,BL ADC CH,CH ADC CH,CL ADC CH,DH ADC CH,DL ADC CL,012h ADC CL,AH ADC CL,AL ADC CL,BH ADC CL,BL ADC CL,CH ADC CL,CL ADC CL,DH ADC CL,DL ADC DH,012h ADC DH,AH ADC DH,AL ADC DH,BH ADC DH,BL ADC DH,CH ADC DH,CL ADC DH,DH ADC DH,DL ADC DL,012h ADC DL,AH ADC DL,AL ADC DL,BH ADC DL,BL ADC DL,CH ADC DL,CL ADC DL,DH ADC DL,DL ADD AH,012h ADD AH,AH ADD AH,AL ADD AH,BH ADD AH,BL ADD AH,CH ADD AH,CL ADD AH,DH ADD AH,DL ADD AL,012h ADD AL,AH ADD AL,AL ADD AL,BH ADD AL,BL ADD AL,CH ADD AL,CL ADD AL,DH ADD AL,DL ADD BH,012h ADD BH,AH ADD BH,AL ADD BH,BH ADD BH,BL ADD BH,CH ADD BH,CL ADD BH,DH ADD BH,DL ADD BL,012h ADD BL,AH ADD BL,AL ADD BL,BH ADD BL,BL ADD BL,CH ADD BL,CL ADD BL,DH ADD BL,DL ADD CH,012h ADD CH,AH ADD CH,AL ADD CH,BH ADD CH,BL ADD CH,CH ADD CH,CL ADD CH,DH ADD CH,DL ADD CL,012h ADD CL,AH ADD CL,AL ADD CL,BH ADD CL,BL ADD CL,CH ADD CL,CL ADD CL,DH ADD CL,DL ADD DH,012h ADD DH,AH ADD DH,AL ADD DH,BH ADD DH,BL ADD DH,CH ADD DH,CL ADD DH,DH ADD DH,DL ADD DL,012h ADD DL,AH ADD DL,AL ADD DL,BH ADD DL,BL ADD DL,CH ADD DL,CL ADD DL,DH ADD DL,DL AND AH,012h AND AH,AH AND AH,AL AND AH,BH AND AH,BL AND AH,CH AND AH,CL AND AH,DH AND AH,DL AND AL,012h AND AL,AH AND AL,AL AND AL,BH AND AL,BL AND AL,CH AND AL,CL AND AL,DH AND AL,DL AND BH,012h AND BH,AH AND BH,AL AND BH,BH AND BH,BL AND BH,CH AND BH,CL AND BH,DH AND BH,DL AND BL,012h AND BL,AH AND BL,AL AND BL,BH AND BL,BL AND BL,CH AND BL,CL AND BL,DH AND BL,DL AND CH,012h AND CH,AH AND CH,AL AND CH,BH AND CH,BL AND CH,CH AND CH,CL AND CH,DH AND CH,DL AND CL,012h AND CL,AH AND CL,AL AND CL,BH AND CL,BL AND CL,CH AND CL,CL AND CL,DH AND CL,DL AND DH,012h AND DH,AH AND DH,AL AND DH,BH AND DH,BL AND DH,CH AND DH,CL AND DH,DH AND DH,DL AND DL,012h AND DL,AH AND DL,AL AND DL,BH AND DL,BL AND DL,CH AND DL,CL AND DL,DH AND DL,DL CALL NEAR x0121 CLC CMP AH,012h CMP AH,AH CMP AH,AL CMP AH,BH CMP AH,BL CMP AH,CH CMP AH,CL CMP AH,DH CMP AH,DL CMP AL,012h CMP AL,AH CMP AL,AL CMP AL,BH CMP AL,BL CMP AL,CH CMP AL,CL CMP AL,DH CMP AL,DL CMP BH,012h CMP BH,AH CMP BH,AL CMP BH,BH CMP BH,BL CMP BH,CH CMP BH,CL CMP BH,DH CMP BH,DL CMP BL,012h CMP BL,AH CMP BL,AL CMP BL,BH CMP BL,BL CMP BL,CH CMP BL,CL CMP BL,DH CMP BL,DL CMP CH,012h CMP CH,AH CMP CH,AL CMP CH,BH CMP CH,BL CMP CH,CH CMP CH,CL CMP CH,DH CMP CH,DL CMP CL,012h CMP CL,AH CMP CL,AL CMP CL,BH CMP CL,BL CMP CL,CH CMP CL,CL CMP CL,DH CMP CL,DL CMP DH,012h CMP DH,AH CMP DH,AL CMP DH,BH CMP DH,BL CMP DH,CH CMP DH,CL CMP DH,DH CMP DH,DL CMP DL,012h CMP DL,AH CMP DL,AL CMP DL,BH CMP DL,BL CMP DL,CH CMP DL,CL CMP DL,DH CMP DL,DL DEC AX DEC BX DEC BP DEC CX DEC DI DEC DX DEC SI DEC SP IN AL,DX INC AX INC BX INC BP INC CX INC DI INC DX INC SI INC SP INT 012h x0121: JNZ x0121 JB x0121 (same as JC) JMP NEAR x0121 JNB x0121 (same as JNC) JZ x0121 MOV AH,012h MOV AH,AH MOV AH,AL MOV AH,BH MOV AH,BL MOV AH,CH MOV AH,CL MOV AH,DH MOV AH,DL MOV AH,[BX] MOV AH,[DI] MOV AH,[SI] MOV AL,012h MOV AL,AH MOV AL,AL MOV AL,BH MOV AL,BL MOV AL,CH MOV AL,CL MOV AL,DH MOV AL,DL MOV AL,[01234h] MOV AL,[BX] MOV AL,[DI] MOV AL,[SI] MOV AX,01234h MOV AX,AX MOV AX,BP MOV AX,BX MOV AX,CX MOV AX,DI MOV AX,DX MOV AX,SI MOV AX,SP MOV BH,012h MOV BH,AH MOV BH,AL MOV BH,BH MOV BH,BL MOV BH,CH MOV BH,CL MOV BH,DH MOV BH,DL MOV BH,[BX] MOV BH,[DI] MOV BH,[SI] MOV BL,012h MOV BL,AH MOV BL,AL MOV BL,BH MOV BL,BL MOV BL,CH MOV BL,CL MOV BL,DH MOV BL,DL MOV BL,[BX] MOV BL,[DI] MOV BL,[SI] MOV BP,01234h MOV BP,AX MOV BP,BP MOV BP,BX MOV BP,CX MOV BP,DI MOV BP,DX MOV BP,SI MOV BP,SP MOV BX,01234h MOV BX,AX MOV BX,BP MOV BX,CX MOV BX,DI MOV BX,DX MOV BX,SI MOV BX,SP MOV BYTE [BX],012h MOV BYTE [DI],012h MOV BYTE [SI],012h MOV CH,012h MOV CH,AH MOV CH,AL MOV CH,BH MOV CH,BL MOV CH,CH MOV CH,CL MOV CH,DH MOV CH,DL MOV CH,[BX] MOV CH,[DI] MOV CH,[SI] MOV CL,012h MOV CL,AH MOV CL,AL MOV CL,BH MOV CL,BL MOV CL,CH MOV CL,CL MOV CL,DH MOV CL,DL MOV CL,[BX] MOV CL,[DI] MOV CL,[SI] MOV CX,01234h MOV CX,AX MOV CX,BP MOV CX,BX MOV CX,DI MOV CX,DX MOV CX,SI MOV CX,SP MOV DH,012h MOV DH,AH MOV DH,AL MOV DH,BH MOV DH,BL MOV DH,CH MOV DH,CL MOV DH,DH MOV DH,DL MOV DH,[BX] MOV DH,[DI] MOV DH,[SI] MOV DI,01234h MOV DI,AX MOV DI,BP MOV DI,BX MOV DI,CX MOV DI,DX MOV DI,SI MOV DI,SP MOV DL,012h MOV DL,AH MOV DL,AL MOV DL,BH MOV DL,BL MOV DL,CH MOV DL,CL MOV DL,DH MOV DL,DL MOV DL,[BX] MOV DL,[DI] MOV DL,[SI] MOV DX,01234h MOV DX,AX MOV DX,BP MOV DX,BX MOV DX,CX MOV DX,DI MOV DX,SI MOV DX,SP MOV SI,01234h MOV SI,AX MOV SI,BP MOV SI,BX MOV SI,CX MOV SI,DI MOV SI,DX MOV SI,SI MOV SI,SP MOV SP,01234h MOV SP,AX MOV SP,BP MOV SP,BX MOV SP,CX MOV SP,DI MOV SP,DX MOV SP,SI MOV SP,SP MOV [01234h],AL MOV [BX],AH MOV [BX],AL MOV [BX],BH MOV [BX],BL MOV [BX],CH MOV [BX],CL MOV [BX],DH MOV [BX],DL MOV [DI],AH MOV [DI],AL MOV [DI],BH MOV [DI],BL MOV [DI],CH MOV [DI],CL MOV [DI],DH MOV [DI],DL MOV [SI],AH MOV [SI],AL MOV [SI],BH MOV [SI],BL MOV [SI],CH MOV [SI],CL MOV [SI],DH MOV [SI],DL OR AH,012h OR AH,AH OR AH,AL OR AH,BH OR AH,BL OR AH,CH OR AH,CL OR AH,DH OR AH,DL OR AL,012h OR AL,AH OR AL,AL OR AL,BH OR AL,BL OR AL,CH OR AL,CL OR AL,DH OR AL,DL OR BH,012h OR BH,AH OR BH,AL OR BH,BH OR BH,BL OR BH,CH OR BH,CL OR BH,DH OR BH,DL OR BL,012h OR BL,AH OR BL,AL OR BL,BH OR BL,BL OR BL,CH OR BL,CL OR BL,DH OR BL,DL OR CH,012h OR CH,AH OR CH,AL OR CH,BH OR CH,BL OR CH,CH OR CH,CL OR CH,DH OR CH,DL OR CL,012h OR CL,AH OR CL,AL OR CL,BH OR CL,BL OR CL,CH OR CL,CL OR CL,DH OR CL,DL OR DH,012h OR DH,AH OR DH,AL OR DH,BH OR DH,BL OR DH,CH OR DH,CL OR DH,DH OR DH,DL OR DL,012h OR DL,AH OR DL,AL OR DL,BH OR DL,BL OR DL,CH OR DL,CL OR DL,DH OR DL,DL OUT DX,AL POP AX POP BP POP BX POP CX POP DI POP DX POP SI POP SP PUSH AX PUSH BP PUSH BX PUSH CX PUSH DI PUSH DX PUSH SI PUSH SP RCL AH,1 RCL AL,1 RCL BH,1 RCL BL,1 RCL CH,1 RCL CL,1 RCL DH,1 RCL DL,1 RCR AH,1 RCR AL,1 RCR BH,1 RCR BL,1 RCR CH,1 RCR CL,1 RCR DH,1 RCR DL,1 RET SBB AH,012h SBB AH,AH SBB AH,AL SBB AH,BH SBB AH,BL SBB AH,CH SBB AH,CL SBB AH,DH SBB AH,DL SBB AL,012h SBB AL,AH SBB AL,AL SBB AL,BH SBB AL,BL SBB AL,CH SBB AL,CL SBB AL,DH SBB AL,DL SBB BH,012h SBB BH,AH SBB BH,AL SBB BH,BH SBB BH,BL SBB BH,CH SBB BH,CL SBB BH,DH SBB BH,DL SBB BL,012h SBB BL,AH SBB BL,AL SBB BL,BH SBB BL,BL SBB BL,CH SBB BL,CL SBB BL,DH SBB BL,DL SBB CH,012h SBB CH,AH SBB CH,AL SBB CH,BH SBB CH,BL SBB CH,CH SBB CH,CL SBB CH,DH SBB CH,DL SBB CL,012h SBB CL,AH SBB CL,AL SBB CL,BH SBB CL,BL SBB CL,CH SBB CL,CL SBB CL,DH SBB CL,DL SBB DH,012h SBB DH,AH SBB DH,AL SBB DH,BH SBB DH,BL SBB DH,CH SBB DH,CL SBB DH,DH SBB DH,DL SBB DL,012h SBB DL,AH SBB DL,AL SBB DL,BH SBB DL,BL SBB DL,CH SBB DL,CL SBB DL,DH SBB DL,DL STC SUB AH,012h SUB AH,AH SUB AH,AL SUB AH,BH SUB AH,BL SUB AH,CH SUB AH,CL SUB AH,DH SUB AH,DL SUB AL,012h SUB AL,AH SUB AL,AL SUB AL,BH SUB AL,BL SUB AL,CH SUB AL,CL SUB AL,DH SUB AL,DL SUB BH,012h SUB BH,AH SUB BH,AL SUB BH,BH SUB BH,BL SUB BH,CH SUB BH,CL SUB BH,DH SUB BH,DL SUB BL,012h SUB BL,AH SUB BL,AL SUB BL,BH SUB BL,BL SUB BL,CH SUB BL,CL SUB BL,DH SUB BL,DL SUB CH,012h SUB CH,AH SUB CH,AL SUB CH,BH SUB CH,BL SUB CH,CH SUB CH,CL SUB CH,DH SUB CH,DL SUB CL,012h SUB CL,AH SUB CL,AL SUB CL,BH SUB CL,BL SUB CL,CH SUB CL,CL SUB CL,DH SUB CL,DL SUB DH,012h SUB DH,AH SUB DH,AL SUB DH,BH SUB DH,BL SUB DH,CH SUB DH,CL SUB DH,DH SUB DH,DL SUB DL,012h SUB DL,AH SUB DL,AL SUB DL,BH SUB DL,BL SUB DL,CH SUB DL,CL SUB DL,DH SUB DL,DL XOR AH,012h XOR AH,AH XOR AH,AL XOR AH,BH XOR AH,BL XOR AH,CH XOR AH,CL XOR AH,DH XOR AH,DL XOR AL,012h XOR AL,AH XOR AL,AL XOR AL,BH XOR AL,BL XOR AL,CH XOR AL,CL XOR AL,DH XOR AL,DL XOR BH,012h XOR BH,AH XOR BH,AL XOR BH,BH XOR BH,BL XOR BH,CH XOR BH,CL XOR BH,DH XOR BH,DL XOR BL,012h XOR BL,AH XOR BL,AL XOR BL,BH XOR BL,BL XOR BL,CH XOR BL,CL XOR BL,DH XOR BL,DL XOR CH,012h XOR CH,AH XOR CH,AL XOR CH,BH XOR CH,BL XOR CH,CH XOR CH,CL XOR CH,DH XOR CH,DL XOR CL,012h XOR CL,AH XOR CL,AL XOR CL,BH XOR CL,BL XOR CL,CH XOR CL,CL XOR CL,DH XOR CL,DL XOR DH,012h XOR DH,AH XOR DH,AL XOR DH,BH XOR DH,BL XOR DH,CH XOR DH,CL XOR DH,DH XOR DH,DL XOR DL,012h XOR DL,AH XOR DL,AL XOR DL,BH XOR DL,BL XOR DL,CH XOR DL,CL XOR DL,DH XOR DL,DL LIMITED WARRANTY ---------------- MVS repairs free of charge products suffering from manufacturing defects for a period of 5 years. This will be done only if it has been determined by MVS that the product has not been misused (improper voltages, physical alteration, etc.). Otherwise a minimum service charge is required. In either case it is necessary to contact MVS with invoice handy for a Returned Merchandise Authorization (RMA) number before shipping the unit.