PrintShopCompanion-Apple-II/PSC Source Disk 3 - Calenda.../S_ICAL1.txt

401 lines
6.5 KiB
Plaintext

TTL "S:ICAL"
; S:ICAL1
NOG
ORG = $7B00
;
; 09/13/85
; 12/05/85 last mod, full
; credit line
;
;-----------
BFZ EPZ $C0
;
ILINE EPZ BFZ
ICURFLAG EPZ BFZ+1
IEDYOFF EPZ BFZ+2
;-----------
;
; Common buffer routines.
;
; Print Shop Companion Calendar
;
; by Roland Gustafsson
; Copyright 1985
;
;-----------
ORG ORG
OBJ $800
;-----------
JMP CLRCOBUF
JMP GETTEXT
JMP PUTTEXT
JMP GETEDIT
JMP PUTEDIT
;
JMP MAKEDTXT
JMP MAKEWTXT
;
JMP TOPTEXT
JMP GTMTEXT
JMP GTWTEXT
JMP CREDIT
;
JMP DRAWBOX
;-----------
;
; Turn on the main bank of
; the $D000 area
; Clear the common buffer
;
CLRCOBUF LDY #0
TYA
^0 STA COBUFF,Y
INY
BNE <0
;
DEY
STY COLORFLG
;
LDY #DBUFFER
LDA /DBUFFER
STY DBUFENDL
STA DBUFENDH
RTS
;-----------
;
; Get pointer into DBUFFER
; BEQ if no data for this date
;
GETDPNT LDA DBUFPNTL,Y
STA TMP0
STA TMP2
LDA DBUFPNTH,Y
STA TMP1
STA TMP3
ORA TMP2
RTS
;-----------
;
; GETTEXT from DBUFFER into TEXTBUFF
; If empty, return CLC
;
GETTEXT JSR GETDPNT
BNE >0
STA TEXTBUFF
CLC
RTS
;
^0 LDY #0
^1 LDA (TMP2),Y
STA TEXTBUFF,Y
BEQ >2
INY
BNE <1
;
^2 SEC
RTS
;-----------
;
; PUTTEXT from TEXTBUFF to DBUFFER
;
PUTTEXT TYA
PHA
JSR REMTEXT
PLA
TAY
LDA TEXTBUFF
BNE >0
STA DBUFPNTL,Y
STA DBUFPNTH,Y
RTS
;
^0 LDA DBUFENDL
STA DBUFPNTL,Y
STA TMP0
LDA DBUFENDH
STA DBUFPNTH,Y
STA TMP1
;
LDY #0
^1 LDA TEXTBUFF,Y
STA (TMP0),Y
INC DBUFENDL
BNE >2
INC DBUFENDH
^2 INY
TAX
BNE <1
RTS
;-----------
;
; Remove data form DBUFFER, if any.
;
REMTEXT JSR GETDPNT
BEQ >9
;
; There is data, so calculate its
; length and then remove it.
;
; TMP0.1:start of text to be removed
; TMP2.3:next byte after text
; TMP4 :length (TMP2.3-TMP0.1)
;
LDA #0
STA TMP4
^0 LDY #0
LDA (TMP2),Y
INC TMP2
BNE *+4
INC TMP3
INC TMP4
TAY
BNE <0
;
; First fix pointers pointing above
; text just removed
;
LDX #DBUFCONT-1
^0 LDA DBUFPNTH,X
CMP TMP3
BNE >1
LDA DBUFPNTL,X
CMP TMP2
^1 BCC >2
LDA DBUFPNTL,X
SBC TMP4
STA DBUFPNTL,X
BCS >2
DEC DBUFPNTH,X
^2 DEX
BPL <0
;
; Now close up the space
;
^0 LDA TMP3
CMP DBUFENDH
BNE >1
LDA TMP2
CMP DBUFENDL
^1 BEQ >2
LDA (TMP2),Y
STA (TMP0),Y
INC TMP0
BNE *+4
INC TMP1
INC TMP2
BNE *+4
INC TMP3
BNE <0
;
; Update DBUFEND pointer
;
^2 SBC TMP4
STA DBUFENDL
BCS >9
DEC DBUFENDH
^9 RTS
;-----------
;
; Get EDITBUFF from DBUFFER.
;
; First get data into TEXTBUFF
;
GETEDIT JSR GETTEXT
;
; Clear EDITBUFF
;
LDY #0
^0 TYA
LDX #0
AND #%00011111
BNE *+4
LDX #$80
TXA
STA EDITBUFF,Y
INY
BNE <0
;
; Now unpack it into EDITBUFF
;
LDX #0-32
;
^1 LDA TEXTBUFF,Y
BEQ >4
BMI >3
^2 STA EDITBUFF,X
INX
INY
BNE <1
;
^3 PHA
TXA
CLC
ADC #32
AND #%11100000
TAX
PLA
BMI <2
;
^4 RTS
;-----------
;
; Move EDITBUFF into DBUFFER
;
PUTEDIT TYA
PHA
;
; First pack data into TEXTBUFF
;
LDX #0
LDY #0
^0 LDA EDITBUFF,X
STA TEXTBUFF,Y
BEQ >1
INX
INY
BNE <0
;
; Do next string
;
^1 TXA
CLC
ADC #32
AND #%11100000
TAX
BNE <0
;
; Now strip off trailing nulls.
;
^2 DEY
BMI >3
LDA TEXTBUFF,Y
BMI <2
;
; Store zero at end.
;
^3 INY
LDA #0
STA TEXTBUFF,Y
;
; Now do the actual move
;
PLA
TAY
JMP PUTTEXT
;-----------
;
; Convert date to decimal ASCII
;
MAKEDTXT LDY #0
STY DATETEXT+2
LDA DATE
CMP #10
BLT >1
LDX #$FF
;
^0 INX
SBC #10
BCS <0
ADC #10
ORA #'0'
TAY
TXA
^1 ORA #'0'
;
STA DATETEXT
STY DATETEXT+1
RTS
;-----------
;
; Given Y=0-6, make WEEKTEXT
;
MAKEWTXT LDX #$FF
^0 DEY
BMI >2
^1 INX
LDA MAKEWTX2,X
BNE <1
BEQ <0
;
^2 LDY #$FF
^3 INX
INY
LDA MAKEWTX2,X
STA WEEKTEXT,Y
BNE <3
RTS
;
MAKEWTX2 BYT 'SUNDAY',0
BYT 'MONDAY',0
BYT 'TUESDAY',0
BYT 'WEDNESDAY',0
BYT 'THURSDAY',0
BYT 'FRIDAY',0
BYT 'SATURDAY',0
;-----------
;
; Draw a box on the screen
; given X,Y: location (X is byte)
; A: height
;
; Automatically generates width based
; on X-coordinate.
;
DRAWBOX PHA
;
; W = 2*(20-X)
;
STX TMP0
LDA #20
SEC
SBC TMP0
ASL
STA TMP0
PLA
;---
;
; Enter here with TMP0=width
;
; H
DRAWBOX2 STA >0+5
STA >1+5
; X
STX >0+2
STX >2+1
STX >3+1
; X+W
DEX
TXA
CLC
ADC TMP0
STA >1+2
; Y
STY >0+3
STY >1+3
; Y-2
DEY
DEY
STY >2+2
; Y+H
TYA
ADC #2
ADC >0+5
STA >3+2
; W
LDA TMP0
STA >2+3
STA >3+3
;
JSR PRINT
^0 BYT RTOSANY,$07,0,0,1,0
^1 BYT RTOSANY,$70,0,0,1,0
^2 BYT RTOSWITE,0,0,0,2
^3 BYT RTOSWITE,0,0,0,2
BRK
RTS
;-----------
;
;
;
ICL "S:ICAL2"