⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 command2.asm

📁 proteus 仿真实例
💻 ASM
字号:
*        name    COMMAND2
*        page
*
*
CESAVE:	EQU    *
	LDD    BASBEG	; GET POINTER TO THE START OF THE BASIC PROGRAM.
	CPD    BASEND	; IS THERE A PROGRAM IN MEMORY?
	BNE    CESAVE1	; YES. GO SAVE IT.
	RTS		; NO. RETURN.
CESAVE1:	LDD	VAREND
	SUBD	BASBEG
	CPD	EESIZE
	BLS	CESAVE5
	LDAA	#EETOSMAL
	JMP	RPTERR
CESAVE5:	LDX	EEStart	; point to the start of the EEPROM.
	LDY	#BASBEG
	LDAB	#4
	STAB	COUNT
CESAVE3:	LDD	0,Y
	SUBD	RAMSTART
	STAA	0,X
	JSR	DLY10MS
	INX
	TBA
	STAA	0,X
	JSR	DLY10MS
	INX
	INY
	INY
	DEC	COUNT
	BNE	CESAVE3
*
	LDD	0,Y
	STAA	0,X
	JSR	DLY10MS
	INX
	TBA
	STAA	0,X
	JSR	DLY10MS

*
	LDX	EEStart
	LDY	BASBEG
CESAVE4:	LDAA	0,Y
	STAA	SSTART,X
	JSR	DLY10MS
	INX
	INY
	CPY	VAREND
	BLS	CESAVE4
	RTS                    ;RETURN.
*
*
CELOAD:	EQU    *
	LDX	EEStart	; point to the start of the program storage EEPROM.
	LDY	#BASBEG	; point to the start of the program pointer storage area.
	LDAB	#4	; number of words to move.
	STAB	COUNT	; save the count.
CELOAD3:	LDD	0,X	; get the offset that was saved.
	ADDD	RAMSTART	; add the starting address of the RAM to it.
	STD	0,Y	; save the resulting pointer
	INX		; point to the next offset.
	INX
	INY		; point to the next pointer in RAM
	INY
	DEC	COUNT	; have we gotten all the pointers yet?
	BNE	CELOAD3	; no. keep going.
*
	LDD	0,X	; yes. get the high line number.
	STD	0,Y	; save it in RAM.

*
*	now load the actual program from EEPROM
*
	LDX	EEStart	; point to the start of the EEPROM
	LDY	BASBEG	; point to the start of the BASIC program buffer.
CELOAD4:	LDAA	SSTART,X	; get a byte of the program.
	STAA	0,Y	; put it in the program buffer.
	INX		; point to the next program byte
	INY		; point to the next buffer location.
	CPY	VAREND	; have we finished loading the program.
	BLS	CELOAD4	; no. keep loading.
	STY	STRASTG	; yes. initialize the array storage area.
	RTS		; RETURN.
	
*
*
CLLIST:	EQU    *
	LDAA   #$01	; USE DEVICE #1 FOR HARD COPY LISTING.
	STAA   DEVNUM
	JSR    CLIST	; GO DO A STANDARD LIST COMMAND.
	CLR    DEVNUM
	RTS		; RETURN.
*
*
*
CAUTOST:	EQU    *            ; SET AUTO START MODE FOR BASIC PROGRAM.
	LDAA   #$55         ; GET FLAG.
CAUTOST1:	LDX    EEStart
	STAA   AUTOSTF,x    ; PROGRAM IT INTO THE EEPROM
	JSR    DLY10MS      ; WAIT WHILE IT PROGRAMS.
	RTS                 ; RETURN.
*
*
*
CNOAUTO:	EQU    *
	LDAA   #$FF
	BRA    CAUTOST1
*
*
*
AUTOLOAD:	EQU	*
	 ldx	EESTART
	 LDD	EESTART
	 ADDD	#SSTART
	 STD	BASBEG 
	 LDD	EESTART
	 ADDD	SBASEND,x
	 ADDD	#SSTART
	 STD	BASEND
*
	 LDD	SVAREND,x
	 SUBD	SVARBEG,x
	 ADDD	RAMSTART
	 STD	VAREND
	 LDD	RAMSTART
	 STD	VARBEGIN
	 XGDY
	 LDD	EESTART
	 ADDD	SVARBEG,X
	 XGDX
	 BRA	CELOAD4
*
*
CFREE:		EQU	*
	JSR	NL2
	LDD	VARMEND
	SUBD	STRASTG
	JSR	OUTDECI
	JSR	NL
	RTS
*
*
CDUMP:		EQU	*
*	JSR	NL2		; PRINT TWO BLANK LINES.
*	CLR	DNAME+2		; ZERO THE LAST BYTE OF THE VARIABLE NAME 'ARRAY'
*	LDX	VARBEGIN		; POINT TO THE START OF THE VARIABLE TABLE.
*CDUMP2  LDAA	0,X		; GET AN ENTRY. IS IT THE END OF THE TABLE?
*        BNE	CDUMP3		; YES. WE'RE DONE.
	RTS
*CDUMP3	LDAA	1,X		; NO. GET THE FIRST CHARACTER OF THE NAME.
*	STAA	DNAME
*	LDAA	2,X
*	STAA	DNAME+1
*	LDX	#DNAME
*	JSR	PL
*	LDAA	0,X		; GET THE VARIABLE TOKEN.
*	CMPA	#IVARTOK		; IS IT AN INTEGER?
*	BEQ	CDUMP9		; YES. DUMP ITS VALUE.
;	CMPA	#IAVARTOK	; NO. IS IT AN INTEGER ARRAY?
;	BNE	CDUMP99		; NO.
*	LDD	3,X		; YES. GET THE POINTER TO THE ARRAY STORAGE. HAS IT BEEN DIMENSIONED?
*	BNE	CDUMP5		; YES. GO PRINT ALL THE VALUES.
*	LDX	#UNDIM
*	JSR	PL
*CDUMP6	LDAB	#5
*	ABX
*	BRA	CDUMP2
*CDUMP5	PSHX			; SAVE THE POINTER TO THE VARIABLE TABLE.
*	XGDX			; POINT TO THE ARRAY STORAGE AREA.
*	LDD	0,X		; GET THE MAXIMUM SUBSCRIPT.
*	STD	SUBMAX
*	CLRA
*	CLRB
*	STD	SUBCNT
*CDUMP77	LDAA	#'('
*	JSR	OUTBYTE
*	LDD	SUBCNT
*	JSR	OUTDECI
*	LDX	#CPEQ
*	JSR	PL
*	INX
*	INX
*	LDD	0,X
*	JSR	OUTDECI
*	JSR	NL
*	LDD	SUBCNT
*	ADDD	#1
*	CMPD	SUBMAX
*	BHI	CDUMP88
*	STD	SUBCNT
*	LDX	#DNAME
*	JSR	PL
*	BRA	CDUMP77
*CDUMP88	PULX
*	BRA	CDUMP6
*CDUMP9	LDAA	#'='
*	JSR	OUTBYTE
*	LDD	3,X
*	JSR	OUTDECI
*	JSR	NL
*	BRA	CDUMP6
*
*
*UNDIM	FCB	'=[?]',0
*CPEQ	FCB	')=',0

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -