Listing of file='TUTE4D.BAS;01' on disk='vmedia/asmtut_disk2-sector.ccvf'
100 REM INPUT/OUTPUT TUTE4D 22/8/81 110 GOTO 146: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 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 146 BL$= " ":KB= 33278:DU= 49113:POKE DU,255:SC= 28672 148 PLOT 6,2,15,12,27,24,27,4:PRINT "LOA ARCH.DSP":PLOT 27,27 150 A$= "11110101":F$= "10 0 1 0":B$= "EC":C$= "05":D$= "2B":E$= "C2":H$= "AB":L$= "29" 152 GOSUB 5000:GOSUB 5100:GOSUB 5200:GOSUB 5300:GOSUB 5400:GOSUB 5500:GOSUB 5600:GOSUB 5700 154 PLOT 3,45,4:PRINT BL$BL$:PLOT 3,45,6:PRINT BL$BL$:SP$= "BE 02":PC$= "AF 19" 156 GOSUB 5800:GOSUB 5900:PLOT 3,1,9:PRINT BL$" ":PLOT 3,45,9:PRINT BL$BL$:GOSUB 6300:GOSUB 133 158 FOR I= 20TO 12STEP - 2:Z= CALL (I):NEXT 160 PRINT "IN THIS TUTORIAL WE WILL COMMENCE BY LOOKING AT THE":GOSUB 120 162 PRINT "INPUT AND OUTPUT PORTS.":GOSUB 130:GOTO 230 200 BL$= " ":KB= 33278:DU= 49113:POKE DU,255:SC= 28672 210 PLOT 27,4:PRINT "LOA MEM.DSP":PLOT 27,27 220 PLOT 6,24,3,23,10:PRINT BL$BL$:PLOT 6,2,3,0,11,11:GOSUB 6300 230 PRINT "WE WILL NOW LOOK AT TWO VERY SIMPLE INSTRUCTIONS THAT GIVE":GOSUB 120 240 PRINT "THE CPU ACCESS TO AREAS OTHER THAN MEMORY.":GOSUB 120 250 PRINT "THEY ARE:-":GOSUB 130 260 PRINT "IN"TAB( 10)"READ EIGHT BITS FROM THE OPERAND PORT INTO A.":GOSUB 133 270 PRINT "OUT"TAB( 10)"PLACE THE EIGHT BITS IN A ON THE DATA BUS AND":GOSUB 120 280 PRINT TAB( 10)"THE NUMBER OF THE OPERAND ON THE ADDRESS BUS.":GOSUB 130 290 PRINT "OPERAND PORT NUMBERS RANGE FROM 00-FFH.":GOSUB 130 300 PRINT "BYTES RECEIVED VIA AN IN INSTRUCTION MAY BE RE-ROUTED FROM A":GOSUB 120 310 PRINT "TO REGISTERS OR MEMORY, OR THE BIT PATTERN MAY BE TESTED FOR":GOSUB 120 320 PRINT "A DECISION ON THE PROGRAM FLOW BASED ON PORT STATUS.":GOSUB 130 330 PRINT "WE MAY SEND CHARACTERS TO THE PRINTER WITH AN OUT INSTRUCTION":GOSUB 120 340 PRINT "OR BOUNCE A BYTE OFF THE KEYBOARD (SEND ONE OUT, SEE WHAT":GOSUB 120 350 PRINT "COMES BACK IN) TO SEE IF A PARTICULAR BUTTON IS DEPRESSED":GOSUB 120 360 PRINT "AS IN 'INVADERS'.":GOSUB 130 370 PRINT "IN THE COMPUCOLOR, CERTAIN PORTS ARE DEDICATED TO SPECIFIC":GOSUB 120 380 PRINT "TASKS AND THOSE NOT DEDICATED CAN ONLY BE ACCESSED BY HARDWARE":GOSUB 120 390 PRINT "MODIFICATIONS.":GOSUB 130 400 PRINT "PORTS THAT YOU MAY NEED TO ACCESS IN PROGRAMMING ARE THOSE":GOSUB 120 410 PRINT "FROM 00-08, AND THEIR FUNCTION IS GIVEN IN APPENDIX D2":GOSUB 120 420 PRINT "OF THE PROGRAMMING MANUAL.":GOSUB 130 430 PRINT "THESE WILL ENABLE COMMUNICATION WITH:-":GOSUB 130 440 PRINT "KEYBOARD":GOSUB 120 450 PRINT "DISC":GOSUB 120 460 PRINT "SERIAL PORT":GOSUB 130 470 PRINT "E.G. OUT 06 SENDS A BYTE FROM A TO THE SERIAL PORT.":GOSUB 120 480 PRINT "AND IN 01 READS IN A BYTE FROM THE KEYBOARD OR DISK":GOSUB 120 490 PRINT TAB( 17)"(WHICHEVER IS ENABLED).":GOSUB 130 500 PRINT "THE MACHINE CONTROL INSTRUCTIONS ARE MAINLY OF USE WHEN":GOSUB 120 510 PRINT "PROGRAMMING INTERRUPTS WHICH IS BEYOND THE SCOPE OF THIS":GOSUB 120 520 PRINT "TUTORIAL SERIES.":GOSUB 130 530 PRINT "THEY ARE:- ":GOSUB 130 540 PRINT "EI"TAB( 10)"ENABLE INTERRUPT SYSTEM":GOSUB 120 550 PRINT "DI"TAB( 10)"DISABLE DITTO":GOSUB 120 560 PRINT "HLT"TAB( 10)"HALT EXECUTION":GOSUB 120 570 PRINT "NOP"TAB( 10)"NO OPERATION (A 'BLANK')":GOSUB 130 580 PRINT "AS NOP DOES NOTHING, YOU MAY 'RUB OUT' SECTIONS OF PROGRAM":GOSUB 120 590 PRINT "BY REPLACING OPCODES WITH IT WITHOUT RE-ASSEMBLING":GOSUB 120 600 PRINT "YOUR PROGRAM":GOSUB 130 610 PRINT "EI AND DI MAY BE USED TO HOLD OFF ITCHY FINGERS ON A KEYBOARD":GOSUB 120 620 PRINT "WHILE A ROUTINE IS EXECUTING.":GOSUB 120 630 PRINT "(THE KEYBOARD IS USUALLY INTERRUPT DRIVEN).":GOSUB 130 640 PRINT "HLT HALTS THE CPU PENDING AN INTERRUPT (PROVIDED EI HAS":GOSUB 120 650 PRINT "BEEN EXECUTED EARLIER).":GOSUB 130 660 PRINT "THAT CONCLUDES THE DETAIL DISCUSSION OF 8080 INSTRUCTIONS:":GOSUB 130 670 PRINT "IN THE NEXT TUTORIAL WE WILL LOOK MORE CLOSELY AT THE":GOSUB 120 680 PRINT "MEMORY MAP OF THE CCII TO SEE THE BOUNDARIES OF OUR":GOSUB 120 690 PRINT "PLAYING FIELD.":GOSUB 130 710 PRINT "UNFORTUNATELY, THIS DISK IS FULL SO YOU MUST INSERT DISK #3":GOSUB 120 720 PRINT "IN THE DRIVE TO PROCEED TO THE MEMORY MAP TUTE.":GOSUB 133 730 FOR I= 12TO 20:Z= CALL (I):NEXT 740 INPUT "BACK TO MENU OR TERMINATE TO CHANGE DISKS? ";YN$ 750 FOR I= 28TO 10STEP - 2:Z= CALL (I):NEXT 760 IF YN$= "B"THEN PLOT 12,1 770 PLOT 27,11,12 780 END 5000 PLOT 6,6,3,20,2:PRINT A$:RETURN 5100 PLOT 6,6,3,30,2:PRINT F$:RETURN 5200 PLOT 6,6,3,23,4:PRINT B$:RETURN 5300 PLOT 6,6,3,33,4:PRINT C$:RETURN 5400 PLOT 6,6,3,23,6:PRINT D$:RETURN 5500 PLOT 6,6,3,33,6:PRINT E$:RETURN 5600 PLOT 6,6,3,23,8:PRINT H$:RETURN 5700 PLOT 6,6,3,33,8:PRINT L$:RETURN 5800 PLOT 6,6,3,50,4:PRINT SP$:RETURN 5900 PLOT 6,6,3,50,6:PRINT PC$:RETURN 6000 PLOT 6,34,3,2,4:PRINT I$:PLOT 3,12,4:PRINT HI$:PLOT 6,2,3,2,7:PRINT P$:RETURN 6100 PLOT 6,2,3,5,9:PRINT DD$:RETURN 6200 PLOT 6,2,3,45,9:PRINT AD$:RETURN 6300 PLOT 6,2,3,0,31:RETURN 6400 GOSUB 6100:GOSUB 140:I$= DD$:DD$= BL$:GOSUB 6100:RETURN 6500 PLOT 6,2,3,23,CY:PRINT CC$ 6510 PLOT 3,23,CZ:PRINT BP$:GOSUB 6300:RETURN