mirror of
https://github.com/photogrammer/PrintShopCompanion-Apple-II.git
synced 2024-09-27 09:55:09 +00:00
401 lines
6.5 KiB
Plaintext
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"
|