Compucolor.org – Virtual Media

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