home *** CD-ROM | disk | FTP | other *** search
/ Antic Magazine 1989 April / Antic_Magazine_1989_04_Antic_Side_A.atr / minimon.m65 < prev    next >
Text File  |  2023-02-26  |  8KB  |  1 lines

  1. 0100 ; MINIMON¢0110 ; BY JOE KIMBROUGH¢0120 ; (c)1988, ANTIC PUBLISHING INC.¢0130 AFP =   $D800¢0140 BUFF1 = $0500¢0150 CH  =   $02FC¢0160 COLCRS = $55¢0170 CONSOL = $D01F¢0180 EOL =   $9B¢0190 FASC =  $D8E6¢0200 FPI =   $D9D2¢0210 IFP =   $D9AA¢0220 INVFLG = $02B6¢0230 KGB =   $F2FD¢0240 OUTCHAR = $F2B0¢0250 PR2 =   $34F3¢0260 ROWCRS = $54¢0270 ;¢0280     *=  $3400¢0290 STARTCODE¢0300     LDA $FCD8   ;800 or XL/XE?¢0310     CMP #$A2¢0320     BNE MAIN.MENU ;If not 800                            then proceed¢0330     LDA #$E2¢0340     STA OS.MOD.1+1¢0350     LDA #$A4¢0360     STA OS.MOD.2+1¢0370     LDA #$F6¢0380     STA OS.MOD.1+2¢0390     STA OS.MOD.2+2¢0400 MAIN.MENU¢0410     LDY #$00¢0420 LOOP.1¢0430     LDA MENU.TEXT,Y ;Print main                            menu¢0440     JSR PRINT.CHAR¢0450     INY ¢0460     CPY #$56¢0470     BNE LOOP.1¢0480 ;¢0490 PUTCUR¢0500     LDA #$15    ;Place cursor¢0510     STA COLCRS¢0520     LDA #$0C¢0530     STA ROWCRS¢0540     LDA #$20¢0550     JSR PRINT.CHAR¢0560     JSR GET.CHAR ;Get menu choice¢0570     CMP #'1¢0580     BNE DPE1¢0590 ;¢0600     JMP DOSPOKE ;Go to DOSPOKE¢0610 ;¢0620 DPE1¢0630     CMP #$32¢0640     BNE DPE2¢0650 ;¢0660     JMP DOSPEEK ;Go to DOSPEEK¢0670 ;¢0680 DPE2¢0690     CMP #'3¢0700     BNE PUTCUR¢0710 ;¢0720     LDA #$0C    ;Store keycode                       for EOL in CH for¢0730     STA CH      ;auto-[RETURN]                       after going back                      to DOS¢0740     RTS ¢0750 ;¢0760 DOSPOKE¢0770     LDY #$05    ;Clear ASCII                           input buffer¢0780     LDA #$00¢0790 LOOP.2¢0800     STA BUFF1,Y¢0810     DEY ¢0820     BNE LOOP.2¢0830 ;¢0840     LDY #$00¢0850 LOOP.3¢0860     LDA DOSPOKE.TEXT,Y ;Print                           DOSPOKE screen¢0870     JSR PRINT.CHAR¢0880     INY ¢0890     CPY #$3B¢0900     BNE LOOP.3¢0910 ;¢0920     LDA #$14    ;Place cursor¢0930     STA COLCRS¢0940     LDA #$01¢0950     STA ROWCRS¢0960     LDA #$20¢0970     JSR PRINT.CHAR¢0980     LDA #$03    ;Limit input                           to 3 digits¢0990     STA $CF¢1000     JSR KEYBD.INP ;Get POKE value                        [ASC->INT]¢1010     LDA $CC     ;Hi-byte > $FF ?¢1020     BNE DOSPOKE ;If not 0, then                        start over.¢1030     LDA $CB     ;Store low byte¢1040     STA $CE¢1050     LDA #$14    ;Place cursor¢1060     STA COLCRS¢1070     LDA #$03¢1080     STA ROWCRS¢1090     LDA #$20¢1100     JSR PRINT.CHAR¢1110     LDA #$05    ;Limit input to                        5 digits¢1120     STA $CF¢1130     JSR KEYBD.INP ;Get address                           [ASC->INT]¢1140     LDY #$00¢1150     LDA $CE     ;Get stored INT¢1160     STA ($CB),Y ;Put in addr.¢1170     JMP DOSPOKE ;Go back¢1180 ;¢1190 DOSPEEK¢1200     LDY #$05    ;Clear ASCII                           input buffer¢1210     LDA #$00¢1220 LOOP.4¢1230     STA BUFF1,Y¢1240     DEY ¢1250     BNE LOOP.4¢1260 ;¢1270     LDY #$00¢1280 LOOP.5¢1290     LDA DOSPEEK.TEXT,Y ;Print                           DOSPEEK screen¢1300     JSR PRINT.CHAR¢1310     INY ¢1320     CPY #$64¢1330     BNE LOOP.5¢1340 ;¢1350     LDA #$10    ;Place cursor¢1360     STA COLCRS¢1370     LDA #$02¢1380     STA ROWCRS¢1390     LDA #$20¢1400     JSR PRINT.CHAR¢1410     LDA #$05    ;Limit input to                        5 digits¢1420     STA $CF¢1430     JSR KEYBD.INP ;Get address                           [ASC->INT]¢1440     LDA #$10    ;Place cursor¢1450     STA COLCRS¢1460     LDA #$04¢1470     STA ROWCRS¢1480     LDA #$20¢1490     JSR PRINT.CHAR¢1500     LDY #$00¢1510     LDA ($CB),Y ;Get contents                          of address¢1520     STA $D4     ;Store lo-byte                         in FR0¢1530     LDA #$00¢1540     STA $D5     ;Put $00 in                            high byte FR0¢1550     JSR IFP     ;Convert INT->FP¢1560     JSR FASC    ;Convert FP->ASC¢1570     LDA $0580   ;Print ASCII¢1580     CMP #$30¢1590     BNE PR1¢1600 ;¢1610     INC PR2¢1620 PR1¢1630     LDY #$00¢1640 CPJ3¢1650     LDA $0580,Y¢1660     CMP #$80¢1670     BCC CPJ1¢1680 ;¢1690     EOR #$80¢1700 CPJ1¢1710     CMP #$2E¢1720     BEQ CPJ2¢1730 ;¢1740     JSR PRINT.CHAR¢1750     INY ¢1760     CPY #$07¢1770     BNE CPJ3¢1780 ;¢1790 CPJ2¢1800     LDA #$80¢1810     STA PR2¢1820     LDY #$06    ;Clear ASCII                           output buffer¢1830     LDA #$20¢1840 LOOP.6¢1850     STA $0580,Y¢1860     DEY ¢1870     BNE LOOP.6¢1880 ;¢1890     LDA #$9B¢1900     JSR PRINT.CHAR¢1910 CHECK.CONSOLE¢1920     LDA CONSOL  ;Check console                         keys¢1930     CMP #$03    ;Is it OPTION?¢1940     BNE CHECK.START¢1950 ;¢1960     JMP MAIN.MENU¢1970 ;¢1980 CHECK.START¢1990     CMP #$06    ;Is it START?¢2000     BNE CHECK.CONSOLE¢2010 ;¢2020     JMP DOSPEEK ;Re-run DOSPEEK¢2030 ;¢2040 ; -----------------------------¢2050 ; Keyboard Input/ASCII->Integer¢2060 ; -----------------------------¢2070 KEYBD.INP¢2080     LDY #$00¢2090 GET.KEY¢2100     JSR GET.CHAR ;Get a key¢2110     CMP #$1B    ;Is it ESC?¢2120     BNE CPJ4    ;If not, go on¢2130 ;¢2140     PLA         ;Clear stack of¢2150     PLA         ;return addr.¢2160     JMP MAIN.MENU¢2170 CPJ4¢2180     CMP #$9B¢2190     BEQ END.OF.LINE¢2200 ;¢2210     CMP #$7E    ;Backspace¢2220     BNE CHK9¢2230 ;¢2240     TAX ¢2250     DEY ¢2260     LDA #$00¢2270     STA BUFF1,Y¢2280     TXA ¢2290     CPY #$FF    ; Limit cursor                          travel¢2300     BEQ KEYBD.INP¢2310 ;¢2320     JSR PRINT.CHAR¢2330     JMP GET.KEY¢2340 ;¢2350 CHK9¢2360     CMP #$3A    ; Is it >9?¢2370     BCS GET.KEY ; If so, go back¢2380 ;¢2390     CMP #$30    ; Is it <0?¢2400     BCC GET.KEY ; If so, go back¢2410 ;¢2420     CPY $CF     ;Check inp limit¢2430     BNE DO.BUFFR¢2440 ;¢2450     LDA #$9B¢2460     JMP END.OF.LINE¢2470 ;¢2480 DO.BUFFR¢2490     JSR PRINT.CHAR¢2500     STA BUFF1,Y ; Store digit in                        ASCII buffer¢2510     INY ¢2520     JMP GET.KEY¢2530 ;¢2540 END.OF.LINE¢2550     JSR PRINT.CHAR¢2560     LDA #$00    ;Set up FR0¢2570     STA $F2¢2580     STA $F3¢2590     LDA #$05¢2600     STA $F4¢2610     JSR AFP     ; ASC -> FP¢2620     JSR FPI     ; FP -> INT¢2630     LDA $D4     ; Get lo-byte¢2640     STA $CB¢2650     LDA $D5     ; Get hi-byte¢2660     STA $CC¢2670     RTS ¢2680 ;¢2690 ;---------------¢2700 ; I/O ROUTINES¢2710 ;---------------¢2720 GET.CHAR¢2730     STY $CD     ;Save Y¢2740 OS.MOD.1¢2750     JSR KGB     ;Get char¢2760     CMP #$A0    ;Inverse video?¢2770     BCC NO.INV.VIDEO¢2780 ;¢2790     EOR #$80    ;Fix inv. video¢2800 NO.INV.VIDEO¢2810     LDX #$00    ;Disable inverse                       video key¢2820     STX INVFLG¢2830     LDY $CD     ;Restore Y¢2840     RTS ¢2850 ;¢2860 PRINT.CHAR¢2870     STY $CD     ;Save Y¢2880 OS.MOD.2¢2890     JSR OUTCHAR ;Print char¢2900     LDY $CD     ;Restore Y¢2910     RTS ¢2920 ;¢2930 ; ------ TEXT --------¢2940 ;¢2950 MENU.TEXT¢2960     .BYTE "}",EOL¢2970     .BYTE "          גנצá"¢2980     .BYTE "סדדי»סניד",EOL,EOL¢2990     .BYTE EOL,EOL,EOL¢3000     .BYTE "õ DOSPOKE",EOL,EOL¢3010     .BYTE "Ø DOSPEEK",EOL,EOL¢3020     .BYTE "ø EXIT TO DOS",EOL,EOL¢3030     .BYTE "Your choice:  ",EOL¢3040 DOSPOKE.TEXT¢3050     .BYTE "}",EOL¢3060     .BYTE "Poke the integer:",EOL,EOL¢3070     .BYTE "Into the address:",EOL,EOL,EOL¢3080     .BYTE "Press דצב to exit",EOL¢3090 DOSPEEK.TEXT¢3100     .BYTE "}[Press דצב to abort input]",EOL,EOL¢3110     .BYTE "Peek address:",EOL,EOL¢3120     .BYTE "Holds number:",EOL,EOL,EOL¢3130     .BYTE "נסקחנמ Main menu",EOL,EOL¢3140     .BYTE "צקIJפק  Re-run DOSPEEK",EOL¢3150     *=  $02E0¢3160     .WORD STARTCODE¢3170     .END ¢əəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəə