Listing of file='TUTE3.BAS;01' on disk='vmedia/asmtut_disk1-sector.ccvf'
100 REM 8080 SOFTWARE FACE TUTE3 22/8/81 110 GOTO 200:REM 142 W/O MENU 120 Z= CALL (0):PLOT 3,0,31,11:RETURN 130 PLOT 3,62,31:POKE KB,0:Z= CALL (18) 131 IF PEEK (KB)= 0THEN 131 132 GOSUB 120:PRINT "/":GOTO 120 133 GOSUB 120:GOTO 120 140 FOR I= 1TO 1000:NEXT :RETURN 141 PLOT 6,2,3,0,31:RETURN 142 POKE 32941,191:POKE 32940,172:CLEAR 100:PLOT 27,4:PRINT "LOA SCROLL.PRG":PLOT 27,27 144 POKE 33283,173:POKE 33284,191 200 BL$= " ":KB= 33278:DU= 49113:POKE DU,255:SC= 28672 210 PLOT 6,2,15,12,27,24,27,4:PRINT "LOA ARCH.DSP":PLOT 27,27 220 FOR I= 20TO 12STEP - 2:Z= CALL (I):NEXT 240 PLOT 3,0,25:PRINT "IN THIS TUTORIAL WE WILL LOOK AT THE 8080A MICROPROCESSOR 250 PRINT "WHICH IS THE CENTRAL PROCESSING UNIT (CPU) USED IN THE CCII.":PRINT 260 AD= SC+ 113:AE= AD+ 8:FOR I= ADTO AESTEP 2:POKE I,70:NEXT 270 Z= CALL (18):INPUT "THROUGHOUT, ADVANCE THE TEXT BY PRESSING RETURN ";Z:PLOT 28,11 280 FOR I= ADTO AESTEP 2:POKE I,24:NEXT 290 PRINT "THE 8080 HAS QUITE A COMPREHENSIVE INSTRUCTION SET WHICH 300 PRINT "CONSISTS OF 78 BASIC INSTRUCTIONS. 310 PRINT "WHEN THE POSSIBLE PERMUTATIONS ARE CONSIDERED, THE TOTAL 320 PRINT "COMES TO 244 INSTRUCTIONS.":GOSUB 130 330 PRINT "THE INSTRUCTION SET ALLOWS THE PROGRAMMER TO DIRECT THE":GOSUB 120 340 PRINT "OPERATION OF THE CPU TO TRANSFER AND PERFORM MATHEMATICAL":GOSUB 120 350 PRINT "AND LOGICAL OPERATIONS ON THE DATA STORED IN THE VARIOUS":GOSUB 120 360 PRINT "MEMORY AND REGISTER ELEMENTS THAT MAKE UP THE COMPUTER.":GOSUB 130 370 PRINT "THESE SOFTWARE RELATED ELEMENTS ARE:-":GOSUB 120 380 AD= SC+ 13* 128+ 1:AE= AD+ 5* 128:FOR I= ADTO AESTEP 128:POKE I,70:NEXT 390 PRINT "THE MEMORY":GOSUB 130 400 FOR I= ADTO AESTEP 128:POKE I,48:NEXT :AD= SC+ 6* 128+ 125:POKE AD,90:POKE AD+ 2,90 410 PRINT "THE PROGRAM COUNTER (PC)":GOSUB 130 420 POKE AD,24:POKE AD+ 2,24:AD= SC+ 256+ 37:POKE AD,90 430 PRINT "THE ACCUMULATOR REGISTER (A)":GOSUB 130 440 POKE AD,24:AD= AD+ 256:AE= AD+ 512:FOR I= ADTO AESTEP 256:POKE I,90:POKE I+ 42,90:NEXT 450 PRINT "SIX GENERAL PURPOSE REGISTERS (B,C,D,E,H,L)":GOSUB 130 460 FOR I= ADTO AESTEP 256:POKE I,24:POKE I+ 42,24:NEXT :AD= SC+ 637:POKE AD,90:POKE AD+ 2,90 470 PRINT "THE STACK POINTER REGISTER (SP)":GOSUB 130 480 POKE AD,24:POKE AD+ 2,24:PLOT 6,122,3,45,12:PRINT "#":PLOT 3,60,12:PRINT "#":GOSUB 141 490 PRINT "AND THE INPUT & OUTPUT PORTS.":GOSUB 130 500 PLOT 6,56,3,45,12:PRINT " ":PLOT 3,60,12:PRINT " ":GOSUB 141 510 AD= SC+ 128+ 61:POKE AD,90:POKE AD+ 2,90:POKE AD+ 6,90:POKE AD+ 10,90:POKE AD+ 14,90 520 PRINT "AS THE INSTRUCTIONS ARE EXECUTED BY THE CPU, THE RESULTS OF":GOSUB 120 530 PRINT "CERTAIN OPERATIONS ARE MONITORED AND INDICATED BY THE":GOSUB 120 540 PRINT "CPU STATUS FLAGS.":GOSUB 130 550 POKE AD,24:POKE AD+ 2,24:POKE AD+ 6,24:POKE AD+ 10,24:POKE AD+ 14,24 560 AD= SC+ 13* 128+ 1:AE= AD+ 5* 128:FOR I= ADTO AESTEP 128:POKE I,70:NEXT 570 PRINT "THE MEMORY IS THE PROGRAM STORAGE ELEMENT FOR THE CPU.":GOSUB 120 580 PRINT "WHEN A PROGRAM IS TO BE EXECUTED, IT'S INSTRUCTIONS MUST FIRST":GOSUB 120 590 PRINT "BE STORED IN THE PROPER LOCATIONS IN MEMORY.":GOSUB 120 600 PRINT "THE MEMORY IS ALSO USED TO STORE DATA WHICH THE PROGRAM WILL":GOSUB 120 610 PRINT "REQUIRE DURING IT'S EXECUTION.":GOSUB 120 620 PRINT "FOR THE 8080, UP TO 65536 EIGHT BIT BYTES OF MEMORY CAN BE":GOSUB 120 630 PRINT "DIRECTLY ACCESSED BY THE CPU (USING 16-BIT ADDRESSING).":GOSUB 130 640 FOR I= ADTO AESTEP 128:POKE I,48:NEXT 650 PRINT "THERE ARE TWO INTERFACES WITH MEMORY PROVIDED:-":GOSUB 120 660 PRINT "1. THE DATA BUS LATCH WHICH CONNECTS WITH AN EIGHT BIT":GOSUB 120 670 PRINT "BIDIRECTIONAL DATA BUS ALLOWING DATA IN OR OUT":GOSUB 120 680 PRINT "EIGHT BITS AT A TIME.":GOSUB 120 690 AD= SC+ 9* 128+ 3:AE= AD+ 26:FOR I= ADTO AESTEP 2:POKE I,70:NEXT 700 GOSUB 130 710 FOR I= ADTO AESTEP 2:POKE I,6:NEXT 720 PRINT "2. THE ADDRESS BUS LATCH WHICH CONNECTS TO THE SIXTEEN BIT":GOSUB 120 730 PRINT "ADDRESS BUS ALLOWING THE PROCESSOR TO DIRECTLY ADDRESS":GOSUB 120 740 PRINT "MEMORY.":GOSUB 120 750 AD= AD+ 88:AE= AD+ 28:FOR I= ADTO AESTEP 2:POKE I,70:NEXT 760 GOSUB 130:FOR I= ADTO AESTEP 2:POKE I,6:NEXT 770 PLOT 6,6,3,45,6:PRINT "0011010111001001":GOSUB 141 780 PRINT "THE PROGRAM COUNTER IS A SIXTEEN BIT REGISTER USED TO CONTROL":GOSUB 120 790 PRINT "THE FLOW OF THE PROGRAM FROM ONE INSTRUCTION TO THE NEXT.":GOSUB 120 800 PRINT "WHEN A PROGRAM IS STARTED, THE PC IS SET TO THE ADDRESS IN":GOSUB 120 810 PRINT "MEMORY OF THE FIRST INSTRUCTION TO BE EXECUTED.":GOSUB 120 820 PRINT "UNLESS DIRECTED OTHERWISE BY THE INSTRUCTION JUST EXECUTED,":GOSUB 120 830 PRINT "THE PC WILL AUTOMATICALLY INCREMENT TO THE ADDRESS OF THE NEXT":GOSUB 120 840 PRINT "INSTRUCTION IN SEQUENCE AND EXECUTE IT.":GOSUB 120 850 PRINT "PRESS ENTER TO OBSERVE THE PC ABOVE INCREMENTING.":GOSUB 130 860 GOSUB 140:PLOT 6,2,3,58,6:PRINT "010" 870 GOSUB 140:PLOT 3,58,6:PRINT "011" 880 GOSUB 140:PLOT 3,58,6:PRINT "100" 890 GOSUB 140:PLOT 3,58,6:PRINT "101" 900 GOSUB 140:PLOT 3,58,6:PRINT "110" 910 GOSUB 140:PLOT 6,6,3,58,6:PRINT "111":GOSUB 141:GOSUB 130 930 PRINT "WHEN AN INSTRUCTION IS EXECUTED THAT DIRECTS THE PROGRAM TO":GOSUB 120 940 PRINT "AN ADDRESS OTHER THAN THE NEXT SEQUENTIAL INSTRUCTION, THE":GOSUB 120 950 PRINT "NEW ADDRESS IS PLACED IN THE PC AND PROGRAM EXECUTION IS":GOSUB 120 960 PRINT "CONTINUED WITH THE INSTRUCTION AT THE NEW ADDRESS.":GOSUB 120 970 PLOT 6,6,3,45,6:PRINT "0001011111101000":GOSUB 141:GOSUB 130 990 PLOT 3,45,6:PRINT BL$BL$:GOSUB 141 1000 PRINT "WE WILL NOW LOOK IN DETAIL AT THE WORK REGISTERS":GOSUB 120 1010 PRINT "A,B,C,D,E,H & L.":GOSUB 130 1020 AD= SC+ 8* 128+ 37:AE= AD+ 42:POKE AD,90:POKE AE,90 1030 PRINT "TWO OF THESE, H & L, ARE USED AS THE PRIMARY MEMORY POINTER":GOSUB 120 1040 PRINT "FOR THE MAJORITY OF THE MEMORY REFERENCE INSTRUCTIONS.":GOSUB 120 1050 PRINT "H FOR THE HIGH PORTION OF THE MEMORY ADDRESS AND":GOSUB 120 1060 PRINT "L FOR THE LOW PORTION.":GOSUB 120 1070 PRINT "ASIDE FROM THEIR SPECIAL FUNCTION AS THE MEMORY POINTER, THE":GOSUB 120 1080 PRINT "H & L REGISTERS EXHIBIT THE SAME CHARACTERISTICS AS THE OTHER":GOSUB 120 1090 PRINT "FOUR GENERAL REGISTERS (B,C,D, AND E).":GOSUB 130 1100 POKE AD,24:POKE AE,24:AD= SC+ 256+ 37:POKE AD,90 1110 PLOT 6,6,3,20,2:PRINT "01001100":GOSUB 141 1120 PRINT "THE ACCUMULATOR IS AN EIGHT BIT REGISTER.":GOSUB 120 1130 PRINT "IT IS THE WORK-HORSE OF THE 8080 IN THAT ALL MAJOR":GOSUB 120 1140 PRINT "MATHEMATICAL AND LOGICAL FUNCTIONS CAN ONLY BE PERFORMED":GOSUB 120 1150 PRINT "IN THE ACCUMULATOR.":GOSUB 120 1160 PRINT "A ALSO PERFORMS ALL THE FUNCTIONS OF THE SIX INDIVIDUAL":GOSUB 120 1170 PRINT "REGISTERS.":GOSUB 120 1180 PRINT "IT IS, HOWEVER, THE ONLY REGISTER USED TO TRANSFER DATA BETWEEN":GOSUB 120 1190 PRINT "THE COMPUTER AND AN EXTERNAL DEVICE VIA THE INPUT/OUTPUT PORTS":GOSUB 130 1200 POKE AD,24:PLOT 3,20,2:PRINT BL$:GOSUB 141 1210 PRINT "THE SIX GENERAL REGISTERS ARE, LIKE A, 8 BITS IN LENGTH.":GOSUB 120 1220 PRINT "THEY ARE USED INDIVIDUALLY TO STORE DATA, TRANSFER DATA AMONG":GOSUB 120 1230 PRINT "THEMSELVES OR WITH A AND MEMORY, AND CAN PERFORM CERTAIN":GOSUB 120 1240 PRINT "OTHER OPERATIONS, SUCH AS INCREMENT AND DECREMENT THEIR":GOSUB 120 1250 PRINT "CONTENTS.":GOSUB 130 1260 PRINT "SOME INSTRUCTIONS REFERENCE A PAIR OF REGISTERS THUS:":GOSUB 120 1270 DATA 339,341,343,597,853,1107,1109,1111 1280 RESTORE 1270:FOR I= 1TO 8:READ Z:Z= Z+ SC:POKE Z,90:NEXT 1290 PRINT " B REFERS TO B AND C":GOSUB 120 1300 PRINT " D REFERS TO D AND E":GOSUB 120 1310 PRINT " H REFERS TO H AND L":GOSUB 120 1320 PRINT " M REFERS TO THE CONTENTS OF THE BYTE ADDRESSED BY H":GOSUB 120 1330 PRINT "PSW REFERS TO A AND THE CONDITION FLAGS (SEE LATER)":GOSUB 130 1340 PRINT "WHEN USED AS MEMORY POINTERS,":GOSUB 120 1345 PRINT "REGISTERS B,D, & H HOLD THE HI BYTE OF THE ADDRESS,":GOSUB 120 1350 PRINT "REGISTERS C,E, & L HOLD THE LO BYTE OF THE ADDRESS.":GOSUB 130 1360 RESTORE 1270:FOR I= 1TO 8:READ Z:Z= Z+ SC:POKE Z,24:NEXT 1370 PRINT "THE SYMBOLIC REFERENCE FOR A SINGLE REGISTER IS OFTEN THE":GOSUB 120 1380 PRINT "SAME AS FOR A REGISTER PAIR.":GOSUB 120 1390 PRINT "THE INSTRUCTION TO BE EXECUTED DETERMINES HOW THE PROCESSOR":GOSUB 120 1400 PRINT "INTERPRETS THE REFERENCE.":GOSUB 130 1410 PRINT "FOR EXAMPLE, ADD B IS AN 8-BIT OPERATION. BY CONTRAST":GOSUB 120 1420 PRINT "PUSH B (WHICH PUSHES THE CONTENTS OF THE B AND C REGISTERS":GOSUB 120 1430 PRINT "ONTO THE STACK) IS A 16-BIT OPERATION.":GOSUB 130 1440 PRINT "NOTICE THAT THE LETTERS H AND M BOTH REFER TO THE HL REGISTER":GOSUB 120 1450 PRINT "PAIR. THE CHOICE OF WHICH TO USE DEPENDS ON THE INSTRUCTION.":GOSUB 130 1460 PRINT "USE H WHEN AN INSTRUCTION ACTS UPON THE HL REGISTER PAIR AS IN":GOSUB 120 1470 PRINT "INX H (INCREMENT THE CONTENTS OF HL BY ONE).":GOSUB 130 1480 PRINT "USE M WHEN AN INSTRUCTION ADDRESSES MEMORY VIA THE HL REGISTER":GOSUB 120 1490 PRINT "PAIR AS IN ADD M (ADD THE CONTENTS OF THE MEMORY LOCATION":GOSUB 120 1500 PRINT "SPECIFIED BY HL REGISTER AND THEN THE ACCUMULATOR).":GOSUB 130 1510 PRINT "BECAUSE OF THE 8080'S EXTENSIVE INSTRUCTION SET, IT IS USUALLY":GOSUB 120 1520 PRINT "POSSSIBLE TO ACHIEVE A COMMON RESULT WITH ANY OF SEVERAL":GOSUB 120 1530 PRINT "DIFFERENT INSTRUCTIONS.":GOSUB 130 1540 PRINT "WHEN POSSIBLE, IT IS GENERALLY DESIREABLE TO SELECT A":GOSUB 120 1550 PRINT "REGISTER TO REGISTER INSTRUCTION SUCH AS ADD B.":GOSUB 120 1560 PRINT "THESE INSTRUCTIONS TYPICALLY REQUIRE ONLY ONE BYTE OF PROGRAM":GOSUB 120 1570 PRINT "STORAGE.":GOSUB 130 1580 PRINT "ALSO, USING DATA ALREADY PRESENT IN A REGISTER ELIMINATES":GOSUB 120 1590 PRINT "A MEMORY ACCESS AND THUS REDUCES THE TIME REQUIRED FOR":GOSUB 120 1600 PRINT "THE OPERATION.":GOSUB 130 1610 PRINT "THE 8080 PROVIDES FIVE FLIP FLOPS USED AS CONDITION FLAGS.":GOSUB 120 1620 PRINT "CERTAIN ARITHMETIC AND LOGICAL INSTRUCTIONS ALTER ONE OR MORE":GOSUB 120 1630 PRINT "OF THESE FLAGS TO INDICATE THE RESULT OF AN OPERATION.":GOSUB 130 1640 AD= SC+ 2* 128+ 61:AE= AD+ 14:FOR I= ADTO AESTEP 2:POKE I,6:NEXT 1650 PRINT "YOUR PROGRAM CAN TEST THE SETTING OF FOUR OF THESE FLAGS :-":GOSUB 120 1660 PRINT "CARRY, SIGN, ZERO, AND PARITY -":GOSUB 120 1670 AD= SC+ 128+ 61:POKE AD,90:POKE AD+ 2,90:POKE AD+ 10,90:POKE AD+ 14,90 1680 PRINT "WITH ONE OF THE CONDITIONAL JUMP, CALL, OR RETURN INSTRUCTIONS.":GOSUB 120 1690 PRINT "THIS ALLOWS YOU TO ALTER THE FLOW OF PROGRAM EXECUTION BASED":GOSUB 120 1700 PRINT "ON THE OUTCOME OF A PREVIOUS OPERATION.":GOSUB 130 1710 POKE AD,24:POKE AD+ 2,24:POKE AD+ 10,24:POKE AD+ 14,24:POKE AD+ 6,90 1720 PRINT "THE FIFTH FLAG, AUXILIARY CARRY, IS RESERVED FOR USE OF THE":GOSUB 120 1730 PRINT "DAA INSTRUCTION (EXPLAINED LATER).":GOSUB 130 1740 POKE AD+ 6,24 1750 PRINT "IT IS IMPORTANT FOR THE PROGRAMMER TO KNOW WHICH FLAGS ARE":GOSUB 120 1760 PRINT "SET BY A PARTICULAR INSTRUCTION. LOADING A BY MEANS OF THE":GOSUB 120 1770 PRINT "IN INSTRUCTION DOES NOT AFFECT ANY FLAGS AND IN ORDER TO":GOSUB 120 1780 PRINT "TEST THE LOADED BYTE FOR PARITY OR ZERO FOR EXAMPLE, YOU MAY":GOSUB 120 1790 PRINT "AND A WITH ITSELF (ANA A) WHICH WILL SET THOSE FLAGS":GOSUB 120 1800 PRINT "AND NOT ALTER A.":GOSUB 130 1810 PRINT "IN OTHER CASES, YOU WILL WANT TO SET A FLAG WITH AN INSTRUCTION":GOSUB 120 1820 PRINT "BUT THEN HAVE A NUMBER OF INTERVENING INSTRUCTIONS BEFORE YOU":GOSUB 120 1830 PRINT "USE IT. IN THESE CASES, YOU MUST BE CERTAIN THAT THE":GOSUB 120 1840 PRINT "INTERVENING INSTRUCTIONS DO NOT AFFECT THE DESIRED FLAG.":GOSUB 130 1850 PRINT "CONDITION FLAGS:":GOSUB 130 1860 PRINT "NOTE THAT:-":GOSUB 120 1870 PRINT "WHEN A FLAG IS SET IT IS SET ON (VALUE 1)":GOSUB 120 1880 PRINT "WHEN A FLAG IS RESET IT IS RESET OFF (VALUE 0)":GOSUB 130 1890 PRINT "CARRY:":GOSUB 120:POKE AD+ 14,90:GOSUB 140 1900 PRINT "AS IT'S NAME IMPLIES, THE CARRY FLAG IS COMMONLY USED TO":GOSUB 120 1910 PRINT "INDICATE WHETHER AN ADDITION CAUSES A 'CARRY' INTO THE NEXT":GOSUB 120 1920 PRINT "HIGHER ORDER DIGIT. THE CARRY FLAG IS ALSO USED AS A 'BORROW'":GOSUB 120 1930 PRINT "FLAG IN SUBTRACTIONS.":GOSUB 120 1940 GOSUB 130 1950 PRINT "THE CARRY FLAG IS ALSO AFFECTED BY THE LOGICAL AND,OR":GOSUB 120 1960 PRINT "AND EXCLUSIVE OR INSTRUCTIONS.":GOSUB 120 1970 PRINT "THESE INSTRUCTIONS SET ON OR OFF PARTICULAR BITS OF THE":GOSUB 120 1980 PRINT "ACCUMULATOR.":GOSUB 120 1990 GOSUB 130 2000 PRINT "THE ROTATE INSTRUCTIONS, WHICH MOVE THE CONTENTS OF A ONE":GOSUB 120 2010 PRINT "POSITION TO THE LEFT OR RIGHT, TREAT THE CARRY BIT AS IF IT":GOSUB 120 2020 PRINT "WERE A NINTH BIT OF A.":GOSUB 120 2030 GOSUB 130 2040 PLOT 3,20,2,6,70:PRINT "0":GOSUB 141 2050 PRINT "SIGN:":GOSUB 120:POKE AD+ 14,24:POKE AD,90:GOSUB 140 2060 PRINT "IN ORDER TO USE BOTH POSITIVE AND NEGATIVE NUMBERS, BIT 7":GOSUB 120 2070 PRINT "OF A, THE MOST SIGNIFICANT BIT, MAY BE INTERPRETED AS A SIGN.":GOSUB 120 2080 PRINT "THIS IS KNOWN AS 'TWO'S COMPLEMENT REPRESENTATION OF DATA'.":GOSUB 120 2090 PRINT "INSTRUCTIONS THAT AFFECT THE SIGN FLAG SET THE FLAG EQUAL TO":GOSUB 120 2100 PRINT "BIT 7.":GOSUB 130 2110 PRINT "A ZERO IN BIT 7 INDICATES A NEGATIVE VALUE. THIS VALUE IS":GOSUB 120 2120 PRINT "DUPLICATED IN THE SIGN FLAG SO THAT CONDITIONAL JUMP, CALL":GOSUB 120 2130 PRINT "AND RETURN INSTRUCTIONS CAN TEST FOR +VE AND -VE VALUES.":GOSUB 130 2140 PLOT 3,20,2:PRINT BL$:GOSUB 141 2150 PRINT "ZERO:":GOSUB 120:POKE AD,24:POKE AD+ 2,90:GOSUB 140 2160 PRINT "CERTAIN INSTRUCTIONS SET THE ZERO FLAG TO 1 TO INDICATE":GOSUB 120 2170 PRINT "THAT THE RESULT IN A CONTAINS ALL 0'S.":GOSUB 120 2180 PRINT "THESE INSTRUCTIONS RESET THE FLAG TO 0 IF THE RESULT IN A":GOSUB 120 2190 PRINT "IS OTHER THAN ZER0.":GOSUB 120 2200 PRINT "A RESULT THAT HAS A CARRY AND A ZERO RESULT ALSO SETS Z.":GOSUB 130 2210 PRINT "PARITY:":GOSUB 120:POKE AD+ 2,24:POKE AD+ 10,90:GOSUB 140 2220 PRINT "PARITY, YOU WILL RECALL, IS DETERMINED BY COUNTING THE NUMBER":GOSUB 120 2230 PRINT "OF 1 BITS SET IN THE RESULT IN A. INSTRUCTIONS THAT AFFECT":GOSUB 120 2240 PRINT "THE PARITY FLAG SET THE FLAG TO 1 FOR EVEN PARITY AND RESET":GOSUB 120 2250 PRINT "THE FLAG TO 0 TO INDICATE ODD PARITY.":GOSUB 130 2260 PRINT "AUXILIARY CARRY:":GOSUB 120:POKE AD+ 10,24:POKE AD+ 6,90:GOSUB 140 2270 PRINT "THE AUXILIARY CARRY FLAG INDICATES A CARRY OUT OF BIT 3":GOSUB 120 2280 PRINT "OF A. YOU CANNOT TEST THIS FLAG DIRECTLY IN YOUR PROGRAM; IT":GOSUB 120 2290 PRINT "IS PRESENT TO ENABLE THE DAA (DECIMAL ADJUST ACCUMULATOR)":GOSUB 120 2300 PRINT "INSTRUCTION TO PERFORM IT'S FUNCTION.":GOSUB 130 2310 POKE AD+ 6,24 2330 AD= SC+ 512+ 125:POKE AD,90:POKE AD+ 2,90 2340 PRINT "STACK POINTER:":GOSUB 120 2350 PRINT "THERE IS A SPECIAL MEMORY POINTER REGISTER INCLUDED IN THE":GOSUB 120 2360 PRINT "8080 WHICH IS USED TO DESIGNATE A SECTION OF MEMORY FOR":GOSUB 120 2370 PRINT "STORING THE RETURN ADDRESSES OF SUBROUTINES AND FOR TEMPORARY":GOSUB 120 2380 PRINT "STORAGE OF REGISTER CONTENTS.":GOSUB 120 2390 PRINT "THIS POINTER IS THE STACK POINTER (SP).":GOSUB 130 2400 POKE AD,24:POKE AD+ 2,24:PLOT 6,6,3,45,4:PRINT "1110100100011001":GOSUB 141 2410 PRINT "THE SP IS A SIXTEEN BIT REGISTER THAT MAY POINT TO ANY":GOSUB 120 2420 PRINT "LOCATION IN MEMORY THAT IS TO BE USED FOR THE PROGRAM STACK.":GOSUB 130 2430 PRINT "THE STACK REFERS TO THE SECTION IN MEMORY IN WHICH THE":GOSUB 120 2440 PRINT "SUBROUTINE RETURN ADDRESSES ARE AUTOMATICALLY STORED BY THE":GOSUB 120 2450 PRINT "CPU AND WHERE REGISTER CONTENTS ARE STORED AS DIRECTED BY":GOSUB 120 2460 PRINT "THE PROGRAM.":GOSUB 130 2470 PLOT 3,45,4:PRINT BL$BL$:PLOT 6,122,3,45,12:PRINT "#":PLOT 3,60,12:PRINT "#":GOSUB 141 2480 PRINT "PORTS:":GOSUB 120 2490 PRINT "A MAJOR FUNCTION OF ALMOST EVERY PROGRAM IS TO RECEIVE OR":GOSUB 120 2500 PRINT "TRANSMIT DATA BETWEEN THE COMPUTER AND ONE OR MORE PERIPHERAL":GOSUB 120 2510 PRINT "DEVICES.":GOSUB 120 2520 PRINT "WITH THE 8080, THIS IS ACCOMPLISHED WITH THE USE OF INPUT":GOSUB 120 2530 PRINT "AND OUTPUT PORTS.":GOSUB 130 2540 PRINT "THERE CAN BE UP TO 256 (00-FFH) INPUT/OUTPUT PORTS IN AN":GOSUB 120 2550 PRINT "8080 SYSTEM. EACH INPUT/OUTPUT PORT PROVIDES EIGHT PARALLEL":GOSUB 120 2560 PRINT "DATA LINES FOR THIS COMMUNICATION.":GOSUB 130 2570 PRINT "TYPICAL PERIPHERALS COMMUNICATED WITH VIA PORTS ARE:":GOSUB 120 2580 PRINT "KEYBOARD, DISK, PRINTER, AND MODEMS.":GOSUB 120 2590 PRINT "THE SCREEN IN THE CCII HOWEVER REFLECTS THE STATUS OF":GOSUB 120 2600 PRINT "PART OF MEMORY AND IS NOT ADDRESSED VIA PORTS.":GOSUB 130 2610 PRINT "THE ACCUMULATOR ACTS AS THE GATE FOR THE I/O FUNCTIONS, SINCE":GOSUB 120 2620 PRINT "ALL DATA FROM AN INPUT PORT IS RECEIVED IN A, AND ALL DATA":GOSUB 120 2630 PRINT "TO BE OUTPUT TO AN OUTPUT PORT MUST BE LOADED INTO A BEFORE":GOSUB 120 2640 PRINT "OUTPUT OCCURS.":GOSUB 130 2650 PLOT 6,56,3,45,12:PRINT " ":PLOT 3,60,12:PRINT " " 2660 PLOT 6,70,3,2,1:PRINT "INSTRUCTION":PLOT 3,4,2:PRINT "DECODER":GOSUB 141 2670 PRINT "INSTRUCTION DECODER:":GOSUB 120 2680 PRINT "WHEN THE CPU IS READY TO IMPLEMENT THE NEXT INSTRUCTION":GOSUB 120 2690 PRINT "IT INITIATES THE INSTRUCTION FETCH BY LATCHING THE CONTENTS":GOSUB 120 2700 PRINT "OF THE PC ON THE ADDRESS BUS, AND THEN INCREMENTS THE PC BY":GOSUB 120 2710 PRINT "ONE TO INDICATE THE ADDRESS OF THE NEXT INSTRUCTION BYTE.":GOSUB 120 2720 PRINT "WHEN THE MEMORY RESPONDS, THE INSTRUCTION IS LATCHED OFF THE":GOSUB 120 2730 PRINT "DATA BUS INTO THE INSTRUCTION DECODER.":GOSUB 130 2740 PLOT 6,34,3,2,4:PRINT "00101101":PLOT 3,12,4:PRINT "2D" 2750 PLOT 6,2,3,2,7:PRINT "DCR L":GOSUB 141 2760 PRINT "ALTHOUGH THE DECODER IS WORKING ON A STRING OF 8 BINARY BITS,":GOSUB 120 2770 PRINT "WE MORE OFTEN WRITE IT AS ITS HEX EQUIVALENT OR IN MNEMONIC":GOSUB 120 2780 PRINT "FORM.":GOSUB 120 2790 PRINT "THIS IS GRAPHICALLY ILLUSTRATED ABOVE.":GOSUB 130 2800 PLOT 6,6,3,2,1:PRINT "INSTRUCTION":PLOT 3,4,2:PRINT "DECODER" 2810 PLOT 6,32,3,2,4:PRINT BL$:PLOT 3,12,4:PRINT " ":PLOT 6,2,3,2,7:PRINT BL$:GOSUB 141 2820 PRINT "IN THE FOURTH TUTORIAL (ON DISK #2) WE WILL LOOK AT HOW THE":GOSUB 120 2830 PRINT "M/C INSTRUCTIONS AFFECT REGISTERS, FLAGS, MEMORY, AND PORTS.":GOSUB 130 2840 GOSUB 3010:GOSUB 120 2850 INPUT "BACK TO MENU FOR TUTES 1-3 OR TERMINATE? ";YN$:GOSUB 3000:PLOT 12 2860 IF YN$= "B"THEN PLOT 1 2870 PLOT 6,2,27,11:END 3000 FOR I= 24TO 8STEP - 2:Z= CALL (I):NEXT 3010 FOR I= 8TO 24STEP 2:Z= CALL (I):NEXT :RETURN