<< page 5 >> WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW CHAPTER 2 System organization WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW In this chapter We want to explain the hardware organization of the MSX Turbo R to start of with the new R800 CPU. 2.1 standard equipment (shiy™ blz 130) Below we show with the help of a summary the differences between the standards of msx 2+ and the Turbo R chart 1.1 outline ofthe standard equipment of the MSX Turbo R and the MSX 2+ WWWWWWWWWWWWWWWWWWWWWWWRWWWWWWWWWWWWWWWWWWWWWWWWRWWWWWWWWWWWWWWWWWWWWWWWWWWW V MSX Turbo R V MSX 2+ WWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWW CPU V R800 of eqv V Z80A or eqv V(7.15909 Mhz) V (3.579545 Mhz) WWWWWWWRWWWWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWW V ROM V 160 KB V 96 KB V V(MSX BASIC ver.4) V (MSX BASIC ver.3) V V MAIN ROM 32 KB V MAIN ROM 32 KB V V SUB ROM 16 KB V SUB ROM 16 KB V V KANJI Driver 32 KB V KANJI Driver 32 KB V V MSX DOS1 16 KB V MSX DOS1 16 KB memory V V MSx DOS2 48 KB V (option) V V MSX MUSIC 16 KB V (option) V TWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWW V RAM V At least 256 Kb V At least 64 KB V TWWWWWWWWWWWWWWWWWWWWWWWWQWWWWWWWWWWWWWWWWWWWWWWWWWWWW V VRAM V 128 KB WWWWWWWQWWWWWWWWWWWWWWWQWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW <6 CHAPTER 2 SYSTEM ORGINATZATION> WWWWWWWWWWWWWWWWWWWWWWWWRWWWWWWWWWWWWWWWWWWWWWWWWRWWWWWWWWWWWWWWWWWWWWWWWWWWWW V MSX TURBO R V MSX 2+ WWWWWWWWWRWWWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWQWWWWWWWWWWWWWWWWWWWWWWWWWWWW V VDP V V9958 or EQV V TWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW V resolution V 512x212 (non interlaced) V (max) V 512x424 (interlaced) V TWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW screen V colors(max) V 19268 colors V TWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW V hardware V vertically and horzontally V scroll V WWWWWWWWWQWWWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWRWWWWWWWWWWWWWWWWWWWWWWWWWWWWW cassette interface V not available V FSK methode 1200 . 2400baud WWWWWWWWWRWWWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWQWWWWWWWWWWWWWWWWWWWWWWWWWWWWW VPSG V AY-3-8910 or eqv V TWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW V FM sound V MSX-AUDIO (option) sound V source TWWWWWWWWWWWWWWWWWWWWWWWRWWWWWWWWWWWWWWWWWWWWWWWWWWWWW V V MX-MUSIC V (option) V TWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWW V V MSX-MIDI V not available V V (option) V WWWWWWWWWQWWWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWW Keyboard V English-nummerical, hirigana, katakana, grafic V letter equivalence (????), JIS arrangement, 50?? WWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW Floppydrive V 3.5 inch 2dd V (1DD read/write possibilitiy) TWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW Format V MS-DOS 2.11 standard WWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW PRINTER V 8 bit parallel V centronicsinterface standard WWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW cartridge slot V ?? WWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW Joystick V 2 WWWWWWWWWRWWWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW KANIJ V KANJI ROM V 1 Standard function V V 2 Standard V TWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW V KANJI INPUT V SINGLE KANJI CONVERTOR (MSX JE EQUIVALANCE) WWWWWWWWWQWWWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW realtime clock V RP5C01 or eqv WWWWWWWWWWWWWWWWWWWWWWWWQWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW <2.2 HARDWARE ORGINAZATION 7> 2.2 HARDWARE ORGINAZATION The hardware orginazation of the msx turbo r is shown here 2.2.1 MAIN LSI The most important LSI of the Turbo R are shown below here. CPU R800 or eqv (clock 7.15909 Mhz) Z80A or eqv (clock 3.57945 Mhz) VDP V9958 or eqv PSG AY-3-8910 or eqv FM soundsource MSX-MUSIC (YM2413 or eqv) MIDI MSX-MIDI (i8251 or eqv en i8253 or eqv en verder i8254 or eqv) PPI i8255 or eqv systemIC S1990 or eqv 2.2.2 MEMMORY The memory shown below is orginized in the MSX Turbo R. ROM MSX BASIC ver.4 80 KB (MAIN ROM 32 KB) (SUB ROM 16KB) (KANJI DRIVER 32KB) MSX-DOS1 16KB MSX-DOS2 48KB MSX-MUSIC 16KB RAM MAIN RAM 256 KB at least (memmory mapper is being used) VRAM 128 KB 2.2.3 BLOCK DIAGRAM The MSX Turbo-R system-equipment is explained with a block diagram. The MSX Turbo-R has 2 CPU's (Z80 and R800). The type of processor (R800 or Z80) can be freely changed in the use of program. If one of the processors is used the other processor will be put on HOLD. It is not possible to use both the processors at the same time. <8 CHAPTER 2 SYSTEM ORGINAZATION> XWWWWWWWWY XWWWWWWWWY XWWWWWWWWWY XWWWWWWWWWWWWY V V V V V V V V V Z80 TWWWWWWS S1990 TWWWWWWS R800 TWWWWWS DRAM V V V V V V V V V ZWWWWWWWW[ ZWWWWRWWW[ ZWWWWWWWWW[ ZWWWWWWWWWWWW[ V XWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWY V V V XWWWQWWWWY XWWWWQWWWWY XWWWWWWWWWWWWWWWQWWWWWWWWWWWY V V V V V V V SLOT V V ROM V V VDP, OPLL, FDC etc V V V V V V V ZWWWWWWWW[ ZWWWWWWWWW[ ZWWWWWWWWWWWWWWWWWWWWWWWWWWW[ picture 1.1 MSX Turbo R Block scheme The S1990 is a LSI-systemcontroller as a solution for the switching of the CPU. The control of the slots and memory, the generation of wait signals as well as the I/O decoding etc is executed by the S1990. 2.3 SLOT ORGINASATION In the MSX Turbo R the slot orginazation was standarized. Because the Main Ram was directlty connected to the R800 or depending to which slot it is connected, the system performance can change graetly. Furthermore, a purpose is to simplify the develpment of application software. DOS contains both MSX DOS1 en MSX DOS2. In page 1 of slot 3-2 there are 4 local banks, the first 3 pages are for MSX-DOS2 and the last page 1 for MSX DOS1. In the system the combination of the two DOS versions with the 2 CPU can be changed freely but it simplifies the system and to avoid disorginazation of the user, in the standard there are 2 combinatios supported : Z80 and DOS1 (Z80 Mode) R800 and DOS2 (R800 Mode) When starting the system, depending on the inserted cartridge or disk is the selection between these 2 modes automatically done. <2.3 SLOT ORGINAZATION 9> 0-0 0-1 0-2 0-3 FFFFH XWWWWWWWY XWWWWWWWY XWWWWWWWY XWWWWWWWY V V V V V V V V PAGE 3 V V V V V V V V C000H TWWWWWWWS TWWWWWWWS TWWWWWWWS TWWWWWWWS V V V V V V V V PAGE 2 V V V V V V V V 8000H TWWWWWWWS TWWWWWWWS TWWWWWWWS TWWWWWWWS V V V V VMSX V V V PAGE 1 V MAIN V V V VMUSIC V V V 4000H V V TWWWWWWWS TWWWWWWWS TWWWWWWWS V ROM V V V V V V V PAGE 0 V V V V V V V V 0000H ZWWWWWWW[ ZWWWWWWW[ ZWWWWWWW[ ZWWWWWWW[ 1 2 FFFFH XWWWWWWWY XWWWWWWWY V V V V V V V V C000H VEXT. V VEXT. V V V V V VSLOT V VSLOT V 8000H V V V V V V V V V V V V 4000H V V V V V V V V V V V V 0000H ZWWWWWWW[ ZWWWWWWW[ 3-0 3-1 3-2 3-3 FFFFH XWWWWWWWY XWWWWWWWY XWWWWWWWY XWWWWWWWY V V V V V V V V PAGE 3 V V V V V V V V C000H V V TWWWWWWWS TWWWWWWWSWWY TWWWWWWWS V MAIN V VKANJI V V VWYV V V PAGE 2 V RAM V VDRIVER V V VYVV V V 8000H V (*1) V V V TWWWWWWWSVV[ TWWWWWWWS V V V V V DOS VV[ V V PAGE 1 V V V V V V[(*2)V V 4000H V V TWWWWWWWS TWWWWWWWS TWWWWWWWS V V V SUB V V V V V PAGE 0 V V V ROM V V V V V 0000H ZWWWWWWW[ ZWWWWWWW[ ZWWWWWWW[ ZWWWWWWW[ (*1) With the memmory it contains at least 256 Kb. (*2) Local Bank. The first 3 pages are for MSX DOS2 and the last page is for MSX DOS1. Pricture 1.2 Slot orginasation of the MSX Turbo R <10 CHAPTER 2 SYSTEM ORGINAZATION> 2.4 R800 2.4.1 FEATURES OF THE R800 The R800, develloped CPUused in the Turbo R, has the features shown below. 1. Z80 and object-compatible With the software written for the Z80 note that the parts dependent on the timing of the CPU are removed and not-changed can be used. 2. The CPU clock frequency is 7.15909 Mhz Because compared with the number of clockpulses per instruction in the Z80 sharply lower , the z80 conversion is in fact at the speed on 28.63636Mhz (If there are no waitstates). 3. multiplication commands the multiply command that is supported has an accuracy of 8bit x 8bit -> 16 bit and also 16bit x 16bit -> 32 bit Dependend on this, bigscale progress of mathematical- operation-procedure speed is possible. (??) 4. LSB/MSB defenition instructions With the Z80 / The access of the higher and the lower 8 bit of register IX/IY with the LSB/MSB defenition is properly ensured In figure 1.2 the [verwerkings]speeds of the most important instructions is shown. (When the Turbo R has no waitstates. On the MSX 2+ 1 waitstate occurs on the M1 cycle.??) 2.5 WAIT In the MSX Turbo R normally no waitstates are generated. In the conditions below a waitstate is generated. 1. If an external slot is accessed (3 waitstates) When an external slot is accessed, to support the externale hardware up to now developed, the Turbo R is designed in the same way the MSX2+, it has the same accesstime while accessing. 2. If an internal rom is accessed (2 waitstates) internal ROMS are ROMS like BIOS, BASIC and as well as the internal DISKROM etc. In the first stage in the Turbo R because BIOS, BASIC, SUB ROM and the 16KB of the first part of the KANJI driver (64KB in total) are being copied to the main RAM, In that case approximately in state 3 waitstates are generated(????????????????????????) <2.5 WAIT 11> picture 1.2 execution-comparison of the MSX Turbo R and MSX2+ WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW INSTRUCTION MSX2+(in u.sec) MSX Turbo R(in u.sec) FACTOR WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW LD r,s 1.40 0.14 x 10.0 LD r,(HL) 2.23 0.42 x 5.3 LD r,(IX+n) 5.87 0.70 x 8.4 PUSH qq 3.35 0.56 x 6.0 LDIR (BC<>0) 6.43 0.98 x 6.6 ADD A,r 1.40 0.14 x 10.0 INC r 1.40 0.14 x 10.0 ADD HL,ss 3.35 0.14 x 24.0 INC ss 1.96 0.14 x 14.0 JP 3.07 0.42 x 7.3 JR 3.63 0.42 x 8.7 DJNZ (B<>0) 3.91 0.42 x 9.3 CALL 5.03 0.84 x 6.0 RET 3.07 0.56 x 5.5 MULTU A,r 160 1.96 x 82 MULTUW HL,rr 361 5.03 x 71 WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW 3. When the internal DRAM is being addressed (1 waitstate) the pageaccess-mode is supported what means that the R800 uses its own bus to the DRAM. Therefore it is possible to get the best performance of the DRAM. In differences with the memmory access the lower 8bit of the adress is just changed, in the page-address-mode highspeed access is possible. Except the lower 8 bit that are changed, the rest presents the pagebreak that is produced. Because when using the page-break 2 using the DRAM is done 1 about 1 time practically approximately 0.5 waitstate is generated. With the pagebreak also a DRAM refresh is generated. With the R800, different from the Z80, together with the commands in practice the DRAM refesh are not unsynchonized executed. In the MSX Turdo R the refresh takes every time 31 u.sec The refresh of 1 time takes 280 n.sec. Furthermore with jump instructions (relative jumps and absolute jumps) a pagebreak is absolutly generated. According to this it is better with highspeed access to pay attention to the things below with important programs. 1. Transmission of programs in RAM With a program in a ROM cartridge, highspeed can be used if a important part is moved by highspeed into ram. A program provided from diskette will inevitable put into RAM for using it so that will be no problem. <12 CHAPTER 2 SYSTEM ORGINASATION> 2. Coding where no pagebreak takes place. In the case of using into RAM when highspeed comes to a necessary loop /just the register of the CPU ?? /and when coding with few times accessing of datamemory (this also contains stack) the advantage of the pageacces mode makes the best use of it. Furthermore, a loop is most effective when it is programmed between xx00H and xxFFH. 3. Using the system-timer In the Turbo R the effect of the above mentioned pagebreak and refreshcycle like in the MSX 2+ understand exactly the timing of the instructions by means of the coding steps, is not needed. In accordance with that, even on the MSX Turbo R to make programs like making on the MSX 2+, timing with software loops is not recommended. In the MSx Turbo R becasue the systemclock is increased every 3.91 u.sec, it is recommended to be used for timing. <629 > CHAPTER 4 WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW MSX MIDI <630 > WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW CHAPTER 1 ABOUT MSX MIDI WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW Because MIDI (Musical Instrumental Digital Interface) functions were also added to MSX MUSIC, MIDI can be used via BASIC instructions. There is no BIOS used for MSX MUSIC. Except for Basic, programs that use MSX-MIDI access the I/O ports directly. MSX-MIDI can be built inside as well as it can be an external cartridge. MIDI was for the exclusive use of the MSX TURBO R and machines that might be build hereafter. On a MSX, MSX 2 or MSX 2+ it can't be used. MSX MIDI was constructed in the following way. * MIDI INTERFACE 8251 MIDI data communication IC 8253 and 8254 booreeto generator and timer IC futhermore there are some different IC's for the port access. * MSX-MIDI ROM (16Kb) In case it is internal, the ROM is in the same slot (slot 0-2, page1) as MSX MUSIC. In case it is in an external cartridge, the rom is fitted in the cartridge. When basic commands are used, the internal MSX MUSIC can't be used so the MSX MIDI in the external cartridge will be used that appeared in the booting process. <633> WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW CHAPTER 2 HARDWARE WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW The way of accessing and the way of construction of the hardware depends on the fact if there is an internal or an external MSX MIDI. Below the hardware construction of MSX MIDI is explained. Further, the timer IC 8253 and 8254 are being used but below only the 8253 is shown. 2.1 BLOCK DIAGRAM The hardware construction of MSX-MIDI. 8251 XWWWWWWWWY XWWWWWY MIDI IN V RTS VWWWWWWWWWWWWWWWWWWWWWWWW>V V WWWWWWW>V RXRDY VWWWWWWWWWWWWWWWWWWWWWWWW>V AND V WWY V DSR V<WWWWWWWWWWWWWWWWWWY V V V V DTR VWWWWWWWWWWWWWWWWWY V ZWWWWW[ V MIDI OUTV V<WWY V V V XWWWWWY <WWWWWWWWV V V V ZWWWWWWWWWY ZW>V V ZWWWWWWWW[ V 500 KHz V V V OR V WWWWWW> INT V V XWWWWWY V XWWWWW>V V XWWWWWWWWY V ZW>V V V V ZWWWWW[ 4Mhz RWW>V TIMER0 VWWW[ VAND VWWQW[ V TWWWWWWWWS XWWWWWY XW>V V V V TIMER1 VWWWRWWWW>VS V V ZWWWWW[ V TWWWWWWWWS V V FF VW[ ZWW>V TIMER2 VWW>[ XW>VR V ZWWWWWWWW[ V ZWWWWW[ V 0EAH Write DIAGRAM 4.1 BLOCK SCHEME OF THE MSX MIDI <634 CHAPTER 2 HARDWARE > 2.2 BUILT-IN MIDI INTERFACE The following I/O ports of the built in MSX-MIDI interface are accessable. 8251 interface ; portnumber 0E8H, 0E9H 0E8H (READ) b7 b6 b5 b4 b3 b2 b1 b0 XWWWWRWWWWRWWWWRWWWWRWWWWRWWWWRWWWWRWWWWY VRXD7VRXD6VRXD5VRXD4VRXD3VRXD2VRXD1VRXD0V ZWWWWQWWWWQWWWWQWWWWQWWWWQWWWWQWWWWQWWWW[ XWWWWRWWWWRWWWWRWWWWRWWWWRWWWWRWWWWRWWWWY (WRITE) VTXD7VTXD6VTXD5VTXD4VTXD3VTXD2VTXD1VTXD0V ZWWWWQWWWWQWWWWQWWWWQWWWWQWWWWQWWWWQWWWW[ RXD7-RXD0 = 8251 received data TXD7-TXD0 = 8251 data to send 0E9H (READ) b7 b6 b5 b4 b3 b2 b1 b0 XWWWWRWWWWRWWWWRWWWWRWWWWRWWWWRWWWWRWWWWY VDSR VBRK V FE V OE V PE VEMPTVRDDYVTRDYV ZWWWWQWWWWQWWWWQWWWWQWWWWQWWWWQWWWWQWWWW[ DSR 8253 data set ready (1= ?? detected) BRK 8251 break detection (1=detected) FE 8251 frame error flag (1=error detected) OE 8251 overrun error flag (1=error detected) PE 8251 parity error flag (1=parity error detected) EMPT 8251 transmitter buffer empty status (1=buffer is empty) RRDY 8251 receiver buffer status (1= data is present) TRDY 8251 transmitter status (1=transmission possible) (WRITE) 0E9H (Write) b7 b6 b5 b4 b3 b2 b1 b0 XWWWWRWWWWRWWWWRWWWWRWWWWRWWWWRWWWWRWWWWY mode V S2 V S1 V EP V PENV L2 V L1 V B2 V B1 V ZWWWWQWWWWQWWWWQWWWWQWWWWQWWWWQWWWWQWWWW[ XWWWWRWWWWRWWWWRWWWWRWWWWRWWWWRWWWWRWWWWY command V EH V IR VRIE V ER VSBRKV RE VTIE VTEN V ZWWWWQWWWWQWWWWQWWWWQWWWWQWWWWQWWWWQWWWW[ EH normally set to 0 IR normally set to 0 RIE MIDI IN transmission enablen (1=enable; 0=disable) ER error reset (1=reset error flags; 0=no operation) <2.2 INTERNAL MIDI INERFACE 635> SBRK normally set to 0 PE MIDI IN receive enable (1=enable; 0=disable) TIE 8253 timer (counter #2) (1=enable; 0=disable) transmission enable TEN MIDI OUT transmission enable (1=enable; 0=disable) When writing to the command mode register of the 8251 it is nessesary to wait 16 clock cycles (3.579545 Mhz) for the result. When writing a sequence of commands to to command register please wait before writing the data. After writing 00H, 00H, 00H, 40H to the I/O port 0E9H the 8251 is resetted. Because when a wrong value to the mode was written the MIDI can't function properly, it is necessary to write the correct values after a reset. For details please see the accompanied programsample ([THRU.MAC]). 8253 OUT2 Latch of the signals of the terminal (adress 0EAH,0EBH) 0EAH (WRITE) b7 b6 b5 b4 b3 b2 b1 b0 XWWWWRWWWWRWWWWRWWWWRWWWWRWWWWRWWWWRWWWWY V - V - V - V - V - V - V - V - V ZWWWWQWWWWQWWWWQWWWWQWWWWQWWWWQWWWWQWWWW[ 0EAH Reading the data from this adres is ineffective 0EBH Is the image of 0EAH dependent on the optional data written to adress 0EAH, the data read from counter #2 of the 8253 can be cancelled. 8253 INTERFACE (adres 0ECH-0EFH) b7 b6 b5 b4 b3 b2 b1 b0 XWWWWRWWWWRWWWWRWWWWRWWWWRWWWWRWWWWRWWWWY 0ECH (R/W) VCT7 VCT6 VCT5 VCT4 VCT3 VCT2 VCT1 VCT0 V ZWWWWQWWWWQWWWWQWWWWQWWWWQWWWWQWWWWQWWWW[ XWWWWRWWWWRWWWWRWWWWRWWWWRWWWWRWWWWRWWWWY 0EDH (R/W) VCT17VCT16VCT15VCT14VCT13VCT12VCT11VCT10V ZWWWWQWWWWQWWWWQWWWWQWWWWQWWWWQWWWWQWWWW[ XWWWWRWWWWRWWWWRWWWWRWWWWRWWWWRWWWWRWWWWY 0EEH (R/W) VC727VCT26VCT25VCT24VCT23VCT22VCT21VCT20V ZWWWWQWWWWQWWWWQWWWWQWWWWQWWWWQWWWWQWWWW[ XWWWWRWWWWRWWWWRWWWWRWWWWRWWWWRWWWWRWWWWY 0EFH (READ) V - V - V - V - V - V - V - V - V ZWWWWQWWWWQWWWWQWWWWQWWWWQWWWWQWWWWQWWWW[ XWWWWRWWWWRWWWWRWWWWRWWWWRWWWWRWWWWRWWWWY (WRITE)VSC1 VSC0 VRW1 VRW0 VM2 VM1 VM0 VBCD V ZWWWWQWWWWQWWWWQWWWWQWWWWQWWWWQWWWWQWWWW[ <636 CHAPTER 2 HARDWARE > CT7-CT0 counter 0 CT17-CT10 counter 1 CT27-CT20 counter 2 SC1, SC0 select counter, select counter RW1,RW0 counter read/write mode M2,M1,M0 counter mode BCD binairy counting/ BCD counting select every counter has the following features: - counter #0 The ?? generator of the 8251 is used. A clock unit gives a clockpulse of 4 Mhz. In contrast to the 8251 the ?? generator must give a clock pulse of 500 Khz (division by 8). Mode 3 is used ( 2^N = division -> 2^3 = 8) - counter #1 Can be used as a timer for any kind of use. By the clock unit the output of timer #2 is going to timer #1. (?????) - counter #2 Is used for writing ?? cycle to the CPU Normally mode 2 is used (N is the divsion factor). When OUT2 gets low, the latch data is transmitted and the ?? to the CPU is developped. The CLK unit gives a clockpulse of 4 MHz. 2.3 EXTERNAL MIDI INTERFACE The external MSX MIDI interface uses I/O port that is can be found in port 0E2H, the I/O port can be changed. * MIDI interface selections (adres 0E2H, 0EAH) 0E2H (WRITE) B7 B6 B5 B4 B3 B2 B1 B0 XWWWWRWWWWRWWWWRWWWWRWWWWRWWWWRWWWWRWWWWY V EN V - V - V - V - V - V - V E8 V ZWWWWQWWWWQWWWWQWWWWQWWWWQWWWWQWWWWQWWWW[ EN MIDI interface enable (0=enable, 1=disable) With the initialization set to 1 E8 MIDI interface adres select (0=0E8H/0E9H) (1=0E0H/0E1H) If bit E8 is set to 0, I/O port of the external MIDI interface is changed from 0E2H to 0EAH, the internal MIDI interface is compatible with this. Further, the 8251 I/O adres becomes 0E8H and 0E9H. <2.3 EXTERNAL MIDI INTERFACE 637> If bit E8 is set to 1, the I/O port of the 8251 interface is 0E0H and 0E1H , the access of 0ECH to 0EFH as I/O of the cartridge is invalid. Further, the 8253 timer is also invalid. * 8251 INTERFACE (adres 0E0H and 0E1H) 0E0H b7 b6 b5 b4 b3 b2 b1 b0 XWWWWRWWWWRWWWWRWWWWRWWWWRWWWWRWWWWRWWWWY (read) VRXD7VRXD6VRXD5VRXD4VRXD3VRXD2VRXD1VRXD0V ZWWWWQWWWWQWWWWQWWWWQWWWWQWWWWQWWWWQWWWW[ XWWWWRWWWWRWWWWRWWWWRWWWWRWWWWRWWWWRWWWWY (write) VTXD7VTXD6VTXD5VTXD4VTXD3VTXD2VTXD1VTXD0V ZWWWWQWWWWQWWWWQWWWWQWWWWQWWWWQWWWWQWWWW[ RXD7-RXD0 = 8251 received data TXD7-TXD0 = 8251 data to send 0E1H b7 b6 b5 b4 b3 b2 b1 b0 XWWWWRWWWWRWWWWRWWWWRWWWWRWWWWRWWWWRWWWWY (read) VDSR VBRK V FE V OE V PE VEMPTVRDDYVTRDYV ZWWWWQWWWWQWWWWQWWWWQWWWWQWWWWQWWWWQWWWW[ DSR 8253 data set ready (1= ?? detected) BRK 8251 break detection (1=detected) FE 8251 frame error flag (1=error detected) OE 8251 overrun error flag (1=error detected) PE 8251 parity error flag (1=parity error detected) EMPT 8251 transmitter buffer empty status (1=buffer is empty) RRDY 8251 receiver buffer status (1= data is present) TRDY 8251 transmitter status (1=transmission possible) (WRITE) 0E9H (Write) b7 b6 b5 b4 b3 b2 b1 b0 XWWWWRWWWWRWWWWRWWWWRWWWWRWWWWRWWWWRWWWWY mode V S2 V S1 V EP V PENV L2 V L1 V B2 V B1 V ZWWWWQWWWWQWWWWQWWWWQWWWWQWWWWQWWWWQWWWW[ XWWWWRWWWWRWWWWRWWWWRWWWWRWWWWRWWWWRWWWWY command V EH V IR VRIE V ER VSBRKV RE VTIE VTEN V ZWWWWQWWWWQWWWWQWWWWQWWWWQWWWWQWWWWQWWWW[ <638 CHAPTER 2 HARDWARE > EH normally set to 0 IR normally set to 0 RIE MIDI IN transmission enablen (1=enable; 0=disable) ER error reset (1=reset error flags; 0=no operation) SBRK normally set to 0 PE MIDI IN receive enable (1=enable; 0=disable) TIE 8253 timer (counter #2) (1=enable; 0=disable) transmission enable TEN MIDI OUT transmission enable (1=enable; 0=disable) 2.4 CHECK MIDI In case of bit 0 of adres 002EH of the MAIN ROM being 1 MSX MIDI is built in. The versionnumber ([002DH) is 3 or more the built-in MSX MIDI can be used. The internal type and the external type have another hook. The difference is because of the application. In chapter 4- 3.2 the hooks are shown. The difference between an internal type and an external type can be seen at the adres 4018 beginning data. chart 4.1 data differences of the MSX MIDI WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW ADRES INTERNAL EXTERNAL WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW 4018H 41H(A) ??H(?) 4019H 50H(P) ??H(?) 401AH 52H(R) ??H(?) 401BH 4CH(L) ??H(?) 401CH 4FH(O) 4DH(M) 401DH 50H(P) 49H(I) 401EH 4CH(L) 44H(D) 401FH 4CH(L) 49H(I) WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW In the external cartridge starting at adres 4018H 4 bytes makercode that can change is located. From adres 401CH the data [MIDI] is located. < way of distinction of presence of the MIDI interface 639> 2.5 way of distinction of presence of the MIDI interface The presence of the MIDI interface can be detected by the following ways. 1. In case bit 0 of adres 002EH of the MAIN ROM equals 1 the MIDI interface is present. 2. In case the versionnumber of the MAIN ROM (002DH) is 3 or higher and in a slot the following can be found. DB "MIDI" When that is so, the external cartridge is installed. 3. If the above is not so, because the MIDI interface is not present, the MIDI functions can't be used. 4. In case the version nummer (002DH) equals 2 or lower, a MIDI interface can't be used. <650 > WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW CHAPTER 3 HOOKS WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW The hook for MSX MUSIC is used 1/60 second (NTSC) or 1/50 second (PAL) but MIDI from MSX BASIC the 8253 uses the hook every 5 milisecond. 3.2 HOOKS In the MSX Turbo R the following hooks are present related with the internal MIDI interface. diagram 4.2 Hooks of the internal MSX-MIDI WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW adres name old name contents WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW 0FF75H H.MDIN H.OKNORM MIDI IN hook 0FF93H H.MDTM H.FRQINT 8253 timer hook WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW In case of using an external cartridge, the hooks above can't be used therefore we advise you to use the hook H.KEYI. For the details of the usage please see chapter 4 [development of applications] diagram 4.3 Hook of the external MSX-MIDI WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW adres name WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW 0FD9AH H.KEYI WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW <643 > WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW CHAPTER 4 development of applications WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW 4.1 advice details for development of applications. If you will make MSX MIDI compatible programs please take care of the following things. 1. The hook of the internal MIDI interface is different than the external MIDI interface. When using interrupt hooks, verify if the type, if it is internal or external. 2. After the initialization of the MIDI interface the interrupt hooks are allowed, because of the mobility of the interrupt flags that can set, interrupt flags must be resetted. The interrupt flags that are available are below diagram 4.4 interrupt flags of the MIDI interface WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW kind of hook hook direction way of handling WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW timer bit 7 (DSR) of 0E9H or 0E1H write the option to 0EAH MIDI IN bit 1 (RRDY)of 0E9H or 0E1H read with an IN-instruction 0E8H WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW 3. With an external MIDI interface external hooks MIDI IN and 8253 timer come also to H.KEYI. The hooks must be written from this adres. To detect if there is MIDI IN interrupt or not you have to verify bit 1 of I/O port 0E9H. To verify if there is an interrupt from the 8253 timer you will have to verify bit 7 of I/O port 0E9H. <644 CHAPTER 4 DEVELOPMENT OF APPLICATIONS> 4. The generation of MIDI IN interrupt signals is done every 320 u.sec. when a RST 30H instruction is used when a hook is read by a routine, it takes time to make an interslot call ,therefore there is not enough time for the interrupt signals handling. Therefore we advise to create the following handling routine * place the procudure routine in page 3 * Jump with a JP instruction to the handling routine 4.2 Sample program For more details about the MIDI interface and the flags please see the sample program (THRU.MAC). <645 > WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW CHAPTER 5 BASIC EXPANSIONS WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW 5.1 OUTLINE OF THE BASIC EXPANSIONS. The names of the commands for using MSX MIDI have been simplified and have been included in basic commands. The MSX-MIDI basic commands have been supported in the expansion of commands like CALL MUSIC. CALL an be substituted by '_' (underscore). With the MIDI interface external MIDI deveices can be used. Therefore, commands have been modificated and supplemented. Further, because both MML and MIDI must be corresponding, commands have been changed. 5.2 Explanation of the BASIC expansions CALL MUSIC WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW XWWWWWWWWWWWY VFunktion V Initialize MSX MIDI System ZWWWWWWWWWWW[ XWWWWWWWWWWWY V Form V CALL MUSIC[([],[,[0][, ZWWWWWWWWWWW[ [,[,...[,]]]]]]]]]])] XWWWWWWWWWWWY VExplanationV When the built in sound chip LSI is designated how much ZWWWWWWWWWWW[ FM channels per voice, the MIDI interface is also designated. After the initialisation after the CALL MUSIC, it is not possible to use other expansion BASIC statements. * <646 CHAPTER 5 BASIC EXPANSION> WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW designation meaning WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW 0 No use of rythme 1 Use of rythme WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW * channel in each mode the channels to be used are shown below. WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW mode rythme maximum per channel WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW 0 no 9 1 yes 6 fm channels + 1 rythme 8 MIDI channels + 1 rythme WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW With mode 1 when using midi the number of voices used per channel can be increased up to 8. For the play command the number of OPLL channels used by built-in FM soundprocessor have to be designated. To use 0 voices is not possible. With the OPLL only channels 9 voices can be used. With mode 1 3 channels are used for rythme. In mode 0 9 channels can be used as maximum. In Mode 1 6 channels can be used as maximum. In case of using MIDI, a play line is assigned to 1 MIDI channel. A value of 2 or more is designated the meaning doesn't change. With the channels of the FM processor the number of channels can be changed. Because with MIDI 1 play line is assigned to 1 MIDI channel, in this occasion it can be designated as 1, 2, 3, .... . To change this is possible using the MML command @Hn. In case this parameter was set to 1 or more, the other value of this parameter can be 0. It is not possible to leave 0 out int the CALL MUSIC command. Please look at the following commands. CALL MUSIC (0,0,0,5,0) V V It is not possible to designate 0.(Illegal function call will be generated.) CALL MUSIC (0,0,1,,2) V It is not possible to leave the parameter out.(Syntax error will be generated.) <5.3 explanations of the BASIC expansions 647> CALL MUSIC (1,0,1,1,1,1,1,1,0,0) V V In mode 1 channel 7 and 8 must be designated. In case of PLAY #1 Channel 1-8 are assigned for MIDI Channel 9 is assigned for MIDI rythme Channel 10 - 12 are assigned for the PSG In case of PLAY #2 Channel 1-6 are assigned for the FM soundprocessor Channel 7 and 8 can't be used Channel 9 is assigned for rythme sounds Channel 10-12 are assigned for the PSG. When it is used without parameters it is the same as CALL MUSIC (1,0,1,1,1). If CALL MUSIC is used because the systemhook is linked to the MSX MIDI software, the access of the handling routine is increased and the suruuputo(??) of the system decreases. Because of the workarea space of a CLEAR must be given, HIMEN ( 2 byte parameter of the CLEAR instruction) will be 807 bytes lower. XWWWWWWWY VexampleV CALL MUSIC ZWWWWWWW[ Default setting. CALL MUSIC (0,0,1,1,1,1,1,1,1,1,10 One channel per PLAY line is assigned. CALL MDR WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW XWWWWWWWWWWWY VFunktion V Designation of the MIDI note numbers for the rytme sounds in MML ZWWWWWWWWWWW[ XWWWWWWWWWWWY V Form V CALL MDR (,,,,) XWWWWWWWWWWWY VExplanationV The in MML used rythme B,S,M,C,H commands can be designated to ZWWWWWWWWWWW[ MIDI note numbers. <648 CHAPTER 5 BASIC EXPANSION> Because there are a lot of MIDI sounds, with 1 channel the rythme sounds can be assigned to the deveice (exclusive use of 1 track). In the PLAY line one channel can be assigned. In the same time multipal sounds of rythme in the exclusive rythme track is not allowed. This to the rythme assigned track is different per MIDI deveice. For the handling of the MIDI deveice please see for details in it's manual. The parameter must be between 0 and 127. It may not be left out. Initial value is 0. XWWWWWWWWY Vexample V CALL MDR(35,38,45,49,42) ZWWWWWWWW[ PLAY WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW XWWWWWWWWWWWY VFunktion V Plays the in MML complied music. ZWWWWWWWWWWW[ XWWWWWWWWWWWY V Form V PLAY [#,][,>line 2>], .. [,] ZWWWWWWWWWWW[ XWWWWWWWWWWWY VExplanationV With the play command the music is performed. Up to 12 tones can ZWWWWWWWWWWW[ be produced, 9 from the built-in soundprocessor + 3 PSG and furthermore 9 from the MIDI deveice + 3 PSG. The in written MML data is performed. A call or other instruction is not needed. must be a value between 0 and 3. The play command and the mode give the following possibility. * When 0 or no data is given it is equal a the normal play commando in basic. Up to 3 PSG channels can be used. * When it is 1, the MIDI deveice and the PSG can be used. The relations between the playlines is the following : , ... , , ,, * When it is 2 or 3, the FM soundprocessor and PSG can be used. (the use of 2 or 3 is exactly the same.) The relations between the play lines is the following. ,... , ,, n is the number of MML playlines designated with CALL MUSIC. In case a mode is designated with no use of rythme wtih the CALL MUSIC the rythme play line as well as the komma (,) must be left out. XWWWWWWWWY Vexample V PLAY #1,"CD","EF","GA" ZWWWWWWWW[ USAGE OF MML FOR MIDI DEVEICES Here we explain the supplied and changed MML for the usage of MIDI deveices. figure 4.5 supplemented MML for the use of MIDI deveices. WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW Character Meaning Value WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW @Hn Designates the used MIDI channel number. 1 ó n ó 16 @Cm,n Send a control change. m = control change, n = value of the 1 ó m ó 127 control number to be changed. 1 ó n ó 127 @Sn Instruction related to the MIDI realtime clock n=0 Sends FCH(STOP) out, stop the clock n=1 Sends FAH(START) out, starts the clock n=2 Sends FBH(CONTINUE) out, continues the clock The tempo of the clock will be the same as defined in playline 1. WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW figure 4.6 changed MML for the use of MIDI deveices. WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW Character Meaning Value WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW Ln Designates the length 1 ó n ó 96 Rn Designates the rest length 1 ó n ó 96 @Wn Continue the length with n 1 ó n ó 96 Vn This differss with the MIDI deveices, 1 ó n ó 15 8 times the values of the velocity is send out. @Vn Volume (Control change #7) is send out. 1 ó n ó 127 @n With the built in FM soundprocessor the color of the sound is changed but 1 ó n ó 63 with MIDI deveices it is different , a program change is send out. 1 ó n ó 127 Zn 1 byte MIDI data is send out. 1 ó n ó 255 WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW <650 CHAPTER 5 BASIC EXPANSION > USAGE of rythme MML data Below here the supplied and changed MML for MIDI deveices are shown. figure 4.7 supplied MML for rythme data WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW Character Meaning WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW @n Different with MIDI deveices is that a program change is send out. For the built-in FM soundprocessor this is ignored. WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW figure 4.8 changed MML for rythme data WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW Character Meaning WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW @An This is different for MIDI deveices, it is the same as Vn, the velocity is designated. WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW <5.2 explanation of BASIC expansions 651> figure 4.9 ??????? WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW Character MIDI FM PSG WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW Mn - - O Sn - - O Vn O [0~15] O O Ln O O O Qn O O - On O O O < O O O > O O O Tn O O O Nn *1 O O O Rn O O O A~G O O O + O O O - O O O # O O O . O O O =x; O O O Xx; O O O & O O O {}n O O x @n O [0~127] O[0~63] - @Vn O [0~127] O[0~127] - @Wn O O the same as Rn * @Hn O [1~16] - - * @Cm, n O [0~127] - - Yr,d - O - Zn O [0~255] - (x) - * @Sn O [0~2] - - WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW *1 The value of n is not the MIDI note number. It is the musical scale according that is existing.(???) * Changed commands for MSX MIDI x Creates an error - Can't be used [] Range of the parameter () The equivalence of the old MSX MUSIC <652 CHAPTER 5 BASIC EXPANSIONS> figure 4.10 Rythme sounds MML WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW Command MIDI FM WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW B *1 O O S *1 O O M *1 O O C *1 O O H *1 O O n O O ! O O Vn O O @An O O @Vn O [0~127] O Tn O O Rn O O =x; O O Xx; O O Yr,d - O * @Hn O [1~16] - * @Cm,n O [0~127] - * @n O [0~127] - (x) Zd O - (x) WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW 1 In case of using MIDI deveices, the note number must be changed with CALL MDR. * Changed command in MSX MIDI x Generates an error - Can't be used [] Range of the parameter () The equivalence of the old MSX MUSIC 5.3 STATEMENTS THAT DON'T EFFECT MIDI DEVEICES The following statements have no meaning for the MIDI deveices. CALL AUDREG CALL PITCH CALL TEMPER CALL TRANSPOSE CALL VOICE CALL VOICE can't be used in combination with MIDI deveices, please use the MML command @n. <5.4 MIDI DATA FORMAT > 5.4 MIDI DATA FORMAT Below here the MIDI data format from the MSX MIDI BASIC expansion is shown. 5.4.1 transmission data 1. note data * note on status 1001nnnn (9nH) n = 0 ~ 15 MIDI channel number note number 0kkkkkkk k = 24 (C0) » 119 (B7) velocity 0vvvvvvv v = 8 * i : i= 0 ~ 15 The velocity value, 8 times the value designated in @An, is send out. * note off status 1001nnnn (9nH) n = 0 ~ 15 MIDI channel number note number 0kkkkkkk k = 24 (C0) » 119 (B7) velocity 00000000 (v=0) velocity off when if the rythme is used at the same time, both the music and rythme is stopped, the running-status is send out. 2. control changes * @Vv (volume) status 1011nnnn (BnH) n = 0 ~ 15 MIDI channel number control number 00000111 c = 7 control value 0vvvvvvv v = 0 ~ 127 * @Cc, v (control change) status 1011nnnn (BnH) n = 0 ~ 15 MIDI channel number control number 0ccccccc c = 0 ~ 127 control value 0vvvvvvv v = 0 ~ 127 3. program changes * @p (program changes) status 1100nnnn (CnH) n = 0 ~ 15 MIDI channel number program number 0ppppppp p = 0 ~ 127 4. system-realtime-message * timingclock status 11111000(F8H) The timingclock can be started with @S1 and @S2, used in a play line. When a playline has ended, the clock is stopped then STOP (FCH) has not to be used. * @S1 start status 11111010 (FAH) The starting of the clock is send out. * @S2 continue status 11111011 (FBH) The starting of the clock is send out. * @S0 stop status 11111100 (FCH) The stopping of the clock is send out. 5.4.2 Receiving data With the BASIC expansion receiving data is not posible. <5.4 MIDI DATA FORMAT 655> figure 4.11 MSX MIDI BASIC EXPANSION MML MIDI IMPLIMENTATION CHART XWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWRWWWWWWWWWWWWWWWRWWWWWWWWWWWWWWWWWWWWWWY V Function V send signal V Remarks V TWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWS V BASIC channels on V 1 - 9 V V V CHANNELS available V 1 - 16 V @Hn V TWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWS V channels on V 3 V V V MODE message V x V V V substitution V ********* V V TWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWS V NOTE NUMBER V O 24 - 119 V 01C - 08B V V voice range V ********* V V TWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWS V velocity note on V O 9nH, v=8xn V Vn, @An(n=0-15) V V V V @An is rythme only V V note off V x 9nH, v=0 V V TWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWS V Aftertouch key V x V V V channel V x V V TWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWS V Pitch handle V x V V TWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWS V V O (7) V @Vn V V V O (0-127) V @Cm, n V V Control change V V V TWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWS V program change V O V @n V V other posibility V ********* V V TWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWS V access kuruushibu(??) V x V V TWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWS V song portion V x V V V common song select V x V V V chain V x V V TWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWS V Real time clock V O V V V command V O V @Sn V TWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWS V local on/off V x V V V all note off V O V [CTRL] + [STOP] V V rest active sensing V x V V V reset V x V V TWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWWWQWWWWWWWWWWWWWWWWWWWWWWS V remarks V Zn : send 1 byte MIDI data V V V V ZWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWQWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW[ O = Available x = Not available MODE 1 : OMNI ON,POLY MODE 2 : OMNI ON,MONO MODE 3 : MONI OFF,POLY MODE 4 : OMNI OFF,MONO ************** means that the output data has no meaning. <656 > <657 > APPENDIX WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW <658 > <659 > WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW A R800 INSTRUCTION CHARTS WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW In these charts instructions of the R800, grouped in kind of instructions are collected. Of the mnemonics in these charts the name of the instruction, usage of this instruction are smplified showed. In the column of the usage of an instruction when there is an <- symbol The details of the left side are shown on the rightside The KAKKO (??) means the details of the memory by the shown belonging register. (???) For example if there is : r <- [.hl] the details of the memory of the shown HL register is is going to 8 bit (???) The in/out-put instructions [n] and [.c] are the equivalence of the in/out-put ports. In the flag column the flags used are shown. OPcode column the machinecode of every different instruction is written down in HEX and BIN format. The B stands for the length of the code in bytes, the C stands for the length of the code in clock cycles.The shown mnemonics that have changed for the R800 can't be guaranteed to work properly on the Z80 because they are not the same as the z80 instructions. (??) <660 APPENDIX A R800 INSTRUCTION CHART> remarks XWWWWWWWRWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWY V.a{7} VThe highest bit of register .a V V.{4..7}VBit 4-7 of register .a V V; VPunctuation of the usage V V.de:.hlV.de is the upper 16bit and .hl is the lower 16 bit and 32 bit V V V V V formed. V V[.ix+d]Vadres is formed when the 8bit of d is added to .ix V VC Vcarry flag V VZ Vzero flag V VP/v Vparity overflow V VS Vsign flag V VN Vsubstraction flag V VH Vhalf clear flag V VG Vflag don't change V VU Vflag changed in commando used V V0 Vflag is set to 0 V V1 Vflag is set to 1 V V? Vbecomes uncertain V VV Vuses the overflow flag V VP Vuses the parity flag V Vi(iff) Vvalue of the interrupt flipflop is attained V Vr,r' V8 bit register, .a,.b,.c,.d,.e,.h,.l V Vu,u' V8 bit register, .a,.b,.c,.d,.e,.ixh,.ixl V Vv,v' V8 bit register, .a,.b,.c,.d,.e,.iyh,.iyl V Vp V8 bit register, .ixh,.ixl V Vq V8 bit register, .iyh,.iyl V Vss V16 bit register,.bc,.de,.hl,.sp V Vpp V16 bit register,.bc,.de,.ix,.sp V Vrr V16 bit register,.bc,.de,.iy,.sp V Vqq V16 bit register,.bc,.de,.hl,.af V Ve V8 bit value of short branch (+127~128) V Vk Vadres of the brk comando, 00h,08h,10h,18h,20h,28h,30h,38h V Vnn Vdirect value of 16 bit, positive adres V Vn Vdirect value of 8 bit V Vb Vvalue shown number of bits for the bits of the mathematical V V V operation?? V VNOT Vbit rotation (??) V V\/ Vtaking the OR of the bits V V\W/ Vtaking the XOR of the bits V V/\ Vtaking the AND of the bits V Vtmp Vtemporary value (??) V VB Vnumber of bytes of the instruction V VC Vnumber of clock cycles of the instruction V ZWWWWWWWQWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW[ ??? A.1 8 BIT TRANSFER INSTRUCTIONS XWWWWWWWWWWWWRWWWWWWWWWWWWWWWWWWWWWWWWWWWWRWWWWWWWWWWWWWRWWWWWWWWWWWWRWRWY VMNEMONIC V INSTRUCTION ACTION V FLAGS V OPCODE V V V V V V TWWWWWWWWRWWWS V V V V VS Z H P/v N CV76543210VHEXVBVCV TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vld r,r' V r <- r' VG G G G G GV01 r r'V V1V1V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vld r,n V r <- n VG G G G G GV00 r 110V V2V2V V V V V<- n ->V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vld r,[.hl] V r <- [.hl] VG G G G G GV01 r 110V V1V2V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vld r,[.ix+d]V r <- [.ix+d] VG G G G G GV11011101VDD V3V5V V V V V01 r 110V V V V V V V V<- d ->V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vld r,[.iy+d]V r <- [.iy+d] VG G G G G GV11111101VFD V3V5V V V V V01 r 110V V V V V V V V<- d ->V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vld [.hl],r V[.hl] <- r VG G G G G GV10110 r V V1V2V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vld [.ix+d],rV [.ix+d] <- r VG G G G G GV11011101VDD V3V5V V V V V01110 r V V V V V V V V<- d ->V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vld [.iy+d],rV [.iy+d] <- r VG G G G G GV11111101VFD V3V5V V V V V01110 r V V V V V V V V<- d ->V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vld u,u' V u <- u' VG G G G G GV11011101VDD V2V2V V V V V01 u u'V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vld v,v' V v <- v' VG G G G G GV11111101VFD V2V2V V V V V01 v v'V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vld u,n V u <- n VG G G G G GV11011101VDD V3V3V V V V V00 u 110V V V V V V V V<- n ->V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vld v,n V v <- n VG G G G G GV11111101VFD V3V3V V V V V00 v 110V V V V V V V V<- n ->V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vld [.hl],n V [.hl] <- n VG G G G G GV00110110V36 V2V3V V V V V<- n ->V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vld [.ix+d],nV [.ix+d] <- n VG G G G G GV11011101VDD V4V5V V V V V00110110V36 V V V V V V V<- d ->V V V V V V V V<- n ->V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vld [.iy+d],nV [.iy+d] <- n VG G G G G GV11111101VFD V4V5V V V V V00110110V36 V V V V V V V<- d ->V V V V V V V V<- n ->V V V V ZWWWWWWWWWWWWQWWWWWWWWWWWWWWWWWWWWWWWWWWWWQWWWWWWWWWWWWWQWWWWWWWWQWWWQWQW[ <662 APPENDIX A R800 instruction chart> XWWWWWWWWWWWWRWWWWWWWWWWWWWWWWWWWWWWWWWWWWRWWWWWWWWWWWWWRWWWWWWWWWWWWRWRWY VMNEMONIC V INSTRUCTION ACTION V FLAGS V OPCODE V V V V V V TWWWWWWWWRWWWS V V V V VS Z H P/v N CV76543210VHEXVBVCV TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vld .a,.i V .a <- .i VU U 0 i 0 GV11101101VED V2V2V V V V V01010111V57 V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vld .a,.r V .a <- .r VU U 0 i 0 GV11101101VED V2V2V V V V V01011111V5F V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vld .i,.a V .i <- .ax+d] VG G G G G GV11101101VED V2V2V V V V V01000111V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vld .r,.a V .r <- .a VG G G G G GV11101101VED V2V2V V V V V01001111V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vld .a,[.bc] V .a <- [.bc] VG G G G G GV00001010V0A V1V2V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vld .a,[.de] V .a <- [.de] VG G G G G GV00011010V1A V1V2V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vld .a,[nn] V .a <- [nn] VG G G G G GV00111010V3A V3V4V V V V V<- NNl->V V V V V V V V<- NNh->V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vld [.bc],.a V [.bc] <- .a VG G G G G GV00000010V02 V1V2V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vld [.de],.a V [.de] <- .a VG G G G G GV00010010V12 V1V2V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vld [nn],.a V [nn] <- .a VG G G G G GV00110010V32 V3V4V V V V V<- NNl->V V V V V V V V<- NNh->V V V V ZWWWWWWWWWWWWQWWWWWWWWWWWWWWWWWWWWWWWWWWWWQWWWWWWWWWWWWWQWWWWWWWWQWWWQWQW[ XWRWWWWRWWWWRWWWWRWWWWRWWWWRWWWWRWWWWRWWWWY V V000 V001 V010 V011 V100 V101 V110 V111 V TWUWWWWUWWWWUWWWWUWWWWUWWWWUWWWWUWWWWUWWWWS VrV .b V .c V .d V .e V .h V .l V V .a V TWUWWWWUWWWWUWWWWUWWWWUWWWWUWWWWUWWWWUWWWWS VuV .b V .c V .d V .e V.ixhV.ixlV V .a V TWUWWWWUWWWWUWWWWUWWWWUWWWWUWWWWUWWWWUWWWWS VvV .b V .c V .d V .e V.iyhV.iylV V .a V ZWQWWWWQWWWWQWWWWQWWWWQWWWWQWWWWQWWWWQWWWW[ A.2 16 bit TRANSFER INSTRUCTIONS XWWWWWWWWWWWWRWWWWWWWWWWWWWWWWWWWWWWWWWWWWRWWWWWWWWWWWWWRWWWWWWWWWWWWRWRWY VMNEMONIC V INSTRUCTION ACTION V FLAGS V OPCODE V V V V V V TWWWWWWWWRWWWS V V V V VS Z H P/v N CV76543210VHEXVBVCV TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vld ss,nn V ss <- nn VG G G G G GV00ss0001V V3V3V V V V V<-nnl ->V V V V V V V V<-nnh ->V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vld .ix,nn V .ix <- nn VG G G G G GV11011101VDD V4V4V V V V V00100001V21 V V V V V V V<-nnl ->V V V V V V V V<-nnh ->V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vld .iy,nn V .iy <- nn VG G G G G GV11111101VFD V4V4V V V V V00100001V21 V V V V V V V<-nnl ->V V V V V V V V<-nnh ->V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vld .sp,.hl V .sp <- .hl VG G G G G GV11111001VF9 V1V1V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vld .sp,.ix V .sp <- .ix VG G G G G GV11011101VDD V2V2V V V V V11111001VF9 V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vld .sp,.iy V .sp <- .iy VG G G G G GV11111101VFD V2V2V V V V V11111001VF9 V V V ZWWWWWWWWWWWWQWWWWWWWWWWWWWWWWWWWWWWWWWWWWQWWWWWWWWWWWWWQWWWWWWWWQWWWQWQW[ XWWWWWWWWWWWWRWWWWWWWWWWWWWWWWWWWWWWWWWWWWRWWWWWWWWWWWWWRWWWWWWWWWWWWRWRWY VMNEMONIC V INSTRUCTION ACTION V FLAGS V OPCODE V V V V V V TWWWWWWWWRWWWS V V V V VS Z H P/v N CV76543210VHEXVBVCV TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vld ss,[nn] V ssh <- [nn+1] VG G G G G GV11101101VED V4V6V V V ssl <- [nn] V V01ss1011V V V V V V V V<-nnl ->V V V V V V V V<-nnh ->V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vld .hl,[nn] V .h <- [nn+1] VG G G G G GV00101010V2A V3V5V V V .l <- [nn] V V<-nnl ->V V V V V V V V<-nnh ->V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vld .ix,[nn] V.ixh <- [nn+1] VG G G G G GV11011101VDD V4V6V V V.ixl <- [nn] V V00101010V2A V V V V V V V<-nnl ->V V V V V V V V<-nnh ->V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vld .iy,[nn] V.iyh <- [nn+1] VG G G G G GV11111101VFD V4V6V V V.iyl <- [nn] V V00101010V2A V V V V V V V<-nnl ->V V V V V V V V<-nnh ->V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vld [nn],ss V[nn+1] <- ssh VG G G G G GV11101101VED V4V6V V V[nn] <- ssl V V01ss0011V V V V V V V V<-nnl ->V V V V V V V V<-nnh ->V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vld [nn],.hl V[nn+1] <- .h VG G G G G GV00100010V22 V3V5V V V[nn] <- .l V V<-nnl ->V V V V V V V V<-nnh ->V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vld [nn],.ix V[nn+1] <- .ixh VG G G G G GV11011101VDD V4V6V V V[nn] <- .ixl V V00100010V22 V V V V V V V<-nnl ->V V V V V V V V<-nnh ->V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vld [nn],.iy V[nn+1] <- .iyh VG G G G G GV11111101VFD V4V6V V V[nn] <- .iyl V V00100010V22 V V V V V V V<-nnl ->V V V V V V V V<-nnh ->V V V V ZWWWWWWWWWWWWQWWWWWWWWWWWWWWWWWWWWWWWWWWWWQWWWWWWWWWWWWWQWWWWWWWWQWWWQWQW[ XWWRWWWRWWWRWWWRWWWY V V00 V01 V10 V11 V TWWUWWWUWWWUWWWUWWWS VssV.bcV.deV.hlV.spV ZWWQWWWQWWWQWWWQWWW[ <664 appendix A r800 instruction chart > A.3 EXCHANGE INSTRUCTIONS XWWWWWWWWWWWWWRWWWWWWWWWWWWWWWWWWWWWWWWWWWWRWWWWWWWWWWWWWRWWWWWWWWWWWWRWRWY VMNEMONIC V INSTRUCTION ACTION V FLAGS V OPCODE V V V V V V TWWWWWWWWRWWWS V V V V VS Z H P/v N CV76543210VHEXVBVCV TWWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vxch .de,.hl V.de <-> .hl VG G G G G GV11101011VEB V1V1V TWWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vxch .af,.af' V.af <-> .af' VU U U U U UV00001000V08 V1V1V TWWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vxch [.sp],.hlV.l <-> [.sp];.h <-> [sp+1] VG G G G G GV11100011VE3 V1V5V TWWWWWWWWWW WWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vxch [.sp],.ixV.ixl <-> [.sp] VG G G G G GV11011101VDD V2V6V V V.ixh <-> [.sp+1] V V11100011VE3 V V V TWWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vxch [.sp],.iyV.iyl <-> [.sp] VG G G G G GV11111101VFD V2V6V V V.iyh <-> [.sp] V V11100011VE3 V V V TWWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vxchx V.bc <-> .bc';.de <-> de'; VG G G G G GV11011001VD9 V1V1V V V.hl <-> .hl' V V V V V V ZWWWWWWWWWWWWWQWWWWWWWWWWWWWWWWWWWWWWWWWWWWQWWWWWWWWWWWWWQWWWWWWWWQWWWQWQW[ A.4 STACK OPERATION INSTRUCTIONS XWWWWWWWWWWWWRWWWWWWWWWWWWWWWWWWWWWWWWWWWWRWWWWWWWWWWWWWRWWWWWWWWWWWWRWRWY VMNEMONIC V INSTRUCTION ACTION V FLAGS V OPCODE V V V V V V TWWWWWWWWRWWWS V V V V VS Z H P/v N CV76543210VHEXVBVCV TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vpush qq V[.sp-2]<-qql;[sp-1]<-qqh VG G G G G GV11qq0101V V1V4V V V.sp <- .sp-2 V V V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vpush .ix V[.sp-2]<-.ixl;[.sp-1]<-.ixh VG G G G G GV11011101VDD V2V5V V V.sp <- .sp-2 V V11100101VE5 V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vpush .iy V[.sp-2]<-.iyl;[.sp-1]<-.iyh VG G G G G GV11111101VFD V2V5V V V.sp <- .sp-2 V V11100101VE5 V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vpop qq Vqql<-[.sp];qqh<-[.sp+1] VG G G G G GV11qq0001V V1V3V V V.sp <- .sp+2 V V V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vpop .ix V.ixl<-[.sp];.ixh<-[.sp+1] VG G G G G GV11011101VDD V2V4V V V.sp <- .sp+2 V V11100001VE1 V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vpop .iy V.iyl<-[.sp];.iyh<-[.sp+1] VG G G G G GV11111101VFD V2V4V V V.sp <- .sp+2 V V11100001VE1 V V V ZWWWWWWWWWWWWQWWWWWWWWWWWWWWWWWWWWWWWWWWWWQWWWWWWWWWWWWWQWWWWWWWWQWWWQWQW[ XWWRWWWRWWWRWWWRWWWY V V00 V01 V10 V11 V TWWUWWWUWWWUWWWUWWWS VqqV.bcV.deV.hlV.afV ZWWQWWWQWWWQWWWQWWW[ In case of pop .af, all flags are changed A.5 BLOCK MOVE INSTRUCTIONS XWWWWWWWWWWWWRWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWRWWWWWWWWWWWWWRWWWWWWWWWWWWRWRWY VMNEMONIC V INSTRUCTION ACTION V FLAGS V OPCODE V V V V V V TWWWWWWWWRWWWS V V V V VS Z H P/v N CV76543210VHEXVBVCV TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vmove[.hl++],V[.de]<-[.hl];.de<-.de+1 VG G 0 U 0 GV11101101VED V2V4V V[.de++], V.hl<-.hl+1;.bc<-.bc-1 V *1 V10100000VA0 V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vmove[.hl--],V[.de]<-[.hl];.de+.de-1 VG G 0 U 0 GV11101101VED V2V4V V[.de--] V.hl<-.hl-1;.bc<-.bc-1 V *1 V10101000VA8 V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vmovem [.hl++Vrepeat;[.de]<-[.hl];.de<-.de+1VG G 0 0 0 GV11101101VED V2V4V V ],[.de++] V.hl<-.hl+1;.bc<-.bc-1;until.bc=0V V10110000VB0 V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWRWQWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vmovem [.hl--Vrepeat;[.de]<-[.hl];.de<-.de-1VG G 0 0 0 GV11101101VED V2V4V V ],[.de--] V.hl<-.hl-1;.bc<-.bc-1;until.bc=0V V10111000VB8 V V V ZWWWWWWWWWWWWQWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWQWWWWWWWWWWWQWWWWWWWWQWWWQWQW[ *1 when .bc-1 = 0 it will be set to 0 else it will be set to 1 A.6 BLOCK SEARCH INSTRUCTION XWWWWWWWWWWWWRWWWWWWWWWWWWWWWWWWWWWWWWWWWWRWWWWWWWWWWWWWRWWWWWWWWWWWWRWRWY VMNEMONIC V INSTRUCTION ACTION V FLAGS V OPCODE V V V V V V TWWWWWWWWRWWWS V V V V VS Z H P/v N CV76543210VHEXVBVCV TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vcmp V.a-[.hl];.hl<-.hl+1 VU U U U 1 GV11101101VED V2V4V V .a,[.hl++]V.bc<-.bc-1 V *2 *1 V10100001VA1 V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vcmp V.a-[.hl];.hl<-.hl-1 VU U U U 1 GV11101101VED V2V4V V .a,[.hl--]V.bc<-.bc-1 V *2 *1 V10101001VA9 V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vcmpm Vrepeat;.a-[.hl];.hl<-.hl+1 VU U U U 1 GV11101101VED V2V5V V .a,[hl++]V.bc<-.bc-1;until .bc=0 V *2 *1 V10110001VB1 V V V V V or .a=[.hl] V V V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vcmpm Vrepeat;.a-[.hl];.hl<-.hl-1 VU U U U 1 GV11101101VED V2V5V V .a,[hl--]V.bc<-.bc-1;until .bc=0 V *2 *1 V10111001VB9 V V V V V or .a=[.hl] V V V V V V ZWWWWWWWWWWWWQWWWWWWWWWWWWWWWWWWWWWWWWWWWWQWWWWWWWWWWWWWQWWWWWWWWQWWWQWQW[ *1 when bc-1=0 it will be set to 0 else it will be set to 1 *2 when .a=[.hl] it will be set to 1 else it will be set to 0 A.7 MULTIPLICATION INSTRUCTIONS XWWWWWWWWWWWWRWWWWWWWWWWWWWWWWWWWWWWWWWWWWRWWWWWWWWWWWWWRWWWWWWWWWWWWRWRWWY VMNEMONIC V INSTRUCTION ACTION V FLAGS V OPCODE V V V V V V TWWWWWWWWRWWWS V V V V VS Z H P/v N CV76543210VHEXVBVC V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWWS Vmulub .a,r V.hl<-.a*r V0 U G 0 G UV11101101VED V2V14V V V V V11 r 001V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWWS Vmuluw .hl,ssV.de:.hl<-.hl*ss V0 U G 0 G UV11101101VED V2V36V V V V V11ss0011V V V V ZWWWWWWWWWWWWQWWWWWWWWWWWWWWWWWWWWWWWWWWWWQWWWWWWWWWWWWWQWWWWWWWWQWWWQWQWW[ With the mulub function when .b,.c,.d,.e are excluded of r the usage can't be guaranteed. (???) With the muluw function then .bc,.sp are excluded of ss the usage can't be guaranteed. (???) <666 appendix a r800 instruction chart> A.8 ADD INSTRUCTIONS XWWWWWWWWWWWWRWWWWWWWWWWWWWWWWWWWWWWWWWWWWRWWWWWWWWWWWWWRWWWWWWWWWWWWRWRWY VMNEMONIC V INSTRUCTION ACTION V FLAGS V OPCODE V V V V V V TWWWWWWWWRWWWS V V V V VS Z H P/v N CV76543210VHEXVBVCV TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vadd .a,r V.a<-.a+r VU U U v 0 UV10000 r V V1V1V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vadd .a,p V.a<-.a+p VU U U V 0 UV11011101VDD V2V2V V V V V10000 p V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vadd .a,q V.a<-.a+q VU U U V 0 UV11111101VFD V2V2V V V V V10000 q V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vadd .a,[.hl]V.a<-.a+[.hl] VU U U V 0 UV10000110V86 V1V2V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vadd V.a<-.a+[.ix+d] VU U U V 0 UV11011101VDD V3V5V V .a,[.ix+d] V V V10000110V86 V V V V V V V<- d ->V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vadd V.a<-.a+[.iy+d] VU U U V 0 UV11111101VFD V3V5V V .a,[.iy+d] V V V10000110V86 V V V V V V V<- d ->V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vadd a,n V.a<-.a+n VU U U V 0 UV11000110VC6 V2V2V V V V V<- n ->V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vaddc .a.r V.a<-.a+r+C VU U U V 0 UV10001 r V V1V1V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vaddc .a,p V.a<-.a+p+C VU U U V 0 UV11011101VDD V2V2V V V V V10001 p V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vaddc .a,q V.a<-.a+q+C VU U U V 0 UV11111101VFD V2V2V V V V V10001 q V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vaddc.a,[.hl]V.a<-.a+[.hl]+C VU U U V 0 UV10001110V8E V1V2V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vaddc V.a<-.a+[.ix+d]+C VU U U V 0 UV11011101VDD V3V5V V .a,[.ix+d] V V V10001110V8E V V V V V V V<- d ->V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vaddc V.a<-.a+[.iy+d]+C VU U U V 0 UV11111101VFD V3V5V V .a,[.iy+d] V V V10001110V8E V V V V V V V<- d ->V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vaddc .a,n V.a<-.a+n+C VU U U V 0 UV11001110VCE V2V2V V V V V<- n ->V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vaddc .hl,ss V.hl<-.hl+ss+C VU U ? V 0 UV11101101VED V2V2V V V V V01ss1010V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vadd .hl,ss V.hl<-.hl+ss VG G ? G 0 UV00ss1001V V1V1V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vadd .ix,pp V.ix<-.ix+pp VG G ? G 0 UV11011101VDD V2V2V V V V V00pp1001V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vadd .iy,rr V.iy<-.iy+rr VG G ? G 0 UV11111101VFD V2V2V V V V V00rr1001V V V V ZWWWWWWWWWWWWQWWWWWWWWWWWWWWWWWWWWWWWWWWWWQWWWWWWWWWWWWWQWWWWWWWWQWWWQWQW[ XWWWWWWWWWWWWRWWWWWWWWWWWWWWWWWWWWWWWWWWWWRWWWWWWWWWWWWWRWWWWWWWWWWWWRWRWY VMNEMONIC V INSTRUCTION ACTION V FLAGS V OPCODE V V V V V V TWWWWWWWWRWWWS V V V V VS Z H P/v N CV76543210VHEXVBVCV TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vinc r Vr<-r+1 VU U U V 0 GV00 r 100V V1V1V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vinc p Vp<-p+1 VU U U V 0 GV11011101VDD V2V2V V V V V00 p 100V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vinc q Vq<-q+1 VU U U V 0 GV11111101VFD V2V2V V V V V00 q 100V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vinc [.hl] V[.hl]<-[.hl]+1 VU U U V 0 GV00110100V34 V1V4V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vinc [.ix+d] V[.ix+d]<-[.ix+d]+1 VU U U V 0 GV11011101VDD V3V7V V V V V00110100V34 V V V V V V V<- d ->V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vinc [.iy+d] V[.iy+d]<-[.iy+d]+1 VU U U V 0 GV11111101VFD V3V7V V V V V00110100V34 V V V V V V V<- d ->V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vinc ss Vss<-ss+1 VG G G G G GV00ss0011V V1V1V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vinc .ix V.ix<-.ix+1 VG G G G G GV11011101VDD V2V2V V V V V00100011V23 V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vinc .iy V.iy<-.iy+1 VG G G G G GV11111101VFD V2V2V V V V V00100011V23 V V V ZWWWWWWWWWWWWQWWWWWWWWWWWWWWWWWWWWWWWWWWWWQWWWWWWWWWWWWWQWWWWWWWWQWWWQWQW[ XWWRWWWRWWWRWWWRWWWY V V00 V01 V10 V11 V TWWUWWWUWWWUWWWUWWWS VssV.bcV.deV.hlV.spV TWWUWWWUWWWUWWWUWWWS VppV.bcV.deV.ixV.spV TWWUWWWUWWWUWWWUWWWS VrrV.bcV.deV.iyV.spV ZWWQWWWQWWWQWWWQWWW[ XWRWWWWRWWWWRWWWWRWWWWRWWWWRWWWWWRWWWWRWWWWY V V000 V001 V010 V011 V100 V101 V110 V111 V TWUWWWWUWWWWUWWWWUWWWWUWWWWUWWWWWUWWWWUWWWWS VpV V V V V.ixhV.ixl V V V TWUWWWWUWWWWUWWWWUWWWWUWWWWUWWWWWUWWWWUWWWWS VqV V V V V.iyhV.iyl V V V ZWQWWWWQWWWWQWWWWQWWWWQWWWWQWWWWWQWWWWQWWWW[ <668 APPENDIX A R800 INSTRUCTION CHART> A.9 DECREASE INSTRUCTION XWWWWWWWWWWWWRWWWWWWWWWWWWWWWWWWWWWWWWWWWWRWWWWWWWWWWWWWRWWWWWWWWWWWWRWRWY VMNEMONIC V INSTRUCTION ACTION V FLAGS V OPCODE V V V V V V TWWWWWWWWRWWWS V V V V VS Z H P/v N CV76543210VHEXVBVCV TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vsub .a,r V.a<.a-r VU U U V 1 UV10010 r V V1V1V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vsub .a,p V.a<-.a-p VU U U V 1 UV11011101VDD V2V2V V V V V10010 p V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vsub .a,q V.a<-.a-q VU U U V 1 UV11111101VFD V2V2V V V V V10010 q V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vsub .a,[.hl]V.a<-.a-[.hl] VU U U V 1 UV10010110V96 V1V2V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vsub .a, V.a<-.a-[.ix+d] VU U U V 1 UV11011101VDD V3V5V V [.ix+d] V V V10010110V96 V V V V V V V<- d ->V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vsub .a, V.a<-.a-[.iy+d] VU U U V 1 UV11111101VFD V3V5V V [.iy+d] V V V10010110V96 V V V V V V V<- d ->V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vsub .a,n V.a<-.a-n VU U U V 1 UV11010110VD6 V2V2V V V V V<- n ->V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vsubc .a,r V.a<-.a-r-C VU U U V 1 UV10011 r V V1V1V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vsubc .a,p V.a<-.a-p-C VU U U V 1 UV11011101VDD V2V2V V V V V10011 p V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vsubc .a,q V.a<-.a-q-C VU U U V 1 UV11111101VFD V2V2V V V V V10011 q V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vsubc .a, V.a<-.a-[.hl]-C VU U U V 1 UV10011110V9E V1V2V V [.hl] V V V V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vsubc .a, V.A<-.A-[.IX+D]+c VU U U V 1 UV11011101VDD V3V5V V [.ix+d] V V V10011110V9E V V V V V V V<- d ->V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vsubc .a, V.a<-.a-[.iy+d]+c VU U U V 1 UV11111101VFD V3V5V V [.iy+d] V V V10011110V9E V V V V V V V<- d ->V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vsubc a,n V.a<-.a-n-C VU U U V 1 UV11011110VDE V2V2V V V V V<- n ->V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vsubc .hl,ss V.hl<-.hl-ss-C VU U ? V 1 UV11101101VED V2V2V V V V V01ss0010V V V V ZWWWWWWWWWWWWQWWWWWWWWWWWWWWWWWWWWWWWWWWWWQWWWWWWWWWWWWWQWWWWWWWWQWWWQWQW[ XWWWWWWWWWWWWRWWWWWWWWWWWWWWWWWWWWWWWWWWWWRWWWWWWWWWWWWWRWWWWWWWWWWWWRWRWY VMNEMONIC V INSTRUCTION ACTION V FLAGS V OPCODE V V V V V V TWWWWWWWWRWWWS V V V V VS Z H P/v N CV76543210VHEXVBVCV TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vdec r Vr<-r-1 VU U U V 1 GV00 r 101V V1V1V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vdec p Vp<-p-1 VU U U V 1 GV11011101VDD V2V2V V V V V00 p 101V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vdec q Vq<-q-1 VU U U V 1 GV11111101VFD V2V2V V V V V00 q 101V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vdec [.hl] V[.hl]<-[.hl]-1 VU U U V 1 GV00110101V35 V1V4V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vdec [.ix+d] V[.ix+d]<-[.ix+d]-1 VU U U V 1 GV11011101VDD V3V7V V V V V00110101V35 V V V V V V V<- d ->V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vdec [.iy+d] V[.iy+d]<-[.iy+d]-1 VU U U V 1 GV11111101VFD V3V7V V V V V00110101V35 V V V V V V V<- d ->V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vdec ss Vss<-ss-1 VG G G G G GV00ss1011V V1V1V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vdec .ix V.ix<-.ix-1 VG G G G G GV11011101VDD V2V2V V V V V00101011V2B V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vdec .iy V.iy<-.iy-1 VG G G G G GV11111101VFD V2V2V V V V V00101011V2B V V V ZWWWWWWWWWWWWQWWWWWWWWWWWWWWWWWWWWWWWWWWWWQWWWWWWWWWWWWWQWWWWWWWWQWWWQWQW[ A.10 COMPARISON INSTRUCTIONS XWWWWWWWWWWWWRWWWWWWWWWWWWWWWWWWWWWWWWWWWWRWWWWWWWWWWWWWRWWWWWWWWWWWWRWRWY VMNEMONIC V INSTRUCTION ACTION V FLAGS V OPCODE V V V V V V TWWWWWWWWRWWWS V V V V VS Z H P/v N CV76543210VHEXVBVCV TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vcmp .a,r V.a-r VU U U V 1 UV10111 r V V1V1V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vcmp .a,r V.a-p VU U U V 1 UV11011101VDD V2V2V V V V V10111 p V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vcmp .a,q V.a-q VU U U V 1 UV11111101VFD V2V2V V V V V10111 q V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vcmp .a,[.hl]V.a-[.hl] VU U U V 1 UV10111110VBE V1V2V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vcmp .a, V.a-[.ix+d] VU U U V 1 UV11011101VDD V3V5V V [.ix+d] V V V10111110VBE V V V V V V V<- d ->V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vcmp .a, V.a-[.iy+d] VU U U V 1 UV11111101VFD V3V5V V [.iy+d] V V V10111110VBE V V V V V V V<- d ->V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vcmp .a,n V.a-n VU U U V 1 UV11111110VFE V2V2V V V V V<- n ->V V V V ZWWWWWWWWWWWWQWWWWWWWWWWWWWWWWWWWWWWWWWWWWQWWWWWWWWWWWWWQWWWWWWWWQWWWQWQW[ < 670 APPENDIX A R800 INSTRUCTION CHART> A.11 LOGIC OPERATION INSTRUCTION XWWWWWWWWWWWWRWWWWWWWWWWWWWWWWWWWWWWWWWWWWRWWWWWWWWWWWWWRWWWWWWWWWWWWRWRWY VMNEMONIC V INSTRUCTION ACTION V FLAGS V OPCODE V V V V V V TWWWWWWWWRWWWS V V V V VS Z H P/v N CV76543210VHEXVBVCV TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vand .a,r V.a<-.a/\r VU U 1 P 0 0V10100 r V V1V1V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vand .a,p V.a<-.a/\p VU U 1 P 0 0V11011101VDD V2V2V V V V V10100 p V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vand .a,q V.a<-.a/\q VU U 1 P 0 0V11111101VFD V2V2V V V V V10100 q V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vand .a,[.hl]V.a<-.a/\[.hl] VU U 1 P 0 0V10100110VA6 V1V2V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vand .a, V.a<-.a/\[.ix+d] VU U 1 P 0 0V11011101VDD V3V5V V [.ix+d] V V V10100110VA6 V V V V V V V<- d ->V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vand .a, V.a<-.a/\[.iy+d] VU U 1 P 0 0V11111101VFD V3V5V V [.iy+d] V V V10100110VA6 V V V V V V V<- d ->V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vand .a,n V.a<-.a/\n VU U 1 P 0 0V11100110VE6 V2V2V V V V V<- n ->V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vor .a,r V.a<-.a\/r VU U 0 P 0 0V10110 r V V1V1V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vor .a,p V.a<-.a\/p VU U 0 P 0 0V11011101VDD V2V2V V V V V10110 p V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vor .a,q V.a<-.a\/q VU U 0 P 0 0V11111101VFD V2V2V V V V V10110 q V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vor .a,[.hl] V.a<-.a\/[.hl] VU U 0 P 0 0V10110110VB6 V1V2V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vor .a, V.a<-.a\/[.ix+d] VU U 0 P 0 0V11011101VDD V3V5V V [.ix+d] V V V10110110VB6 V V V V V V V<- d ->V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vor .a, V.a<-.a\/[.iy+d] VU U 0 P 0 0V11111101VFD V3V5V V [.iy+d] V V V10110110V V V V V V V V<- d ->V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vor .a,n V.a<-.a\/n VU U 0 P 0 0V11110110VF6 V2V2V V V V V<- n > V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vxor .a,r V.a<-.a\W/r VU U 0 P 0 0V10101 r V V1V1V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vxor .a,p V.a<-.a\W/p VU U 0 P 0 0V11011101VDD V2V2V V V V V10101 p V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vxor .a,q V.a<-.a\W/q VU U 0 P 0 0V11111101VFD V2V2V V V V V10101 q V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vxor .a,[.hl]V.a<-.a\W/[.hl] VU U 0 P 0 0V10101110VAE V1V2V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vxor .a, V.a<-.a\W/[.ix+d] VU U 0 P 0 0V11011101VDD V3V5V V [.ix+d] V V V10101110VAE V V V V V V V<- d ->V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vxor .a, V.a<-.a\W/[.iy+d] VU U 0 P 0 0V11111101VFD V3V5V V [.iy+d] V V V10101110VAE V V V V V V V<- d ->V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vxor .a,n V.a<-.a\W/n VU U 0 P 0 0V11101110VEE V2V2V V V V V<- n ->V V V V ZWWWWWWWWWWWWQWWWWWWWWWWWWWWWWWWWWWWWWWWWWQWWWWWWWWWWWWWQWWWWWWWWQWWWQWQW[ A.12 BIT OPERATION INSTRUCTION XWWWWWWWWWWWWRWWWWWWWWWWWWWWWWWWWWWWWWWWWWRWWWWWWWWWWWWWRWWWWWWWWWWWWRWRWY VMNEMONIC V INSTRUCTION ACTION V FLAGS V OPCODE V V V V V V TWWWWWWWWRWWWS V V V V VS Z H P/v N CV76543210VHEXVBVCV TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vbit b,r Vz<-NOT r{b} V? U 1 ? 0 GV11001011VCB V2V2V V V V V01 b r V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vbit b,[.hl] Vz<-NOT [.hl]{b} V? U 1 ? 0 GV11001011VCB V2V2V V V V V01 b 110V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vbit b, Vz<-NOT [.ix+d]{b} V? U 1 ? 0 GV11011101VDD V4V5V V [.ix+d] V V V11001011VCB V V V V V V V<- d ->V V V V V V V V01 b 110V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vbit b, Vz<-NOT [.iy+d]{b} V? U 1 ? 0 GV11111101VFD V4V5V V [.iy+d] V V V11001011VCB V V V V V V V<- d ->V V V V V V V V01 b 110V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vset b,r Vr{b}<-1 VG G G G G GV11001011VCB V2V2V V V V V11 b r V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vset b,[.hl] V[.hl]{b}<-1 VG G G G G GV11001011VCB V2V5V V V V V11 b 110V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vset b, V[.ix+d]{b}<-1 VG G G G G GV11011101VDD V4V7V V [.ix+d] V V V11001011VCB V V V V V V V<- d ->V V V V V V V V11 b 110V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vset b, V[.iy+d]{b}<-1 VG G G G G GV11111101VFD V4V7V V [.iy+d] V V V11001011VCB V V V V V V V<- d ->V V V V V V V V11 b 110V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vclr b,r Vr{b}<-0 VG G G G G GV11001011VCB V2V2V V V V V10 b r V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vclr b,[.hl] V[.hl]{b}<-0 VG G G G G GV11001011VCB V2V5V V V V V10 b 110V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vclr b, V[.ix+d]{b}<-0 VG G G G G GV11011101VDD V4V7V V [.ix+d] V V V11001011VCB V V V V V V V<= d ->V V V V V V V V10 b 110V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vclr b, V[.iy+d]{b}<-0 VG G G G G GV11111101VFD V4V7V V [.iy+d] V V V11001011VCB V V V V V V V<- d ->V V V V V V V V10 b 110V V V V ZWWWWWWWWWWWWQWWWWWWWWWWWWWWWWWWWWWWWWWWWWQWWWWWWWWWWWWWQWWWWWWWWQWWWQWQW[ <672 APPENDIX A R800 INSTRUCTION CHART> A.13 ROTATE INSTRUCTIONS XWWWWWWWWWWWWRWWWWWWWWWWWWWWWWWWWWWWWWWWWWRWWWWWWWWWWWWWRWWWWWWWWWWWWRWRWY VMNEMONIC V INSTRUCTION ACTION V FLAGS V OPCODE V V V V V V TWWWWWWWWRWWWS V V V V VS Z H P/v N CV76543210VHEXVBVCV TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vrol a VC<-.a{7};.a<-.a*2;a{0}<-C VG G 0 G 0 UV00000111V07 V1V1V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vror a VC<-.a{0};.a<-.a/2;a{7}<-C VG G 0 G 0 UV00001111V0F V1V1V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vrolc a Vtmp<-C;C<-.a{7};.a<-.a*2; VG G 0 G 0 UV00010111V17 V1V1V V V .a{0}<-tmp V V V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vrorc a Vtmp<-C;C<-.a{0};.a<-.a/2; VG G 0 G 0 UV00011111V1F V1V1V V V .a{7}<-tmp V V V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vrol r VC<-r{7} VU U 0 P 0 UV11001011VCB V2V2V V VrV V V V V V V V00000110V06 V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vrol [.iy+d] VC<-[.iy+d]{7} VU U 0 P 0 UV11111101VFD V4V7V V V[.iy+d]<-[.iy+d]*2 V V VCB V V V V V[.iy+d]{0}<-C V V<- d ->V V V V V V V V00000110V06 V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vror r VC<-r{0} VU U 0 P 0 UV11001011VCB V2V2V V Vr<-r/2;r{7}<-C V V V V V V V V V V V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vror [.hl] VC<-[.hl]{0} VU U 0 P 0 UV11001011VCB V2V5V V V[.hl]<-[.hl]/2;[.hl]{7}<-C V V00001110V0E V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vror [.ix+d] VC<-[.ix+d]{0} VU U 0 P 0 UV11011101VDD V4V7V V V[.ix+d]<-[.ix+d]/2 V V VCB V V V V V[.ix+d]{7}<-C V V<- d ->V V V V V V V V00001110V06 V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vrol [.iy+d] VC<-[.iy+d]{0} VU U 0 P 0 UV11111101VFD V4V7V V V[.iy+d]<-[.iy+d]/2 V V VCB V V V V V[.iy+d]{7}<-C V V<- d ->V V V V V V V V00001110V06 V V V ZWWWWWWWWWWWWQWWWWWWWWWWWWWWWWWWWWWWWWWWWWQWWWWWWWWWWWWWQWWWWWWWWQWWWQWQW[ XWWWWWWWWWWWWRWWWWWWWWWWWWWWWWWWWWWWWWWWWWRWWWWWWWWWWWWWRWWWWWWWWWWWWRWRWY VMNEMONIC V INSTRUCTION ACTION V FLAGS V OPCODE V V V V V V TWWWWWWWWRWWWS V V V V VS Z H P/v N CV76543210VHEXVBVCV TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vrolc r Vtmp<-C;C<-r{7} VU U 0 P 0 UV11001011VCB V2V2V V Vr<-r*2;r{0}<-tmp V V00010 r V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vrolc [.hl] Vtmp<-C;C<-[.hl]{7} VU U 0 P 0 UV11001011VCB V2V5V V V[.hl]<-[.hl]*2;[.hl]{0}<-tmpV V00010110V16 V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vrolc [.ix+d]Vtmp<-C VU U 0 P 0 UV11011101VDD V4V7V V VC<-[.ix+d]{7} V V11001011VCB V V V V V[.ix+d]<-[.ix+d]*2 V V<- b ->V V V V V V[.ix+d]{0}<-tmp V V00010110V16 V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vrolc [.iy+d]Vtmp<-C VU U 0 P 0 UV11111101VFD V4V7V V VC<-[.iy+d]{7} V V11001011VCB V V V V V[.iy+d]<-[.iy+d]*2 V V<- b ->V V V V V V[.iy+d]{0}<-tmp V V00010110V16 V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vrorc r Vtmp<-C;C<-r{0} VU U 0 P 0 UV11001011VCB V2V2V V Vr<-r/2;r{7}<-tmp V V00011 r V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vrorc [.hl] Vtmp<-C;C<-[.hl]{0} VU U 0 P 0 UV11001011VCB V2V5V V V[.hl]<-[.hl]/2;[.hl]{7}<-tmpV V00011110V1E V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vrorc [.ix+d]Vtmp<-C VU U 0 P 0 UV11011101VDD V4V7V V VC<-[.ix+d]{0} V V11001011VCB V V V V V[.ix+d]<-[.ix+d]/2 V V<- b ->V V V V V V[.ix+d]{7}<-tmp V V00011110V16 V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vrorc [.iy+d]Vtmp<-C VU U 0 P 0 UV11111101VFD V4V7V V VC<-[.iy+d]{0} V V11001011VCB V V V V V[.iy+d]<-[.iy+d]/2 V V<- b ->V V V V V V[.iy+d]{7}<-tmp V V00011110V1E V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vrol4 [.hl] Vtmp<-.a{0..3} VU U 0 P 0 GV11101101VED V2V5V V V.a{0..3}<-[.hl]{4..7} V V11101111V6F V V V V V[.hl]{4..7}<-[.hl]{0..3} V V V V V V V V[.hl]{0..3}<-tmp V V V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vrol4 [.hl] Vtmp<-.a{0..3} VU U 0 P 0 GV11101101VED V2V5V V V.a{0..3}<-[.hl]{4..7} V V11100111V67 V V V V V[.hl]{4..7}<-[.hl]{0..3} V V V V V V V V[.hl]{0..3}<-tmp V V V V V V ZWWWWWWWWWWWWQWWWWWWWWWWWWWWWWWWWWWWWWWWWWQWWWWWWWWWWWWWQWWWWWWWWQWWWQWQW[ <674 APPENDIX A R800 INSTRUCTION CHART A.14 SHIFT INSTRUCTIONS XWWWWWWWWWWWWRWWWWWWWWWWWWWWWWWWWWWWWWWWWWRWWWWWWWWWWWWWRWWWWWWWWWWWWRWRWY VMNEMONIC V INSTRUCTION ACTION V FLAGS V OPCODE V V V V V V TWWWWWWWWRWWWS V V V V VS Z H P/v N CV76543210VHEXVBVCV TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vshl r VC<-r{7} VU U 0 P 0 UV11001011VCB V2V2V Vshla Vr<-r*2 V V00100 r V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vshl [.hl] VC<-[.hl]{7} VU U 0 P 0 UV11001011VCB V2V5V Vshla V[.hl]<-[.hl]*2 V V00100110V26 V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vshl [,ix+d] VC<-[.ix+d]{7} VU U 0 P 0 UV11011101VDD V4V7V Vshla V[.ix+d]<-[.ix+d]*2 V V11001011VCB V V V V V V V<- d ->V V V V V V V V00100110V26 V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vshl [,iy+d] VC<-[.iy+d]{7} VU U 0 P 0 UV11111101VDD V4V7V Vshla V[.iy+d]<-[.iy+d]*2 V V11001011VCB V V V V V V V<- d ->V V V V V V V V00100110V26 V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vshr r VC<-r{0} VU U 0 P 0 UV11001011VCB V2V2V V Vr<-r/2 V V00111 r V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vshr [.hl] VC<-[.hl]{0} VU U 0 P 0 UV11001011VCB V2V5V V V[.hl]<-[.hl]/2 V V00111110V3E V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vshr [,ix+d] VC<-[.ix+d]{0} VU U 0 P 0 UV11011101VDD V4V7V V V[.ix+d]<-[.ix+d]/2 V V11001011VCB V V V V V V V<- d ->V V V V V V V V00111110V3E V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vshr [,iy+d] VC<-[.iy+d]{0} VU U 0 P 0 UV11111101VDD V4V7V V V[.iy+d]<-[.iy+d]/2 V V11001011VCB V V V V V V V<- d ->V V V V V V V V00111110V3E V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vshra r Vtmp<-r{7};C<-r{0} VU U 0 P 0 UV11001011VCB V2V2V V Vr<-r/2;r{7}<-tmp V V00101 r V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vshra [.hl] Vtmp<-[.hl]{7};C<-[.hl]{0} VU U 0 P 0 UV11001011VCB V2V2V V V[.hl]<-[.hl]/2;[.hl]{7}<-tmpV V00101110V2E V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vshra [.ix+d]Vtmp<-[.ix+d]{7} VU U 0 P 0 UV11011101VDD V4V7V V VC<-[.ix+d]{0} V V11001011VCB V V V V V[.ix+d]<-[.ix+d]/2 V V<- d ->V V V V V V[.ix+d]{7}<-tmp V V00101110V2E V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vshra [.iy+d]Vtmp<-[.iy+d]{7} VU U 0 P 0 UV11111101VFD V4V7V V VC<-[.iy+d]{0} V V11001011VCB V V V V V[.iy+d]<-[.iy+d]/2 V V<- d ->V V V V V V[.iy+d]{7}<-tmp V V00101110V2E V V V ZWWWWWWWWWWWWQWWWWWWWWWWWWWWWWWWWWWWWWWWWWQWWWWWWWWWWWWWQWWWWWWWWQWWWQWQW[ The shl instruction and the shla instruction are exectly the same and use the same operand. A.15 BRANCH INSTRUCTIONS XWWWWWWWWWWWWRWWWWWWWWWWWWWWWWWWWWWWWWWWWWRWWWWWWWWWWWWWRWWWWWWWWWWWWRWRWY VMNEMONIC V INSTRUCTION ACTION V FLAGS V OPCODE V V V V V V TWWWWWWWWRWWWS V V V V VS Z H P/v N CV76543210VHEXVBVCV TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vbr nn V.pc<-nn VG G G G G GV11000011VC3 V3V3V V V V V<-nnl ->V V V V V V V V<-nnh ->V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vbnz nn Vif z=0 VG G G G G GV11000010VC2 V3V3V V V.pc<-nn V V<-nnl ->V V V V V V V V<-nnh ->V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vbz nn Vif z=1 VG G G G G GV11001010VCA V3V3V V V.pc<-nn V V<-nnl ->V V V V V V V V<-nnh ->V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vbnc nn Vif c=0 VG G G G G GV11010010VD2 V3V3V V V.pc<-nn V V<-nnl ->V V V V V V V V<-nnh ->V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vbc nn Vif c=1 VG G G G G GV11011010VDA V3V3V V V.pc<-nn V V<-nnl ->V V V V V V V V<-nnh ->V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vbpo nn Vif P/v=0 VG G G G G GV11100010VE2 V3V3V V V.pc<-nn V V<-nnl ->V V V V V V V V<-nnh ->V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vbpe nn Vif P/v=1 VG G G G G GV11101010VEA V3V3V V V.pc<-nn V V<-nnl ->V V V V V V V V<-nnh ->V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vbp nn Vif s=0 VG G G G G GV11110010VF2 V3V3V V V.pc<-nn V V<-nnl ->V V V V V V V V<-nnh ->V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vbm nn Vif s=1 VG G G G G GV11111010VFA V3V3V V V V V<-nnl ->V V V V V V V V<-nnh ->V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vbr [.hl] V.pc<-.hl VG G G G G GV11101001VE9 V1V1V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vbr [.ix] V.pc<-.ix VG G G G G GV11011101VDD V2V2V V V V V11101001V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vbr [.iy] V.pc<-.iy VG G G G G GV11111101VFD V2V2V V V V V11101001V V V V ZWWWWWWWWWWWWQWWWWWWWWWWWWWWWWWWWWWWWWWWWWQWWWWWWWWWWWWWQWWWWWWWWQWWWQWQW[ <676 APPENDIX A R800 INSTRUCTION CHART> XWWWWWWWWWWWWRWWWWWWWWWWWWWWWWWWWWWWWWWWWWRWWWWWWWWWWWWWRWWWWWWWWWWWWRWRWY VMNEMONIC V INSTRUCTION ACTION V FLAGS V OPCODE V V V V V V TWWWWWWWWRWWWS V V V V VS Z H P/v N CV76543210VHEXVBVCV TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vshort V.pc<-.pc+e VG G G G G GV00011000V18 V2V3V Vbr e V V V<- e-2->V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vshort Vif z=0 VG G G G G GV00100000V20 V2V2V Vbnz e V.pc<-.pc+e V V<- e-2->V V V3V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vshort Vif z=1 VG G G G G GV00101000V28 V2V2V Vbz e V.pc<-.pc+e V V<- e-2->V V V3V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vshort Vif c=0 VG G G G G GV00110000V30 V2V2V Vbnc e V.pc<-.pc+e V V<- e-2->V V V3V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vshort Vif c=1 VG G G G G GV00111000V38 V2V2V Vbc e V.pc<-.pc+e V V<- e-2->V V V3V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vdbnz e V.b<-.b-1;if .b<>0 VG G G G G GV00010000V10 V2V2V V V.pc<-.pc+e V V<- e-2->V V V V ZWWWWWWWWWWWWQWWWWWWWWWWWWWWWWWWWWWWWWWWWWQWWWWWWWWWWWWWQWWWWWWWWQWWWQWQW[ A.16 CALL INSTRUCTIONS XWWWWWWWWWWWWRWWWWWWWWWWWWWWWWWWWWWWWWWWWWRWWWWWWWWWWWWWRWWWWWWWWWWWWRWRWY VMNEMONIC V INSTRUCTION ACTION V FLAGS V OPCODE V V V V V V TWWWWWWWWRWWWS V V V V VS Z H P/v N CV76543210VHEXVBVCV TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vcall nn V[.sp-2]<-.spl;[.sp-1]<-.sph VG G G G G GV11001101VCD V3V5V V V.sp<-.sp-2;.pc<-nn V V<-nnl ->V V V V V V V V<-nnh ->V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vcall nz,nn Vif z=0 VG G G G G GV11000100VC4 V3V3V V V[.sp-2]<-.pcl;[.sp-1]<-.pch V V<-nnl ->V V V5V V V.sp<-.sp-2;.pc<-nn V V<-nnh ->V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vcall z,nn Vif z=1 VG G G G G GV11001100VCC V3V3V V V[.sp-2]<-.pcl;[.sp-1]<-.pch V V<-nnl ->V V V5V V V.sp<-.sp-2;.pc<-nn V V<-nnh ->V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vcall nc,nn Vif c=0 VG G G G G GV11010100VD4 V3V3V V V[.sp-2]<-.pcl;[.sp-1]<-.pch V V<-nnl ->V V V5V V V.sp<-.sp-2;.pc<-nn V V<-nnh ->V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vcall c,nn Vif c=1 VG G G G G GV11011100VDC V3V3V V V[.sp-2]<-.pcl;[.sp-1]<-.pch V V<-nnl ->V V V5V V V.sp<-.sp-2;.pc<-nn V V<-nnh ->V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vcall po,nn Vif P/v=0 VG G G G G GV11100100VE4 V3V3V V V[.sp-2]<-.pcl;[.sp-1]<-.pch V V<-nnl ->V V V5V V V.sp<-.sp-2;.pc<-nn V V<-nnh ->V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vcall pe,nn Vif P/v=1 VG G G G G GV11101100VEC V3V3V V V[.sp-2]<-.pcl;[.sp-1]<-.pch V V<-nnl ->V V V5V V V.sp<-.sp-2;.pc<-nn V V<-nnh ->V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vcall p,nn Vif s=0 VG G G G G GV11110100VF4 V3V3V V V[.sp-2]<-.pcl;[.sp-1]<-.pch V V<-nnl ->V V V5V V V.sp<-.sp-2;.pc<-nn V V<-nnh ->V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vcall m,nn Vif s=1 VG G G G G GV11111100VFC V3V3V V V[.sp-2]<-.pcl;[.sp-1]<-.pch V V<-nnl ->V V V5V V V.sp<-.sp-2;.pc<-nn V V<-nnh ->V V V V ZWWWWWWWWWWWWQWWWWWWWWWWWWWWWWWWWWWWWWWWWWQWWWWWWWWWWWWWQWWWWWWWWQWWWQWQW[ A.17 INOUT/OUTPUT INSTRUCTIONS XWWWWWWWWWWWWRWWWWWWWWWWWWWWWWWWWWWWWWWWWWRWWWWWWWWWWWWWRWWWWWWWWWWWWRWRWY VMNEMONIC V INSTRUCTION ACTION V FLAGS V OPCODE V V V V V V TWWWWWWWWRWWWS V V V V VS Z H P/v N CV76543210VHEXVBVCV TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vin .a,[n] V.a<-[n] VG G G G G GV11011011VDB V2V3V V V V V<- n ->V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vin r,[.c] Vr<-[.c] VU U 0 P 0 GV11101101VED V2V3V V V V V01 r 000V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vin .f,[.c] V.f<-[.c] VU U 0 P 0 GV11101101VED V2V3V V V V V01110000V70 V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vin V[.hl]<-[.c];.b<-.b-1 V? U ? ? 1 GV11101101VED V2V4V V[.hl++],[.c]V.hl<-.hl+1 V *1 V10100010VA2 V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vin V[.hl]<-[.c];.b<-.b-1 V? U ? ? 1 GV11101101VED V2V4V V[.hl--],[.c]V.hl<-.hl-1 V *1 V10101010VAA V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vinm Vrepeat;[.hl]<-[.c];.b<-.b-1 V? 1 ? ? 1 GV11101101VED V2V4V V[.hl++],[.c]V.hl<-.hl+1;until .b=0 V V10110010VB2 V V3V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vinm Vrepeat;[.hl]<-[.c];.b<-.b-1 V? 1 ? ? 1 GV11101101VED V2V4V V[.hl--],[.c]V.hl<-.hl-1;until .b=0 V V10111010VBA V V3V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vout [n],.a V[n]<-.a VG G G G G GV11010011VD3 V2V3V V V V V<- n ->V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vout [.c],r V[.c]<-r VG G G G G GV11101101VED V2V3V V V V V01 r 001V V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vout V[.c]<-[.hl];.b<-.b-1 V? U ? ? 1 GV11101101VED V2V4V V[.c],[.hl++]V.hl<-.hl+1 V *1 V10100011VA3 V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vout V[.c]<-[.hl];.b<-.b-1 V? U ? ? 1 GV11101101VED V2V4V V[.c],[.hl--]V.hl<-.hl-1 V *1 V10101011VAB V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Voutm Vrepeat;[.c]<-[.hl];.b<-.b-1 V? 1 ? ? 1 GV11101101VED V2V4V V[.c],[.hl++]V.hl<-.hl+1;until .b=0 V V10110011VB3 V V3V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Voutm Vrepeat;[.c]<-[.hl];.b<-.b-1 V? 1 ? ? 1 GV11101101VED V2V4V V[.c],[.hl--]V.hl<-.hl-1;until .b=0 V V10111011VBB V V3V ZWWWWWWWWWWWWQWWWWWWWWWWWWWWWWWWWWWWWWWWWWQWWWWWWWWWWWWWQWWWWWWWWQWWWQWQW[ *1 als .b-1=0 it is set to 1 else it is 0 dependent of the external port which the .c register of in.f,[.c] desginates, flags will be changed. It doesn't matter where the external port is.(???) A.18 CPU CONTROL INSTRUCTIONS XWWWWWWWWWWWWRWWWWWWWWWWWWWWWWWWWWWWWWWWWWRWWWWWWWWWWWWWRWWWWWWWWWWWWRWRWY VMNEMONIC V INSTRUCTION ACTION V FLAGS V OPCODE V V V V V V TWWWWWWWWRWWWS V V V V VS Z H P/v N CV76543210VHEXVBVCV TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vadj .a Vadjust to decimal VU U U P G UV00100111V27 V1V1V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vnot .a V.a<-NOT .a VG G 1 G 1 GV00101111V2F V1V1V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vneg .a V.a<-NOT .a+1 VU U U V 1 UV11101101VED V2V2V V V V V01000100V44 V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vnot c VC<-NOT C VG G ? G 0 UV00111111V3F V1V1V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vset c VC<-1 VG G 0 G 0 1V00110111V37 V1V1V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vnop VNO operation VG G G G G GV00000000V00 V1V1V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vhalt VHALT VG G G G G GV01110110V76 V1V2V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vdi VIFF<-0 VG G G G G GV11110011VF3 V1V2V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vei VIFF<-1 VG G G G G GV11111011VFB V1V1V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vim 0 Vinterrupt mode 0 VG G G G G GV11101101VED V2V3V V V V V01000110V46 V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vim 1 Vinterrupt mode 1 VG G G G G GV11101101VED V2V3V V V V V01010110V56 V V V TWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWUWWWUWUWS Vim 2 Vinterrupt mode 2 VG G G G G GV11101101VED V2V3V V V V V01011110V5E V V V ZWWWWWWWWWWWWQWWWWWWWWWWWWWWWWWWWWWWWWWWWWQWWWWWWWWWWWWWQWWWWWWWWQWWWQWQW[ <680 > <681 > WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW B R800 MULTIPLICATION MACRO WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW B.1 MULTIPLICATION INSTRUCTIONS OF THE R800 The following multiplication instructions are available. B.1.1 8 bit MULTIPLICATIONS Two of the same kind 8 bit registers are filled and the result appears in register HL. The multiplication is performed with an instruction. The instruction are shown below. WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW operation instruction clock cycles WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW HL<-A*B ED C1 14 HL<-A*C ED C9 14 HL<-A*D ED D1 14 HL<-A*E ED D9 14 WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW B.1.2 16 bit MULTIPLICATIONS Two of the same kind 16 bit registers are filled and the result appears in registers DE:HL. The multiplication is performed with an instruction. The instruction are shown below. WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW operation instruction clock cycles WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW DE:HL<-HL*BC ED C3 36 DE:HL<-HL*SP ED F3 36 WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW <682 APPENDIX A R800 INSTRCUCTION CHART> B.2 MULTIPLICATION MACRO FOR M80 When using multiplications in M80, this macro can be used. mult8 macro reg ifidn , defb 0edh,0c1h else ifidn , defb 0edh,0c1h else ifidn , defb 0edh,0c9h else ifidn , defb 0edh,0c9h else ifidn , defb 0edh,0d1h else ifidn , defb 0edh,0d1h else ifidn , defb 0edh,0d9h else ifidn , defb 0edh,0d9h else if1 .printx *MULT8: illegal argument* defb 00h,00h err endif endif endif endif endif endif endif endif endif endm mult16 macro reg ifidn , defb 0edh, 0c3h else ifidn , defb 0edh,0c3h else ifidn , defb 0edh, 0f3h else ifidn , defb 0edh,0f3h else if1 .printx *MULT16: illegal argument* defb 00h, 00h err end if end if end if end if end if endm <684 > < 685>