start bastext 1025 start tok64 d64-34Sbtx 1 RUN00010 10 GOSUB63100:sn$="00100" 100 POKE53281,15:POKE53280,12:PRINT"{black}":PRINT"{clear}{space*11}{reverse on}{blue}micros'n'chips-6" 101 PRINT"{red}{cm a}{sh asterisk*37}{cm s}":GOSUB63100 102 PRINT"{sh -} {reverse on}{blue}{space*9}the big picture{space*11}{red}{reverse off} {sh -}":ms$="ponzotutor" 103 PRINT"{red}{cm z}{sh asterisk*37}{cm x}{black}":GOSUB63200 104 ms$=" welcome! ":GOSUB63200:POKE53280,15 105 PRINT"{home}{down*10}Qnote{down}{left*4}{cm u*4}{up}:hit the @-key at any" 106 PRINT"{down}{space*6}time to return to an":PRINT"{down}{space*6}earlier section{.*3}":GOSUB50000 1000 GOSUB63100:REM micros-1 1001 sn$="01{0*3}" 1010 t$="a wee review":GOSUB63000:ms$="go!go!go!":GOSUB63300 1020 PRINT"{clear}{down*2}Qwe have the {reverse on}logic array{reverse off} which" 1021 PRINT"{down} receives the magic bits in loc'n 1" 1022 PRINT"{down} and the r/w{up}{left}F{down} line and the top hex" 1023 PRINT"{down} digit of the address bus & stuff from" 1024 PRINT"{down} the cartridge port{.*3}" 1025 PRINT"{down} and provides a bunch of chip enables." 1026 PRINT"{space*25}{cm u*12}":GOSUB50000 1029 GOSUB14000:GOSUB50000 1030 PRINT"{clear}{down}Qand one of the chip enables goes to" 1031 PRINT"{down} a {reverse on}2-to-4{reverse off} decoder which divides a 4k" 1032 PRINT"{down} block of memory into four 1k chunks" 1033 PRINT"{down} one of which gets divided again into" 1034 PRINT"{down} four 256-byte pieces{.*3}":GOSUB50000 1039 GOSUB10000:GOSUB50000 1040 PRINT"{clear}{down*2}Q..and then there's {reverse on}sid{reverse off}..":GOSUB50000 1049 GOSUB11000:GOSUB50000 1050 PRINT"{clear}{down*2}Q..and the{space*2}{reverse on}cia{reverse off}..":GOSUB50000 1059 GOSUB16000:GOSUB50000 1060 PRINT"{clear}{down*2}Q..and good ol' {reverse on}vic{reverse off}..":GOSUB50000 1069 GOSUB13000:GOSUB50000 1070 PRINT"{clear}":ms$="remember?":GOSUB63200 1080 PRINT"{home}{down*4}Qlet's put them all together{.*3}":GOSUB50000 2000 GOSUB63100:REM micros-2 2001 sn$="02{0*3}":u$="{space*5}":v$="{sh asterisk*4}" 2010 PRINT"{clear}{down*10}":t$="the big picture":GOSUB63001:ms$="{space*2}ready?" 2020 GOSUB63200:GOSUB50000:GOSUB14999 2030 GOSUB50000:PRINT"{clear}":ms$="{reverse on}{space*2}got it? ":GOSUB63200 2035 PRINT"{home}{down*3}Q..well, a few wires 'n' chips are" 2036 PRINT"{down} missing but you get the {reverse on}big picture{reverse off}?" 2040 GOSUB50000:GOSUB14999:GOSUB50000 2050 PRINT"{clear}{down*4}Qcan you find the {reverse on}6510{reverse off}?":GOSUB50000:GOSUB14999 2055 GOSUB50000:PRINT"{home}{down*2}{right*14}{arrow left}{reverse on}6510{reverse off}":GOSUB50000:u$="{arrow left}{reverse on}6510{reverse off}" 2060 PRINT"{clear}{down*4}Qcan you find the {reverse on}data bus{reverse off}?":GOSUB50000:GOSUB14999:v$="data" 2065 GOSUB50000:PRINT"{home}{down*8}{right*22}data":GOSUB50000 3000 GOSUB63100:REM micros-3 3001 sn$="03{0*3}":u$="{arrow left}{reverse on}6510{reverse off}":v$="data" 3002 t$="one-at-a-time{.*3}":GOSUB63000 3010 PRINT"{down*2}Qnote the {reverse on}bit0{reverse off} to {reverse on}bit2{reverse off} response" 3020 PRINT"{down} from the {reverse on}6510{reverse off}. they 'live' at loc'n 1{down}{left*7}{cm u*7}" 3030 PRINT"{down}Qunlike a memory location these bits" 3040 PRINT"{down} don't appear when the address bus" 3050 PRINT"{down} has a {reverse on}1{reverse off}(decimal)={0*4} {0*4} {0*4} {0*3}1" 3060 PRINT"{down} but are always provided by {reverse on}6510{reverse off}!" 3070 PRINT"{down}Qthese bits and the three bits for the" 3080 PRINT"{down} cassette drive constitute an {reverse on}i/o port" 3090 PRINT"{down} {.*3}accessed via location 1!":GOSUB50000:GOSUB14999 3100 y=2:x=7:m$="{reverse on}loram ":FORi=1TO5:GOSUB54310:GOSUB54300:NEXT 3101 y=3:x=7:m$="{reverse on}hiram ":FORi=1TO5:GOSUB54310:GOSUB54300:NEXT 3102 y=4:x=7:m$="{reverse on}charen":FORi=1TO5:GOSUB54310:GOSUB54300:NEXT 3103 y=1:x=15:m$="{reverse on}cassette (3 bits)":FORi=1TO5:GOSUB54310:GOSUB54300:NEXT 3104 GOSUB50000 3110 PRINT"{clear}{down*3}Qthe array of gates living inside the" 3120 PRINT"{down} the {reverse on}logic array{reverse off} also receives 4 bits" 3125 PRINT"{down} from the address bus (a12 to a15).":GOSUB50000:GOSUB14999 3130 y=14:x=7:m$="{reverse on}l{down}{left}o{down}{left}g{down}{left}i{down}{left}c":FORi=1TO5:GOSUB54310:GOSUB54300:NEXT 3131 y=10:x=5:m$="{reverse on}a15":FORi=1TO5:GOSUB54310:GOSUB54300:NEXT 3132 y=11:x=5:m$="{reverse on}to ":FORi=1TO5:GOSUB54310:GOSUB54300:NEXT 3133 y=12:x=5:m$="{reverse on}a12":FORi=1TO5:GOSUB54310:GOSUB54300:NEXT:GOSUB50000 3140 PRINT"{clear}{down*2}Qthe next 4 bits from the address bus" 3150 PRINT"{down} also go to the {reverse on}2-to-4{reverse off} decoders.":GOSUB50000:GOSUB14999 3151 y=19:x=16:m$="{reverse on}a11":FORi=1TO5:GOSUB54310:GOSUB54300:NEXT 3152 y=20:x=16:m$="{reverse on}a10":FORi=1TO5:GOSUB54310:GOSUB54300:NEXT 3153 y=22:x=25:m$="{reverse on}a9":FORi=1TO5:GOSUB54310:GOSUB54300:NEXT 3154 y=23:x=25:m$="{reverse on}a8":FORi=1TO5:GOSUB54310:GOSUB54300:NEXT:GOSUB50000 3160 PRINT"{clear}{down*2}Qthe enable outputs from the logic" 3170 PRINT"{down} array will (depending upon the inputs" 3180 PRINT"{down} to this chip) enable some {reverse on}rom{reverse off}s{.*3}":GOSUB50000 3190 PRINT"{down} {.*3}or disable them!":GOSUB50000:GOSUB14999 3200 y=11:x=10:m$="{reverse on}basic":FORi=1TO5:GOSUB54310:GOSUB54300:NEXT 3201 y=12:x=18:m$="{reverse on}char":FORi=1TO5:GOSUB54310:GOSUB54300:NEXT 3202 y=13:x=24:m$="{reverse on}kernal":FORi=1TO5:GOSUB54310:GOSUB54300:NEXT:GOSUB50000 3210 PRINT"{clear}{down}Qone of the enable outputs from this" 3220 PRINT"{down} logic array chip also enables a {reverse on}2-to-4" 3230 PRINT"{down} decoder which provides enables for" 3240 PRINT"{down} yet some more chips!":GOSUB50000:GOSUB14999 3241 y=18:x=20:m$="{reverse on}2 {down}{left*2}to{down}{left*2} 4":FORi=1TO5:GOSUB54310:GOSUB54300:NEXT 3242 GOSUB50000 3244 y=10:x=29:m$="{reverse on}col":FORi=1TO5:GOSUB54310:GOSUB54300:NEXT 3245 y=8:x=34:m$="{reverse on}vic":FORi=1TO5:GOSUB54310:GOSUB54300:NEXT 3246 y=15:x=36:m$="{reverse on}s{down}{left}i{down}{left}d":FORi=1TO5:GOSUB54310:GOSUB54300:NEXT 3247 y=22:x=29:m$="{reverse on}2 {down}{left*2}to{down}{left*2} 4":FORi=1TO5:GOSUB54310:GOSUB54300:NEXT 3250 GOSUB50000:PRINT"{clear}{down}Qand then there's {reverse on}64k{reverse off} of ram..":GOSUB50000:GOSUB14999 3251 y=5:x=27:m$="{reverse on}64k{down}{left*3}of {down}{left*3}ram":FORi=1TO10:GOSUB54310:GOSUB54300:NEXT 3260 GOSUB50000:PRINT"{clear}{down*2}Qand who enables this ram?":ms$="i give up!" 3270 GOSUB63200:GOSUB50000:PRINT"{home}{down*10}Qthe great {reverse on}video chip":GOSUB50000 3280 PRINT"{down} with ras{up}{left*3}{F*3}{down} and cas{up}{left*3}{F*3}{down}!":GOSUB50000:GOSUB14999 3290 y=7:x=34:m$="{reverse on}ras":FORi=1TO10:GOSUB54310:GOSUB54300:NEXT 3291 y=5:x=34:m$="{reverse on}cas":FORi=1TO10:GOSUB54310:GOSUB54300:NEXT:GOSUB50000 3300 PRINT"{clear}{down*2}Qand while {reverse on}vic{reverse off} talks to ram it cuts" 3310 PRINT"{down} off the {reverse on}6510{reverse off} by disabling the " 3320 PRINT"{down} {reverse on}data selector{reverse off} chip which provides" 3330 PRINT"{down} the row and column addresses for {reverse on}ram{reverse off}." 3340 PRINT"{down}Q{reverse on}vic{reverse off} disables this {reverse on}sel{reverse off} chip with aec" 3345 PRINT"{down} the {reverse on}a{reverse off}ddress {reverse on}e{reverse off}nable {reverse on}c{reverse off}ontrol.":GOSUB50000 3346 ms$="{reverse on}{space*3}wow!{space*3}":GOSUB63200 3350 GOSUB14999:y=4:x=21:m$="{reverse on}s{down}{left}e{down}{left}l":FORi=1TO10:GOSUB54310:GOSUB54300:NEXT 3351 y=6:x=34:m$="{reverse on}aec":FORi=1TO10:GOSUB54310:GOSUB54300:NEXT:GOSUB50000 3360 PRINT"{clear}{down*4}Qand why does cas{up}{left*3}{F*3}{down} go to {reverse on}sel{reverse off}?":GOSUB50000:GOSUB14999 3370 y=5:x=34:m$="{reverse on}cas":FORi=1TO10:GOSUB54310:GOSUB54300:NEXT 3371 y=4:x=21:m$="{reverse on}s{down}{left}e{down}{left}l":FORi=1TO10:GOSUB54310:GOSUB54300:NEXT:GOSUB50000 3380 PRINT"{clear}{down*2}Q'cause the ram memory chips take" 3390 PRINT"{down} their address bits 8-at-a-time and" 3400 PRINT"{down} and cas{up}{left*3}{F*3}{down} (from ol' {reverse on}vic{reverse off}) feeds" 3410 PRINT"{down} the ram the bottom 8{.*3}then the top 8" 3420 PRINT"{down} by routing the appropriate 8 bits" 3430 PRINT"{down} thru' the {reverse on}data selector{reverse off}!":GOSUB50000:GOSUB14999 3431 y=5:x=34:m$="{reverse on}cas":FORi=1TO10:GOSUB54310:GOSUB54300:NEXT 3432 y=4:x=21:m$="{reverse on}s{down}{left}e{down}{left}l":FORi=1TO10:GOSUB54310:GOSUB54300:NEXT:GOSUB50000 4000 GOSUB63100:REM micros-4 4001 sn$="04{0*3}":u$="{arrow left}{reverse on}6510{reverse off}":v$="data" 4002 t$="enter the quarterback{.*3}":GOSUB63000 4010 t$="the 6510 !":GOSUB63001:GOSUB50000:GOSUB14999 4020 pp=19:FORu=0TO8:b$(u)="{reverse on}"+b$(u):NEXT:GOSUB15025:GOSUB50000 4030 PRINT"{clear}";:GOSUB17000:GOSUB50000 4040 y=17:x=21:m$="{reverse on}phase 0 clk":FORi=1TO10:GOSUB54310:GOSUB54300:NEXT 4050 GOSUB50000:ms$="beg pardon":GOSUB63300 4060 PRINT"{clear}{down*2}Qthe 'original' clock signal (generated" 4070 PRINT"{down} from a crystal) is called {reverse on}phase 0" 4080 PRINT"{down} and goes to the {reverse on}6510{reverse off} and{down}{left*3}{cm u*3}{up} {reverse on}vic{reverse off}." 4090 PRINT"{down}Qthe {reverse on}6510{reverse off} in turn generates {reverse on}phase 2":GOSUB50000 4091 PRINT"{down}Qin the earlier version of this" 4092 PRINT"{down} mpu (the {reverse on}6502{reverse off}), phase 0{down}{left*7}{cm u*7}" 4093 PRINT" was received as input and two{down}{left*3}{cm u*3}{up} clock" 4094 PRINT"{down} signals came out : {reverse on}phase 1{reverse off} & {reverse on}phase 2{reverse off}" 4095 PRINT"{down}Qin the {reverse on}c64{reverse off}: phase 0 = phase 1" 4096 PRINT"{space*13}{cm u*17}":GOSUB50000 4097 PRINT"{clear}":ms$="mamma mia!":GOSUB63200 4100 PRINT"{clear}";:GOSUB17000:GOSUB50000 4110 y=19:x=27:m$="{reverse on}ready":FORi=1TO10:GOSUB54310:GOSUB54300:NEXT:GOSUB50000 4120 ms$="{reverse on}{space*2}ready?{space*2}{reverse off}":GOSUB63300 4130 PRINT"{clear}Qthe {reverse on}6510{reverse off} can be told to go to sleep" 4140 PRINT"{down} (for awhile{.*3}) by setting the" 4150 PRINT"{down} {reverse on}ready{reverse off} pin to {reverse on}0{reverse off}." 4160 PRINT"{down}Qthe {reverse on}6510{reverse off} will complete any write" 4165 PRINT"{down} it may be doing, then will promptly" 4170 PRINT"{down} extricate itself from communication" 4180 PRINT"{down} with the world outside itself!" 4200 PRINT"{down}Qshould you want to have an external" 4210 PRINT"{down} microprocessor control the micro then" 4220 PRINT"{down} just tell {reverse on}6510{reverse off} to go to sleep!" 4221 PRINT"{space*19}{cm u*11}":GOSUB50000 4230 PRINT"{clear}";:GOSUB17000:GOSUB50000 4231 y=22:x=26:m$="{reverse on}aec":FORi=1TO10:GOSUB54310:GOSUB54300:NEXT:GOSUB50000 4240 PRINT"{clear}{down}Qthe {reverse on}a{reverse off}dress {reverse on}e{reverse off}nable {reverse on}c{reverse off}ontrol pin" 4250 PRINT"{down} when pulled low (={reverse on}0{reverse off}) will tell the" 4260 PRINT"{down} {reverse on}6510{reverse off} to get off the address bus!":GOSUB50000 4270 PRINT"{down}Qand can you guess who in the c64" 4280 PRINT"{down} controls the aec{down}{left*3}{cm u*3}{up}?":GOSUB50000 4290 PRINT"{down}Qnow who would want to take control of" 4295 PRINT"{down} the address bus (from time to time)?":GOSUB50000 4300 PRINT"{down*2}":t$="the video chip":GOSUB63001:pp=50:GOSUB14999 4310 y=3:x=15:m$="{reverse on}{arrow left*2}aec{arrow left*3}Q":FORi=1TO10:GOSUB54310:GOSUB54300:NEXT:GOSUB50000 4320 t$="..a few final connections{.*3}":GOSUB63000:GOSUB50000:GOSUB14999 4330 m$(0)=" {arrow left}{sh asterisk*10}" 4340 m$(1)="Q^{down}{left}{sh -}{down}{left}{sh -}{down}{left}{sh -}{down}{left}{sh -}" 4350 FORi=1TO10:y=1+20*RND(1):x=1+25*RND(1):m$=m$(2*RND(1)) 4360 FORj=1TO2:GOSUB54310:GOSUB54300:NEXT:NEXT:ms$="{reverse on}jes kiddin{reverse off}":GOSUB63200 5000 GOSUB63100:REM micros-5 5001 sn$="05{0*3}":u$="{arrow left}{reverse on}6510{reverse off}":v$="data" 5010 t$="enter the coach{.*3}":GOSUB63000:t$="bic vic !":GOSUB63001:GOSUB50000 5100 GOSUB15000:crt=1024:IFPEEK(0)<>47THENcrt=32768 5110 bg=crt+60:FORi=0TO7:FORj=0TO19:pk=bg+40*i+j:POKEpk,PEEK(pk)OR128:NEXT:NEXT 5120 GOSUB50000:GOSUB13000:ms$=" ol' vic":GOSUB63200:GOSUB50000 5130 GOSUB12000:ms$="{space*2}data":GOSUB63200:ms$="{space*2}select":GOSUB63200:GOSUB50000 5140 PRINT"{clear}{down}Qlet's review how {reverse on}vic{reverse off} talks to memory." 5150 PRINT"{down}Qremember that {reverse on}vic{reverse off} can supply only" 5160 PRINT"{down} 14 of 16 address bus bits, and it" 5170 PRINT"{down} does so by putting a0-a7 on the bus" 5180 PRINT"{down} (for the row address) then a8-a13" 5190 PRINT"{down} (for the column address) and" 5200 PRINT"{down} {reverse on}cia #2{reverse off} provides a14{up}{left*3}{F*3}{down} & a15{up}{left*3}{F*3}{down}." 5210 PRINT"{down}Qthe top two bits of these groups-" 5220 PRINT"{down} -of-8 are either a6/a7 (from {reverse on}vic{reverse off})" 5230 PRINT"{down} or a14/a15 (from {reverse on}cia #2{reverse off}).":GOSUB50000 5240 PRINT"{clear}{down}Qwhile {reverse on}vic{reverse off} talks to memory it keeps" 5250 PRINT"{down} the {reverse on}a{reverse off}ddress {reverse on}e{reverse off}nable {reverse on}c{reverse off}ontrol line" 5260 PRINT"{down} low (={reverse on}0{reverse off}) and this disconnects" 5270 PRINT"{down} the address lines from {reverse on}6510{reverse off} and" 5280 PRINT"{down} connects the {reverse on}vic{reverse off} address lines to" 5290 PRINT"{down} memory." 5300 PRINT"{down}Qwhen the {reverse on}vic{reverse off} puts aec=1 then {reverse on}6510{reverse off}" 5310 PRINT"{down} is connected to memory and {reverse on}vic{reverse off}" 5320 PRINT"{down} is disconnected.":ms$="let's see!":GOSUB63200:GOSUB50000 5340 PRINT"{clear}{down*3}Qwe start with {reverse on}aec=0{reverse off} so {reverse on}vic{reverse off} is" 5350 PRINT"{down} in control of memory accesses{.*4}" 5360 PRINT"{down}Qremember: the {reverse on}data selector{reverse off} chip" 5370 PRINT"{down} inverts{down}{left*7}{cm u*7}{up} the signals!":GOSUB50000 5380 GOSUB63100 5400 GOSUB18000:y=10:x=22:m$="{reverse on}a7{down}{left*2}a6":FORi=1TO5:GOSUB54310:GOSUB54300:NEXT 5410 y=20:x=22:m$="{reverse on}a5{down}{left*2}a4{down}{left*2}a3{down}{left*2}a2{down}{left*2}a1{down}{left*2}a0{home}" 5420 FORi=1TO5:GOSUB54310:GOSUB54300:NEXT:p$="{home}{right*19}{down}" 5430 PRINTp$"Qcas{up}{left*3}{F*3}{down}=1 and ras{up}{left*3}{F*3}{down}=0" 5440 PRINTp$"{down*2} and a6/a7 get thru'":PRINTp$"{down*4} data select chip.":GOSUB50000 5450 y=18:x=4:m$="{reverse on}a7{down}{left*2}a6{down}{left*2}a5{down}{left*2}a4{down}{left*2}a3{down}{left*2}a2{down}{left*2}a1{down}{left*2}a0{home}" 5460 FORi=1TO5:GOSUB54310:GOSUB54300:NEXT:GOSUB50000:GOSUB18000 5470 PRINTp$"Qcas{up}{left*3}{F*3}{down}=0 and ras{up}{left*3}{F*3}{down}=1" 5480 PRINTp$"{down*2} & a14/a15 get thru'":PRINTp$"{down*4} data select chip." 5490 y=20:x=25:m$="{reverse on}a13{down}{left*3}a12{down}{left*3}a11{down}{left*3}a10{down}{left*3}a9{down}{left*2}a8{home}" 5500 FORi=1TO5:GOSUB54310:GOSUB54300:NEXT:y=13:x=10 5505 m$="{reverse on}a15{down*2}{left*3}a14":FORi=1TO5:GOSUB54310:GOSUB54300:NEXT:GOSUB50000 5510 y=18:x=4:m$="{reverse on}a15{down}{left*3}a14{down}{left*3}a13{down}{left*3}a12{down}{left*3}a10{down}{left*3}a11{down}{left*3}a10{down}{left*3}a9{home}" 5520 FORi=1TO5:GOSUB54310:GOSUB54300:NEXT:GOSUB50000 5530 GOSUB18000:PRINTp$"Q{reverse on}note{reverse off}:a15/a14{up}{left*7}{F*3} {F*3}{down} go" 5531 PRINTp$"{down*2}thru once and" 5535 PRINTp$"{down*4}are inverted.":GOSUB50000 5540 y=13:x=10:m$="{reverse on}a15{down*2}{left*3}a14":FORi=1TO5:GOSUB54310:GOSUB54300:NEXT 5580 y=8:x=0:m$="{reverse on}a15{down*2}{left*2}a14":FORi=1TO5:GOSUB54310:GOSUB54300:NEXT:GOSUB50000 5590 GOSUB18000:PRINTp$"Q{reverse on}but{reverse off}:a6/a7 go thru":PRINTp$"{down*2} twice and come" 5600 PRINTp$"{down*4} out: a6/a7!!":GOSUB50000:PRINT"{clear}{down*6}Qwatch a6 come out!" 5605 GOSUB50000:GOSUB18000 5610 a6$="{home}{down*5}{right*2}{reverse on}{cm w}{left*2}{sh asterisk}{left*2}{cm z}{left}{up}^{up}{left}{sh -}{up}{left}^{up}{left}{sh -}{up}{left}{cm a}{sh asterisk*11}{cm s}{down}{left}{sh -}{down}{left}{sh -}{down}{left}{sh +}{down}{left}{sh -}{down}{left}{sh +}{down}{left}{sh -}{down}{left}{sh +}" 5620 a6$=a6$+"{down}{left}{sh -}{down}{left}{sh +}{down}{left}{cm x}{left*2}{sh asterisk}{left*2}{arrow left}{left*2}{cm q}{left*8}{up}{cm w}{left*2}{cm a}{down}{left}{sh -}{down}{left}{sh -}{down}{left}{sh -}{down}{left}{sh -}{down}{left}{cm z}{sh asterisk*3}{cm s}{down}{left}{sh -}{down}{left}{sh -}{down}{left}{sh -}{down}{left}{cm x}" 5700 a6$=a6$+"{left*2}{arrow left}{left*2}{cm q}":la=LEN(a6$):FORi=1TOla:PRINTMID$(a6$,i,1); 5710 FORt=1TO50:NEXT:NEXT:GOSUB50000:PRINT"{clear}":ms$="magnifico!":GOSUB63300 6000 GOSUB63100:REM micros-6 6001 sn$="06{0*3}":u$="{arrow left}{reverse on}6510{reverse off}":v$="data" 6010 t$="when vic talks..":GOSUB63000:ms$="{space*2}listen!":GOSUB63300 6020 PRINT"{clear}{down}Qwhen {reverse on}vic{reverse off} talks to ram{down}{left*3}{cm u*3}{up} the " 6030 PRINT"{down} a0-a7 then a8-a15 (ras/cas)" 6040 PRINT"{down} trick is ok." 6050 PRINT"{down}Qbut when {reverse on}vic{reverse off} talks to rom{down}{left*3}{cm u*3}{up} it's " 6060 PRINT"{down} {reverse on}not{down}{left*3}{reverse off}{E*3}{up} ok!":GOSUB50000 6070 PRINT"{down}Qthe 4k character rom needs 12 address" 6080 PRINT"{down} bus wires to identify one of 2^12=4k" 6090 PRINT"{down} internal memory locations.":ms$="{space*2}a0-a11":GOSUB63200:GOSUB50000 6095 PRINT"{clear}{down*8}{.*3}and it needs them all at once!":GOSUB50000 6100 PRINT"{clear}{down*3}Qnow we know that ol' vic has a0-a7":GOSUB50000 6110 GOSUB18000:y=10:x=22:m$="{reverse on}a7{down}{left*2}a6":FORi=1TO5:GOSUB54310:GOSUB54300:NEXT 6120 y=20:x=22:m$="{reverse on}a5{down}{left*2}a4{down}{left*2}a3{down}{left*2}a2{down}{left*2}a1{down}{left*2}a0{home}" 6130 FORi=1TO5:GOSUB54310:GOSUB54300:NEXT:GOSUB50000 6140 PRINT"{clear}{down*2}Qand we know that ol' vic has a8-a11.":GOSUB50000:GOSUB18000 6150 y=22:x=25:m$="{reverse on}a11{down}{left*3}a10{down}{left*3}a9{down}{left*2}a8{home}" 6160 FORi=1TO5:GOSUB54310:GOSUB54300:NEXT:y=13:x=10:GOSUB50000 6170 PRINT"{clear}{down*3}{.*3}if {reverse on}vic{reverse off} could only get these" 6180 PRINT"{down} out to the rom at the same time as" 6190 PRINT"{down} a0-a7..":GOSUB50000:ms$="!#$%'&*+=":GOSUB63300 6195 PRINT"{home}{down*14}Qlet's fix up the {reverse on}vic{reverse off} picture..":GOSUB50000 6200 GOSUB13000:GOSUB50000:GOSUB19000:GOSUB50000 6210 y=9:x=18:m$="{reverse on}a11{down}{left*3}a10{down}{left*3}a9 {down}{left*3}a8 " 6220 FORi=1TO10:GOSUB54310:GOSUB54300:NEXT 6260 y=9:x=23:m$="{reverse on}4 new {down}{left*6} pins {down}{left*6}on vic{down}{left*6}{space*6}" 6270 FORi=1TO10:GOSUB54310:GOSUB54300:NEXT:GOSUB50000 6280 PRINT"{clear}{down}Qnow{down}{left*3}{cm u*3}{up} {reverse on}vic{reverse off} can talk to the character" 6290 PRINT"{down} rom (and extract the pixel patterns" 6300 PRINT"{down} which go to make up the characters" 6310 PRINT"{down} appearing on the screen:a,b,1,*,=,etc)." 6320 PRINT"{down}Qremember that {reverse on}vic{reverse off} talks to memory" 6330 PRINT"{down} when aec=0 (and {reverse on}6510{reverse off} is cut off!)" 6340 PRINT"{down}Qthen, when {reverse on}vic{reverse off} sets aec=1, {reverse on}6510{reverse off} talks.":GOSUB50000 6350 PRINT"{clear}{down}Q..and when {reverse on}vic{reverse off} talks to ram{down}{left*3}{cm u*3}{up} it" 6360 PRINT"{down} provides a0-a7 then a8-a13 (and {reverse on}cia#2" 6370 PRINT"{down} provides a14{up}{left*3}{F*3}{down}/a15{up}{left*3}{F*3}{down})" 6380 PRINT"{down}Qand when he talks to rom{down}{left*3}{cm u*3}{up} {reverse on}vic{reverse off}" 6390 PRINT"{down} provides a0-a11 all-at-once!":ms$="great vic!":GOSUB63200 9000 GOSUB50000:PRINT"{clear}":ms$="au revoir!":GOSUB63200:sn$="{0*3}10":GOSUB63520:END 10000 PRINT"{clear}{space*6}{cm a}{sh asterisk*4}{cm s} 10010 PRINT" a11{sh asterisk*2}{cm w}{space*4}{cm q}{sh asterisk*3}video 10020 PRINT" a10{sh asterisk*2}{cm w}{space*4}{cm q}{sh asterisk*3}sound 10030 PRINT"{space*6}{sh -}{reverse on}2to4{reverse off}{cm q}{sh asterisk*3}colour 10040 PRINT"{space*6}{sh -}{space*4}{cm q}{sh asterisk}{cm s} 10050 PRINT"{space*6}{cm z}{sh asterisk}{cm r}{sh asterisk*2}{cm x} {sh -} 10060 PRINT" {F*3}{space*4}^{space*4}{sh -} {cm a}{sh asterisk*4}{cm s} 10070 PRINT" ce1{sh asterisk*4}{cm x}{space*4}{sh -} {sh -}{space*4}{cm q}{sh asterisk*2}to cia #1 10080 PRINT" {^*3}{space*6}a9{sh asterisk}{sh +}{sh asterisk}{cm w}{space*4}{cm q}{sh asterisk*2}to cia #2 10090 PRINT"from{space*6}a8{sh asterisk}{sh +}{sh asterisk}{cm w}{reverse on}2to4{reverse off}{cm q}{sh asterisk*2}{cm s} 10100 PRINT"logic{space*8}{sh -} {sh -}{space*4}{cm q}{sh asterisk}{cm s}{sh -} 10110 PRINT"array{space*8}{sh -} {cm z}{sh asterisk}{cm r}{sh asterisk*2}{cm x} {sh -*2} 10120 PRINT"{space*10}{F*3}{sh -}{space*3}^{space*4}{sh -*2} 10130 PRINT"{space*10}ce2{cm z}{sh asterisk*3}{cm x}{space*4}{sh -*2} 10140 PRINT"{space*15}{reverse on}{cm e*10}" 10150 PRINT"{space*15}{reverse on}cartridge " 10160 RETURN 11000 PRINT"{clear}{sh asterisk*9}Q{sh asterisk} 11010 PRINT"{sh asterisk*8}Q{sh +}{sh asterisk} 11020 PRINT"{sh asterisk*7}Q{sh +*2}{sh asterisk} 11030 PRINT"{sh asterisk*6}Q{sh +*3}{sh asterisk} 11040 PRINT"{sh asterisk*5}Q{sh +*4}{sh asterisk} 11050 PRINT"{sh asterisk*4}Q{sh +*5}{sh asterisk} 11060 PRINT"{sh asterisk*3}Q{sh +*6}{sh asterisk} 11070 PRINT"{sh asterisk*2}Q{sh +*7}{sh asterisk} 11080 PRINT" {cm a}{cm e*8}{cm s} 11090 PRINT" {sh -}FF{space*6}{sh -} 11100 PRINT"{sh asterisk}{cm w}ceR{space*5}{sh -} 11110 PRINT"{sh asterisk}{cm w}r/w{space*5}{sh -} 11120 PRINT"{sh asterisk}{cm w}potx{space*4}{cm q}{sh asterisk}Q{sh asterisk}sound output 11130 PRINT"{sh asterisk}{cm w}poty{space*4}{sh -} {sh -} (monitor) 11140 PRINT" {sh -}{space*8}{sh -} {sh -} 11150 PRINT"{sh asterisk}{cm w}a4{space*2}{reverse on}sid{reverse off} {sh -} {cm z}{sh asterisk}to rf modulator 11160 PRINT"{sh asterisk}{cm w}a3{space*6}{sh -}{space*3}(for tv set) 11170 PRINT"{sh asterisk}{cm w}a2{space*6}{sh -} 11180 PRINT"{sh asterisk}{cm w}a1{space*6}{sh -} 11190 PRINT"{sh asterisk}{cm w}a0{space*6}{sh -} 11200 PRINT" {cm z}{sh asterisk*8}{cm x} 11210 RETURN 12000 PRINT"{clear}{space*10}{cm a}{sh asterisk*9}{cm s} 12010 PRINT"{space*10}{sh -}{cm a}{sh asterisk*7}{cm s}{sh -} 12020 PRINT"{space*10}{sh -*2} {cm a}{sh asterisk*3}{cm s} {sh -*2} 12030 PRINT"a7{sh asterisk*2}Q{sh asterisk*5}{sh +*2}{sh asterisk}{cm w}y3 {cm q}{sh asterisk}{cm x}{sh -} 12040 PRINT"a6{sh asterisk}Q{sh +}{sh asterisk*5}{sh +*2}{sh asterisk}{cm w}y2 {cm q}{sh asterisk*2}{cm x} 12050 PRINT"{space*3}{sh -*2}{space*5}{sh -}{cm z}{sh asterisk}{cm w}y1 {cm q}{sh asterisk*4}{space*3}to" 12060 PRINT"{space*3}{sh -*2}{space*5}{cm z}{sh asterisk*2}{cm w}y0 {cm q}{sh asterisk*4}{space*3}ram" 12070 PRINT"{space*3}{sh -*2}{space*8}{sh -}{space*3}{sh -}" 12080 PRINT"{space*3}{sh -}{cm z}{sh asterisk*8}{cm w}x3 {sh -} 12090 PRINT"{sh space}{space*2}{cm z}{sh asterisk*9}{cm w}x2 {sh -} 12100 PRINT"port a:a15{space*2}{sh asterisk}{cm w}x1 {cm q}{arrow left}select{space*10}" 12110 PRINT"port a:a14{space*2}{sh asterisk}{cm w}x0 {cm q}{arrow left}cut off output" 12120 PRINT"{space*13}{cm z}{sh asterisk*3}{cm x} 12130 RETURN 13000 PRINT"{clear}{space*6}8 wires{space*2}{sh asterisk}Q{sh asterisk}" 13010 PRINT"{space*2}of data bus{sh asterisk}Q{sh +*2} {cm a}{sh asterisk*2}+12 volts" 13020 PRINT"{space*14}{sh -}.{sh -} {sh -}{cm a}{sh asterisk}+5 volts" 13030 PRINT"{space*12}{cm a}{sh asterisk}{cm e*3}{sh asterisk}{cm e*2}{sh asterisk}{cm s} 13040 PRINT"{space*2}14 wires {sh asterisk}{cm w}{sh space*8}{cm q}{sh asterisk}luminance 13050 PRINT"{space*4}of{space*3}{.*3}{cm w}{sh space*8}{sh -} 13060 PRINT"address bus{sh asterisk}{cm w}{sh space*8}{cm q}{sh asterisk}colour 13070 PRINT"{space*6}{F*3}{space*3}{sh -}{space*8}{sh -} 13080 PRINT"{space*6}ras {arrow left}{sh asterisk}{cm w}{space*8}{sh -} 13090 PRINT"{space*6}{F*3}{space*3}{sh -}{space*8}{sh -} 13100 PRINT"{space*6}cas {arrow left}{sh asterisk}{cm w}{space*8}{sh -} 13110 PRINT"{space*6}{F*3}{space*3}{sh -}{space*8}{sh -} 13120 PRINT"{space*6}irq {arrow left}{sh asterisk}{cm w}{space*8}{sh -} 13130 PRINT"{space*8}F{space*3}{sh -}{space*8}{sh -} 13140 PRINT"{space*6}r/w {sh asterisk*2}{cm w}{space*2}{reverse on}vic{reverse off}{space*3}{sh -} 13150 PRINT"{space*12}{sh -}{space*8}{sh -} 13160 PRINT"light pen!{sh asterisk*2}{cm w}{space*8}{sh -} 13170 PRINT"{space*7}FF{space*3}{sh -}{space*8}{sh -} 13180 PRINT"{space*7}ce {sh asterisk*2}{cm w}{space*8}{sh -} 13190 PRINT"{space*12}{sh -}{space*8}{cm q}{sh asterisk}aec" 13200 PRINT" clock in {sh asterisk*2}{cm w}{space*8}{sh -} 13210 PRINT"{space*12}{sh -}{space*8}{sh -} 13220 PRINT"clock out {arrow left}{sh asterisk}{cm w}{space*8}{cm q}{sh asterisk}ground" 13230 PRINT"{space*12}{cm z}{sh asterisk*8}{cm x}{home}" 13240 RETURN 14000 PRINT"{clear}{down}{space*6}{cm a}{sh asterisk*5}{cm s}":FORi=1TO10:PRINT"{space*5}{sh asterisk}{cm w}{space*5}{cm q}{sh asterisk}":NEXT 14010 PRINT"{space*3}{sh space}{space*2}{cm z}{sh asterisk*5}{cm x}":r$="{sh asterisk*2}":s$="{sh asterisk}" 14020 PRINT"{home}{down*2}{reverse on}a15{reverse off}"r$:PRINT"{reverse on}a14{reverse off}"r$:PRINT"{reverse on}a13{reverse off}"r$:PRINT"{reverse on}a12{reverse off}"r$ 14030 PRINT"r/w"r$:PRINT"{reverse on}bit0{reverse off}"s$:PRINT"{reverse on}bit1{reverse off}"s$:PRINT"{reverse on}bit2{reverse off}"s$ 14040 PRINT"{space*2}{cm a}{sh asterisk*3}{right*7}{sh asterisk*4}{cm s}" 14050 PRINT"{space*2}{sh -} {cm a}{sh asterisk}{right*7}{sh asterisk*2}{cm s} {sh -}" 14060 PRINT"{home}{down*6}{right*12}{sh -} {down}{left*2}{sh -} {down}{left*2}{sh -} {down}{left*2}{sh -} " 14061 PRINT"{home}{down*5}{right*7}{reverse on}logic{reverse off}{down*2}{left*5}{reverse on}array":PRINT"{home}{down}" 14070 PRINTTAB(14)"basic roms($a{0*3}-$b{f*3})":GOSUB50000 14080 PRINTTAB(14)"char rom{space*2}($d{0*3}-$d{f*3})":GOSUB50000 14090 PRINTTAB(14)"kernal rom($e{0*3}-${f*4})":GOSUB50000 14100 PRINTTAB(14)"input/output enable":GOSUB50000 14110 PRINT"{home}{down*13} {reverse on}exrom{up}{left*4}^":GOSUB50000 14120 PRINT"{home}{down*13}{space*3}{reverse on}game{up}{left*3}^":GOSUB50000 14130 PRINT"{home}{down*13}{space*14}{reverse on}roml{up}{left*3}v{down*2}{left*3}$8{0*3}-":GOSUB50000 14140 PRINT"{home}{down*13}{space*16}{reverse on}romh{up}{left*3}v{down*2}{left*5}$a{0*3}- or $e{0*3}-" 14145 GOSUB50000 14146 PRINT"{home}{down*13}{space*20}{reverse on}{up}{left*3}v{down*2}{left*5}{reverse off}{space*16}" 14147 PRINT"{home}{down*13}{reverse on}{cm e*20}" 14148 PRINT"{reverse on}{space*3}cartridge port{space*3}" 14150 PRINT"{down*2}{reverse on}bit0{reverse off}=loram{up}{left*5}{F*5}{down}{space*2}(ce{up}{left*2}FF{down} for $a{0*3}-$b{f*3})" 14151 PRINT"{down}{reverse on}bit1{reverse off}=hiram{up}{left*5}{F*5}{down}{space*2}(ce{up}{left*2}FF{down} for $e{0*3}-${f*4})" 14152 PRINT"{down}{reverse on}bit2{reverse off}=charen{up}{left*6}{F*6}{down} (ce{up}{left*2}FF{down} for $d{0*3}-$d{f*3})" 14160 RETURN 14999 PRINT"{clear}"; 15000 b$(0)="{space*6}{cm a}{sh asterisk*6}{cm s}{cm a}cassette" 15001 b$(1)="{cm a}{sh asterisk*4}{arrow left}{cm w}loram {cm q}{cm x}{space*6}{cm a}{sh asterisk*10}{cm s}" 15002 b$(2)="{sh -}{cm a}{sh asterisk*3}{arrow left}{cm w}hiram {sh -}"+u$+" {cm a}{cm e}{cm s}{cm a}{sh asterisk*7}{cm s}{sh -}{space*5}" 15003 b$(3)="{sh -*2}{cm a}{sh asterisk*2}{arrow left}{cm w}charen{sh -}addr{space*2}{sh -}{reverse on}s{reverse off}{cm q}{cm x}{space*2}{cm a}{sh asterisk*3}{cm s}{sh -*2}{cm a}{sh asterisk*3}{cm s}" 15004 b$(4)="{sh -*3} {sh asterisk}{arrow left}{cm w}phase2{cm q}{sh asterisk*2}{cm r}{sh asterisk*3}{cm w}{reverse on}e{reverse off}{sh -}{space*3}{sh -}{reverse on}64k{reverse off}{cm q}{arrow left}{cm e}{cm w}cas{sh -}" 15005 b$(5)="{sh -*3}{cm a}{sh asterisk}{arrow left}{cm w}r/w{space*3}{cm q}{cm r}{sh asterisk}{sh +}{sh asterisk*2}{cm s}{sh -}{reverse on}l{reverse off}{cm q}{sh asterisk*3}{cm w}{reverse on}of {reverse off}{sh -}{cm z}{sh asterisk}{cm w}aec{sh -}" 15006 b$(6)="{sh -*4}{space*2}{cm z}{sh asterisk*6}{cm x}{sh -} {sh -}{space*2}{sh -}{cm z}{sh asterisk}{cm x}{space*2}{cm a}{cm w}{reverse on}ram{reverse off}{cm q}{arrow left}{sh asterisk}{cm w}ras{sh -}" 15007 b$(7)="{sh -*3}{cm q}{sh asterisk*10}{sh +}{sh asterisk}{sh +}{sh asterisk*2}{sh +}{sh asterisk*5}{cm x}{cm z}{cm r}{sh asterisk*2}{cm x}{space*2}{sh -}{reverse on}vic{reverse off}{sh -}" 15008 b$(8)="{sh -*4}{cm a}{sh asterisk*7}{cm r}{sh asterisk}{sh +}{sh asterisk}{cm w}{space*2}{cm z}{sh asterisk}{cm r}"+v$+"{cm r}{cm x}{cm a}{sh asterisk*3}{cm s}{cm z}{cm r}{sh asterisk*2}{cm x}" 15009 b$(9)="{sh -*5}a15 {cm a}{sh asterisk*2}{cm e}{sh asterisk}{cm e}{cm s}{cm q}{sh asterisk*2}{cm r}{sh asterisk}{sh +}{sh asterisk*2}{cm s} {sh -} {sh -}{reverse on}col{reverse off}{sh -} ^{space*2}" 15010 b$(10)="{sh -*5}to{space*2}{sh -}{reverse on}basic{reverse off}{sh -*2}{cm a}{sh asterisk}{cm e}{sh asterisk}{cm e}{cm s} {sh -} {sh -} {cm z}{sh asterisk*2}{cm r}{cm x} {sh -}{space*2}" 15011 b$(11)="{sh -*5}a12 {cm z}{sh asterisk}{cm r}{sh asterisk*3}{cm x}{sh -*2}{reverse on}char{reverse off}{sh -}{cm a}{cm e}{sh asterisk}{cm e}{sh asterisk*3}{cm s}^{space*2}{sh -}{space*2}" 15012 b$(12)="{sh -*5} {cm a}{sh asterisk*3}{cm s}^{space*4}{sh -}{cm z}{cm r}{sh asterisk*3}{cm x}{sh -}{reverse on}kernal{reverse off}{sh -*2}{space*2}{sh -}{cm a}{sh asterisk}{cm s}" 15013 b$(13)="{sh -*4}{cm z}{sh asterisk}{cm w}{reverse on}l{reverse off} {reverse on}a{reverse off}{cm q}{cm x}{space*4}{sh -} ^{space*4}{cm z}{cm r}{sh asterisk*5}{cm x}{sh -}{space*2}{sh -*2} {sh -}" 15014 b$(14)="{sh -*3}{cm z}{sh asterisk*2}{cm w}{reverse on}o{reverse off} {reverse on}r{reverse off}{cm q}{sh asterisk*5}{sh +}{sh asterisk}{cm x}{space*5}^{space*6}{sh -}{space*2}{sh -*2}{reverse on}s{reverse off}{sh -}" 15015 b$(15)="{sh -*2}{cm z}{sh asterisk*3}{cm w}{reverse on}g{reverse off} {reverse on}r{reverse off}{cm q}{sh asterisk*5}{sh +}{sh asterisk*7}{cm x}{space*6}{sh -}{space*2}{sh -*2}{reverse on}i{reverse off}{cm q}" 15016 b$(16)="{sh -}{cm z}{sh asterisk*4}{cm w}{reverse on}i{reverse off} {reverse on}a{reverse off}{cm q}{sh asterisk*4}{cm s}{sh -}{space*2}{cm a}{sh asterisk*2}{cm s}{space*8}{sh -}{space*2}{sh -*2}{reverse on}d{reverse off}{cm q}" 15017 b$(17)="{cm z}{sh asterisk*5}{cm w}{reverse on}c{reverse off} {reverse on}y{reverse off}{sh -}{space*4}{sh -*2}{space*2}{sh -}{reverse on}2 {reverse off}{cm q}{sh asterisk*8}{cm x}{space*2}{sh -*2} {cm q}" 15018 b$(18)="{space*2}{cm a}{sh asterisk*3}{cm w}{space*3}{cm q}{sh asterisk*2}{cm s} {sh -}a11{cm w}{reverse on}to{reverse off}{cm q}{sh asterisk*11}{cm x}{cm z}{cm r}{cm x}" 15019 b$(19)="{space*2}{sh -}{cm a}{sh asterisk*2}{cm w}{space*3}{cm q}{sh asterisk}{cm s}{sh -} {sh -}a10{cm w}{reverse on} 4{reverse off}{cm q}{sh asterisk*13}{cm x}" 15020 b$(20)="{space*2}{sh -*2}{space*2}{cm z}{sh asterisk*3}{cm x} {sh -*2} {sh -*2}{space*2}{sh -}{space*2}{cm q}{sh asterisk}{cm s}{space*3}{cm a}{sh asterisk*2}{cm s}" 15021 b$(21)="{space*2}{sh -*2}{space*8}{sh -*2} {sh -*2}{space*2}{cm z}{cm r}{sh asterisk}{cm x} {sh -}a9{sh asterisk}{cm w}{reverse on}2 {reverse off}{cm q}cia#1" 15022 b$(22)="{space*2}{cm e*12} {cm z}{sh +}{sh asterisk*3}{cm x}{space*3}{sh -}a8{sh asterisk}{cm w}{reverse on}to{reverse off}{sh -}" 15023 b$(23)=" {reverse on}cartridge port{reverse off} {cm z}{sh asterisk*7}{sh +}{cm x}{space*2}{sh -}{reverse on} 4{reverse off}{cm q}cia#2" 15025 PRINT"{home}";:FORu9=b0TOb1:PRINTLEFT$(b$(u9),pp):NEXT:RETURN 16000 PRINT"{clear}{down*3}"; 16010 PRINT"dataQ{sh asterisk*2} 16020 PRINT"{sh asterisk}bus{sh -} {cm a}{sh asterisk}+5 volts 16030 PRINT"{sh asterisk*2}Q.{sh -} {sh -} 16040 PRINT" {cm a}{cm e*3}{sh asterisk}{cm e}{sh asterisk*3}{cm s} 16050 PRINT" {sh -}FF{space*6}{cm q}{sh asterisk*2}" 16060 PRINT"{sh asterisk}{cm w}ceR{space*5}{cm q}..port a" 16070 PRINT"{sh asterisk}{cm w}r/w{space*5}{cm q}{sh asterisk*2}" 16080 PRINT"{sh asterisk}{cm w}clock{space*3}{sh -}{space*2}{F*4}" 16090 PRINT" {sh -}{F*3}{space*5}{cm q}{arrow left}{sh asterisk}flag" 16100 PRINT"{arrow left}{cm w}irq{space*5}{cm q}{sh asterisk*2}sp " 16110 PRINT" {sh -}{space*4}{reverse on}cia{reverse off} {cm q}{sh asterisk*2}cnt" 16120 PRINT"{sh asterisk}{cm w}a3{space*6}{cm q}{sh asterisk*2}pc" 16130 PRINT"{sh asterisk}{cm w}a2{space*6}{cm q}{sh asterisk*2}" 16140 PRINT"{sh asterisk}{cm w}a1{space*6}{cm q}..port b" 16150 PRINT"{sh asterisk}{cm w}a0{space*6}{cm q}{sh asterisk*2} 16160 PRINT" {cm z}{cm r}{sh asterisk*4}{cm r}{sh asterisk*2}{cm x} 16170 PRINT"{space*2}^{space*4}{sh -} 16180 PRINT" {F*5} ground" 16190 PRINT" reset 16200 RETURN 17000 PRINT"{home}{space*7}+5 volts" 17001 PRINT"{space*12}{sh -}" 17002 PRINT"{space*4}{cm a}{sh asterisk*7}{cm e}{sh asterisk*19}{cm s} 17003 PRINT"out{arrow left}{cm w}loram=bit0{space*2}cass write=bit3{cm q}{sh asterisk*2}out" 17004 PRINT"out{arrow left}{cm w}hiram=bit1{space*2}cass sense=bit4{cm q}{arrow left}{sh asterisk}in" 17005 PRINT"out{arrow left}{cm w}charen=bit2{sh space}cass motor=bit5{cm q}{sh asterisk*2}out" 17006 PRINT"{space*4}{sh -}{space*27}{sh -} 17007 PRINT"{space*3}{arrow left}{cm w}phase 2 clk{space*5}address bus{cm q}{sh asterisk}(16)" 17008 PRINT"{space*4}{sh -}{space*19}data bus{cm q}{sh asterisk}(8)" 17009 PRINT"{space*3}{arrow left}{cm w}read/write{space*14}{F*3}{sh -}" 17010 PRINT"{space*4}{sh -}{space*24}irq{cm q}{arrow left}{sh asterisk*2}" 17011 PRINT"{space*4}{sh -}{space*12}{reverse on}6510{reverse off}{space*8}{F*3}{sh -}" 17012 PRINT"{space*4}{sh -}{space*24}nmi{cm q}{arrow left}{sh asterisk*2}" 17013 PRINT"{space*4}{sh -}{space*22}{F*5}{sh -}" 17014 PRINT"{space*4}{sh -}{space*22}reset{cm q}{arrow left}{sh asterisk*2}" 17015 PRINT"{space*4}{sh -}{space*27}{sh -} 17016 PRINT"{space*4}{sh -}{space*16}phase 0 clk{cm q}{arrow left}{sh asterisk*2}" 17017 PRINT"{space*4}{sh -}{space*27}{sh -} 17018 PRINT"{space*4}{sh -}{space*22}ready{cm q}{arrow left}{sh asterisk*2}" 17019 PRINT"{space*4}{cm z}{sh asterisk*15}{cm r}{sh asterisk*6}{cm r}{sh asterisk*4}{cm x}" 17020 PRINT"{space*20}{sh -}{space*6}^" 17021 PRINT"{space*18}ground{space*2}aec" 17100 RETURN 18000 PRINT"{clear}{cm a}{sh asterisk*11}{cm s} 18001 PRINT"{sh -}{cm a}{sh asterisk*9}{cm s}{sh -} 18002 PRINT"{sh -*2}{cm a}{sh asterisk*6}{cm s} {sh -*2} 18003 PRINT"{sh -}{cm z}{cm w}{space*6}{cm q}Q{sh +*2}{sh asterisk*3}{cm s} 18004 PRINT"{sh -} {sh -}{space*6}{cm q}{cm x}{sh -*2}{space*3}{sh -} 18005 PRINT"{cm z}{sh asterisk}{cm w} data {cm q}Q{sh +*2}{sh asterisk*2}{cm s}{sh -} 18006 PRINT"{space*2}{sh -}select{cm q}{cm x}{sh -*2}{space*2}{sh -*2} 18007 PRINT"{cm a}{sh asterisk}{cm w}(neg) {cm q}{sh asterisk}{sh +*2}{sh asterisk}{cm s}{sh -*2} 18008 PRINT"{sh -} {sh -}(out){sh space}{cm q}{sh asterisk}{cm x}{sh -} {sh -*3}{space*4}{sh -} 18009 PRINT"{sh -}{cm a}{cm w}{space*6}{cm q}{sh asterisk*2}{sh +}{cm s}{sh -*2}{cm z}{sh asterisk*4}{cm w}a7 18010 PRINT"{sh -*3}{space*6}{cm q}{sh asterisk*2}{cm x}{sh -*2}{cm z}{sh asterisk*5}{cm w}a6 18011 PRINT"{sh -*2}{cm z}{sh asterisk*4}{cm r}{sh asterisk}{cm x}{F*3}{sh -*2}{space*6}{sh -} 18012 PRINT"{sh -*2}{space*5}^{space*2}a15{cm x}{sh -}{space*6}{sh -}{space*2}vic 18013 PRINT"{sh -*2}{space*5}{sh -}{space*2}{F*3} {sh -}{space*6}{sh -} 18014 PRINT"{sh -}{cm z}{sh asterisk*3}{cm s} {sh -}{space*2}a14{sh asterisk}{cm x}{space*6}{sh -}{F*3} 18015 PRINT"{cm z}{sh asterisk*3}{cm s}{sh -} {cm z}{sh asterisk*13}{cm w}cas 18016 PRINT"{sh asterisk*3}{cm s}{sh -*2}{space*15}{sh -} 18017 PRINT"{space*3}{cm q}{cm x}{sh -}{space*15}{sh -} 18018 PRINT"64k{cm q}{sh asterisk}{cm x}{space*15}{sh -} 18019 PRINT"ram{cm q}{sh asterisk*17}{cm w}a5/a13 18020 PRINT"{space*3}{cm q}{sh asterisk*17}{cm w}a4/a12 18021 PRINT"{space*3}{cm q}{sh asterisk*17}{cm w}a3/a11 18022 PRINT"{space*3}{cm q}{sh asterisk*17}{cm w}a2/a10 18023 PRINT"{space*3}{cm q}{sh asterisk*17}{cm w}a1/a9 18024 PRINT"{space*3}{cm q}{sh asterisk*17}{cm w}a0/a8{home}" 18025 RETURN 19000 PRINT"{home}{space*6}8 wires{space*2}{sh asterisk}Q{sh asterisk}" 19010 PRINT"{space*2}of data bus{sh asterisk}Q{sh +*2} {cm a}{sh asterisk*2}+12 volts" 19020 PRINT"{space*14}{sh -}.{sh -} {sh -}{cm a}{sh asterisk}+5 volts" 19030 PRINT"{space*12}{cm a}{sh asterisk}{cm e*3}{sh asterisk}{cm e*2}{sh asterisk}{cm s} 19040 PRINT"{reverse on}{space*3}8 wires {reverse off}{sh asterisk}{cm w}a7{space*4}{sh space*2}{cm q}{sh asterisk}luminance 19050 PRINT"{reverse on}{space*4}of{space*5}{reverse off}.{cm w}{-*5}{sh space*3}{sh -} 19060 PRINT"{reverse on}address bus{reverse off}{sh asterisk}{cm w}a0/a8{sh space*3}{cm q}{sh asterisk}colour 19070 PRINT"{space*6}{F*3}{space*3}{sh -}{space*8}{sh -} 19080 PRINT"{space*6}ras {arrow left}{sh asterisk}{cm w}{space*8}{cm q}{sh asterisk} 19090 PRINT"{space*6}{F*3}{space*3}{sh -}{space*8}{cm q}{sh asterisk} 19100 PRINT"{space*6}cas {arrow left}{sh asterisk}{cm w}{space*8}{cm q}{sh asterisk} 19110 PRINT"{space*6}{F*3}{space*3}{sh -}{space*8}{cm q}{sh asterisk} 19120 RETURN 50000 GETa$:IFa$<>""THEN50000 50001 GETa$:IFa$=""THEN50001 50002 IFa$="@"THEN63500 50003 RETURN 51000 n=3 51001 x$="":FORu=nTO0STEP-1:x%=x/(2^u):x=x-x%*(2^u):x$=x$+CHR$(48+x%) 51002 NEXT:RETURN 52000 m=3 52001 y$="":FORv=mTO0STEP-1:y%=y/(16^v):y=y-y%*(16^v) 52002 y$=y$+CHR$(48+y%-7*(y%>9)):NEXT:RETURN 54300 PRINTLEFT$(d$,y)RIGHT$(r$,x)m$:RETURN 54310 sm$=m$:m$=MID$(m$,2):GOSUB54300:m$=sm$:RETURN 63000 PRINT"{clear}"; 63001 l=LEN(t$):uu$="":FORi=1TOl:uu$=uu$+" ":NEXT:tt$=uu$+t$ 63002 PRINT" {cm a}";:FORi=1TOl:PRINT"{sh asterisk}";:NEXT:PRINT"{cm s}" 63003 PRINT" {sh -}";:FORi=1TOl:PRINT" ";:NEXT:PRINT"{reverse off}{sh -}" 63004 PRINT" {cm z}";:FORi=1TOl:PRINT"{sh asterisk}";:NEXT:PRINT"{cm x}":PRINT"{up*2}{right*2}{reverse on}{red}"; 63005 FORi=1TOl:PRINTMID$(tt$,i+1,l):PRINT"{up}{right*2}{reverse on}";:FORt=1TO50:NEXT 63006 NEXT:PRINT"{black}":RETURN 63100 bt$="{home}{down*24}" 63101 pt$="{red}{cm a}{sh asterisk*10}{cm s}{down}{left*12}{sh -}{right*10}{sh -}{down}{left*12}{cm z}{cm r}{sh asterisk*8}{cm r}{cm x}" 63102 pt$=pt$+"{down}{left*13}N{cm t*12}M{down}{left*14}{cm g}{=*12}{cm m}" 63103 pt$=pt$+"{down}{left*14}PO{cm t*10}PO{up*4}{left*12}" 63104 pt$=bt$+"{up*6}{right*26}"+pt$+"{black}" 63106 IFbp=0THENDIMb$(23):bp=1 63107 pp=50:b0=0:b1=23 63108 d$="{home}":FORi=1TO25:d$=d$+"{down}":NEXT 63109 r$="":FORi=1TO40:r$=r$+"{right}":NEXT 63198 sn=1030:IFPEEK(0)=47THENsn=2054 63199 RETURN 63200 FORi=1TO2:PRINTpt$"{space*10}" 63201 FORt=1TO50:NEXT 63202 PRINTpt$ms$ 63203 FORt=1TO50:NEXT:NEXT:RETURN 63300 GOSUB63200:FORt=1TO1000:NEXT:RETURN 63500 vs=VAL(sn$):vs=vs-1000:IFvs<1000THENvs=100 63510 sn$=MID$(STR$(vs),2):sn$=RIGHT$("{0*5}"+sn$,5):GOSUB63520:RUN 63520 GOSUB63198:FORi=1TO5:POKEsn+i-1,ASC(MID$(sn$,i,1)):NEXT:RETURN stop tok64 (bastext 1.0)