NEW AUTO 3,1 .LIST OFF *-------------------------------------- DLG.Open >STYA ZPPTR2 lda (ZPPTR2) tay lda #0 >SYSCALL getmem bcs .99 >STYA ZPPTR1 txa >STA.G hDLG ldy #0 .1 lda (ZPPTR2),y sta (ZPPTR1),y iny tya cmp (ZPPTR2) bne .1 jsr DLG.SetOrigin sty TmpByte jsr SCRN.GotoXY bcs .9 ldy #S.DLG.Title jsr DLG.DrawInvBar .99 bcs .9 jsr SCRN.LineBufInitNorm jsr DLG.VBarToLineBuf ldy #S.DLG.W lda (ZPPTR1),y dec tax lda #C.SPACE .3 jsr SCRN.ToLineBuf dex bne .3 jsr DLG.VBarToLineBuf ldy #S.DLG.H lda (ZPPTR1),y dec dec tax .4 phx inc TmpByte ldy #S.DLG.X lda (ZPPTR1),y tax ldy TmpByte jsr SCRN.GotoXY bcs .9 jsr SCRN.LineBufOut bcs .9 plx dex bne .4 inc TmpByte ldy #S.DLG.X lda (ZPPTR1),y tax ldy TmpByte jsr SCRN.GotoXY bcs .9 ldy #S.DLG.Status jsr DLG.DrawInvBar bcs .9 ldy #S.DLG.Ctrls .5 lda (ZPPTR1),y beq .8 phy tya jsr DLG.CTRL.Draw ply bcs .9 iny bra .5 .8 ldy #S.DLG.Focus lda (ZPPTR1),y jsr DLG.CTRL.Focus clc .9 rts *-------------------------------------- DLG.Run >SYSCALL getchar bcs .9 cmp #3 beq .8 cmp #C.CR beq .8 cmp #C.TAB bne DLG.Run jsr DLG.NextFocus bcc DLG.Run rts .8 clc .9 DLG.Run.RTS rts *-------------------------------------- DLG.NextFocus ldy #S.DLG.Focus lda (ZPPTR1),y get actual focused Ctrl pha save it... tax .1 inx next one .2 txa tay lda (ZPPTR1),y Get Ctrl bne .3 end of list, get first ldx #S.DLG.Ctrls bra .2 .3 tay lda (ZPPTR1),y Get Ctrl Type beq .1 LBL txa ldy #S.DLG.Focus sta (ZPPTR1),y pla get old focused phx save new focused jsr DLG.CTRL.Focus pla jmp DLG.CTRL.Focus *-------------------------------------- DLG.Close ldy #S.DLG.H lda (ZPPTR1),y sta TmpCount ldy #S.DLG.Y lda (ZPPTR1),y sta TmpByte .1 >LDA.G ScreenY clc ldy #S.DLG.Y adc (ZPPTR1),y sta TmpIndex >LDA.G ScreenY+1 adc #0 sta TmpIndex+1 lda TmpIndex ldx TmpIndex+1 jsr BUF.GetLineAX bcs .8 lda TmpByte jsr SCRN.UpdateLineAtALenY inc TmpIndex bne .2 inc TmpIndex+1 .2 inc TmpByte dec TmpCount bne .1 .8 clc rts *-------------------------------------- DLG.CTRL.Draw sta TmpByte A=CtrlID tay lda (ZPPTR1),y Ctrl Definition tay lda (ZPPTR1),y Ctrl Type tax jmp (J.DLG.CTRL.Draw,x) *-------------------------------------- DLG.CTRL.Draw.LBL jsr SCRN.LineBufInitNorm jsr DLG.CTRL.GotoOrg bcs .9 ldy TmpByte CtrlID lda (ZPPTR1),y tay iny iny iny .1 lda (ZPPTR1),y beq .8 jsr SCRN.ToLineBuf iny bra .1 .8 jmp SCRN.LineBufOut .9 rts *-------------------------------------- DLG.CTRL.Draw.TB jsr SCRN.LineBufInitNorm jsr DLG.CTRL.GotoOrg bcs .9 ldy TmpByte lda (ZPPTR1),y tay iny iny iny iny iny lda (ZPPTR1),y tay lda (pData),y >SYSCALL getmemptr >STYA ZPPTR2 lda #C.SPACE jsr SCRN.ToLineBuf ldy #0 .1 lda (ZPPTR2),y beq .2 jsr SCRN.ToLineBuf iny bra .1 .2 tya tax ldy TmpByte lda (ZPPTR1),y tay iny iny iny iny .3 txa eor (ZPPTR1),y MAXCHAR beq .8 lda #C.SPACE jsr SCRN.ToLineBuf inx bra .3 .8 lda #C.SPACE jsr SCRN.ToLineBuf jmp SCRN.LineBufOut .9 rts *-------------------------------------- DLG.CTRL.Draw.OL jsr SCRN.LineBufInitNorm jsr DLG.CTRL.GotoOrg bcs .9 ldy TmpByte lda (ZPPTR1),y tay iny iny iny iny lda (ZPPTR1),y value sta TmpCount iny .1 lda #"(" jsr SCRN.ToLineBuf lda #"o" cpx TmpCount beq .2 lda #C.SPACE .2 jsr SCRN.ToLineBuf lda #")" jsr SCRN.ToLineBuf lda #C.SPACE jsr SCRN.ToLineBuf .3 lda (ZPPTR1),y beq .4 jsr SCRN.ToLineBuf iny bra .3 .4 lda #C.SPACE jsr SCRN.ToLineBuf .8 jmp SCRN.LineBufOut .9 rts *-------------------------------------- DLG.CTRL.Draw.BUT jsr SCRN.LineBufInitInv jsr DLG.CTRL.GotoOrg bcs .9 ldy TmpByte CtrlID lda (ZPPTR1),y tay iny iny iny iny lda #C.SPACE jsr SCRN.ToLineBuf .1 lda (ZPPTR1),y beq .8 jsr SCRN.ToLineBuf iny bra .1 .8 lda #C.SPACE jsr SCRN.ToLineBuf jmp SCRN.LineBufOut .9 rts *-------------------------------------- DLG.CTRL.Focus sta TmpByte A=CtrlID tay lda (ZPPTR1),y Ctrl Definition tay lda (ZPPTR1),y Ctrl Type tax jmp (J.DLG.CTRL.Focus,x) *-------------------------------------- DLG.CTRL.Focus.LBL clc rts DLG.CTRL.Focus.TB jsr DLG.CTRL.GotoOrg ldy #S.DLG.Focus lda (ZPPTR1),y eor TmpByte bne .1 sec .1 lda #C.SPACE bcc .2 lda #'[' .2 >SYSCALL putchar jsr DLG.CTRL.GotoEnd ldy #S.DLG.Focus lda (ZPPTR1),y eor TmpByte bne .3 sec .3 lda #C.SPACE bcc .4 lda #']' .4 >SYSCALL putchar ldy TmpByte CtrlID lda (ZPPTR1),y tay iny skip Ctrl Type lda (ZPPTR1),y clc ldy #S.DLG.X adc (ZPPTR1),y pha ldy TmpByte CtrlID lda (ZPPTR1),y tay iny iny iny pla sec +1 adc (ZPPTR1),y tax ldy TmpByte CtrlID lda (ZPPTR1),y tay iny skip Ctrl Type iny skip X lda (ZPPTR1),y clc ldy #S.DLG.Y adc (ZPPTR1),y tay jmp SCRN.GotoXY DLG.CTRL.Focus.OL jsr DLG.CTRL.GotoOrg ldy #S.DLG.Focus lda (ZPPTR1),y eor TmpByte bne .1 sec .1 lda #'(' bcc .2 lda #'[' .2 >SYSCALL putchar jsr DLG.CTRL.GotoEnd ldy #S.DLG.Focus lda (ZPPTR1),y eor TmpByte bne .3 sec .3 lda #')' bcc .4 lda #']' .4 >SYSCALL putchar clc rts DLG.CTRL.Focus.BUT jsr DLG.CTRL.GotoOrg ldy #S.DLG.Focus lda (ZPPTR1),y eor TmpByte bne .1 sec .1 lda #C.SPACE bcc .2 lda #'[' .2 >SYSCALL putchar jsr DLG.CTRL.GotoEnd ldy #S.DLG.Focus lda (ZPPTR1),y eor TmpByte bne .3 sec .3 lda #C.SPACE bcc .4 lda #']' .4 >SYSCALL putchar clc rts *-------------------------------------- DLG.CTRL.GotoOrg clc .HS B0 BCS DLG.CTRL.GotoEnd sec php ldy TmpByte CtrlID lda (ZPPTR1),y tay iny skip Ctrl Type lda (ZPPTR1),y clc ldy #S.DLG.X adc (ZPPTR1),y plp bcc .1 >PUSHA jsr DLG.CTRL.GetWitdh sec inc pData adc (pData) .1 tax ldy TmpByte CtrlID lda (ZPPTR1),y tay iny skip Ctrl Type iny skip X lda (ZPPTR1),y clc ldy #S.DLG.Y adc (ZPPTR1),y tay jmp SCRN.GotoXY *-------------------------------------- DLG.SetOrigin ldy #S.DLG.X lda (ZPPTR1),y bne .1 >LDA.G ScreenW ldy #S.DLG.W sec sbc (ZPPTR1),y lsr ldy #S.DLG.X sta (ZPPTR1),y .1 tax ldy #S.DLG.Y lda (ZPPTR1),y bne .2 >LDA.G ViewPortHm1 ldy #S.DLG.H sec sbc (ZPPTR1),y lsr ldy #S.DLG.Y sta (ZPPTR1),y .2 tay rts *-------------------------------------- DLG.CTRL.GetWitdh ldy TmpByte CtrlID lda (ZPPTR1),y tay lda (ZPPTR1),y tax jmp (J.DLG.CTRL.GetWitdh,x) *-------------------------------------- DLG.CTRL.GetWitdh.LBL clc rts DLG.CTRL.GetWitdh.TB iny iny iny iny lda (ZPPTR1),y rts DLG.CTRL.GetWitdh.OL lda #2 rts iny iny iny iny ldx #0 .1 inx iny lda (ZPPTR1),y bne .1 iny lda (ZPPTR1),y bne .1 txa rts DLG.CTRL.GetWitdh.BUT iny iny iny ldx #0 .1 inx iny lda (ZPPTR1),y bne .1 txa rts *-------------------------------------- DLG.DrawInvBar phy jsr SCRN.LineBufInitInv ldy #S.DLG.W lda (ZPPTR1),y tax ply lda (ZPPTR1),y tay .1 lda (ZPPTR1),y beq .11 jsr SCRN.ToLineBuf dex iny bra .1 .11 lda #C.SPACE .2 jsr SCRN.ToLineBuf dex bne .2 ldy #0 .3 lda SEQ.NORM,y beq .4 jsr SCRN.ToLineBuf iny bra .3 .4 jsr DLG.VBarToLineBuf jmp SCRN.LineBufOut *-------------------------------------- DLG.VBarToLineBuf lda #C.SO jsr SCRN.ToLineBuf lda #'x' jsr SCRN.ToLineBuf lda #C.SI jmp SCRN.ToLineBuf *-------------------------------------- MAN SAVE USR/SRC/BIN/EDIT.S.DLG LOAD USR/SRC/BIN/EDIT.S ASM