þþ® X; **************X; * *X; * RAMCHECK *(X; * by *2X; * A. GIAMBRA *<X; * *FX; **************PX;ZX; OS EQUATESdX;n†RAMTOPj;;TOP OF MEMORYx†DOSVEC ;;DOS MENU VECTOR‚!†DOSINI ;;DOS INITIALIZATIONŒ†CRSINHð;;INHIBIT CURSOR–„PUTB ;;PUT CHARACTERS …ICCOMB;;OS I/O COMMANDª…ICBALD;;BUFFER ADDRESS´…ICBLLH;;BUFFER LENGTH¾„CIOVVä;;OS I/O ROUTINEÈ„GTIAÐ;;VIDEO CHIPÒ…POKEYÒ;;I/O CHIP܃PIAÓ;;PORTSæ…ANTICÔ;;SCREEN DISPLAYð †COLBAKÐ;;BACKGROUND COLORú †LINZBS‰WARMSTARTtäƒFROÔ;;FP REGISTERƒIFPªÙ;;INTEGER TO FP"ƒFPAæØ;;FP TO ASCII,†INBUFFó;;FP REGISTER6X;@X; WORK EQUATESJX;T …HEX300^‡HEX2C00,h‚IXË;;WORK INDEXrƒIX1Í;;WORK INDEX|„JUMPL;;MACHINE CODE JMP†‚CR›;;CARRIAGE RETURNƒTAB;;SCREEN TABš‚SP ;;SPACE¤X;®0¸X;Â…BEGIN=;;DISABLE INTERRUPTSÌQ>Ö>à"†CLRCHPP„GTIA9;;CLEAR THE CHIPSê P…POKEY9ô PƒPIA9þ P…ANTIC92 H†CLRCHPP†LINZBS;;1ST MEMORY BYTE&P†LINZBS0%>;;START AT 3RD BYTE:&†LOOPERQ†LINZBS;;GET PAGE NUMBERDP†COLBAK;;STORE IN COLORN…AGAINQ@†LINZBS7X5;;SAVE THE CONTENTSbQ>l,v …LOOP1P@†LINZBS7;;STORE VALUE€R@†LINZBS7;;SAME VALUE?Š F…LOOP2”'ƒIX1;;SAVE Y REGISTERž!…ERROR;;RAM ERROR¨X;²…LOOP2O>;;ADD 1¼H…LOOP1;;DO IT AGAINÆ7;;RESTORE CONTENTSÐ P@†LINZBS7Ú3;;BUMP TO NEXT ADDRESSä H…AGAINî#†LINZBS;;NEXT PAGEø Q†LINZBS;;LOAD PAGE NUMBER!…INDEXR>…HEX30;;START OF CODE? H†LOOPER;;NO, KEEP GOING'…ENDERQ>4‡HEX2C00;;POINT IX TO $2000 P‚IX*Q>5‡HEX2C004 P‚IX>Q>4†LOOPER;;POINT IX1 TOHPƒIX1;;OUR CODER Q>5†LOOPER\ PƒIX1f%>…ENDER†LOOPERp#ˆTRANSFERQ@ƒIX17;;MOVE CODE FROMzP@‚IX7;;$4000 TO $2C00„1Ž IˆTRANSFER˜%>…INDEX†LOOPER¢Q†RAMTOP;;MEMTOP VALUE¬P@‚IX7;;MODIFY COMPARE¶3;;POINT TO CODEÀ3;;AFTER 'ENDER'Ê 3;;LABELÔQ>„JUMP;;CHANGE OPERATORÞP@‚IX7;;TO JMPè3òQ>4‰WARMSTARTüP@‚IX7;;TARGET OF JMP3;;IS WARMSTARTQ>5‰WARMSTARTP@‚IX7;;MODIFY THE CODE$%>.Q>;;NOW POINT LINZBS8P†LINZBS;;TO $4000B Q>…HEX30LP†LINZBS;;AND CONTINUEV!,;;THE TEST`X;jtX;~…ERROR7;;RESTORE LASTˆP@†LINZBS7;;ADDRESS’Q>4†RETURN;;POINT DOSINIœP†DOSINI;;TO AN RTS¦ Q>5†RETURN°P†DOSINIºQ>4„BACK;;POINT DOSVECÄP†DOSVEC;;TO OUR CODEÎQ>5„BACK;;WARMSTART WILLØP†DOSVEC;;RETURN THEREâ ‰WARMSTART;;DO WARMSTARTì †RETURN:öX; „BACK, QƒIX1;;GET OFFSETO†LINZBS;;ADD MEM ADDRESSPƒFRO;;PUT IN FP REGISTER( D‡NOCARRY2#†LINZBS<‡NOCARRYQ†LINZBSF PƒFROP ƒIFP;;CONVERT TO FPZ ƒFPA;;CONVERT TO ASCIIdQ>4„ADDR;;POINT IX TOnP‚IX;;OUR BUFFERx Q>5„ADDR‚ P‚IXŒ%>– ‚DDQ@†INBUFF7;;GET THE NUMBER G‚OKªP@‚IX7;;PUT IN OUR BUFFER´3¾I‚DDÈ‚OKM>;;TURN OFF HIGH BITÒP@‚IX7;;SAVE LAST DIGITÜ$>;;CHANNEL 0 (EDITOR)æQ>„PUTB;;PUT BYTESð P…ICCOMúQ>4„MESG;;POINT TO OURP…ICBAL;;MESSAGE Q>5„MESG P…ICBAL"Q> ;;WRITE 32 CHARACTERS, P…ICBLL6Q>@ P…ICBLLJQ>;;TURN OFF CURSORT P†CRSINH^ „CIOV;;DO I/Oh‚DX!‚DX;;LOOP FOREVERrX;|!„MESG ‚CR=‚CR=‚CR=‚CR=‚CR=ƒTAB† €=ARAM ERROR AT A €=A‡ADDRESSAš ‚SP¤„ADDR ‚SP=‚SP=‚SP=‚SP=‚SP®X;¸à …BEGINÌ