Compucolor.org – Virtual Media

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