home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Antic Magazine 1988 October
/
Antic_Magazine_1988_10_Antic_Side_A.atr
/
xeprint.m65
< prev
Wrap
Text File
|
2023-02-26
|
4KB
|
1 lines
0100 ;XEPRINT SOURCE CODE¢0110 ;XEP-PRINT USR ROUTINE¢0120 ; FUNCTION:¢0130 ; A=USR(XEPRINT, X, Y, ADR(A$),¢0140 ; LEN(A$) )¢0150 ;¢0160 ; Using direct screen RAM access,¢0170 ;write the string pointed to¢0180 ;on the graphics mode 0 display.¢0190 ; Handle CHR$(125), clear screen¢0200 ;properly, but all other chars¢0210 ;are printed. No editing, etc.¢0220 ; 30 A=USR(XEPFREAD, "D:PIC.GR8", ADR(BUF$))¢0230 SAVMSC = 88 ;Screen RAM pointer¢0240 RETURN = 155 ;Carraige Return¢0250 CLEAR = 125 ;clear screen¢0260 STRING = $D0 ; String pointer¢0270 STRLEN = STRING+2 ; String counter, 2 bytes¢0280 XPOS = STRLEN+2 ; xpos of cursor¢0290 YPOS = XPOS+1 ;ypos of cursor¢0300 PUTADR = YPOS+1 ;2byte screen pointer¢0310 ORGADR = PUTADR+2 ; Save original PUTADR here¢0320 CLRADR = ORGADR+2 ; Working register to clear screen¢0330 TEMP = CLRADR+2 ; Work, convert ASCII to internal¢0340 *= $0600¢0350 PLA ¢0360 CMP #$04¢0370 BEQ BEG1¢0380 ;¢0390 TAX ¢0400 BEQ LEAVE¢0410 ;¢0420 LOOPEM¢0430 PLA ¢0440 PLA ¢0450 DEX ¢0460 BNE LOOPEM¢0470 ;¢0480 LEAVE¢0490 RTS ¢0500 BEG1¢0510 LDA #$00¢0520 STA PUTADR¢0530 STA PUTADR+1¢0540 PLA ¢0550 PLA ¢0560 STA XPOS¢0570 PLA ¢0580 PLA ¢0590 STA YPOS¢0600 TAX ¢0610 BEQ NOADD¢0620 ;¢0630 BY40¢0640 LDA #40¢0650 CLC ¢0660 ADC PUTADR¢0670 STA PUTADR¢0680 BCC BY40A¢0690 ;¢0700 INC PUTADR+1¢0710 BY40A¢0720 DEX ¢0730 BNE BY40¢0740 ;¢0750 NOADD¢0760 LDA XPOS¢0770 CLC ¢0780 ADC PUTADR¢0790 STA PUTADR¢0800 BCC SAVEIT¢0810 ;¢0820 INC PUTADR+1¢0830 SAVEIT ; Save orig. put addr¢0840 ;¢0850 ; Save start PUT address¢0860 ;¢0870 CLC ¢0880 LDA SAVMSC¢0890 ADC PUTADR¢0900 STA PUTADR¢0910 STA ORGADR¢0920 LDA SAVMSC+1¢0930 ADC PUTADR+1¢0940 STA PUTADR+1¢0950 STA ORGADR+1¢0960 ;¢0970 ; Get string address¢0980 ;¢0990 PLA ¢1000 STA STRING+1¢1010 PLA ¢1020 STA STRING¢1030 PLA ; get string len¢1040 STA STRLEN+1¢1050 PLA ¢1060 STA STRLEN¢1070 ;¢1080 ; All inits complete, now¢1090 ;get the string handling¢1100 ;RETURN and CLEAR screen¢1110 ;chars. properly.¢1120 ;¢1130 PRINT¢1140 LDY #$00 ;Always zero here¢1150 SEC ;DECREMENT, DONE TEST FIRST¢1160 LDA STRLEN¢1170 SBC #$01¢1180 STA STRLEN¢1190 BCS PRINT1¢1200 ;¢1210 LDA STRLEN+1 ;ALL DONE?¢1220 BEQ EXITNOW¢1230 ;¢1240 DEC STRLEN+1¢1250 PRINT1¢1260 LDA (STRING),Y¢1270 CMP #RETURN¢1280 BEQ RETURNIT¢1290 ;¢1300 CMP #CLEAR¢1310 BEQ CLEARIT¢1320 ;¢1330 STA TEMP¢1340 AND #$7F ; Forget invid¢1350 TAX ; Convert to screen¢1360 CPX #$60¢1370 BCS PUTNOW¢1380 ;¢1390 LDA #$40¢1400 CPX #$20 ; ASC<32 THEN ADD 64¢1410 BCC ADCV¢1420 ;¢1430 LDA #$E0 ; $E0 = -32 32<ASC<96¢1440 ADCV¢1450 CLC ¢1460 ADC TEMP¢1470 STA TEMP¢1480 PUTNOW ; Store converted¢1490 LDA TEMP¢1500 STA (PUTADR),Y ;char on¢1510 INC PUTADR ; screen¢1520 BNE NEXCHAR¢1530 ;¢1540 INC PUTADR+1¢1550 NEXCHAR ; NEXT SCREEN CHARACTER¢1560 INC STRING¢1570 BNE PRINT¢1580 ;¢1590 INC STRING+1¢1600 BNE PRINT ;CONTINUE¢1610 ;¢1620 EXITNOW ; Go home¢1630 RTS ¢1640 ;¢1650 CLEARIT¢1660 LDA SAVMSC¢1670 STA CLRADR¢1680 LDA SAVMSC+1¢1690 STA CLRADR+1¢1700 LDX #$03 ; 3*256 = 768 OF 960¢1710 LDA #$00¢1720 CLEAR3¢1730 STA (CLRADR),Y¢1740 INY ¢1750 BNE CLEAR3¢1760 ;¢1770 INC CLRADR+1¢1780 DEX ¢1790 BNE CLEAR3¢1800 ;¢1810 CLEAR4¢1820 STA (CLRADR),Y¢1830 INY ¢1840 CPY #192 ; Last 192 bytes¢1850 BNE CLEAR4¢1860 ;¢1870 LDY #$00¢1880 BEQ NEXCHAR ; Continue¢1890 ;¢1900 RETURNIT ; Use xpos for column¢1910 CLC ¢1920 LDA #40¢1930 ADC ORGADR¢1940 STA ORGADR¢1950 BCC RET1¢1960 ;¢1970 INC ORGADR+1¢1980 RET1¢1990 LDA ORGADR¢2000 STA PUTADR¢2010 LDA ORGADR+1¢2020 STA PUTADR+1¢2030 CLC ¢2040 BCC NEXCHAR¢2050 ;¢2060 .END ¢əəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəə