home *** CD-ROM | disk | FTP | other *** search
- E
- _ pROGRAM TO LIST LAZY GREENIUS ASSEMBLER PROGRAMS
-
- _ dEFINE A START LOCATION
-
- ORG $1350
-
- _ DEFINE THE STORAGE LOCATIONS USED
-
- LOADADDR = $2000
- BSOUT= $FFD2
- PO= $FA
- LO = $FC
- ENRES 2
- CTRES 2
- CBRES 2
- SAVEPORES 2
-
- _ cODE START
- _ INPUT IS a=FILENAME LENGTH
- _ x=FILENAME ADDRESS LOW
- _ y=FILENAME ADDRESS HIGH
- _ BANK WILL HAVE BEEN SET BEFORE THIS PROGRAM WAS CALLED
-
- $FFBD_ SET NAME
- #0
- #0
- $FF68_ SET BANK
- #0
- #8
- #0
- $FFBA_ SET LFS
- #0
- #>LOADADDR
- #<LOADADDR
- $FFD5_ LOAD
- ERROR
- {CBM-A} EN
- {CBM-E} EN+1
- DISPLAY
- ERROR{CBM-N}_ RETURN ERROR IN a
-
- _
- _ nOW WE DISPLAY THE SCREEN
- _
- DISPLAYEQU *
- #147
- BSOUT
- #1
- #>LOADADDR
- {CBM-P} PO
- {CBM-P} CT
- #<LOADADDR
- {CBM-P} PO+1
- {CBM-P} CT+1
- #0
- DISPSCREQU *
- [PO],Y
- #13
- NOCHECK
-
- #26
- EXITLINE
- NOCHECKEQU *
- OUTCHAR
- PO
- NOINC9
- PO+1
- NOINC9EQU *
- PO+1_ ASSUME THAT THERE IS AT LEAST ONE CHARACTER
- EN+1_ IN THE FILE AND THAT EN IS THE POSITION
- DISPSCR_ AFTER THIS CHARACTER SO PO COULD EQUAL EN
- PO_ AT SOME POINT IF WE REACH THE END BEFORE
- EN_ BEFORE THE END OF THE SCREEN
- DISPSCR
- EXITLINEEQU *_ END OF FILE OR LAST cr WOULD MEAN 26TH LINE
- PO
-
- #1
- {CBM-P} CB
- PO+1
- #0
- {CBM-P} CB+1
- _
- _ CONTROL THE INPUT
- _
- LOOPKEYEQU *
- #3
- LOOPDEL1EQU *
- #0
- LOOPDEL2EQU *
-
- LOOPDEL2
-
- LOOPDEL1
- $D4
- #83
- SCRDOWN
- #84
- SCRUP
- #7
- SHIFT
- #41
- PRT
- #57
- LOOPKEY
- #0
- {CBM-N}
- SHIFT $D3
- SCRUP
- #1
- SCRDOWN
- LOOPKEY
- PRT PRINT
- SCRUPEQU *
- CB+1_ IF CB < EN THEN SCROLL UP
- EN+1
- EXTRA3
- LOOPKEY
- SCROLLUP
- EXTRA3 CB
- EN
- LOOPKEY
- SCROLLUP
- _
- _ DO THE SCROLL DOWN LOGIC
- _
- SCRDOWNEQU *_ IF CT > LOADADDR THEN CONTINUE
- CT+1
- #<LOADADDR
- LOOPKEY_ IF CT(HIGH) < LOADADDR THEN CT < LOADADDR
- POSSIBLE_ IF CT(HIGH) = LOADADDR THEN POSSIBLE
- DODOWN_ DEFINITE
- POSSIBLE EQU *
- #>LOADADDR
- CT
- LOOPKEY
- DODOWNEQU *
- #27
- BSOUT
- #87
- BSOUT_ SCROLL THE SCREEN DOWN
- #19_ HOME THE CURSOR
- BSOUT
- _
- _ START OF THE LOGIC TO SCAN FOR THE PREVIOUS LINE
- _
- CT
- {CBM-D}
- {CBM-Q} #2
- {CBM-P} PO
- {CBM-P} SAVEPO
- CT+1
- {CBM-Q} #0
- {CBM-P} PO+1_ PO=CT-2 POINT PAST LAST CR
- {CBM-P} SAVEPO+1_ SAVE CT-2
- #0
- LOOPUP1EQU *_ LOCATE THE START OF THE LINE
- [PO],Y
- #13_ HAVE WE FOUND A cr
- FNDUP1_ YES SO STOP
- PO_ PO=PO-1
- PO
- #$FF
- NODEC1
- PO+1
- NODEC1EQU *
- PO+1_ IF PO <= LOADADDR THEN STOP
- #<LOADADDR
- SETSTART
- EXTRA1
- LOOPUP1
- EXTRA1EQU *
- PO
- #>LOADADDR
- LOOPUP1
- SETSTART EQU *
- #>LOADADDR
- {CBM-P} PO
- #<LOADADDR
- {CBM-P} PO+1
- NOINC1
-
- FNDUP1EQU *_ FOUND EITHER THE cr OR START OF TEXT
- PO_ POINT TO NEXT CHAR IF cr FOUND
- NOINC1_ IF START OF TEXT THEN WE WOULD HAVE GONE
- PO+1_ GONE PAST THE START BY 1 SO INCREMENT
- _
- _ IF PO > CT-2 THEN ALL WE FOUND WAS A CARRIAGE RETURN ON THE LAST LINE
- _ SO DON'T DISPLAY ANYTHING
- _
- NOINC1EQU *
- PO
- {CBM-P} CT
- PO+1
- {CBM-P} CT+1_ THIS WILL BE THE NEW CURRENT TOP
- SAVEPO+1
- PO+1
- LEAVE1
- EXTRA2
- DISP
- EXTRA2EQU *
- SAVEPO
- PO
- LEAVE1
- DISP EQU *
- [PO],Y
- OUTCHAR
- PO
- SAVEPO
- INCPO
- PO+1
- SAVEPO+1
- LEAVE1
- INCPOEQU *
- PO
- DISP
- PO+1
- DISP
- _
- _ DISPLAYED THE LINE IF >40 THEN WE WOULD HAVE HAD TO SCROLL DOWN TWICE
- _
- LEAVE1EQU *
- _
- _ tHIS LOGIC JUST LOOKS FOR THE CURRENT BOTTOM START OF LINE
- _
- CB
- {CBM-D}
- {CBM-Q} #2
- {CBM-P} PO
- CB+1
- {CBM-Q} #0
- {CBM-P} PO+1_ PO=CT-2 POINT PAST LAST CR
- #0
- LOOPUP2EQU *_ LOCATE THE START OF THE LINE
- [PO],Y
- #13
- FNDUP2
- PO
- PO
- #$FF
- LOOPUP2
- PO+1
- LOOPUP2
- FNDUP2EQU *
- PO
- NOINC2
- PO+1
- NOINC2EQU *
- PO
- {CBM-P} CB
- PO+1
- {CBM-P} CB+1
- LOOPKEY
-
- _
- _ HERE IS THE LOGIC TO SCROLL UP.
- _
- SCROLLUPEQU *
- #27
- BSOUT
- #86
- BSOUT_ SCROLL UP
- #19
- BSOUT_ HOME CURSOR
- #24_ 24 CURSOR DOWNS
- #17
- LOOPCUREQU *
- BSOUT
-
- LOOPCUR
- _
- _ HERE WE GO...
- _
- CB
- {CBM-P} PO
- CB+1
- {CBM-P} PO+1
- #0
- LOOPITEQU *
- [PO],Y
- #13
- LEAVE4
- OUTCHAR
- PO
- CHECK2
- PO+1
- CHECK2EQU *
- PO+1
- EN+1
- LOOPIT
- EXTRA4
- LEAVE4
- EXTRA4EQU *
- PO
- EN
- LOOPIT
- LEAVE4EQU *
- PO
- NOINC4
- PO+1
- NOINC4EQU *
- PO
- {CBM-P} CB
- PO+1
- {CBM-P} CB+1
- _
- _ LINE NOW DISPLAYED SO LETS LOCATE THE CURRENT TOP
- _
- CT
- {CBM-P} PO
- CT+1
- {CBM-P} PO+1
- LOOP5EQU *
- [PO],Y
- PO
- FORWARD
- PO+1
- FORWARDEQU *
- #13
- LOOP5
- PO
- {CBM-P} CT
- PO+1
- {CBM-P} CT+1
- LOOPKEY
- _
- _ nOW OUTPUT CHARACTERS AND CONVERT THE TOKENS
- _
- OUTCHAREQU *
- {CBM-A} SAVEX
- {CBM-E} SAVEY
- #128
- CONVERT
- BSOUT
- EXITCHAREQU *
- SAVEX
- SAVEY
- {CBM-N}
- CONVERTEQU *
- {CBM-D}
- {CBM-Q} #128
- {CBM-R}
- #>TABLE
- {CBM-P} LO
- #<TABLE
- {CBM-P} LO+1
- #0
- OUTIT
- LOOP9EQU *
- LO
-
- #3
- {CBM-P} LO
- LO+1
- #0
- {CBM-P} LO+1
-
- LOOP9
- OUTITEQU *
- #0
- LOOP8EQU *
- [LO],Y
- BSOUT
- EXITCHAR
-
- #3
- LOOP8
- _ SET A GOOD RETURN CODE
- EXITCHAR
- TABLE EQU *
- DB "ADCANDASLBCCBCSBEQBITBMIBNEBPLBRKBVCBVSCLCCLDCLICLVCMPCPXCPY"
- DB "DECDEXDEYEORINCINXINYJMPJSRLDALDXLDYLSRNOPORAPHAPHPPLAPLPROL"
- DB "RORRTIRTSSBCSECSEDSEISTASTXSTYTAXTAYTSXTXATXSTYA"
- SAVEXRES 1
- SAVEYRES 1
-
- _
- _ ROUTINE TO PRINT FROM LOADADDR TO EN
- _
- PRINTEQU *
- #0_ SET LENGTH TO ZERO
- $FFBD
- #1
- #4
- #7
- $FFBA_ SET lfs
- $FFC0_ OPEN THE FILE
- PRTCONT1
- PRTERROR1EQU *
- LOOPKEY
- PRTCONT1EQU *
- #1
- $FFC9_ bsout ROUTED THE LOGICAL FILE NUMBER DEF
- PRTCONT2
- PRTERROR2 EQU *
- #1
- $FFC3_ CLOSE THE la
- PRTERROR1
- PRTCONT2 EQU *
- #>LOADADDR
- {CBM-P} PO
- #<LOADADDR
- {CBM-P} PO+1
- #0
- LOOPPRTEQU *
- PO
- EN
- INCLOOP
- PO+1
- EN+1
- PRTFIN
- INCLOOP EQU *
- [PO],Y
- OUTCHAR
- PRTFIN
- $D4
- #13_ S KEY PRESSED ?
- PRTFIN
- PO
- LOOPPRT
- PO+1
- LOOPPRT
- PRTFINEQU *
- $FFCC_ RESET THE CHANNELS
- PRTERROR2_ RESET BSOUT AND CLOSE THE FILE AND EXIT
-
-
- O