📄 main.lst
字号:
497 000017 //Note:进入中断的压栈保护,需用户自行定义Accbuf等Ram单元
498 000017 //=====================================================
499 000017 @push2 expand
500 000017 b0xch accbuf,a
501 000017 b0mov a,pflag
502 000017 b0mov pflagbuf,a
503 000017 b0mov a,rbank
504 000017 b0mov rbankbuf,a
505 000017
506 000017 b0mov a,l
507 000017 b0mov lbuf,a
508 000017 b0mov a,h
509 000017 b0mov hbuf,a
510 000017 b0mov a,r
511 000017 b0mov rbuf,a
512 000017 b0mov a,x
513 000017 b0mov xbuf,a
514 000017 b0mov a,y
515 000017 b0mov ybuf,a
516 000017 b0mov a,z
517 000017 b0mov zbuf,a
518 000017 endm
519 000017 //=======================================================
520 000017 //Note:进入中断的压栈保护,需用户自行定义Accbuf等Ram单元
521 000017 //=======================================================
522 000017 @push1 expand
523 000017 b0xch accbuf,a
524 000017 b0mov a,pflag
525 000017 b0mov pflagbuf,a
526 000017 b0mov a,rbank
527 000017 b0mov rbankbuf,a
528 000017
529 000017 b0mov a,r
530 000017 b0mov rbuf,a
531 000017 b0mov a,y
532 000017 b0mov ybuf,a
533 000017 b0mov a,z
534 000017 b0mov zbuf,a
535 000017 endm
536 000017 //=======================================================
537 000017 //Note:进入中断的压栈保护,需用户自行定义Accbuf等Ram单元
538 000017 //=======================================================
539 000017 @push0 expand
540 000017 b0xch accbuf,a
541 000017 b0mov a,pflag
542 000017 b0mov pflagbuf,a
543 000017 b0mov a,rbank
544 000017 b0mov rbankbuf,a
545 000017 endm
546 000017 //=======================================================
547 000017 //Note:退出中断的出栈恢复,需用户自行定义Accbuf等Ram单元
548 000017 //=======================================================
549 000017 @pop2 expand
550 000017 b0mov a,lbuf
551 000017 b0mov l,a
552 000017 b0mov a,hbuf
553 000017 b0mov h,a
554 000017 b0mov a,rbuf
555 000017 b0mov r,a
556 000017 b0mov a,xbuf
557 000017 b0mov x,a
558 000017 b0mov a,ybuf
559 000017 b0mov y,a
560 000017 b0mov a,zbuf
561 000017 b0mov z,a
562 000017
563 000017 b0mov a,rbankbuf
564 000017 b0mov rbank,a
565 000017 b0mov a,pflagbuf
566 000017 b0mov pflag,a
567 000017 b0xch a,accbuf
568 000017 endm
569 000017 //====================================================
570 000017 //Note:退出中断的出栈恢复,需用户自行定义Accbuf等Ram单元
571 000017 //====================================================
572 000017 @pop1 expand
573 000017 b0mov a,rbuf
574 000017 b0mov r,a
575 000017 b0mov a,ybuf
576 000017 b0mov y,a
577 000017 b0mov a,zbuf
578 000017 b0mov z,a
579 000017
580 000017 b0mov a,rbankbuf
581 000017 b0mov rbank,a
582 000017 b0mov a,pflagbuf
583 000017 b0mov pflag,a
584 000017 b0xch a,accbuf
585 000017 endm
586 000017 //====================================================
587 000017 //Note:退出中断的出栈恢复,需用户自行定义Accbuf等Ram单元
588 000017 //====================================================
589 000017 @pop0 expand
590 000017 b0mov a,rbankbuf
591 000017 b0mov rbank,a
592 000017 b0mov a,pflagbuf
593 000017 b0mov pflag,a
594 000017 b0xch a,accbuf
595 000017 endm
596 000017 //====================================================
597 000017 //Note:进入RAM的bank0
598 000017 //====================================================
599 000017 bank0 expand
600 000017 clr rbank
601 000017 endm
602 000017 //====================================================
603 000017 //Note:进入RAM的bank1
604 000017 //====================================================
605 000017 bank1 expand
606 000017 b0mov rbank,#01h
607 000017 endm
608 000017 //====================================================
609 000017 //Note:进入RAM的bank2
610 000017 //====================================================
611 000017 bank2 expand
612 000017 b0mov rbank,#02h
613 000017 endm
614 000017 //====================================================
615 000017 //Note:进入RAM的bank15
616 000017 //====================================================
617 000017 bank15 expand
618 000017 b0mov rbank,#0fh
619 000017 endm
620 000017 //====================================================
621 000017 //Note:进入RAM的bank0,并退出子程序
622 000017 //====================================================
623 000017 ret_ban0 expand
624 000017 bank0
625 000017 ret
626 000017 endm
627 000017 //====================================================
628 000017 //Note:RAM资料的指针指向确定
629 000017 //====================================================
630 000017 point_hl expand val
631 000017 b0mov h,#val$m
632 000017 b0mov l,#val$l
633 000017 endm
634 000017 //====================================================
635 000017 //Note:ROM资料的指针指向确定
636 000017 //====================================================
637 000017 point_yz expand val
638 000017 b0mov y,#val$m
639 000017 b0mov z,#val$l
640 000017 endm
641 000017 //====================================================
642 000017 //Note:ROM资料的指针指向确定
643 000017 //====================================================
644 000017 point_xyz expand val
645 000017 b0mov x,#val$h
646 000017 b0mov y,#val$m
647 000017 b0mov z,#val$l
648 000017 endm
649 000017 //====================================================
650 000017 // to check acc in some range, example : #30h - #39h,
651 000017 // use boundi ram_to_acc, #30h, #39h, over_jmp_addr
652 000017 // if acc is under the range
653 000017 // acc = acc - sm
654 000017 // else
655 000017 // jmp over_jmp=addr
656 000017 // Note : 1. acc will be changed, c, dc, z flag will be changed
657 000017 // 2. the macro is used for "jmp_ar" macro
658 000017 //Val中的数据介于sm和la之间程序跳到adr处
659 000017 //====================================================
660 000017 boundi expand val, sm, la, adr
661 000017 mov a,val
662 000017 add a, #(0xff - (la))
663 000017 b0bts0 fc
664 000017 jmp_ret <adr>
665 000017 ifnb <sm>
666 000017 if (sm) > 0
667 000017 add a, #((la) - (sm) + 1)
668 000017 b0bts1 fc
669 000017 jmp_ret <adr>
670 000017 endif
671 000017 endif
672 000017 mov a,val
673 000017 sub a,#sm
674 000017 endm
675 000017 //====================================================
676 000017 // to add ram=ram+1 from 00 to ff
677 000017 // if ram > <la>
678 000017 // ram = <sm>
679 000017 //====================================================
680 000017 lim_inc expand val, sm, la
681 000017 incms val
682 000017 jmp $+2
683 000017 jmp $+4
684 000017 b0mov a,val
685 000017 sub a,#((la) + 1 )
686 000017 jnc $+3
687 000017 mov a,#sm
688 000017 b0mov val,a
689 000017 endm
690 000017 //====================================================
691 000017 // to sub ram=ram-1 from <sm> to <la>
692 000017 // if ram < <sm>
693 000017 // ram = <la>
694 000017 //====================================================
695 000017 lim_dec expand val, sm, la
696 000017 if sm == 0
697 000017 b0mov a,val
698 000017 jnz $+4
699 000017 mov a,#la
700 000017 b0mov val,a
701 000017 jmp $+3
702 000017 decms val
703 000017 nop
704 000017 else
705 000017 decms val
706 000017 nop
707 000017 b0mov a,val
708 000017 sub a,#( sm - 1 )
709 000017 jnc $+3
710 000017 mov a,#la
711 000017 b0mov val,a
712 000017 endif
713 000017 endm
714 000017 //====================================================
715 000017 // to add ram=ram+1 from 00 to ff
716 000017 // if ram > <la>
717 000017 // ram = <la>
718 000017 //====================================================
719 000017 limh_inc expand val, sm, la
720 000017 incms val
721 000017 jmp $+2
722 000017 jmp $+4
723 000017 b0mov a,val
724 000017 sub a,#((la) + 1 )
725 000017 jnc $+3
726 000017 mov a,#la
727 000017 b0mov val,a
728 000017 endm
729 000017 //====================================================
730 000017 // to sub ram=ram-1 from <sm> to <la>
731 000017 // if ram < <sm>
732 000017 // ram = <sm>
733 000017 //====================================================
734 000017 liml_dec expand val, sm, la
735 000017 if sm == 0
736 000017 b0mov a,val
737 000017 jnz $+4
738 000017 mov a,#sm
739 000017 b0mov val,a
740 000017 jmp $+3
741 000017 decms val
742 000017 nop
743 000017 else
744 000017 decms val
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -