Code cleanup / reformat
Add changes from official 0.3 release Add examples Add missing data.dat
This commit is contained in:
2
examples/add.hex
Normal file
2
examples/add.hex
Normal file
@@ -0,0 +1,2 @@
|
||||
:0600000074FF240180FCE6
|
||||
:00000001FF
|
||||
303
examples/mtask.asm
Normal file
303
examples/mtask.asm
Normal file
@@ -0,0 +1,303 @@
|
||||
$mod851
|
||||
|
||||
state EQU 7fh
|
||||
tmp EQU 7eh
|
||||
|
||||
org 0000h
|
||||
ljmp start
|
||||
org 000bh
|
||||
t0int: ljmp task_switch
|
||||
|
||||
org 0060h
|
||||
start: mov A,TMOD
|
||||
anl A,#11111000b
|
||||
orl A,#1
|
||||
mov TMOD,A ; T0 mode = 1
|
||||
mov TL0,#0
|
||||
mov TH0,#0ffh
|
||||
mov state,#00h
|
||||
setb TR0 ; T0 enable
|
||||
setb ET0 ; T0 int enable
|
||||
setb EA ; enable int
|
||||
task1: xrl P1,#0fh
|
||||
mov A,#080h
|
||||
lcall delay
|
||||
sjmp task1
|
||||
|
||||
task2: xrl P1,#0f0h
|
||||
mov A,#0ffh
|
||||
lcall delay
|
||||
sjmp task2
|
||||
|
||||
delay: djnz Acc,delay
|
||||
ret
|
||||
|
||||
;========================================
|
||||
|
||||
task_switch:
|
||||
push DPH
|
||||
push DPL
|
||||
push Acc
|
||||
mov A,state
|
||||
jz ts_go
|
||||
ljmp rev
|
||||
|
||||
ts_go: pop Acc ; Acc
|
||||
mov DPTR,#t1inf
|
||||
movx @DPTR,A
|
||||
|
||||
pop Acc ; DPL
|
||||
inc DPTR
|
||||
movx @DPTR,A
|
||||
|
||||
pop Acc ; DPH
|
||||
inc DPTR
|
||||
movx @DPTR,A
|
||||
|
||||
inc DPTR ; B
|
||||
mov A,B
|
||||
movx @DPTR,A
|
||||
|
||||
inc DPTR ; PSW
|
||||
mov A,PSW
|
||||
movx @DPTR,A
|
||||
|
||||
pop Acc ; PC
|
||||
inc DPTR
|
||||
movx @DPTR,A
|
||||
pop Acc
|
||||
inc DPTR
|
||||
movx @DPTR,A
|
||||
|
||||
inc DPTR ; SP
|
||||
mov A,SP
|
||||
movx @DPTR,A
|
||||
|
||||
inc DPTR ; adr: 00h
|
||||
mov A,R0
|
||||
movx @DPTR,A
|
||||
|
||||
mov B,#6fh ; adr: 01h-6fh
|
||||
mov R0,#01h
|
||||
ts_l1: inc DPTR
|
||||
mov A,@R0
|
||||
movx @DPTR,A
|
||||
inc R0
|
||||
djnz B,ts_l1
|
||||
|
||||
;------------
|
||||
|
||||
mov DPTR,#(t2inf_end-1)
|
||||
|
||||
mov B,#6fh ; adr: 01-6f
|
||||
mov R0,#6fh
|
||||
ts_l2: movx A,@DPTR
|
||||
mov @R0,A
|
||||
dec R0
|
||||
mov tmp,A
|
||||
lcall dec_dptr
|
||||
mov A,tmp
|
||||
djnz B,ts_l2
|
||||
|
||||
movx A,@DPTR
|
||||
mov R0,A ; adr: 00
|
||||
|
||||
lcall dec_dptr ; SP
|
||||
movx A,@DPTR
|
||||
mov SP,A
|
||||
|
||||
lcall dec_dptr ; PC
|
||||
movx A,@DPTR
|
||||
push Acc
|
||||
lcall dec_dptr
|
||||
movx A,@DPTR
|
||||
push Acc
|
||||
|
||||
lcall dec_dptr ; PSW
|
||||
movx A,@DPTR
|
||||
mov PSW,A
|
||||
|
||||
lcall dec_dptr ; B
|
||||
movx A,@DPTR
|
||||
mov B,A
|
||||
|
||||
lcall dec_dptr ; DPH
|
||||
movx A,@DPTR
|
||||
push Acc
|
||||
lcall dec_dptr ; DPL
|
||||
movx A,@DPTR
|
||||
push Acc
|
||||
|
||||
lcall dec_dptr ; Acc
|
||||
movx A,@DPTR
|
||||
|
||||
pop DPL
|
||||
pop DPH
|
||||
|
||||
mov state,#0ffh
|
||||
mov TL0,#0
|
||||
mov TH0,#0ffh
|
||||
reti
|
||||
;-=-=-=-=-=-=-=-=-
|
||||
rev:
|
||||
pop Acc ; Acc
|
||||
mov DPTR,#t2inf
|
||||
movx @DPTR,A
|
||||
|
||||
pop Acc ; DPL
|
||||
inc DPTR
|
||||
movx @DPTR,A
|
||||
|
||||
pop Acc ; DPH
|
||||
inc DPTR
|
||||
movx @DPTR,A
|
||||
|
||||
inc DPTR ; B
|
||||
mov A,B
|
||||
movx @DPTR,A
|
||||
|
||||
inc DPTR ; PSW
|
||||
mov A,PSW
|
||||
movx @DPTR,A
|
||||
|
||||
pop Acc ; PC
|
||||
inc DPTR
|
||||
movx @DPTR,A
|
||||
pop Acc
|
||||
inc DPTR
|
||||
movx @DPTR,A
|
||||
|
||||
inc DPTR ; SP
|
||||
mov A,SP
|
||||
movx @DPTR,A
|
||||
|
||||
inc DPTR ; adr: 00h
|
||||
mov A,R0
|
||||
movx @DPTR,A
|
||||
|
||||
mov B,#6fh ; adr: 01h-6fh
|
||||
mov R0,#01h
|
||||
ts_l3: inc DPTR
|
||||
mov A,@R0
|
||||
movx @DPTR,A
|
||||
inc R0
|
||||
djnz B,ts_l3
|
||||
|
||||
;------------
|
||||
|
||||
mov DPTR,#(t1inf_end-1)
|
||||
|
||||
mov B,#6fh ; adr: 01-6f
|
||||
mov R0,#6fh
|
||||
ts_l4: movx A,@DPTR
|
||||
mov @R0,A
|
||||
dec R0
|
||||
mov tmp,A
|
||||
lcall dec_dptr
|
||||
mov A,tmp
|
||||
djnz B,ts_l4
|
||||
|
||||
movx A,@DPTR
|
||||
mov R0,A ; adr: 00
|
||||
|
||||
lcall dec_dptr ; SP
|
||||
movx A,@DPTR
|
||||
mov SP,A
|
||||
|
||||
lcall dec_dptr ; PC
|
||||
movx A,@DPTR
|
||||
push Acc
|
||||
lcall dec_dptr
|
||||
movx A,@DPTR
|
||||
push Acc
|
||||
|
||||
lcall dec_dptr ; PSW
|
||||
movx A,@DPTR
|
||||
mov PSW,A
|
||||
|
||||
lcall dec_dptr ; B
|
||||
movx A,@DPTR
|
||||
mov B,A
|
||||
|
||||
lcall dec_dptr ; DPH
|
||||
movx A,@DPTR
|
||||
push Acc
|
||||
lcall dec_dptr ; DPL
|
||||
movx A,@DPTR
|
||||
push Acc
|
||||
|
||||
lcall dec_dptr ; Acc
|
||||
movx A,@DPTR
|
||||
|
||||
pop DPL
|
||||
pop DPH
|
||||
|
||||
mov state,#00h
|
||||
mov TL0,#0
|
||||
mov TH0,#0ffh
|
||||
reti
|
||||
|
||||
;========================================
|
||||
dec_dptr:
|
||||
dec DPL
|
||||
mov A,DPL
|
||||
cjne A,#0ffh,decdp_lab1
|
||||
dec DPH
|
||||
decdp_lab1:
|
||||
ret
|
||||
;========================================
|
||||
org 8000h
|
||||
t1inf:
|
||||
db 00 ; Acc
|
||||
db 00 ; DPL
|
||||
db 00 ; DPH
|
||||
db 00 ; B
|
||||
db 00 ; PSW
|
||||
dw 00 ; PC
|
||||
db 07 ; SP
|
||||
db 0,0,0,0,0,0,0,0 ; R0-R7 (from adress: 00h)
|
||||
db 0,0,0,0,0,0,0,0 ; Stack
|
||||
db 0,0,0,0,0,0,0,0
|
||||
db 0,0,0,0,0,0,0,0
|
||||
db 0,0,0,0,0,0,0,0
|
||||
db 0,0,0,0,0,0,0,0
|
||||
db 0,0,0,0,0,0,0,0
|
||||
db 0,0,0,0,0,0,0,0
|
||||
db 0,0,0,0,0,0,0,0
|
||||
db 0,0,0,0,0,0,0,0
|
||||
db 0,0,0,0,0,0,0,0
|
||||
db 0,0,0,0,0,0,0,0
|
||||
db 0,0,0,0,0,0,0,0
|
||||
db 0,0,0,0,0,0,0,0 ; (to adress: 6fh)
|
||||
t1inf_end:
|
||||
|
||||
|
||||
t2inf:
|
||||
db 00 ; Acc
|
||||
db 00 ; DPL
|
||||
db 00 ; DPH
|
||||
db 00 ; B
|
||||
db 00 ; PSW
|
||||
dw task2 ; PC
|
||||
db 07 ; SP
|
||||
db 0,0,0,0,0,0,0,0 ; R0-R7 (from adress: 00h)
|
||||
db 0,0,0,0,0,0,0,0 ; Stack
|
||||
db 0,0,0,0,0,0,0,0
|
||||
db 0,0,0,0,0,0,0,0
|
||||
db 0,0,0,0,0,0,0,0
|
||||
db 0,0,0,0,0,0,0,0
|
||||
db 0,0,0,0,0,0,0,0
|
||||
db 0,0,0,0,0,0,0,0
|
||||
db 0,0,0,0,0,0,0,0
|
||||
db 0,0,0,0,0,0,0,0
|
||||
db 0,0,0,0,0,0,0,0
|
||||
db 0,0,0,0,0,0,0,0
|
||||
db 0,0,0,0,0,0,0,0
|
||||
db 0,0,0,0,0,0,0,0 ; (to adress: 6fh)
|
||||
t2inf_end:
|
||||
|
||||
END
|
||||
|
||||
|
||||
|
||||
|
||||
308
examples/mtask2.asm
Normal file
308
examples/mtask2.asm
Normal file
@@ -0,0 +1,308 @@
|
||||
$mod851
|
||||
|
||||
state EQU 7fh
|
||||
tmp EQU 7eh
|
||||
|
||||
org 0000h
|
||||
ljmp start
|
||||
|
||||
org 000bh
|
||||
t0int: ljmp task_switch
|
||||
|
||||
org 0060h
|
||||
start: clr EA
|
||||
mov A,TMOD
|
||||
anl A,#11111000b
|
||||
orl A,#1
|
||||
mov TMOD,A ; T0 mode = 1
|
||||
mov TL0,#0
|
||||
mov TH0,#0f0h
|
||||
mov state,#00h
|
||||
setb TR0 ; T0 enable
|
||||
setb ET0 ; T0 int enable
|
||||
setb EA ; enable int
|
||||
|
||||
task1: xrl P1,#0fh
|
||||
|
||||
mov B,#070h
|
||||
t1l2: mov A,#0ffh
|
||||
t1l1: djnz Acc,t1l1
|
||||
djnz B,t1l2
|
||||
|
||||
sjmp task1
|
||||
|
||||
task2: xrl P1,#0f0h
|
||||
|
||||
mov B,#030h
|
||||
t2l2: mov A,#0ffh
|
||||
t2l1: djnz Acc,t2l1
|
||||
djnz B,t2l2
|
||||
|
||||
sjmp task2
|
||||
|
||||
;========================================
|
||||
|
||||
task_switch:
|
||||
push DPH
|
||||
push DPL
|
||||
push Acc
|
||||
mov A,state
|
||||
jz ts_go
|
||||
ljmp rev
|
||||
|
||||
ts_go: pop Acc ; Acc
|
||||
mov DPTR,#t1inf
|
||||
movx @DPTR,A
|
||||
|
||||
pop Acc ; DPL
|
||||
inc DPTR
|
||||
movx @DPTR,A
|
||||
|
||||
pop Acc ; DPH
|
||||
inc DPTR
|
||||
movx @DPTR,A
|
||||
|
||||
inc DPTR ; B
|
||||
mov A,B
|
||||
movx @DPTR,A
|
||||
|
||||
inc DPTR ; PSW
|
||||
mov A,PSW
|
||||
movx @DPTR,A
|
||||
|
||||
pop Acc ; PC
|
||||
inc DPTR
|
||||
movx @DPTR,A
|
||||
pop Acc
|
||||
inc DPTR
|
||||
movx @DPTR,A
|
||||
|
||||
inc DPTR ; SP
|
||||
mov A,SP
|
||||
movx @DPTR,A
|
||||
|
||||
inc DPTR ; adr: 00h
|
||||
mov A,R0
|
||||
movx @DPTR,A
|
||||
|
||||
mov B,#6fh ; adr: 01h-6fh
|
||||
mov R0,#01h
|
||||
ts_l1: inc DPTR
|
||||
mov A,@R0
|
||||
movx @DPTR,A
|
||||
inc R0
|
||||
djnz B,ts_l1
|
||||
|
||||
;------------
|
||||
|
||||
mov DPTR,#(t2inf_end-1)
|
||||
|
||||
mov B,#6fh ; adr: 01-6f
|
||||
mov R0,#6fh
|
||||
ts_l2: movx A,@DPTR
|
||||
mov @R0,A
|
||||
dec R0
|
||||
lcall dec_dptr
|
||||
djnz B,ts_l2
|
||||
|
||||
movx A,@DPTR
|
||||
mov R0,A ; adr: 00
|
||||
|
||||
lcall dec_dptr ; SP
|
||||
movx A,@DPTR
|
||||
mov SP,A
|
||||
|
||||
lcall dec_dptr ; PC
|
||||
movx A,@DPTR
|
||||
push Acc
|
||||
lcall dec_dptr
|
||||
movx A,@DPTR
|
||||
push Acc
|
||||
|
||||
lcall dec_dptr ; PSW
|
||||
movx A,@DPTR
|
||||
mov PSW,A
|
||||
|
||||
lcall dec_dptr ; B
|
||||
movx A,@DPTR
|
||||
mov B,A
|
||||
|
||||
lcall dec_dptr ; DPH
|
||||
movx A,@DPTR
|
||||
push Acc
|
||||
lcall dec_dptr ; DPL
|
||||
movx A,@DPTR
|
||||
push Acc
|
||||
|
||||
lcall dec_dptr ; Acc
|
||||
movx A,@DPTR
|
||||
|
||||
pop DPL
|
||||
pop DPH
|
||||
|
||||
mov state,#0ffh
|
||||
mov TL0,#0
|
||||
mov TH0,#0f0h
|
||||
reti
|
||||
;-=-=-=-=-=-=-=-=-
|
||||
rev:
|
||||
pop Acc ; Acc
|
||||
mov DPTR,#t2inf
|
||||
movx @DPTR,A
|
||||
|
||||
pop Acc ; DPL
|
||||
inc DPTR
|
||||
movx @DPTR,A
|
||||
|
||||
pop Acc ; DPH
|
||||
inc DPTR
|
||||
movx @DPTR,A
|
||||
|
||||
inc DPTR ; B
|
||||
mov A,B
|
||||
movx @DPTR,A
|
||||
|
||||
inc DPTR ; PSW
|
||||
mov A,PSW
|
||||
movx @DPTR,A
|
||||
|
||||
pop Acc ; PC
|
||||
inc DPTR
|
||||
movx @DPTR,A
|
||||
pop Acc
|
||||
inc DPTR
|
||||
movx @DPTR,A
|
||||
|
||||
inc DPTR ; SP
|
||||
mov A,SP
|
||||
movx @DPTR,A
|
||||
|
||||
inc DPTR ; adr: 00h
|
||||
mov A,R0
|
||||
movx @DPTR,A
|
||||
|
||||
mov B,#6fh ; adr: 01h-6fh
|
||||
mov R0,#01h
|
||||
ts_l3: inc DPTR
|
||||
mov A,@R0
|
||||
movx @DPTR,A
|
||||
inc R0
|
||||
djnz B,ts_l3
|
||||
|
||||
;------------
|
||||
|
||||
mov DPTR,#(t1inf_end-1)
|
||||
|
||||
mov B,#6fh ; adr: 01-6f
|
||||
mov R0,#6fh
|
||||
ts_l4: movx A,@DPTR
|
||||
mov @R0,A
|
||||
dec R0
|
||||
lcall dec_dptr
|
||||
djnz B,ts_l4
|
||||
|
||||
movx A,@DPTR
|
||||
mov R0,A ; adr: 00
|
||||
|
||||
lcall dec_dptr ; SP
|
||||
movx A,@DPTR
|
||||
mov SP,A
|
||||
|
||||
lcall dec_dptr ; PC
|
||||
movx A,@DPTR
|
||||
push Acc
|
||||
lcall dec_dptr
|
||||
movx A,@DPTR
|
||||
push Acc
|
||||
|
||||
lcall dec_dptr ; PSW
|
||||
movx A,@DPTR
|
||||
mov PSW,A
|
||||
|
||||
lcall dec_dptr ; B
|
||||
movx A,@DPTR
|
||||
mov B,A
|
||||
|
||||
lcall dec_dptr ; DPH
|
||||
movx A,@DPTR
|
||||
push Acc
|
||||
lcall dec_dptr ; DPL
|
||||
movx A,@DPTR
|
||||
push Acc
|
||||
|
||||
lcall dec_dptr ; Acc
|
||||
movx A,@DPTR
|
||||
|
||||
pop DPL
|
||||
pop DPH
|
||||
|
||||
mov state,#00h
|
||||
mov TL0,#0
|
||||
mov TH0,#0f0h
|
||||
reti
|
||||
|
||||
;========================================
|
||||
dec_dptr:
|
||||
xch A,DPL
|
||||
dec A
|
||||
cjne A,#0ffh,decdp_lab1
|
||||
dec DPH
|
||||
decdp_lab1:
|
||||
xch A,DPL
|
||||
ret
|
||||
;========================================
|
||||
org 8000h
|
||||
t1inf:
|
||||
db 00 ; Acc
|
||||
db 00 ; DPL
|
||||
db 00 ; DPH
|
||||
db 00 ; B
|
||||
db 00 ; PSW
|
||||
dw 00 ; PC
|
||||
db 07 ; SP
|
||||
db 0,0,0,0,0,0,0,0 ; R0-R7 (from adress: 00h)
|
||||
db 0,0,0,0,0,0,0,0 ; Stack
|
||||
db 0,0,0,0,0,0,0,0
|
||||
db 0,0,0,0,0,0,0,0
|
||||
db 0,0,0,0,0,0,0,0
|
||||
db 0,0,0,0,0,0,0,0
|
||||
db 0,0,0,0,0,0,0,0
|
||||
db 0,0,0,0,0,0,0,0
|
||||
db 0,0,0,0,0,0,0,0
|
||||
db 0,0,0,0,0,0,0,0
|
||||
db 0,0,0,0,0,0,0,0
|
||||
db 0,0,0,0,0,0,0,0
|
||||
db 0,0,0,0,0,0,0,0
|
||||
db 0,0,0,0,0,0,0,0 ; (to adress: 6fh)
|
||||
t1inf_end:
|
||||
|
||||
|
||||
t2inf:
|
||||
db 00 ; Acc
|
||||
db 00 ; DPL
|
||||
db 00 ; DPH
|
||||
db 00 ; B
|
||||
db 00 ; PSW
|
||||
dw task2 ; PC
|
||||
db 07 ; SP
|
||||
db 0,0,0,0,0,0,0,0 ; R0-R7 (from adress: 00h)
|
||||
db 0,0,0,0,0,0,0,0 ; Stack
|
||||
db 0,0,0,0,0,0,0,0
|
||||
db 0,0,0,0,0,0,0,0
|
||||
db 0,0,0,0,0,0,0,0
|
||||
db 0,0,0,0,0,0,0,0
|
||||
db 0,0,0,0,0,0,0,0
|
||||
db 0,0,0,0,0,0,0,0
|
||||
db 0,0,0,0,0,0,0,0
|
||||
db 0,0,0,0,0,0,0,0
|
||||
db 0,0,0,0,0,0,0,0
|
||||
db 0,0,0,0,0,0,0,0
|
||||
db 0,0,0,0,0,0,0,0
|
||||
db 0,0,0,0,0,0,0,0 ; (to adress: 6fh)
|
||||
t2inf_end:
|
||||
|
||||
END
|
||||
|
||||
|
||||
|
||||
|
||||
40
examples/mtask2.hex
Normal file
40
examples/mtask2.hex
Normal file
@@ -0,0 +1,40 @@
|
||||
:030000000200609B
|
||||
:03000B0002009957
|
||||
:10006000C2AFE58954F84401F589758A00758CF0B2
|
||||
:10007000757F00D28CD2A9D2AF63900F75F07074E7
|
||||
:10008000FFD5E0FDD5F0F880F06390F075F03074A6
|
||||
:10009000FFD5E0FDD5F0F880F0C083C082C0E0E578
|
||||
:1000A0007F6003020126D0E0908000F0D0E0A3F052
|
||||
:1000B000D0E0A3F0A3E5F0F0A3E5D0F0D0E0A3F00A
|
||||
:1000C000D0E0A3F0A3E581F0A3E8F075F06F78012C
|
||||
:1000D000A3E6F008D5F0F99080EF75F06F786FE047
|
||||
:1000E000F6181201A6D5F0F7E0F81201A6E0F581A6
|
||||
:1000F0001201A6E0C0E01201A6E0C0E01201A6E0F5
|
||||
:10010000F5D01201A6E0F5F01201A6E0C0E0120160
|
||||
:10011000A6E0C0E01201A6E0D082D083757FFF7513
|
||||
:100120008A00758CF032D0E0908078F0D0E0A3F0B7
|
||||
:10013000D0E0A3F0A3E5F0F0A3E5D0F0D0E0A3F089
|
||||
:10014000D0E0A3F0A3E581F0A3E8F075F06F7801AB
|
||||
:10015000A3E6F008D5F0F990807775F06F786FE03E
|
||||
:10016000F6181201A6D5F0F7E0F81201A6E0F58125
|
||||
:100170001201A6E0C0E01201A6E0C0E01201A6E074
|
||||
:10018000F5D01201A6E0F5F01201A6E0C0E01201E0
|
||||
:10019000A6E0C0E01201A6E0D082D083757F007592
|
||||
:1001A0008A00758CF032C58214B4FF021583C582B3
|
||||
:0101B000222C
|
||||
:108000000000000000000007000000000000000069
|
||||
:108010000000000000000000000000000000000060
|
||||
:108020000000000000000000000000000000000050
|
||||
:108030000000000000000000000000000000000040
|
||||
:108040000000000000000000000000000000000030
|
||||
:108050000000000000000000000000000000000020
|
||||
:108060000000000000000000000000000000000010
|
||||
:108070000000000000000000000000000000890770
|
||||
:1080800000000000000000000000000000000000F0
|
||||
:1080900000000000000000000000000000000000E0
|
||||
:1080A00000000000000000000000000000000000D0
|
||||
:1080B00000000000000000000000000000000000C0
|
||||
:1080C00000000000000000000000000000000000B0
|
||||
:1080D00000000000000000000000000000000000A0
|
||||
:1080E0000000000000000000000000000000000090
|
||||
:00000001FF
|
||||
352
examples/mtask2250.asm
Normal file
352
examples/mtask2250.asm
Normal file
@@ -0,0 +1,352 @@
|
||||
$mod851
|
||||
$include (bios.inc)
|
||||
$include (const.inc)
|
||||
|
||||
|
||||
state EQU 7fh
|
||||
tmp EQU 7eh
|
||||
|
||||
org 8000h
|
||||
ljmp start
|
||||
org 800bh
|
||||
t0int: ljmp task_switch
|
||||
|
||||
org 8060h
|
||||
start: clr EA
|
||||
mov intvec,#80h
|
||||
mov A,TMOD
|
||||
anl A,#11111000b
|
||||
orl A,#1
|
||||
mov TMOD,A ; T0 mode = 1
|
||||
mov TL0,#0
|
||||
mov TH0,#0ffh
|
||||
mov state,#00h
|
||||
setb TR0 ; T0 enable
|
||||
setb ET0 ; T0 int enable
|
||||
setb EA ; enable int
|
||||
|
||||
task1: xrl P1,#0fh
|
||||
|
||||
mov A,#0ffh
|
||||
t1l1: djnz Acc,t1l1
|
||||
mov A,#0ffh
|
||||
t1l2: djnz Acc,t1l2
|
||||
mov A,#0ffh
|
||||
t1l3: djnz Acc,t1l3
|
||||
mov A,#0ffh
|
||||
t1l4: djnz Acc,t1l4
|
||||
mov A,#0ffh
|
||||
t1l5: djnz Acc,t1l5
|
||||
mov A,#0ffh
|
||||
t1l6: djnz Acc,t1l6
|
||||
mov A,#0ffh
|
||||
t1l7: djnz Acc,t1l7
|
||||
mov A,#0ffh
|
||||
t1l8: djnz Acc,t1l8
|
||||
mov A,#0ffh
|
||||
t1l9: djnz Acc,t1l9
|
||||
mov A,#0ffh
|
||||
t1l10: djnz Acc,t1l10
|
||||
mov A,#0ffh
|
||||
t1l11: djnz Acc,t1l11
|
||||
mov A,#0ffh
|
||||
t1l12: djnz Acc,t1l12
|
||||
mov A,#0ffh
|
||||
t1l13: djnz Acc,t1l13
|
||||
mov A,#0ffh
|
||||
t1l14: djnz Acc,t1l14
|
||||
mov A,#0ffh
|
||||
t1l15: djnz Acc,t1l15
|
||||
mov A,#0ffh
|
||||
t1l16: djnz Acc,t1l16
|
||||
mov A,#0ffh
|
||||
t1l17: djnz Acc,t1l17
|
||||
|
||||
sjmp task1
|
||||
|
||||
task2: xrl P1,#0f0h
|
||||
|
||||
mov A,#0ffh
|
||||
t2l1: djnz Acc,t2l1
|
||||
mov A,#0ffh
|
||||
t2l2: djnz Acc,t2l2
|
||||
mov A,#0ffh
|
||||
t2l3: djnz Acc,t2l3
|
||||
mov A,#0ffh
|
||||
t2l4: djnz Acc,t2l4
|
||||
mov A,#0ffh
|
||||
t2l5: djnz Acc,t2l5
|
||||
mov A,#0ffh
|
||||
t2l6: djnz Acc,t2l6
|
||||
|
||||
sjmp task2
|
||||
|
||||
delay: djnz Acc,delay
|
||||
ret
|
||||
|
||||
;========================================
|
||||
|
||||
task_switch:
|
||||
push DPH
|
||||
push DPL
|
||||
push Acc
|
||||
mov A,state
|
||||
jz ts_go
|
||||
ljmp rev
|
||||
|
||||
ts_go: pop Acc ; Acc
|
||||
mov DPTR,#t1inf
|
||||
movx @DPTR,A
|
||||
|
||||
pop Acc ; DPL
|
||||
inc DPTR
|
||||
movx @DPTR,A
|
||||
|
||||
pop Acc ; DPH
|
||||
inc DPTR
|
||||
movx @DPTR,A
|
||||
|
||||
inc DPTR ; B
|
||||
mov A,B
|
||||
movx @DPTR,A
|
||||
|
||||
inc DPTR ; PSW
|
||||
mov A,PSW
|
||||
movx @DPTR,A
|
||||
|
||||
pop Acc ; PC
|
||||
inc DPTR
|
||||
movx @DPTR,A
|
||||
pop Acc
|
||||
inc DPTR
|
||||
movx @DPTR,A
|
||||
|
||||
inc DPTR ; SP
|
||||
mov A,SP
|
||||
movx @DPTR,A
|
||||
|
||||
inc DPTR ; adr: 00h
|
||||
mov A,R0
|
||||
movx @DPTR,A
|
||||
|
||||
mov B,#6fh ; adr: 01h-6fh
|
||||
mov R0,#01h
|
||||
ts_l1: inc DPTR
|
||||
mov A,@R0
|
||||
movx @DPTR,A
|
||||
inc R0
|
||||
djnz B,ts_l1
|
||||
|
||||
;------------
|
||||
|
||||
mov DPTR,#(t2inf_end-1)
|
||||
|
||||
mov B,#6fh ; adr: 01-6f
|
||||
mov R0,#6fh
|
||||
ts_l2: movx A,@DPTR
|
||||
mov @R0,A
|
||||
dec R0
|
||||
lcall dec_dptr
|
||||
djnz B,ts_l2
|
||||
|
||||
movx A,@DPTR
|
||||
mov R0,A ; adr: 00
|
||||
|
||||
lcall dec_dptr ; SP
|
||||
movx A,@DPTR
|
||||
mov SP,A
|
||||
|
||||
lcall dec_dptr ; PC
|
||||
movx A,@DPTR
|
||||
push Acc
|
||||
lcall dec_dptr
|
||||
movx A,@DPTR
|
||||
push Acc
|
||||
|
||||
lcall dec_dptr ; PSW
|
||||
movx A,@DPTR
|
||||
mov PSW,A
|
||||
|
||||
lcall dec_dptr ; B
|
||||
movx A,@DPTR
|
||||
mov B,A
|
||||
|
||||
lcall dec_dptr ; DPH
|
||||
movx A,@DPTR
|
||||
push Acc
|
||||
lcall dec_dptr ; DPL
|
||||
movx A,@DPTR
|
||||
push Acc
|
||||
|
||||
lcall dec_dptr ; Acc
|
||||
movx A,@DPTR
|
||||
|
||||
pop DPL
|
||||
pop DPH
|
||||
|
||||
mov state,#0ffh
|
||||
mov TL0,#0
|
||||
mov TH0,#0ffh
|
||||
reti
|
||||
;-=-=-=-=-=-=-=-=-
|
||||
rev:
|
||||
pop Acc ; Acc
|
||||
mov DPTR,#t2inf
|
||||
movx @DPTR,A
|
||||
|
||||
pop Acc ; DPL
|
||||
inc DPTR
|
||||
movx @DPTR,A
|
||||
|
||||
pop Acc ; DPH
|
||||
inc DPTR
|
||||
movx @DPTR,A
|
||||
|
||||
inc DPTR ; B
|
||||
mov A,B
|
||||
movx @DPTR,A
|
||||
|
||||
inc DPTR ; PSW
|
||||
mov A,PSW
|
||||
movx @DPTR,A
|
||||
|
||||
pop Acc ; PC
|
||||
inc DPTR
|
||||
movx @DPTR,A
|
||||
pop Acc
|
||||
inc DPTR
|
||||
movx @DPTR,A
|
||||
|
||||
inc DPTR ; SP
|
||||
mov A,SP
|
||||
movx @DPTR,A
|
||||
|
||||
inc DPTR ; adr: 00h
|
||||
mov A,R0
|
||||
movx @DPTR,A
|
||||
|
||||
mov B,#6fh ; adr: 01h-6fh
|
||||
mov R0,#01h
|
||||
ts_l3: inc DPTR
|
||||
mov A,@R0
|
||||
movx @DPTR,A
|
||||
inc R0
|
||||
djnz B,ts_l3
|
||||
|
||||
;------------
|
||||
|
||||
mov DPTR,#(t1inf_end-1)
|
||||
|
||||
mov B,#6fh ; adr: 01-6f
|
||||
mov R0,#6fh
|
||||
ts_l4: movx A,@DPTR
|
||||
mov @R0,A
|
||||
dec R0
|
||||
lcall dec_dptr
|
||||
djnz B,ts_l4
|
||||
|
||||
movx A,@DPTR
|
||||
mov R0,A ; adr: 00
|
||||
|
||||
lcall dec_dptr ; SP
|
||||
movx A,@DPTR
|
||||
mov SP,A
|
||||
|
||||
lcall dec_dptr ; PC
|
||||
movx A,@DPTR
|
||||
push Acc
|
||||
lcall dec_dptr
|
||||
movx A,@DPTR
|
||||
push Acc
|
||||
|
||||
lcall dec_dptr ; PSW
|
||||
movx A,@DPTR
|
||||
mov PSW,A
|
||||
|
||||
lcall dec_dptr ; B
|
||||
movx A,@DPTR
|
||||
mov B,A
|
||||
|
||||
lcall dec_dptr ; DPH
|
||||
movx A,@DPTR
|
||||
push Acc
|
||||
lcall dec_dptr ; DPL
|
||||
movx A,@DPTR
|
||||
push Acc
|
||||
|
||||
lcall dec_dptr ; Acc
|
||||
movx A,@DPTR
|
||||
|
||||
pop DPL
|
||||
pop DPH
|
||||
|
||||
mov state,#00h
|
||||
mov TL0,#0
|
||||
mov TH0,#0ffh
|
||||
reti
|
||||
|
||||
;========================================
|
||||
dec_dptr:
|
||||
xch A,DPL
|
||||
dec A
|
||||
cjne A,#0ffh,decdp_lab1
|
||||
dec DPH
|
||||
decdp_lab1:
|
||||
xch A,DPL
|
||||
ret
|
||||
;========================================
|
||||
org 9000h
|
||||
t1inf:
|
||||
db 00 ; Acc
|
||||
db 00 ; DPL
|
||||
db 00 ; DPH
|
||||
db 00 ; B
|
||||
db 00 ; PSW
|
||||
dw 00 ; PC
|
||||
db 07 ; SP
|
||||
db 0,0,0,0,0,0,0,0 ; R0-R7 (from adress: 00h)
|
||||
db 0,0,0,0,0,0,0,0 ; Stack
|
||||
db 0,0,0,0,0,0,0,0
|
||||
db 0,0,0,0,0,0,0,0
|
||||
db 0,0,0,0,0,0,0,0
|
||||
db 0,0,0,0,0,0,0,0
|
||||
db 0,0,0,0,0,0,0,0
|
||||
db 0,0,0,0,0,0,0,0
|
||||
db 0,0,0,0,0,0,0,0
|
||||
db 0,0,0,0,0,0,0,0
|
||||
db 0,0,0,0,0,0,0,0
|
||||
db 0,0,0,0,0,0,0,0
|
||||
db 0,0,0,0,0,0,0,0
|
||||
db 0,0,0,0,0,0,0,0 ; (to adress: 6fh)
|
||||
t1inf_end:
|
||||
|
||||
|
||||
t2inf:
|
||||
db 00 ; Acc
|
||||
db 00 ; DPL
|
||||
db 00 ; DPH
|
||||
db 00 ; B
|
||||
db 00 ; PSW
|
||||
dw task2 ; PC
|
||||
db 07 ; SP
|
||||
db 0,0,0,0,0,0,0,0 ; R0-R7 (from adress: 00h)
|
||||
db 0,0,0,0,0,0,0,0 ; Stack
|
||||
db 0,0,0,0,0,0,0,0
|
||||
db 0,0,0,0,0,0,0,0
|
||||
db 0,0,0,0,0,0,0,0
|
||||
db 0,0,0,0,0,0,0,0
|
||||
db 0,0,0,0,0,0,0,0
|
||||
db 0,0,0,0,0,0,0,0
|
||||
db 0,0,0,0,0,0,0,0
|
||||
db 0,0,0,0,0,0,0,0
|
||||
db 0,0,0,0,0,0,0,0
|
||||
db 0,0,0,0,0,0,0,0
|
||||
db 0,0,0,0,0,0,0,0
|
||||
db 0,0,0,0,0,0,0,0 ; (to adress: 6fh)
|
||||
t2inf_end:
|
||||
|
||||
END
|
||||
|
||||
|
||||
|
||||
|
||||
4
examples/p1.hex
Normal file
4
examples/p1.hex
Normal file
@@ -0,0 +1,4 @@
|
||||
:100000007401120016F59023B480F7120016F590D3
|
||||
:1000100003B401F780ECC0E0C0F0748075F0FFD548
|
||||
:0A002000F0FDD5E0F7D0F0D0E022AB
|
||||
:00000001FF
|
||||
4
examples/test.hex
Normal file
4
examples/test.hex
Normal file
@@ -0,0 +1,4 @@
|
||||
:10000000020010544F4D454B53414C555441542020
|
||||
:100010007580217580217580217580217580210270
|
||||
:020020000010CE
|
||||
:00000001FF
|
||||
Reference in New Issue
Block a user